diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..19602a1f35 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,8 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + +# Declare files that will always have CRLF line endings on checkout. +*.sln text eol=crlf +*.props text eol=crlf +*.vcxproj text eol=crlf +*.vcxproj.filters text eol=crlf diff --git a/3rdparty/3rdparty.props b/3rdparty/3rdparty.props index cc1966c24b..99145af049 100644 --- a/3rdparty/3rdparty.props +++ b/3rdparty/3rdparty.props @@ -1,21 +1,21 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - $(SvnRootDir)\deps\$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - *.bsc;*.idb;*.sbr;*.res;*.pch;*.pdb;*.obj;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;*.meta;$(TargetPath);$(ExtensionsToDeleteOnClean) - - - - $(ProjectDir);%(AdditionalIncludeDirectories) - __WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - 16Bytes - true - false - Level3 - ProgramDatabase - Default - - + + + + <_ProjectFileVersion>10.0.30128.1 + $(SvnRootDir)\deps\$(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + *.bsc;*.idb;*.sbr;*.res;*.pch;*.pdb;*.obj;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;*.meta;$(TargetPath);$(ExtensionsToDeleteOnClean) + + + + $(ProjectDir);%(AdditionalIncludeDirectories) + __WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + 16Bytes + true + false + Level3 + ProgramDatabase + Default + + \ No newline at end of file diff --git a/3rdparty/3rdpartyDLL.props b/3rdparty/3rdpartyDLL.props index 134026077e..c7412b65ad 100644 --- a/3rdparty/3rdpartyDLL.props +++ b/3rdparty/3rdpartyDLL.props @@ -1,28 +1,28 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - $(SvnRootDir)\deps\$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - false - - - - $(ProjectDir);%(AdditionalIncludeDirectories) - __WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - 16Bytes - false - Level3 - ProgramDatabase - - - $(SolutionDir)bin\$(ProjectName).dll - true - Windows - $(OutDir)$(ProjectName).lib - - - $(SvnRootDir)/common/include;%(AdditionalIncludeDirectories) - - + + + + <_ProjectFileVersion>10.0.30128.1 + $(SvnRootDir)\deps\$(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + false + + + + $(ProjectDir);%(AdditionalIncludeDirectories) + __WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + 16Bytes + false + Level3 + ProgramDatabase + + + $(SolutionDir)bin\$(ProjectName).dll + true + Windows + $(OutDir)$(ProjectName).lib + + + $(SvnRootDir)/common/include;%(AdditionalIncludeDirectories) + + \ No newline at end of file diff --git a/3rdparty/DefaultProjectRootDir.props b/3rdparty/DefaultProjectRootDir.props index 3163b4b7da..671915738d 100644 --- a/3rdparty/DefaultProjectRootDir.props +++ b/3rdparty/DefaultProjectRootDir.props @@ -1,18 +1,18 @@ - - - - $(ProjectDir) - $(ProjectRootDir)\..\.. - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(ProjectRootDir) - - - $(SvnRootDir) - - + + + + $(ProjectDir) + $(ProjectRootDir)\..\.. + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(ProjectRootDir) + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/3rdparty/bzip2/LICENSE b/3rdparty/bzip2/LICENSE index 383aabe35f..4458e35bb5 100644 --- a/3rdparty/bzip2/LICENSE +++ b/3rdparty/bzip2/LICENSE @@ -1,43 +1,43 @@ - --------------------------------------------------------------------------- - -This program, "bzip2", the associated library "libbzip2", and all -documentation, are copyright (C) 1996-2006 Julian R Seward. All -rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - -3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - -4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Julian Seward, Cambridge, UK. -jseward@bzip.org -bzip2/libbzip2 version 1.0.4 of 20 December 2006 - --------------------------------------------------------------------------- + +-------------------------------------------------------------------------- + +This program, "bzip2", the associated library "libbzip2", and all +documentation, are copyright (C) 1996-2006 Julian R Seward. All +rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + +3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + +4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Julian Seward, Cambridge, UK. +jseward@bzip.org +bzip2/libbzip2 version 1.0.4 of 20 December 2006 + +-------------------------------------------------------------------------- diff --git a/3rdparty/bzip2/README b/3rdparty/bzip2/README index 3b819daf3f..b18c096b9e 100644 --- a/3rdparty/bzip2/README +++ b/3rdparty/bzip2/README @@ -1,205 +1,205 @@ - -This is the README for bzip2/libzip2. -This version is fully compatible with the previous public releases. - ------------------------------------------------------------------- -This file is part of bzip2/libbzip2, a program and library for -lossless, block-sorting data compression. - -bzip2/libbzip2 version 1.0.4 of 20 December 2006 -Copyright (C) 1996-2006 Julian Seward - -Please read the WARNING, DISCLAIMER and PATENTS sections in this file. - -This program is released under the terms of the license contained -in the file LICENSE. ------------------------------------------------------------------- - -Complete documentation is available in Postscript form (manual.ps), -PDF (manual.pdf) or html (manual.html). A plain-text version of the -manual page is available as bzip2.txt. - - -HOW TO BUILD -- UNIX - -Type 'make'. This builds the library libbz2.a and then the programs -bzip2 and bzip2recover. Six self-tests are run. If the self-tests -complete ok, carry on to installation: - -To install in /usr/local/bin, /usr/local/lib, /usr/local/man and -/usr/local/include, type - - make install - -To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type - - make install PREFIX=/xxx/yyy - -If you are (justifiably) paranoid and want to see what 'make install' -is going to do, you can first do - - make -n install or - make -n install PREFIX=/xxx/yyy respectively. - -The -n instructs make to show the commands it would execute, but not -actually execute them. - - -HOW TO BUILD -- UNIX, shared library libbz2.so. - -Do 'make -f Makefile-libbz2_so'. This Makefile seems to work for -Linux-ELF (RedHat 7.2 on an x86 box), with gcc. I make no claims -that it works for any other platform, though I suspect it probably -will work for most platforms employing both ELF and gcc. - -bzip2-shared, a client of the shared library, is also built, but not -self-tested. So I suggest you also build using the normal Makefile, -since that conducts a self-test. A second reason to prefer the -version statically linked to the library is that, on x86 platforms, -building shared objects makes a valuable register (%ebx) unavailable -to gcc, resulting in a slowdown of 10%-20%, at least for bzip2. - -Important note for people upgrading .so's from 0.9.0/0.9.5 to version -1.0.X. All the functions in the library have been renamed, from (eg) -bzCompress to BZ2_bzCompress, to avoid namespace pollution. -Unfortunately this means that the libbz2.so created by -Makefile-libbz2_so will not work with any program which used an older -version of the library. I do encourage library clients to make the -effort to upgrade to use version 1.0, since it is both faster and more -robust than previous versions. - - -HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc. - -It's difficult for me to support compilation on all these platforms. -My approach is to collect binaries for these platforms, and put them -on the master web site (http://www.bzip.org). Look there. However -(FWIW), bzip2-1.0.X is very standard ANSI C and should compile -unmodified with MS Visual C. If you have difficulties building, you -might want to read README.COMPILATION.PROBLEMS. - -At least using MS Visual C++ 6, you can build from the unmodified -sources by issuing, in a command shell: - - nmake -f makefile.msc - -(you may need to first run the MSVC-provided script VCVARS32.BAT - so as to set up paths to the MSVC tools correctly). - - -VALIDATION - -Correct operation, in the sense that a compressed file can always be -decompressed to reproduce the original, is obviously of paramount -importance. To validate bzip2, I used a modified version of Mark -Nelson's churn program. Churn is an automated test driver which -recursively traverses a directory structure, using bzip2 to compress -and then decompress each file it encounters, and checking that the -decompressed data is the same as the original. - - - -Please read and be aware of the following: - -WARNING: - - This program and library (attempts to) compress data by - performing several non-trivial transformations on it. - Unless you are 100% familiar with *all* the algorithms - contained herein, and with the consequences of modifying them, - you should NOT meddle with the compression or decompression - machinery. Incorrect changes can and very likely *will* - lead to disastrous loss of data. - - -DISCLAIMER: - - I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE - USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED. - - Every compression of a file implies an assumption that the - compressed file can be decompressed to reproduce the original. - Great efforts in design, coding and testing have been made to - ensure that this program works correctly. However, the complexity - of the algorithms, and, in particular, the presence of various - special cases in the code which occur with very low but non-zero - probability make it impossible to rule out the possibility of bugs - remaining in the program. DO NOT COMPRESS ANY DATA WITH THIS - PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER - SMALL, THAT THE DATA WILL NOT BE RECOVERABLE. - - That is not to say this program is inherently unreliable. - Indeed, I very much hope the opposite is true. bzip2/libbzip2 - has been carefully constructed and extensively tested. - - -PATENTS: - - To the best of my knowledge, bzip2/libbzip2 does not use any - patented algorithms. However, I do not have the resources - to carry out a patent search. Therefore I cannot give any - guarantee of the above statement. - - - -WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ? - - * Approx 10% faster compression, 30% faster decompression - * -t (test mode) is a lot quicker - * Can decompress concatenated compressed files - * Programming interface, so programs can directly read/write .bz2 files - * Less restrictive (BSD-style) licensing - * Flag handling more compatible with GNU gzip - * Much more documentation, i.e., a proper user manual - * Hopefully, improved portability (at least of the library) - -WHAT'S NEW IN 0.9.5 ? - - * Compression speed is much less sensitive to the input - data than in previous versions. Specifically, the very - slow performance caused by repetitive data is fixed. - * Many small improvements in file and flag handling. - * A Y2K statement. - -WHAT'S NEW IN 1.0.0 ? - - See the CHANGES file. - -WHAT'S NEW IN 1.0.2 ? - - See the CHANGES file. - -WHAT'S NEW IN 1.0.3 ? - - See the CHANGES file. - -WHAT'S NEW IN 1.0.4 ? - - See the CHANGES file. - - -I hope you find bzip2 useful. Feel free to contact me at - jseward@bzip.org -if you have any suggestions or queries. Many people mailed me with -comments, suggestions and patches after the releases of bzip-0.15, -bzip-0.21, and bzip2 versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, -1.0.2 and 1.0.3, and the changes in bzip2 are largely a result of this -feedback. I thank you for your comments. - -bzip2's "home" is http://www.bzip.org/ - -Julian Seward -jseward@bzip.org -Cambridge, UK. - -18 July 1996 (version 0.15) -25 August 1996 (version 0.21) - 7 August 1997 (bzip2, version 0.1) -29 August 1997 (bzip2, version 0.1pl2) -23 August 1998 (bzip2, version 0.9.0) - 8 June 1999 (bzip2, version 0.9.5) - 4 Sept 1999 (bzip2, version 0.9.5d) - 5 May 2000 (bzip2, version 1.0pre8) -30 December 2001 (bzip2, version 1.0.2pre1) -15 February 2005 (bzip2, version 1.0.3) -20 December 2006 (bzip2, version 1.0.4) + +This is the README for bzip2/libzip2. +This version is fully compatible with the previous public releases. + +------------------------------------------------------------------ +This file is part of bzip2/libbzip2, a program and library for +lossless, block-sorting data compression. + +bzip2/libbzip2 version 1.0.4 of 20 December 2006 +Copyright (C) 1996-2006 Julian Seward + +Please read the WARNING, DISCLAIMER and PATENTS sections in this file. + +This program is released under the terms of the license contained +in the file LICENSE. +------------------------------------------------------------------ + +Complete documentation is available in Postscript form (manual.ps), +PDF (manual.pdf) or html (manual.html). A plain-text version of the +manual page is available as bzip2.txt. + + +HOW TO BUILD -- UNIX + +Type 'make'. This builds the library libbz2.a and then the programs +bzip2 and bzip2recover. Six self-tests are run. If the self-tests +complete ok, carry on to installation: + +To install in /usr/local/bin, /usr/local/lib, /usr/local/man and +/usr/local/include, type + + make install + +To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type + + make install PREFIX=/xxx/yyy + +If you are (justifiably) paranoid and want to see what 'make install' +is going to do, you can first do + + make -n install or + make -n install PREFIX=/xxx/yyy respectively. + +The -n instructs make to show the commands it would execute, but not +actually execute them. + + +HOW TO BUILD -- UNIX, shared library libbz2.so. + +Do 'make -f Makefile-libbz2_so'. This Makefile seems to work for +Linux-ELF (RedHat 7.2 on an x86 box), with gcc. I make no claims +that it works for any other platform, though I suspect it probably +will work for most platforms employing both ELF and gcc. + +bzip2-shared, a client of the shared library, is also built, but not +self-tested. So I suggest you also build using the normal Makefile, +since that conducts a self-test. A second reason to prefer the +version statically linked to the library is that, on x86 platforms, +building shared objects makes a valuable register (%ebx) unavailable +to gcc, resulting in a slowdown of 10%-20%, at least for bzip2. + +Important note for people upgrading .so's from 0.9.0/0.9.5 to version +1.0.X. All the functions in the library have been renamed, from (eg) +bzCompress to BZ2_bzCompress, to avoid namespace pollution. +Unfortunately this means that the libbz2.so created by +Makefile-libbz2_so will not work with any program which used an older +version of the library. I do encourage library clients to make the +effort to upgrade to use version 1.0, since it is both faster and more +robust than previous versions. + + +HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc. + +It's difficult for me to support compilation on all these platforms. +My approach is to collect binaries for these platforms, and put them +on the master web site (http://www.bzip.org). Look there. However +(FWIW), bzip2-1.0.X is very standard ANSI C and should compile +unmodified with MS Visual C. If you have difficulties building, you +might want to read README.COMPILATION.PROBLEMS. + +At least using MS Visual C++ 6, you can build from the unmodified +sources by issuing, in a command shell: + + nmake -f makefile.msc + +(you may need to first run the MSVC-provided script VCVARS32.BAT + so as to set up paths to the MSVC tools correctly). + + +VALIDATION + +Correct operation, in the sense that a compressed file can always be +decompressed to reproduce the original, is obviously of paramount +importance. To validate bzip2, I used a modified version of Mark +Nelson's churn program. Churn is an automated test driver which +recursively traverses a directory structure, using bzip2 to compress +and then decompress each file it encounters, and checking that the +decompressed data is the same as the original. + + + +Please read and be aware of the following: + +WARNING: + + This program and library (attempts to) compress data by + performing several non-trivial transformations on it. + Unless you are 100% familiar with *all* the algorithms + contained herein, and with the consequences of modifying them, + you should NOT meddle with the compression or decompression + machinery. Incorrect changes can and very likely *will* + lead to disastrous loss of data. + + +DISCLAIMER: + + I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE + USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED. + + Every compression of a file implies an assumption that the + compressed file can be decompressed to reproduce the original. + Great efforts in design, coding and testing have been made to + ensure that this program works correctly. However, the complexity + of the algorithms, and, in particular, the presence of various + special cases in the code which occur with very low but non-zero + probability make it impossible to rule out the possibility of bugs + remaining in the program. DO NOT COMPRESS ANY DATA WITH THIS + PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER + SMALL, THAT THE DATA WILL NOT BE RECOVERABLE. + + That is not to say this program is inherently unreliable. + Indeed, I very much hope the opposite is true. bzip2/libbzip2 + has been carefully constructed and extensively tested. + + +PATENTS: + + To the best of my knowledge, bzip2/libbzip2 does not use any + patented algorithms. However, I do not have the resources + to carry out a patent search. Therefore I cannot give any + guarantee of the above statement. + + + +WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ? + + * Approx 10% faster compression, 30% faster decompression + * -t (test mode) is a lot quicker + * Can decompress concatenated compressed files + * Programming interface, so programs can directly read/write .bz2 files + * Less restrictive (BSD-style) licensing + * Flag handling more compatible with GNU gzip + * Much more documentation, i.e., a proper user manual + * Hopefully, improved portability (at least of the library) + +WHAT'S NEW IN 0.9.5 ? + + * Compression speed is much less sensitive to the input + data than in previous versions. Specifically, the very + slow performance caused by repetitive data is fixed. + * Many small improvements in file and flag handling. + * A Y2K statement. + +WHAT'S NEW IN 1.0.0 ? + + See the CHANGES file. + +WHAT'S NEW IN 1.0.2 ? + + See the CHANGES file. + +WHAT'S NEW IN 1.0.3 ? + + See the CHANGES file. + +WHAT'S NEW IN 1.0.4 ? + + See the CHANGES file. + + +I hope you find bzip2 useful. Feel free to contact me at + jseward@bzip.org +if you have any suggestions or queries. Many people mailed me with +comments, suggestions and patches after the releases of bzip-0.15, +bzip-0.21, and bzip2 versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, +1.0.2 and 1.0.3, and the changes in bzip2 are largely a result of this +feedback. I thank you for your comments. + +bzip2's "home" is http://www.bzip.org/ + +Julian Seward +jseward@bzip.org +Cambridge, UK. + +18 July 1996 (version 0.15) +25 August 1996 (version 0.21) + 7 August 1997 (bzip2, version 0.1) +29 August 1997 (bzip2, version 0.1pl2) +23 August 1998 (bzip2, version 0.9.0) + 8 June 1999 (bzip2, version 0.9.5) + 4 Sept 1999 (bzip2, version 0.9.5d) + 5 May 2000 (bzip2, version 1.0pre8) +30 December 2001 (bzip2, version 1.0.2pre1) +15 February 2005 (bzip2, version 1.0.3) +20 December 2006 (bzip2, version 1.0.4) diff --git a/3rdparty/bzip2/bzip2_vs2012.vcxproj b/3rdparty/bzip2/bzip2_vs2012.vcxproj index 2486b202a9..dc326b24dc 100644 --- a/3rdparty/bzip2/bzip2_vs2012.vcxproj +++ b/3rdparty/bzip2/bzip2_vs2012.vcxproj @@ -1,96 +1,96 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - {F4EB4AB2-C595-4B05-8BC0-059024BC796C} - bzip2 - bzip2 - - - - StaticLibrary - MultiByte - false - v110_xp - - - StaticLibrary - MultiByte - true - v110_xp - - - StaticLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName) - $(ProjectName)-dev - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + {F4EB4AB2-C595-4B05-8BC0-059024BC796C} + bzip2 + bzip2 + + + + StaticLibrary + MultiByte + false + v110_xp + + + StaticLibrary + MultiByte + true + v110_xp + + + StaticLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName) + $(ProjectName)-dev + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/3rdparty/bzip2/bzip2_vs2012.vcxproj.filters b/3rdparty/bzip2/bzip2_vs2012.vcxproj.filters index 0b0fa1a2f0..419269f288 100644 --- a/3rdparty/bzip2/bzip2_vs2012.vcxproj.filters +++ b/3rdparty/bzip2/bzip2_vs2012.vcxproj.filters @@ -1,44 +1,44 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + \ No newline at end of file diff --git a/3rdparty/libjpeg/libjpeg_vs2012.vcxproj b/3rdparty/libjpeg/libjpeg_vs2012.vcxproj index d994345458..dc67e666f8 100644 --- a/3rdparty/libjpeg/libjpeg_vs2012.vcxproj +++ b/3rdparty/libjpeg/libjpeg_vs2012.vcxproj @@ -1,165 +1,165 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - libjpeg7 - {BC236261-77E8-4567-8D09-45CD02965EB6} - libjpeg - Win32Proj - - - - StaticLibrary - Unicode - false - v110_xp - - - StaticLibrary - Unicode - true - v110_xp - - - StaticLibrary - Unicode - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName)-dev - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + libjpeg7 + {BC236261-77E8-4567-8D09-45CD02965EB6} + libjpeg + Win32Proj + + + + StaticLibrary + Unicode + false + v110_xp + + + StaticLibrary + Unicode + true + v110_xp + + + StaticLibrary + Unicode + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)-dev + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/3rdparty/libjpeg/libjpeg_vs2012.vcxproj.filters b/3rdparty/libjpeg/libjpeg_vs2012.vcxproj.filters index 99c4bfbf43..c940acd9b4 100644 --- a/3rdparty/libjpeg/libjpeg_vs2012.vcxproj.filters +++ b/3rdparty/libjpeg/libjpeg_vs2012.vcxproj.filters @@ -1,183 +1,183 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + + + \ No newline at end of file diff --git a/3rdparty/libpng/projects/owatcom/pngstest.tgt b/3rdparty/libpng/projects/owatcom/pngstest.tgt index f5d024518f..696f7988a9 100644 --- a/3rdparty/libpng/projects/owatcom/pngstest.tgt +++ b/3rdparty/libpng/projects/owatcom/pngstest.tgt @@ -1,219 +1,219 @@ -40 -targetIdent -0 -MProject -1 -MComponent -0 -2 -WString -4 -NEXE -3 -WString -5 -nc2en -1 -0 -0 -4 -MCommand -0 -5 -MCommand -1118 -pngstest --strict --log ../../contrib/pngsuite/basn0g01.png ../../contrib/pngsuite/basn0g02.png ../../contrib/pngsuite/basn0g04.png ../../contrib/pngsuite/basn0g08.png ../../contrib/pngsuite/basn0g16.png ../../contrib/pngsuite/basn2c08.png ../../contrib/pngsuite/basn2c16.png ../../contrib/pngsuite/basn3p01.png ../../contrib/pngsuite/basn3p02.png ../../contrib/pngsuite/basn3p04.png ../../contrib/pngsuite/basn3p08.png ../../contrib/pngsuite/basn4a08.png ../../contrib/pngsuite/basn4a16.png ../../contrib/pngsuite/basn6a08.png ../../contrib/pngsuite/basn6a16.png ../../contrib/pngsuite/ftbbn0g04.png ../../contrib/pngsuite/ftbbn0g01.png ../../contrib/pngsuite/ftbbn0g02.png ../../contrib/pngsuite/ftbbn2c16.png ../../contrib/pngsuite/ftbbn3p08.png ../../contrib/pngsuite/ftbgn2c16.png ../../contrib/pngsuite/ftbgn3p08.png ../../contrib/pngsuite/ftbrn2c08.png ../../contrib/pngsuite/ftbwn0g16.png ../../contrib/pngsuite/ftbwn3p08.png ../../contrib/pngsuite/ftbyn3p08.png ../../contrib/pngsuite/ftp0n0g08.png ../../contrib/pngsuite/ftp0n2c08.png ../../contrib/pngsuite/ftp0n3p08.png ../../contrib/pngsuite/ftp1n3p08.png -6 -MItem -12 -pngstest.exe -7 -WString -4 -NEXE -8 -WVList -6 -9 -MVState -10 -WString -7 -WINLINK -11 -WString -11 -?????Stack: -1 -12 -WString -4 -768k -0 -13 -MVState -14 -WString -7 -WINLINK -15 -WString -28 -?????Library directories(;): -1 -16 -WString -8 -$(%zlib) -0 -17 -MVState -18 -WString -7 -WINLINK -19 -WString -18 -?????Libraries(,): -1 -20 -WString -19 -libpng.lib zlib.lib -0 -21 -MVState -22 -WString -7 -WINLINK -23 -WString -11 -?????Stack: -0 -24 -WString -4 -768k -0 -25 -MVState -26 -WString -7 -WINLINK -27 -WString -28 -?????Library directories(;): -0 -28 -WString -8 -$(%zlib) -0 -29 -MVState -30 -WString -7 -WINLINK -31 -WString -18 -?????Libraries(,): -0 -32 -WString -19 -libpng.lib zlib.lib -0 -33 -WVList -1 -34 -ActionStates -35 -WString -4 -&Run -36 -WVList -0 --1 -1 -1 -0 -37 -WPickList -2 -38 -MItem -3 -*.c -39 -WString -4 -COBJ -40 -WVList -2 -41 -MVState -42 -WString -3 -WCC -43 -WString -25 -n????Include directories: -1 -44 -WString -39 -"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" -0 -45 -MVState -46 -WString -3 -WCC -47 -WString -25 -n????Include directories: -0 -48 -WString -39 -"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" -0 -49 -WVList -0 --1 -1 -1 -0 -50 -MItem -33 -..\..\contrib\libtests\pngstest.c -51 -WString -4 -COBJ -52 -WVList -0 -53 -WVList -0 -38 -1 -1 -0 +40 +targetIdent +0 +MProject +1 +MComponent +0 +2 +WString +4 +NEXE +3 +WString +5 +nc2en +1 +0 +0 +4 +MCommand +0 +5 +MCommand +1118 +pngstest --strict --log ../../contrib/pngsuite/basn0g01.png ../../contrib/pngsuite/basn0g02.png ../../contrib/pngsuite/basn0g04.png ../../contrib/pngsuite/basn0g08.png ../../contrib/pngsuite/basn0g16.png ../../contrib/pngsuite/basn2c08.png ../../contrib/pngsuite/basn2c16.png ../../contrib/pngsuite/basn3p01.png ../../contrib/pngsuite/basn3p02.png ../../contrib/pngsuite/basn3p04.png ../../contrib/pngsuite/basn3p08.png ../../contrib/pngsuite/basn4a08.png ../../contrib/pngsuite/basn4a16.png ../../contrib/pngsuite/basn6a08.png ../../contrib/pngsuite/basn6a16.png ../../contrib/pngsuite/ftbbn0g04.png ../../contrib/pngsuite/ftbbn0g01.png ../../contrib/pngsuite/ftbbn0g02.png ../../contrib/pngsuite/ftbbn2c16.png ../../contrib/pngsuite/ftbbn3p08.png ../../contrib/pngsuite/ftbgn2c16.png ../../contrib/pngsuite/ftbgn3p08.png ../../contrib/pngsuite/ftbrn2c08.png ../../contrib/pngsuite/ftbwn0g16.png ../../contrib/pngsuite/ftbwn3p08.png ../../contrib/pngsuite/ftbyn3p08.png ../../contrib/pngsuite/ftp0n0g08.png ../../contrib/pngsuite/ftp0n2c08.png ../../contrib/pngsuite/ftp0n3p08.png ../../contrib/pngsuite/ftp1n3p08.png +6 +MItem +12 +pngstest.exe +7 +WString +4 +NEXE +8 +WVList +6 +9 +MVState +10 +WString +7 +WINLINK +11 +WString +11 +?????Stack: +1 +12 +WString +4 +768k +0 +13 +MVState +14 +WString +7 +WINLINK +15 +WString +28 +?????Library directories(;): +1 +16 +WString +8 +$(%zlib) +0 +17 +MVState +18 +WString +7 +WINLINK +19 +WString +18 +?????Libraries(,): +1 +20 +WString +19 +libpng.lib zlib.lib +0 +21 +MVState +22 +WString +7 +WINLINK +23 +WString +11 +?????Stack: +0 +24 +WString +4 +768k +0 +25 +MVState +26 +WString +7 +WINLINK +27 +WString +28 +?????Library directories(;): +0 +28 +WString +8 +$(%zlib) +0 +29 +MVState +30 +WString +7 +WINLINK +31 +WString +18 +?????Libraries(,): +0 +32 +WString +19 +libpng.lib zlib.lib +0 +33 +WVList +1 +34 +ActionStates +35 +WString +4 +&Run +36 +WVList +0 +-1 +1 +1 +0 +37 +WPickList +2 +38 +MItem +3 +*.c +39 +WString +4 +COBJ +40 +WVList +2 +41 +MVState +42 +WString +3 +WCC +43 +WString +25 +n????Include directories: +1 +44 +WString +39 +"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" +0 +45 +MVState +46 +WString +3 +WCC +47 +WString +25 +n????Include directories: +0 +48 +WString +39 +"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" +0 +49 +WVList +0 +-1 +1 +1 +0 +50 +MItem +33 +..\..\contrib\libtests\pngstest.c +51 +WString +4 +COBJ +52 +WVList +0 +53 +WVList +0 +38 +1 +1 +0 diff --git a/3rdparty/libpng/projects/visualc71/libpng.sln b/3rdparty/libpng/projects/visualc71/libpng.sln index adce68aae0..eeb101f2e3 100644 --- a/3rdparty/libpng/projects/visualc71/libpng.sln +++ b/3rdparty/libpng/projects/visualc71/libpng.sln @@ -1,60 +1,60 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "libpng.vcproj", "{0008960E-E0DD-41A6-8265-00B31DDB4C21}" - ProjectSection(ProjectDependencies) = postProject - {2D4F8105-7D21-454C-9932-B47CAB71A5C0} = {2D4F8105-7D21-454C-9932-B47CAB71A5C0} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngtest", "pngtest.vcproj", "{FD1C2F86-9EEF-47BD-95A4-530917E17FDA}" - ProjectSection(ProjectDependencies) = postProject - {0008960E-E0DD-41A6-8265-00B31DDB4C21} = {0008960E-E0DD-41A6-8265-00B31DDB4C21} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcproj", "{2D4F8105-7D21-454C-9932-B47CAB71A5C0}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - DLL Debug = DLL Debug - DLL Release = DLL Release - DLL VB = DLL VB - LIB Debug = LIB Debug - LIB Release = LIB Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Debug.ActiveCfg = DLL Debug|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Debug.Build.0 = DLL Debug|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Release.ActiveCfg = DLL Release|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Release.Build.0 = DLL Release|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL VB.ActiveCfg = DLL VB|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL VB.Build.0 = DLL VB|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Debug.ActiveCfg = LIB Debug|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Debug.Build.0 = LIB Debug|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Release.ActiveCfg = LIB Release|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Release.Build.0 = LIB Release|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Debug.ActiveCfg = DLL Debug|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Debug.Build.0 = DLL Debug|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Release.ActiveCfg = DLL Release|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Release.Build.0 = DLL Release|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL VB.ActiveCfg = DLL VB|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL VB.Build.0 = DLL VB|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Debug.ActiveCfg = LIB Debug|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Debug.Build.0 = LIB Debug|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Release.ActiveCfg = LIB Release|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Release.Build.0 = LIB Release|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Debug.ActiveCfg = DLL Debug|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Debug.Build.0 = DLL Debug|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Release.ActiveCfg = DLL Release|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Release.Build.0 = DLL Release|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL VB.ActiveCfg = DLL Release|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL VB.Build.0 = DLL Release|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Debug.ActiveCfg = LIB Debug|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Debug.Build.0 = LIB Debug|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Release.ActiveCfg = LIB Release|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Release.Build.0 = LIB Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "libpng.vcproj", "{0008960E-E0DD-41A6-8265-00B31DDB4C21}" + ProjectSection(ProjectDependencies) = postProject + {2D4F8105-7D21-454C-9932-B47CAB71A5C0} = {2D4F8105-7D21-454C-9932-B47CAB71A5C0} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngtest", "pngtest.vcproj", "{FD1C2F86-9EEF-47BD-95A4-530917E17FDA}" + ProjectSection(ProjectDependencies) = postProject + {0008960E-E0DD-41A6-8265-00B31DDB4C21} = {0008960E-E0DD-41A6-8265-00B31DDB4C21} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcproj", "{2D4F8105-7D21-454C-9932-B47CAB71A5C0}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + DLL Debug = DLL Debug + DLL Release = DLL Release + DLL VB = DLL VB + LIB Debug = LIB Debug + LIB Release = LIB Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Debug.ActiveCfg = DLL Debug|Win32 + {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Debug.Build.0 = DLL Debug|Win32 + {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Release.ActiveCfg = DLL Release|Win32 + {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Release.Build.0 = DLL Release|Win32 + {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL VB.ActiveCfg = DLL VB|Win32 + {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL VB.Build.0 = DLL VB|Win32 + {0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Debug.ActiveCfg = LIB Debug|Win32 + {0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Debug.Build.0 = LIB Debug|Win32 + {0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Release.ActiveCfg = LIB Release|Win32 + {0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Release.Build.0 = LIB Release|Win32 + {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Debug.ActiveCfg = DLL Debug|Win32 + {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Debug.Build.0 = DLL Debug|Win32 + {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Release.ActiveCfg = DLL Release|Win32 + {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Release.Build.0 = DLL Release|Win32 + {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL VB.ActiveCfg = DLL VB|Win32 + {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL VB.Build.0 = DLL VB|Win32 + {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Debug.ActiveCfg = LIB Debug|Win32 + {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Debug.Build.0 = LIB Debug|Win32 + {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Release.ActiveCfg = LIB Release|Win32 + {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Release.Build.0 = LIB Release|Win32 + {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Debug.ActiveCfg = DLL Debug|Win32 + {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Debug.Build.0 = DLL Debug|Win32 + {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Release.ActiveCfg = DLL Release|Win32 + {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Release.Build.0 = DLL Release|Win32 + {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL VB.ActiveCfg = DLL Release|Win32 + {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL VB.Build.0 = DLL Release|Win32 + {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Debug.ActiveCfg = LIB Debug|Win32 + {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Debug.Build.0 = LIB Debug|Win32 + {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Release.ActiveCfg = LIB Release|Win32 + {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Release.Build.0 = LIB Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/3rdparty/libpng/projects/visualc71/libpng.vcproj b/3rdparty/libpng/projects/visualc71/libpng.vcproj index 24285c761d..608ec4e6b4 100644 --- a/3rdparty/libpng/projects/visualc71/libpng.vcproj +++ b/3rdparty/libpng/projects/visualc71/libpng.vcproj @@ -1,419 +1,419 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rdparty/libpng/projects/visualc71/pngtest.vcproj b/3rdparty/libpng/projects/visualc71/pngtest.vcproj index 356eb3cc4b..3b48f1cf6f 100644 --- a/3rdparty/libpng/projects/visualc71/pngtest.vcproj +++ b/3rdparty/libpng/projects/visualc71/pngtest.vcproj @@ -1,267 +1,267 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rdparty/libpng/projects/visualc71/zlib.vcproj b/3rdparty/libpng/projects/visualc71/zlib.vcproj index 614b869e7f..eb218488dc 100644 --- a/3rdparty/libpng/projects/visualc71/zlib.vcproj +++ b/3rdparty/libpng/projects/visualc71/zlib.vcproj @@ -1,391 +1,391 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rdparty/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj b/3rdparty/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj index 49e8d6b3c0..e2a232cb63 100644 --- a/3rdparty/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj +++ b/3rdparty/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj @@ -1,61 +1,61 @@ - - - - - Release - Win32 - - - - {EB33566E-DA7F-4D28-9077-88C0B7C77E35} - pnglibconf - - - - Application - false - true - MultiByte - - - - - - - - - - - Build - - - - Level3 - MaxSpeed - true - true - - - true - true - true - - - copy ..\..\..\scripts\pnglibconf.h.prebuilt ..\..\..\pnglibconf.h - - - Generating pnglibconf.h - - - ..\..\..\pnglibconf.h - - - ..\..\..\scripts\pnglibconf.h.prebuilt - - - - - - - - + + + + + Release + Win32 + + + + {EB33566E-DA7F-4D28-9077-88C0B7C77E35} + pnglibconf + + + + Application + false + true + MultiByte + + + + + + + + + + + Build + + + + Level3 + MaxSpeed + true + true + + + true + true + true + + + copy ..\..\..\scripts\pnglibconf.h.prebuilt ..\..\..\pnglibconf.h + + + Generating pnglibconf.h + + + ..\..\..\pnglibconf.h + + + ..\..\..\scripts\pnglibconf.h.prebuilt + + + + + + + + diff --git a/3rdparty/libpng/projects/vstudio/pngstest/pngstest.vcxproj b/3rdparty/libpng/projects/vstudio/pngstest/pngstest.vcxproj index 83b106f77b..0d2980dd8a 100644 --- a/3rdparty/libpng/projects/vstudio/pngstest/pngstest.vcxproj +++ b/3rdparty/libpng/projects/vstudio/pngstest/pngstest.vcxproj @@ -1,219 +1,219 @@ - - - - - Debug Library - Win32 - - - Debug - Win32 - - - Release Library - Win32 - - - Release - Win32 - - - - {277AC57F-313B-4D06-B119-A3CDB672D2FF} - Win32Proj - pngstest - - - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - - - - - - - - - - - - - - - - - false - - - - false - - - - false - - - - false - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - true - false - true - false - MultiThreadedDebugDLL - - - Console - true - libpng16.lib - $(OutDir) - - - Executing libpng simplified API test program - "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png - $(IntDir)pngstest.out - $(OutDir)pngstest.exe - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - MultiThreadedDebug - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - true - false - true - false - - - Console - true - libpng16.lib;zlib.lib - $(OutDir) - - - Executing libpng simplified API test program - "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png - $(IntDir)pngstest.out - $(OutDir)pngstest.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - false - true - WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib - $(OutDir) - UseLinkTimeCodeGeneration - - - Executing libpng simplified API test program - "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png - $(IntDir)pngstest.out - $(OutDir)pngstest.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - MultiThreaded - false - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib;zlib.lib - $(OutDir) - UseLinkTimeCodeGeneration - - - Executing libpng simplified API test program - "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png - $(IntDir)pngstest.out - $(OutDir)pngstest.exe - - - - - - - - - + + + + + Debug Library + Win32 + + + Debug + Win32 + + + Release Library + Win32 + + + Release + Win32 + + + + {277AC57F-313B-4D06-B119-A3CDB672D2FF} + Win32Proj + pngstest + + + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + + + + + + + + + + + + + + + + + false + + + + false + + + + false + + + + false + + + + + NotUsing + Level4 + false + ProgramDatabase + Disabled + EnableFastChecks + WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996;4127 + false + true + true + true + false + true + false + MultiThreadedDebugDLL + + + Console + true + libpng16.lib + $(OutDir) + + + Executing libpng simplified API test program + "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png + $(IntDir)pngstest.out + $(OutDir)pngstest.exe + + + + + NotUsing + Level4 + false + ProgramDatabase + Disabled + EnableFastChecks + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996;4127 + false + true + true + true + false + true + false + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing libpng simplified API test program + "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png + $(IntDir)pngstest.out + $(OutDir)pngstest.exe + + + + + Level4 + NotUsing + ProgramDatabase + Full + false + true + WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996;4127 + false + true + true + false + true + true + false + + + Console + true + true + true + libpng16.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing libpng simplified API test program + "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png + $(IntDir)pngstest.out + $(OutDir)pngstest.exe + + + + + Level4 + NotUsing + ProgramDatabase + Full + MultiThreaded + false + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996;4127 + false + true + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing libpng simplified API test program + "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png + $(IntDir)pngstest.out + $(OutDir)pngstest.exe + + + + + + + + + diff --git a/3rdparty/libpng/projects/vstudio/pngtest/pngtest.vcxproj b/3rdparty/libpng/projects/vstudio/pngtest/pngtest.vcxproj index 39b8de4309..bf9266f758 100644 --- a/3rdparty/libpng/projects/vstudio/pngtest/pngtest.vcxproj +++ b/3rdparty/libpng/projects/vstudio/pngtest/pngtest.vcxproj @@ -1,220 +1,220 @@ - - - - - Debug Library - Win32 - - - Debug - Win32 - - - Release Library - Win32 - - - Release - Win32 - - - - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D} - Win32Proj - pngtest - - - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - - - - - - - - - - - - - - - - - false - - - - false - - - - false - - - - false - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996 - false - true - true - true - false - true - false - MultiThreadedDebugDLL - - - Console - true - libpng16.lib - $(OutDir) - - - Executing PNG test program - "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" - $(IntDir)pngout.png - ..\..\..\pngtest.png;$(OutDir)pngtest.exe - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - MultiThreadedDebug - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996 - false - true - true - true - false - true - false - - - Console - true - libpng16.lib;zlib.lib - $(OutDir) - - - Executing PNG test program - "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" - $(IntDir)pngout.png - ..\..\..\pngtest.png;$(OutDir)pngtest.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - false - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996 - false - true - true - false - true - true - false - - - Console - true - true - true - UseLinkTimeCodeGeneration - libpng16.lib - $(OutDir) - - - Executing PNG test program - "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" - $(IntDir)pngout.png - ..\..\..\pngtest.png;$(OutDir)pngtest.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - MultiThreaded - false - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib;zlib.lib - UseLinkTimeCodeGeneration - $(OutDir) - - - Executing PNG test program - $(OutDir)pngtest.exe ..\..\..\pngtest.png $(IntDir)pngout.png - "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" - $(IntDir)pngout.png - ..\..\..\pngtest.png;$(OutDir)pngtest.exe - - - - - - - - - + + + + + Debug Library + Win32 + + + Debug + Win32 + + + Release Library + Win32 + + + Release + Win32 + + + + {228BA965-50D5-42B2-8BCF-AFCC227E3C1D} + Win32Proj + pngtest + + + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + + + + + + + + + + + + + + + + + false + + + + false + + + + false + + + + false + + + + + NotUsing + Level4 + false + ProgramDatabase + Disabled + EnableFastChecks + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996 + false + true + true + true + false + true + false + MultiThreadedDebugDLL + + + Console + true + libpng16.lib + $(OutDir) + + + Executing PNG test program + "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" + $(IntDir)pngout.png + ..\..\..\pngtest.png;$(OutDir)pngtest.exe + + + + + NotUsing + Level4 + false + ProgramDatabase + Disabled + EnableFastChecks + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996 + false + true + true + true + false + true + false + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing PNG test program + "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" + $(IntDir)pngout.png + ..\..\..\pngtest.png;$(OutDir)pngtest.exe + + + + + Level4 + NotUsing + ProgramDatabase + Full + false + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996 + false + true + true + false + true + true + false + + + Console + true + true + true + UseLinkTimeCodeGeneration + libpng16.lib + $(OutDir) + + + Executing PNG test program + "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" + $(IntDir)pngout.png + ..\..\..\pngtest.png;$(OutDir)pngtest.exe + + + + + Level4 + NotUsing + ProgramDatabase + Full + MultiThreaded + false + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996 + false + true + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + UseLinkTimeCodeGeneration + $(OutDir) + + + Executing PNG test program + $(OutDir)pngtest.exe ..\..\..\pngtest.png $(IntDir)pngout.png + "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" + $(IntDir)pngout.png + ..\..\..\pngtest.png;$(OutDir)pngtest.exe + + + + + + + + + diff --git a/3rdparty/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj b/3rdparty/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj index f4a2edc9b5..a30cc7a21a 100644 --- a/3rdparty/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj +++ b/3rdparty/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj @@ -1,219 +1,219 @@ - - - - - Debug Library - Win32 - - - Debug - Win32 - - - Release Library - Win32 - - - Release - Win32 - - - - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC} - Win32Proj - pngunknown - - - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - - - - - - - - - - - - - - - - - false - - - - false - - - - false - - - - false - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - true - false - true - false - MultiThreadedDebugDLL - - - Console - true - libpng16.lib - $(OutDir) - - - Executing PNG validation program - "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png - $(IntDir)pngunknown.out - $(OutDir)pngunknown.exe - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - MultiThreadedDebug - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - true - false - true - false - - - Console - true - libpng16.lib;zlib.lib - $(OutDir) - - - Executing PNG validation program - "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png - $(IntDir)pngunknown.out - $(OutDir)pngunknown.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - false - true - WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib - $(OutDir) - UseLinkTimeCodeGeneration - - - Executing PNG validation program - "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png - $(IntDir)pngunknown.out - $(OutDir)pngunknown.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - MultiThreaded - false - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib;zlib.lib - $(OutDir) - UseLinkTimeCodeGeneration - - - Executing PNG validation program - "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png - $(IntDir)pngunknown.out - $(OutDir)pngunknown.exe - - - - - - - - - + + + + + Debug Library + Win32 + + + Debug + Win32 + + + Release Library + Win32 + + + Release + Win32 + + + + {C5D3156C-8C8C-4936-B35F-2B829BA36FEC} + Win32Proj + pngunknown + + + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + + + + + + + + + + + + + + + + + false + + + + false + + + + false + + + + false + + + + + NotUsing + Level4 + false + ProgramDatabase + Disabled + EnableFastChecks + WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996;4127 + false + true + true + true + false + true + false + MultiThreadedDebugDLL + + + Console + true + libpng16.lib + $(OutDir) + + + Executing PNG validation program + "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png + $(IntDir)pngunknown.out + $(OutDir)pngunknown.exe + + + + + NotUsing + Level4 + false + ProgramDatabase + Disabled + EnableFastChecks + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996;4127 + false + true + true + true + false + true + false + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing PNG validation program + "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png + $(IntDir)pngunknown.out + $(OutDir)pngunknown.exe + + + + + Level4 + NotUsing + ProgramDatabase + Full + false + true + WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996;4127 + false + true + true + false + true + true + false + + + Console + true + true + true + libpng16.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing PNG validation program + "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png + $(IntDir)pngunknown.out + $(OutDir)pngunknown.exe + + + + + Level4 + NotUsing + ProgramDatabase + Full + MultiThreaded + false + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996;4127 + false + true + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing PNG validation program + "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png + $(IntDir)pngunknown.out + $(OutDir)pngunknown.exe + + + + + + + + + diff --git a/3rdparty/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj b/3rdparty/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj index a87283aa95..07cf241193 100644 --- a/3rdparty/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj +++ b/3rdparty/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj @@ -1,219 +1,219 @@ - - - - - Debug Library - Win32 - - - Debug - Win32 - - - Release Library - Win32 - - - Release - Win32 - - - - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8} - Win32Proj - pngvalid - - - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - - - - - - - - - - - - - - - - - false - - - - false - - - - false - - - - false - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - true - false - true - false - MultiThreadedDebugDLL - - - Console - true - libpng16.lib;zlib.lib - $(OutDir) - - - Executing PNG validation program - "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" - $(IntDir)pngvalid.out - $(OutDir)pngvalid.exe - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - MultiThreadedDebug - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - true - false - true - false - - - Console - true - libpng16.lib;zlib.lib - $(OutDir) - - - Executing PNG validation program - "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" - $(IntDir)pngvalid.out - $(OutDir)pngvalid.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - false - true - WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib;zlib.lib - $(OutDir) - UseLinkTimeCodeGeneration - - - Executing PNG validation program - "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" - $(IntDir)pngvalid.out - $(OutDir)pngvalid.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - MultiThreaded - false - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib;zlib.lib - $(OutDir) - UseLinkTimeCodeGeneration - - - Executing PNG validation program - "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" - $(IntDir)pngvalid.out - $(OutDir)pngvalid.exe - - - - - - - - - + + + + + Debug Library + Win32 + + + Debug + Win32 + + + Release Library + Win32 + + + Release + Win32 + + + + {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8} + Win32Proj + pngvalid + + + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + + + + + + + + + + + + + + + + + false + + + + false + + + + false + + + + false + + + + + NotUsing + Level4 + false + ProgramDatabase + Disabled + EnableFastChecks + WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996;4127 + false + true + true + true + false + true + false + MultiThreadedDebugDLL + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing PNG validation program + "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" + $(IntDir)pngvalid.out + $(OutDir)pngvalid.exe + + + + + NotUsing + Level4 + false + ProgramDatabase + Disabled + EnableFastChecks + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996;4127 + false + true + true + true + false + true + false + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing PNG validation program + "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" + $(IntDir)pngvalid.out + $(OutDir)pngvalid.exe + + + + + Level4 + NotUsing + ProgramDatabase + Full + false + true + WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996;4127 + false + true + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing PNG validation program + "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" + $(IntDir)pngvalid.out + $(OutDir)pngvalid.exe + + + + + Level4 + NotUsing + ProgramDatabase + Full + MultiThreaded + false + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + 4996;4127 + false + true + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing PNG validation program + "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" + $(IntDir)pngvalid.out + $(OutDir)pngvalid.exe + + + + + + + + + diff --git a/3rdparty/libpng/projects/vstudio/vstudio.sln b/3rdparty/libpng/projects/vstudio/vstudio.sln index 5e79aee69e..af0b1bab59 100644 --- a/3rdparty/libpng/projects/vstudio/vstudio.sln +++ b/3rdparty/libpng/projects/vstudio/vstudio.sln @@ -1,109 +1,109 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib.vcxproj", "{60F89955-91C6-3A36-8000-13C592FEC2DF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pnglibconf", "pnglibconf\pnglibconf.vcxproj", "{EB33566E-DA7F-4D28-9077-88C0B7C77E35}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "libpng\libpng.vcxproj", "{D6973076-9317-4EF2-A0B8-B7A18AC0713E}" - ProjectSection(ProjectDependencies) = postProject - {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} - {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngtest", "pngtest\pngtest.vcxproj", "{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}" - ProjectSection(ProjectDependencies) = postProject - {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} - {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} - {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngvalid", "pngvalid\pngvalid.vcxproj", "{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}" - ProjectSection(ProjectDependencies) = postProject - {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} - {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} - {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngstest", "pngstest\pngstest.vcxproj", "{277AC57F-313B-4D06-B119-A3CDB672D2FF}" - ProjectSection(ProjectDependencies) = postProject - {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} - {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} - {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngunknown", "pngunknown\pngunknown.vcxproj", "{C5D3156C-8C8C-4936-B35F-2B829BA36FEC}" - ProjectSection(ProjectDependencies) = postProject - {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} - {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} - {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug Library|Win32 = Debug Library|Win32 - Debug|Win32 = Debug|Win32 - Release Library|Win32 = Release Library|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug Library|Win32.Build.0 = Debug Library|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release Library|Win32.ActiveCfg = Release Library|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release Library|Win32.Build.0 = Release Library|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.Build.0 = Release|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug Library|Win32.Build.0 = Debug Library|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug|Win32.ActiveCfg = Debug|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug|Win32.Build.0 = Debug|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release Library|Win32.ActiveCfg = Release Library|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release Library|Win32.Build.0 = Release Library|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release|Win32.ActiveCfg = Release|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release|Win32.Build.0 = Release|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug Library|Win32.Build.0 = Debug Library|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug|Win32.ActiveCfg = Debug|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug|Win32.Build.0 = Debug|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Release Library|Win32.ActiveCfg = Release Library|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Release Library|Win32.Build.0 = Release Library|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|Win32.ActiveCfg = Release|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|Win32.Build.0 = Release|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug Library|Win32.Build.0 = Debug Library|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug|Win32.ActiveCfg = Debug|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug|Win32.Build.0 = Debug|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release Library|Win32.ActiveCfg = Release Library|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release Library|Win32.Build.0 = Release Library|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release|Win32.ActiveCfg = Release|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release|Win32.Build.0 = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug Library|Win32.ActiveCfg = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug Library|Win32.Build.0 = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug|Win32.ActiveCfg = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug|Win32.Build.0 = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release Library|Win32.ActiveCfg = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release Library|Win32.Build.0 = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release|Win32.ActiveCfg = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release|Win32.Build.0 = Release|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug Library|Win32.Build.0 = Debug Library|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug|Win32.ActiveCfg = Debug|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug|Win32.Build.0 = Debug|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release Library|Win32.ActiveCfg = Release Library|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release Library|Win32.Build.0 = Release Library|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release|Win32.ActiveCfg = Release|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release|Win32.Build.0 = Release|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug Library|Win32.Build.0 = Debug Library|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug|Win32.ActiveCfg = Debug|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug|Win32.Build.0 = Debug|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release Library|Win32.ActiveCfg = Release Library|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release Library|Win32.Build.0 = Release Library|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release|Win32.ActiveCfg = Release|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib.vcxproj", "{60F89955-91C6-3A36-8000-13C592FEC2DF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pnglibconf", "pnglibconf\pnglibconf.vcxproj", "{EB33566E-DA7F-4D28-9077-88C0B7C77E35}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "libpng\libpng.vcxproj", "{D6973076-9317-4EF2-A0B8-B7A18AC0713E}" + ProjectSection(ProjectDependencies) = postProject + {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} + {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngtest", "pngtest\pngtest.vcxproj", "{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}" + ProjectSection(ProjectDependencies) = postProject + {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} + {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} + {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngvalid", "pngvalid\pngvalid.vcxproj", "{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}" + ProjectSection(ProjectDependencies) = postProject + {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} + {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} + {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngstest", "pngstest\pngstest.vcxproj", "{277AC57F-313B-4D06-B119-A3CDB672D2FF}" + ProjectSection(ProjectDependencies) = postProject + {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} + {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} + {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngunknown", "pngunknown\pngunknown.vcxproj", "{C5D3156C-8C8C-4936-B35F-2B829BA36FEC}" + ProjectSection(ProjectDependencies) = postProject + {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} + {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} + {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug Library|Win32 = Debug Library|Win32 + Debug|Win32 = Debug|Win32 + Release Library|Win32 = Release Library|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug Library|Win32.Build.0 = Debug Library|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release Library|Win32.ActiveCfg = Release Library|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release Library|Win32.Build.0 = Release Library|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.Build.0 = Release|Win32 + {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 + {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug Library|Win32.Build.0 = Debug Library|Win32 + {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug|Win32.ActiveCfg = Debug|Win32 + {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug|Win32.Build.0 = Debug|Win32 + {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release Library|Win32.ActiveCfg = Release Library|Win32 + {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release Library|Win32.Build.0 = Release Library|Win32 + {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release|Win32.ActiveCfg = Release|Win32 + {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release|Win32.Build.0 = Release|Win32 + {60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 + {60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug Library|Win32.Build.0 = Debug Library|Win32 + {60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug|Win32.ActiveCfg = Debug|Win32 + {60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug|Win32.Build.0 = Debug|Win32 + {60F89955-91C6-3A36-8000-13C592FEC2DF}.Release Library|Win32.ActiveCfg = Release Library|Win32 + {60F89955-91C6-3A36-8000-13C592FEC2DF}.Release Library|Win32.Build.0 = Release Library|Win32 + {60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|Win32.ActiveCfg = Release|Win32 + {60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|Win32.Build.0 = Release|Win32 + {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 + {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug Library|Win32.Build.0 = Debug Library|Win32 + {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug|Win32.ActiveCfg = Debug|Win32 + {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug|Win32.Build.0 = Debug|Win32 + {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release Library|Win32.ActiveCfg = Release Library|Win32 + {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release Library|Win32.Build.0 = Release Library|Win32 + {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release|Win32.ActiveCfg = Release|Win32 + {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release|Win32.Build.0 = Release|Win32 + {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug Library|Win32.ActiveCfg = Release|Win32 + {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug Library|Win32.Build.0 = Release|Win32 + {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug|Win32.ActiveCfg = Release|Win32 + {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug|Win32.Build.0 = Release|Win32 + {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release Library|Win32.ActiveCfg = Release|Win32 + {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release Library|Win32.Build.0 = Release|Win32 + {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release|Win32.ActiveCfg = Release|Win32 + {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release|Win32.Build.0 = Release|Win32 + {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 + {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug Library|Win32.Build.0 = Debug Library|Win32 + {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug|Win32.ActiveCfg = Debug|Win32 + {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug|Win32.Build.0 = Debug|Win32 + {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release Library|Win32.ActiveCfg = Release Library|Win32 + {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release Library|Win32.Build.0 = Release Library|Win32 + {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release|Win32.ActiveCfg = Release|Win32 + {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release|Win32.Build.0 = Release|Win32 + {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 + {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug Library|Win32.Build.0 = Debug Library|Win32 + {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug|Win32.ActiveCfg = Debug|Win32 + {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug|Win32.Build.0 = Debug|Win32 + {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release Library|Win32.ActiveCfg = Release Library|Win32 + {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release Library|Win32.Build.0 = Release Library|Win32 + {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release|Win32.ActiveCfg = Release|Win32 + {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/3rdparty/libpng/projects/vstudio/zlib/zlib.vcxproj b/3rdparty/libpng/projects/vstudio/zlib/zlib.vcxproj index 63562556b5..6e5b94a61c 100644 --- a/3rdparty/libpng/projects/vstudio/zlib/zlib.vcxproj +++ b/3rdparty/libpng/projects/vstudio/zlib/zlib.vcxproj @@ -1,169 +1,169 @@ - - - - - Debug Library - Win32 - - - Debug - Win32 - - - Release Library - Win32 - - - Release - Win32 - - - - - - - - - - - - - - - - - {60F89955-91C6-3A36-8000-13C592FEC2DF} - Win32Proj - zlib - - - - - StaticLibrary - - - StaticLibrary - - - StaticLibrary - - - StaticLibrary - - - StaticLibrary - - - - - - - - - - - - - - - - - - - true - - - true - - - true - - - true - - - true - - - - WIN32;_DEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions) - MultiThreadedDebug - TurnOffAllWarnings - ProgramDatabase - Disabled - true - true - - - MachineX86 - true - Windows - - - - - WIN32;_DEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions) - TurnOffAllWarnings - ProgramDatabase - Disabled - true - true - MultiThreadedDebugDLL - - - MachineX86 - true - Windows - - - - - Level3 - ProgramDatabase - Full - true - true - false - true - true - true - MultiThreaded - WIN32;NDEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions) - - - MachineX86 - true - Windows - - - true - - - - - Level3 - ProgramDatabase - Full - true - true - false - true - true - true - WIN32;NDEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions) - - - MachineX86 - true - Windows - true - true - - - true - - - - - - + + + + + Debug Library + Win32 + + + Debug + Win32 + + + Release Library + Win32 + + + Release + Win32 + + + + + + + + + + + + + + + + + {60F89955-91C6-3A36-8000-13C592FEC2DF} + Win32Proj + zlib + + + + + StaticLibrary + + + StaticLibrary + + + StaticLibrary + + + StaticLibrary + + + StaticLibrary + + + + + + + + + + + + + + + + + + + true + + + true + + + true + + + true + + + true + + + + WIN32;_DEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions) + MultiThreadedDebug + TurnOffAllWarnings + ProgramDatabase + Disabled + true + true + + + MachineX86 + true + Windows + + + + + WIN32;_DEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions) + TurnOffAllWarnings + ProgramDatabase + Disabled + true + true + MultiThreadedDebugDLL + + + MachineX86 + true + Windows + + + + + Level3 + ProgramDatabase + Full + true + true + false + true + true + true + MultiThreaded + WIN32;NDEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions) + + + MachineX86 + true + Windows + + + true + + + + + Level3 + ProgramDatabase + Full + true + true + false + true + true + true + WIN32;NDEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions) + + + MachineX86 + true + Windows + true + true + + + true + + + + + + diff --git a/3rdparty/libpng/scripts/makefile.gcc b/3rdparty/libpng/scripts/makefile.gcc index 4338b97ccd..ba92d15093 100644 --- a/3rdparty/libpng/scripts/makefile.gcc +++ b/3rdparty/libpng/scripts/makefile.gcc @@ -1,87 +1,87 @@ -# makefile for libpng using gcc (generic, static library) -# Copyright (C) 2008, 2014 Glenn Randers-Pehrson -# Copyright (C) 2000 Cosmin Truta -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Location of the zlib library and include files -ZLIBINC = ../zlib -ZLIBLIB = ../zlib - -# Compiler, linker, lib and other tools -CC = gcc -LD = $(CC) -AR_RC = ar rcs -RANLIB = ranlib -CP = cp -RM_F = rm -f - -WARNMORE = -Wwrite-strings -Wpointer-arith -Wshadow \ - -Wmissing-declarations -Wtraditional -Wcast-align \ - -Wstrict-prototypes -Wmissing-prototypes # -Wconversion -CPPFLAGS = -I$(ZLIBINC) # -DPNG_DEBUG=5 -CFLAGS = -W -Wall -O2 # $(WARNMORE) -g -LDFLAGS = -LIBS = -lz -lm - -# File extensions -EXEEXT = - -# Pre-built configuration -# See scripts/pnglibconf.mak for more options -PNGLIBCONF_H_PREBUILT = scripts/pnglibconf.h.prebuilt - -# Variables -OBJS = png.o pngerror.o pngget.o pngmem.o pngpread.o \ - pngread.o pngrio.o pngrtran.o pngrutil.o pngset.o \ - pngtrans.o pngwio.o pngwrite.o pngwtran.o pngwutil.o - -# Targets -all: static - -pnglibconf.h: $(PNGLIBCONF_H_PREBUILT) - $(CP) $(PNGLIBCONF_H_PREBUILT) $@ - -.c.o: - $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $< - -static: libpng.a pngtest$(EXEEXT) - -shared: - @echo This is a generic makefile that cannot create shared libraries. - @echo Please use a configuration that is specific to your platform. - @false - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -test: pngtest$(EXEEXT) - ./pngtest$(EXEEXT) - -pngtest$(EXEEXT): pngtest.o libpng.a - $(LD) $(LDFLAGS) -L$(ZLIBLIB) -o $@ pngtest.o libpng.a $(LIBS) - -clean: - $(RM_F) *.o libpng.a pngtest$(EXEEXT) pngout.png pnglibconf.h - -png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h +# makefile for libpng using gcc (generic, static library) +# Copyright (C) 2008, 2014 Glenn Randers-Pehrson +# Copyright (C) 2000 Cosmin Truta +# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. +# +# This code is released under the libpng license. +# For conditions of distribution and use, see the disclaimer +# and license in png.h + +# Location of the zlib library and include files +ZLIBINC = ../zlib +ZLIBLIB = ../zlib + +# Compiler, linker, lib and other tools +CC = gcc +LD = $(CC) +AR_RC = ar rcs +RANLIB = ranlib +CP = cp +RM_F = rm -f + +WARNMORE = -Wwrite-strings -Wpointer-arith -Wshadow \ + -Wmissing-declarations -Wtraditional -Wcast-align \ + -Wstrict-prototypes -Wmissing-prototypes # -Wconversion +CPPFLAGS = -I$(ZLIBINC) # -DPNG_DEBUG=5 +CFLAGS = -W -Wall -O2 # $(WARNMORE) -g +LDFLAGS = +LIBS = -lz -lm + +# File extensions +EXEEXT = + +# Pre-built configuration +# See scripts/pnglibconf.mak for more options +PNGLIBCONF_H_PREBUILT = scripts/pnglibconf.h.prebuilt + +# Variables +OBJS = png.o pngerror.o pngget.o pngmem.o pngpread.o \ + pngread.o pngrio.o pngrtran.o pngrutil.o pngset.o \ + pngtrans.o pngwio.o pngwrite.o pngwtran.o pngwutil.o + +# Targets +all: static + +pnglibconf.h: $(PNGLIBCONF_H_PREBUILT) + $(CP) $(PNGLIBCONF_H_PREBUILT) $@ + +.c.o: + $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $< + +static: libpng.a pngtest$(EXEEXT) + +shared: + @echo This is a generic makefile that cannot create shared libraries. + @echo Please use a configuration that is specific to your platform. + @false + +libpng.a: $(OBJS) + $(AR_RC) $@ $(OBJS) + $(RANLIB) $@ + +test: pngtest$(EXEEXT) + ./pngtest$(EXEEXT) + +pngtest$(EXEEXT): pngtest.o libpng.a + $(LD) $(LDFLAGS) -L$(ZLIBLIB) -o $@ pngtest.o libpng.a $(LIBS) + +clean: + $(RM_F) *.o libpng.a pngtest$(EXEEXT) pngout.png pnglibconf.h + +png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h + +pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/3rdparty/portaudio/Doxyfile b/3rdparty/portaudio/Doxyfile index ce2ad3960f..69c5af3772 100644 --- a/3rdparty/portaudio/Doxyfile +++ b/3rdparty/portaudio/Doxyfile @@ -1,240 +1,240 @@ -# Doxyfile 1.4.6 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = PortAudio -PROJECT_NUMBER = 2.0 -OUTPUT_DIRECTORY = ./doc/ -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -BUILTIN_STL_SUPPORT = NO -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = NO -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = NO -GENERATE_TESTLIST = NO -GENERATE_BUGLIST = NO -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = YES -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = doc/src \ - include \ - bindings/java \ - examples -FILE_PATTERNS = *.h \ - *.c \ - *.cpp \ - *.java \ - *.dox -RECURSIVE = YES -EXCLUDE = src/hostapi/wasapi/mingw-include -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = doc/src/images -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = YES -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = NO -HIDE_UNDOC_RELATIONS = NO -HAVE_DOT = NO -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO +# Doxyfile 1.4.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = PortAudio +PROJECT_NUMBER = 2.0 +OUTPUT_DIRECTORY = ./doc/ +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = NO +GENERATE_TESTLIST = NO +GENERATE_BUGLIST = NO +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = doc/src \ + include \ + bindings/java \ + examples +FILE_PATTERNS = *.h \ + *.c \ + *.cpp \ + *.java \ + *.dox +RECURSIVE = YES +EXCLUDE = src/hostapi/wasapi/mingw-include +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = doc/src/images +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/3rdparty/portaudio/Doxyfile.developer b/3rdparty/portaudio/Doxyfile.developer index 0bfb0daffb..7c870b6a21 100644 --- a/3rdparty/portaudio/Doxyfile.developer +++ b/3rdparty/portaudio/Doxyfile.developer @@ -1,243 +1,243 @@ -# Doxyfile 1.4.6 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = PortAudio -PROJECT_NUMBER = 2.0 -OUTPUT_DIRECTORY = ./doc/ -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -BUILTIN_STL_SUPPORT = NO -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = YES -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = INTERNAL -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = YES -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = doc/src \ - include \ - bindings/java \ - examples \ - src \ - test \ - qa -FILE_PATTERNS = *.h \ - *.c \ - *.cpp \ - *.java \ - *.dox -RECURSIVE = YES -EXCLUDE = src/hostapi/wasapi/mingw-include -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = doc/src/images -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = NO -HIDE_UNDOC_RELATIONS = NO -HAVE_DOT = NO -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO +# Doxyfile 1.4.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = PortAudio +PROJECT_NUMBER = 2.0 +OUTPUT_DIRECTORY = ./doc/ +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = YES +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = INTERNAL +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = doc/src \ + include \ + bindings/java \ + examples \ + src \ + test \ + qa +FILE_PATTERNS = *.h \ + *.c \ + *.cpp \ + *.java \ + *.dox +RECURSIVE = YES +EXCLUDE = src/hostapi/wasapi/mingw-include +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = doc/src/images +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/3rdparty/portaudio/LICENSE.txt b/3rdparty/portaudio/LICENSE.txt index 7fc663eef4..e0ac4e8a0c 100644 --- a/3rdparty/portaudio/LICENSE.txt +++ b/3rdparty/portaudio/LICENSE.txt @@ -1,81 +1,81 @@ -Portable header file to contain: ->>>>> -/* - * PortAudio Portable Real-Time Audio Library - * PortAudio API Header File - * Latest version available at: http://www.portaudio.com - * - * Copyright (c) 1999-2006 Ross Bencina and Phil Burk - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ -<<<<< - - -Implementation files to contain: ->>>>> -/* - * PortAudio Portable Real-Time Audio Library - * Latest version at: http://www.portaudio.com - * Implementation - * Copyright (c) 1999-2000 - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ +Portable header file to contain: +>>>>> +/* + * PortAudio Portable Real-Time Audio Library + * PortAudio API Header File + * Latest version available at: http://www.portaudio.com + * + * Copyright (c) 1999-2006 Ross Bencina and Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ +<<<<< + + +Implementation files to contain: +>>>>> +/* + * PortAudio Portable Real-Time Audio Library + * Latest version at: http://www.portaudio.com + * Implementation + * Copyright (c) 1999-2000 + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ <<<<< \ No newline at end of file diff --git a/3rdparty/portaudio/Makefile.in b/3rdparty/portaudio/Makefile.in index fbbec59390..5e1a76485a 100644 --- a/3rdparty/portaudio/Makefile.in +++ b/3rdparty/portaudio/Makefile.in @@ -1,257 +1,257 @@ -# -# PortAudio V19 Makefile.in -# -# Dominic Mazzoni -# Modifications by Mikael Magnusson -# Modifications by Stelios Bounanos -# - -top_srcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ -top_builddir = . -PREFIX = @prefix@ -prefix = $(PREFIX) -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ -CC = @CC@ -CXX = @CXX@ -CFLAGS = @CFLAGS@ @DEFS@ -LIBS = @LIBS@ -AR = @AR@ -RANLIB = @RANLIB@ -SHELL = @SHELL@ -LIBTOOL = @LIBTOOL@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -SHARED_FLAGS = @SHARED_FLAGS@ -LDFLAGS = @LDFLAGS@ -DLL_LIBS = @DLL_LIBS@ -CXXFLAGS = @CXXFLAGS@ -NASM = @NASM@ -NASMOPT = @NASMOPT@ -LN_S = @LN_S@ -LT_CURRENT=@LT_CURRENT@ -LT_REVISION=@LT_REVISION@ -LT_AGE=@LT_AGE@ - -OTHER_OBJS = @OTHER_OBJS@ -INCLUDES = @INCLUDES@ - -PALIB = libportaudio.la -PAINC = include/portaudio.h - -PA_LDFLAGS = $(LDFLAGS) $(SHARED_FLAGS) -rpath $(libdir) -no-undefined \ - -export-symbols-regex "(Pa|PaMacCore|PaJack|PaAlsa|PaAsio|PaOSS)_.*" \ - -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) - -COMMON_OBJS = \ - src/common/pa_allocation.o \ - src/common/pa_converters.o \ - src/common/pa_cpuload.o \ - src/common/pa_dither.o \ - src/common/pa_debugprint.o \ - src/common/pa_front.o \ - src/common/pa_process.o \ - src/common/pa_stream.o \ - src/common/pa_trace.o \ - src/hostapi/skeleton/pa_hostapi_skeleton.o - -LOOPBACK_OBJS = \ - qa/loopback/src/audio_analyzer.o \ - qa/loopback/src/biquad_filter.o \ - qa/loopback/src/paqa_tools.o \ - qa/loopback/src/test_audio_analyzer.o \ - qa/loopback/src/write_wav.o \ - qa/loopback/src/paqa.o - -EXAMPLES = \ - bin/pa_devs \ - bin/pa_fuzz \ - bin/paex_pink \ - bin/paex_read_write_wire \ - bin/paex_record \ - bin/paex_saw \ - bin/paex_sine \ - bin/paex_write_sine \ - bin/paex_write_sine_nonint - -SELFTESTS = \ - bin/paqa_devs \ - bin/paqa_errs \ - bin/paqa_latency - -TESTS = \ - bin/patest1 \ - bin/patest_buffer \ - bin/patest_callbackstop \ - bin/patest_clip \ - bin/patest_dither \ - bin/patest_hang \ - bin/patest_in_overflow \ - bin/patest_latency \ - bin/patest_leftright \ - bin/patest_longsine \ - bin/patest_many \ - bin/patest_maxsines \ - bin/patest_mono \ - bin/patest_multi_sine \ - bin/patest_out_underflow \ - bin/patest_prime \ - bin/patest_ringmix \ - bin/patest_sine8 \ - bin/patest_sine_channelmaps \ - bin/patest_sine_formats \ - bin/patest_sine_time \ - bin/patest_sine_srate \ - bin/patest_start_stop \ - bin/patest_stop \ - bin/patest_stop_playout \ - bin/patest_toomanysines \ - bin/patest_two_rates \ - bin/patest_underflow \ - bin/patest_wire \ - bin/pa_minlat - -# Most of these don't compile yet. Put them in TESTS, above, if -# you want to try to compile them... -ALL_TESTS = \ - $(TESTS) \ - bin/patest_sync \ - bin/debug_convert \ - bin/debug_dither_calc \ - bin/debug_dual \ - bin/debug_multi_in \ - bin/debug_multi_out \ - bin/debug_record \ - bin/debug_record_reuse \ - bin/debug_sine_amp \ - bin/debug_sine \ - bin/debug_sine_formats \ - bin/debug_srate \ - bin/debug_test1 - -OBJS := $(COMMON_OBJS) $(OTHER_OBJS) - -LTOBJS := $(OBJS:.o=.lo) - -SRC_DIRS = \ - src/common \ - src/hostapi/alsa \ - src/hostapi/asihpi \ - src/hostapi/asio \ - src/hostapi/coreaudio \ - src/hostapi/dsound \ - src/hostapi/jack \ - src/hostapi/oss \ - src/hostapi/wasapi \ - src/hostapi/wdmks \ - src/hostapi/wmme \ - src/os/unix \ - src/os/win - -SUBDIRS = -@ENABLE_CXX_TRUE@SUBDIRS += bindings/cpp - -all: lib/$(PALIB) all-recursive tests examples selftests - -tests: bin-stamp $(TESTS) - -examples: bin-stamp $(EXAMPLES) - -selftests: bin-stamp $(SELFTESTS) - -loopback: bin-stamp bin/paloopback - -# With ASIO enabled we must link libportaudio and all test programs with CXX -lib/$(PALIB): lib-stamp $(LTOBJS) $(MAKEFILE) $(PAINC) - @WITH_ASIO_FALSE@ $(LIBTOOL) --mode=link $(CC) $(PA_LDFLAGS) -o lib/$(PALIB) $(LTOBJS) $(DLL_LIBS) - @WITH_ASIO_TRUE@ $(LIBTOOL) --mode=link --tag=CXX $(CXX) $(PA_LDFLAGS) -o lib/$(PALIB) $(LTOBJS) $(DLL_LIBS) - -$(ALL_TESTS): bin/%: lib/$(PALIB) $(MAKEFILE) $(PAINC) test/%.c - @WITH_ASIO_FALSE@ $(LIBTOOL) --mode=link $(CC) -o $@ $(CFLAGS) $(top_srcdir)/test/$*.c lib/$(PALIB) $(LIBS) - @WITH_ASIO_TRUE@ $(LIBTOOL) --mode=link --tag=CXX $(CXX) -o $@ $(CXXFLAGS) $(top_srcdir)/test/$*.c lib/$(PALIB) $(LIBS) - -$(EXAMPLES): bin/%: lib/$(PALIB) $(MAKEFILE) $(PAINC) examples/%.c - @WITH_ASIO_FALSE@ $(LIBTOOL) --mode=link $(CC) -o $@ $(CFLAGS) $(top_srcdir)/examples/$*.c lib/$(PALIB) $(LIBS) - @WITH_ASIO_TRUE@ $(LIBTOOL) --mode=link --tag=CXX $(CXX) -o $@ $(CXXFLAGS) $(top_srcdir)/examples/$*.c lib/$(PALIB) $(LIBS) - -$(SELFTESTS): bin/%: lib/$(PALIB) $(MAKEFILE) $(PAINC) qa/%.c - @WITH_ASIO_FALSE@ $(LIBTOOL) --mode=link $(CC) -o $@ $(CFLAGS) $(top_srcdir)/qa/$*.c lib/$(PALIB) $(LIBS) - @WITH_ASIO_TRUE@ $(LIBTOOL) --mode=link --tag=CXX $(CXX) -o $@ $(CXXFLAGS) $(top_srcdir)/qa/$*.c lib/$(PALIB) $(LIBS) - -bin/paloopback: lib/$(PALIB) $(MAKEFILE) $(PAINC) $(LOOPBACK_OBJS) - @WITH_ASIO_FALSE@ $(LIBTOOL) --mode=link $(CC) -o $@ $(CFLAGS) $(LOOPBACK_OBJS) lib/$(PALIB) $(LIBS) - @WITH_ASIO_TRUE@ $(LIBTOOL) --mode=link --tag=CXX $(CXX) -o $@ $(CXXFLAGS) $(LOOPBACK_OBJS) lib/$(PALIB) $(LIBS) - -install: lib/$(PALIB) portaudio-2.0.pc - $(INSTALL) -d $(DESTDIR)$(libdir) - $(LIBTOOL) --mode=install $(INSTALL) lib/$(PALIB) $(DESTDIR)$(libdir) - $(INSTALL) -d $(DESTDIR)$(includedir) - for include in $(INCLUDES); do \ - $(INSTALL_DATA) -m 644 $(top_srcdir)/include/$$include $(DESTDIR)$(includedir)/$$include; \ - done - $(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig - $(INSTALL) -m 644 portaudio-2.0.pc $(DESTDIR)$(libdir)/pkgconfig/portaudio-2.0.pc - @echo "" - @echo "------------------------------------------------------------" - @echo "PortAudio was successfully installed." - @echo "" - @echo "On some systems (e.g. Linux) you should run 'ldconfig' now" - @echo "to make the shared object available. You may also need to" - @echo "modify your LD_LIBRARY_PATH environment variable to include" - @echo "the directory $(libdir)" - @echo "------------------------------------------------------------" - @echo "" - $(MAKE) install-recursive - -uninstall: - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(PALIB) - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(includedir)/portaudio.h - $(MAKE) uninstall-recursive - -clean: - $(LIBTOOL) --mode=clean rm -f $(LTOBJS) $(LOOPBACK_OBJS) $(ALL_TESTS) lib/$(PALIB) - $(RM) bin-stamp lib-stamp - -$(RM) -r bin lib - -distclean: clean - $(RM) config.log config.status Makefile libtool portaudio-2.0.pc - -%.o: %.c $(MAKEFILE) $(PAINC) - $(CC) -c $(CFLAGS) $< -o $@ - -%.lo: %.c $(MAKEFILE) $(PAINC) - $(LIBTOOL) --mode=compile $(CC) -c $(CFLAGS) $< -o $@ - -%.lo: %.cpp $(MAKEFILE) $(PAINC) - $(LIBTOOL) --mode=compile --tag=CXX $(CXX) -c $(CXXFLAGS) $< -o $@ - -%.o: %.cpp $(MAKEFILE) $(PAINC) - $(CXX) -c $(CXXFLAGS) $< -o $@ - -%.o: %.asm - $(NASM) $(NASMOPT) -o $@ $< - -bin-stamp: - -mkdir bin - touch $@ - -lib-stamp: - -mkdir lib - -mkdir -p $(SRC_DIRS) - touch $@ - -Makefile: Makefile.in config.status - $(SHELL) config.status - -all-recursive: - if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir all; done ; fi - -install-recursive: - if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir install; done ; fi - -uninstall-recursive: - if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir uninstall; done ; fi +# +# PortAudio V19 Makefile.in +# +# Dominic Mazzoni +# Modifications by Mikael Magnusson +# Modifications by Stelios Bounanos +# + +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ +top_builddir = . +PREFIX = @prefix@ +prefix = $(PREFIX) +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +includedir = @includedir@ +CC = @CC@ +CXX = @CXX@ +CFLAGS = @CFLAGS@ @DEFS@ +LIBS = @LIBS@ +AR = @AR@ +RANLIB = @RANLIB@ +SHELL = @SHELL@ +LIBTOOL = @LIBTOOL@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +SHARED_FLAGS = @SHARED_FLAGS@ +LDFLAGS = @LDFLAGS@ +DLL_LIBS = @DLL_LIBS@ +CXXFLAGS = @CXXFLAGS@ +NASM = @NASM@ +NASMOPT = @NASMOPT@ +LN_S = @LN_S@ +LT_CURRENT=@LT_CURRENT@ +LT_REVISION=@LT_REVISION@ +LT_AGE=@LT_AGE@ + +OTHER_OBJS = @OTHER_OBJS@ +INCLUDES = @INCLUDES@ + +PALIB = libportaudio.la +PAINC = include/portaudio.h + +PA_LDFLAGS = $(LDFLAGS) $(SHARED_FLAGS) -rpath $(libdir) -no-undefined \ + -export-symbols-regex "(Pa|PaMacCore|PaJack|PaAlsa|PaAsio|PaOSS)_.*" \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) + +COMMON_OBJS = \ + src/common/pa_allocation.o \ + src/common/pa_converters.o \ + src/common/pa_cpuload.o \ + src/common/pa_dither.o \ + src/common/pa_debugprint.o \ + src/common/pa_front.o \ + src/common/pa_process.o \ + src/common/pa_stream.o \ + src/common/pa_trace.o \ + src/hostapi/skeleton/pa_hostapi_skeleton.o + +LOOPBACK_OBJS = \ + qa/loopback/src/audio_analyzer.o \ + qa/loopback/src/biquad_filter.o \ + qa/loopback/src/paqa_tools.o \ + qa/loopback/src/test_audio_analyzer.o \ + qa/loopback/src/write_wav.o \ + qa/loopback/src/paqa.o + +EXAMPLES = \ + bin/pa_devs \ + bin/pa_fuzz \ + bin/paex_pink \ + bin/paex_read_write_wire \ + bin/paex_record \ + bin/paex_saw \ + bin/paex_sine \ + bin/paex_write_sine \ + bin/paex_write_sine_nonint + +SELFTESTS = \ + bin/paqa_devs \ + bin/paqa_errs \ + bin/paqa_latency + +TESTS = \ + bin/patest1 \ + bin/patest_buffer \ + bin/patest_callbackstop \ + bin/patest_clip \ + bin/patest_dither \ + bin/patest_hang \ + bin/patest_in_overflow \ + bin/patest_latency \ + bin/patest_leftright \ + bin/patest_longsine \ + bin/patest_many \ + bin/patest_maxsines \ + bin/patest_mono \ + bin/patest_multi_sine \ + bin/patest_out_underflow \ + bin/patest_prime \ + bin/patest_ringmix \ + bin/patest_sine8 \ + bin/patest_sine_channelmaps \ + bin/patest_sine_formats \ + bin/patest_sine_time \ + bin/patest_sine_srate \ + bin/patest_start_stop \ + bin/patest_stop \ + bin/patest_stop_playout \ + bin/patest_toomanysines \ + bin/patest_two_rates \ + bin/patest_underflow \ + bin/patest_wire \ + bin/pa_minlat + +# Most of these don't compile yet. Put them in TESTS, above, if +# you want to try to compile them... +ALL_TESTS = \ + $(TESTS) \ + bin/patest_sync \ + bin/debug_convert \ + bin/debug_dither_calc \ + bin/debug_dual \ + bin/debug_multi_in \ + bin/debug_multi_out \ + bin/debug_record \ + bin/debug_record_reuse \ + bin/debug_sine_amp \ + bin/debug_sine \ + bin/debug_sine_formats \ + bin/debug_srate \ + bin/debug_test1 + +OBJS := $(COMMON_OBJS) $(OTHER_OBJS) + +LTOBJS := $(OBJS:.o=.lo) + +SRC_DIRS = \ + src/common \ + src/hostapi/alsa \ + src/hostapi/asihpi \ + src/hostapi/asio \ + src/hostapi/coreaudio \ + src/hostapi/dsound \ + src/hostapi/jack \ + src/hostapi/oss \ + src/hostapi/wasapi \ + src/hostapi/wdmks \ + src/hostapi/wmme \ + src/os/unix \ + src/os/win + +SUBDIRS = +@ENABLE_CXX_TRUE@SUBDIRS += bindings/cpp + +all: lib/$(PALIB) all-recursive tests examples selftests + +tests: bin-stamp $(TESTS) + +examples: bin-stamp $(EXAMPLES) + +selftests: bin-stamp $(SELFTESTS) + +loopback: bin-stamp bin/paloopback + +# With ASIO enabled we must link libportaudio and all test programs with CXX +lib/$(PALIB): lib-stamp $(LTOBJS) $(MAKEFILE) $(PAINC) + @WITH_ASIO_FALSE@ $(LIBTOOL) --mode=link $(CC) $(PA_LDFLAGS) -o lib/$(PALIB) $(LTOBJS) $(DLL_LIBS) + @WITH_ASIO_TRUE@ $(LIBTOOL) --mode=link --tag=CXX $(CXX) $(PA_LDFLAGS) -o lib/$(PALIB) $(LTOBJS) $(DLL_LIBS) + +$(ALL_TESTS): bin/%: lib/$(PALIB) $(MAKEFILE) $(PAINC) test/%.c + @WITH_ASIO_FALSE@ $(LIBTOOL) --mode=link $(CC) -o $@ $(CFLAGS) $(top_srcdir)/test/$*.c lib/$(PALIB) $(LIBS) + @WITH_ASIO_TRUE@ $(LIBTOOL) --mode=link --tag=CXX $(CXX) -o $@ $(CXXFLAGS) $(top_srcdir)/test/$*.c lib/$(PALIB) $(LIBS) + +$(EXAMPLES): bin/%: lib/$(PALIB) $(MAKEFILE) $(PAINC) examples/%.c + @WITH_ASIO_FALSE@ $(LIBTOOL) --mode=link $(CC) -o $@ $(CFLAGS) $(top_srcdir)/examples/$*.c lib/$(PALIB) $(LIBS) + @WITH_ASIO_TRUE@ $(LIBTOOL) --mode=link --tag=CXX $(CXX) -o $@ $(CXXFLAGS) $(top_srcdir)/examples/$*.c lib/$(PALIB) $(LIBS) + +$(SELFTESTS): bin/%: lib/$(PALIB) $(MAKEFILE) $(PAINC) qa/%.c + @WITH_ASIO_FALSE@ $(LIBTOOL) --mode=link $(CC) -o $@ $(CFLAGS) $(top_srcdir)/qa/$*.c lib/$(PALIB) $(LIBS) + @WITH_ASIO_TRUE@ $(LIBTOOL) --mode=link --tag=CXX $(CXX) -o $@ $(CXXFLAGS) $(top_srcdir)/qa/$*.c lib/$(PALIB) $(LIBS) + +bin/paloopback: lib/$(PALIB) $(MAKEFILE) $(PAINC) $(LOOPBACK_OBJS) + @WITH_ASIO_FALSE@ $(LIBTOOL) --mode=link $(CC) -o $@ $(CFLAGS) $(LOOPBACK_OBJS) lib/$(PALIB) $(LIBS) + @WITH_ASIO_TRUE@ $(LIBTOOL) --mode=link --tag=CXX $(CXX) -o $@ $(CXXFLAGS) $(LOOPBACK_OBJS) lib/$(PALIB) $(LIBS) + +install: lib/$(PALIB) portaudio-2.0.pc + $(INSTALL) -d $(DESTDIR)$(libdir) + $(LIBTOOL) --mode=install $(INSTALL) lib/$(PALIB) $(DESTDIR)$(libdir) + $(INSTALL) -d $(DESTDIR)$(includedir) + for include in $(INCLUDES); do \ + $(INSTALL_DATA) -m 644 $(top_srcdir)/include/$$include $(DESTDIR)$(includedir)/$$include; \ + done + $(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig + $(INSTALL) -m 644 portaudio-2.0.pc $(DESTDIR)$(libdir)/pkgconfig/portaudio-2.0.pc + @echo "" + @echo "------------------------------------------------------------" + @echo "PortAudio was successfully installed." + @echo "" + @echo "On some systems (e.g. Linux) you should run 'ldconfig' now" + @echo "to make the shared object available. You may also need to" + @echo "modify your LD_LIBRARY_PATH environment variable to include" + @echo "the directory $(libdir)" + @echo "------------------------------------------------------------" + @echo "" + $(MAKE) install-recursive + +uninstall: + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(PALIB) + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(includedir)/portaudio.h + $(MAKE) uninstall-recursive + +clean: + $(LIBTOOL) --mode=clean rm -f $(LTOBJS) $(LOOPBACK_OBJS) $(ALL_TESTS) lib/$(PALIB) + $(RM) bin-stamp lib-stamp + -$(RM) -r bin lib + +distclean: clean + $(RM) config.log config.status Makefile libtool portaudio-2.0.pc + +%.o: %.c $(MAKEFILE) $(PAINC) + $(CC) -c $(CFLAGS) $< -o $@ + +%.lo: %.c $(MAKEFILE) $(PAINC) + $(LIBTOOL) --mode=compile $(CC) -c $(CFLAGS) $< -o $@ + +%.lo: %.cpp $(MAKEFILE) $(PAINC) + $(LIBTOOL) --mode=compile --tag=CXX $(CXX) -c $(CXXFLAGS) $< -o $@ + +%.o: %.cpp $(MAKEFILE) $(PAINC) + $(CXX) -c $(CXXFLAGS) $< -o $@ + +%.o: %.asm + $(NASM) $(NASMOPT) -o $@ $< + +bin-stamp: + -mkdir bin + touch $@ + +lib-stamp: + -mkdir lib + -mkdir -p $(SRC_DIRS) + touch $@ + +Makefile: Makefile.in config.status + $(SHELL) config.status + +all-recursive: + if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir all; done ; fi + +install-recursive: + if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir install; done ; fi + +uninstall-recursive: + if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir uninstall; done ; fi diff --git a/3rdparty/portaudio/README.txt b/3rdparty/portaudio/README.txt index c7ad329cd2..211382785a 100644 --- a/3rdparty/portaudio/README.txt +++ b/3rdparty/portaudio/README.txt @@ -1,98 +1,98 @@ -README for PortAudio - -/* - * PortAudio Portable Real-Time Audio Library - * Latest Version at: http://www.portaudio.com - * - * Copyright (c) 1999-2008 Phil Burk and Ross Bencina - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ - - -PortAudio is a portable audio I/O library designed for cross-platform -support of audio. It uses either a callback mechanism to request audio -processing, or blocking read/write calls to buffer data between the -native audio subsystem and the client. Audio can be processed in various -formats, including 32 bit floating point, and will be converted to the -native format internally. - -Documentation: - Documentation is available in "/doc/html/index.html" - Also see "src/common/portaudio.h" for API spec. - Also see http://www.portaudio.com/docs/ - And see the "test/" directory for many examples of usage - (we suggest "test/patest_saw.c" for an example) - -For information on compiling programs with PortAudio, please see the -tutorial at: - - http://portaudio.com/trac/wiki/TutorialDir/TutorialStart - -We have an active mailing list for user and developer discussions. -Please feel free to join. See http://www.portaudio.com for details. - - -Important Files and Folders: - include/portaudio.h = header file for PortAudio API. Specifies API. - src/common/ = platform independant code, host independant - code for all implementations. - src/os = os specific (but host api neutral) code - src/hostapi = implementations for different host apis - - -Host API Implementations: - src/hostapi/alsa = Advanced Linux Sound Architecture (ALSA) - src/hostapi/asihpi = AudioScience HPI - src/hostapi/asio = ASIO for Windows and Macintosh - src/hostapi/coreaudio = Macintosh Core Audio for OS X - src/hostapi/dsound = Windows Direct Sound - src/hostapi/jack = JACK Audio Connection Kit - src/hostapi/oss = Unix Open Sound System (OSS) - src/hostapi/wasapi = Windows Vista WASAPI - src/hostapi/wdmks = Windows WDM Kernel Streaming - src/hostapi/wmme = Windows MultiMedia Extensions (MME) - - -Test Programs: - test/pa_fuzz.c = guitar fuzz box - test/pa_devs.c = print a list of available devices - test/pa_minlat.c = determine minimum latency for your machine - test/paqa_devs.c = self test that opens all devices - test/paqa_errs.c = test error detection and reporting - test/patest_clip.c = hear a sine wave clipped and unclipped - test/patest_dither.c = hear effects of dithering (extremely subtle) - test/patest_pink.c = fun with pink noise - test/patest_record.c = record and playback some audio - test/patest_maxsines.c = how many sine waves can we play? Tests Pa_GetCPULoad(). - test/patest_sine.c = output a sine wave in a simple PA app - test/patest_sync.c = test syncronization of audio and video - test/patest_wire.c = pass input to output, wire simulator +README for PortAudio + +/* + * PortAudio Portable Real-Time Audio Library + * Latest Version at: http://www.portaudio.com + * + * Copyright (c) 1999-2008 Phil Burk and Ross Bencina + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + + +PortAudio is a portable audio I/O library designed for cross-platform +support of audio. It uses either a callback mechanism to request audio +processing, or blocking read/write calls to buffer data between the +native audio subsystem and the client. Audio can be processed in various +formats, including 32 bit floating point, and will be converted to the +native format internally. + +Documentation: + Documentation is available in "/doc/html/index.html" + Also see "src/common/portaudio.h" for API spec. + Also see http://www.portaudio.com/docs/ + And see the "test/" directory for many examples of usage + (we suggest "test/patest_saw.c" for an example) + +For information on compiling programs with PortAudio, please see the +tutorial at: + + http://portaudio.com/trac/wiki/TutorialDir/TutorialStart + +We have an active mailing list for user and developer discussions. +Please feel free to join. See http://www.portaudio.com for details. + + +Important Files and Folders: + include/portaudio.h = header file for PortAudio API. Specifies API. + src/common/ = platform independant code, host independant + code for all implementations. + src/os = os specific (but host api neutral) code + src/hostapi = implementations for different host apis + + +Host API Implementations: + src/hostapi/alsa = Advanced Linux Sound Architecture (ALSA) + src/hostapi/asihpi = AudioScience HPI + src/hostapi/asio = ASIO for Windows and Macintosh + src/hostapi/coreaudio = Macintosh Core Audio for OS X + src/hostapi/dsound = Windows Direct Sound + src/hostapi/jack = JACK Audio Connection Kit + src/hostapi/oss = Unix Open Sound System (OSS) + src/hostapi/wasapi = Windows Vista WASAPI + src/hostapi/wdmks = Windows WDM Kernel Streaming + src/hostapi/wmme = Windows MultiMedia Extensions (MME) + + +Test Programs: + test/pa_fuzz.c = guitar fuzz box + test/pa_devs.c = print a list of available devices + test/pa_minlat.c = determine minimum latency for your machine + test/paqa_devs.c = self test that opens all devices + test/paqa_errs.c = test error detection and reporting + test/patest_clip.c = hear a sine wave clipped and unclipped + test/patest_dither.c = hear effects of dithering (extremely subtle) + test/patest_pink.c = fun with pink noise + test/patest_record.c = record and playback some audio + test/patest_maxsines.c = how many sine waves can we play? Tests Pa_GetCPULoad(). + test/patest_sine.c = output a sine wave in a simple PA app + test/patest_sync.c = test syncronization of audio and video + test/patest_wire.c = pass input to output, wire simulator diff --git a/3rdparty/portaudio/SConstruct b/3rdparty/portaudio/SConstruct index ad48f006fc..37e67bacd3 100644 --- a/3rdparty/portaudio/SConstruct +++ b/3rdparty/portaudio/SConstruct @@ -1,197 +1,197 @@ -import sys, os.path - -def rsplit(toSplit, sub, max=-1): - """ str.rsplit seems to have been introduced in 2.4 :( """ - l = [] - i = 0 - while i != max: - try: idx = toSplit.rindex(sub) - except ValueError: break - - toSplit, splitOff = toSplit[:idx], toSplit[idx + len(sub):] - l.insert(0, splitOff) - i += 1 - - l.insert(0, toSplit) - return l - -sconsDir = os.path.join("build", "scons") -SConscript(os.path.join(sconsDir, "SConscript_common")) -Import("Platform", "Posix", "ApiVer") - -# SConscript_opts exports PortAudio options -optsDict = SConscript(os.path.join(sconsDir, "SConscript_opts")) -optionsCache = os.path.join(sconsDir, "options.cache") # Save options between runs in this cache -options = Options(optionsCache, args=ARGUMENTS) -for k in ("Installation Dirs", "Build Targets", "Host APIs", "Build Parameters", "Bindings"): - options.AddOptions(*optsDict[k]) -# Propagate options into environment -env = Environment(options=options) -# Save options for next run -options.Save(optionsCache, env) -# Generate help text for options -env.Help(options.GenerateHelpText(env)) - -buildDir = os.path.join("#", sconsDir, env["PLATFORM"]) - -# Determine parameters to build tools -if Platform in Posix: - threadCFlags = '' - if Platform != 'darwin': - threadCFlags = "-pthread " - baseLinkFlags = threadCFlags - baseCxxFlags = baseCFlags = "-Wall -pedantic -pipe " + threadCFlags - debugCxxFlags = debugCFlags = "-g" - optCxxFlags = optCFlags = "-O2" -env.Append(CCFLAGS = baseCFlags) -env.Append(CXXFLAGS = baseCxxFlags) -env.Append(LINKFLAGS = baseLinkFlags) -if env["enableDebug"]: - env.AppendUnique(CCFLAGS=debugCFlags.split()) - env.AppendUnique(CXXFLAGS=debugCxxFlags.split()) -if env["enableOptimize"]: - env.AppendUnique(CCFLAGS=optCFlags.split()) - env.AppendUnique(CXXFLAGS=optCxxFlags.split()) -if not env["enableAsserts"]: - env.AppendUnique(CPPDEFINES=["-DNDEBUG"]) -if env["customCFlags"]: - env.Append(CCFLAGS=Split(env["customCFlags"])) -if env["customCxxFlags"]: - env.Append(CXXFLAGS=Split(env["customCxxFlags"])) -if env["customLinkFlags"]: - env.Append(LINKFLAGS=Split(env["customLinkFlags"])) - -env.Append(CPPPATH=[os.path.join("#", "include"), "common"]) - -# Store all signatures in one file, otherwise .sconsign files will get installed along with our own files -env.SConsignFile(os.path.join(sconsDir, ".sconsign")) - -env.SConscriptChdir(False) -sources, sharedLib, staticLib, tests, portEnv, hostApis = env.SConscript(os.path.join("src", "SConscript"), - build_dir=buildDir, duplicate=False, exports=["env"]) - -if Platform in Posix: - prefix = env["prefix"] - includeDir = os.path.join(prefix, "include") - libDir = os.path.join(prefix, "lib") - env.Alias("install", includeDir) - env.Alias("install", libDir) - - # pkg-config - - def installPkgconfig(env, target, source): - tgt = str(target[0]) - src = str(source[0]) - f = open(src) - try: txt = f.read() - finally: f.close() - txt = txt.replace("@prefix@", prefix) - txt = txt.replace("@exec_prefix@", prefix) - txt = txt.replace("@libdir@", libDir) - txt = txt.replace("@includedir@", includeDir) - txt = txt.replace("@LIBS@", " ".join(["-l%s" % l for l in portEnv["LIBS"]])) - txt = txt.replace("@THREAD_CFLAGS@", threadCFlags) - - f = open(tgt, "w") - try: f.write(txt) - finally: f.close() - - pkgconfigTgt = "portaudio-%d.0.pc" % int(ApiVer.split(".", 1)[0]) - env.Command(os.path.join(libDir, "pkgconfig", pkgconfigTgt), - os.path.join("#", pkgconfigTgt + ".in"), installPkgconfig) - -# Default to None, since if the user disables all targets and no Default is set, all targets -# are built by default -env.Default(None) -if env["enableTests"]: - env.Default(tests) -if env["enableShared"]: - env.Default(sharedLib) - - if Platform in Posix: - def symlink(env, target, source): - trgt = str(target[0]) - src = str(source[0]) - - if os.path.islink(trgt) or os.path.exists(trgt): - os.remove(trgt) - os.symlink(os.path.basename(src), trgt) - - major, minor, micro = [int(c) for c in ApiVer.split(".")] - - soFile = "%s.%s" % (os.path.basename(str(sharedLib[0])), ApiVer) - env.InstallAs(target=os.path.join(libDir, soFile), source=sharedLib) - # Install symlinks - symTrgt = os.path.join(libDir, soFile) - env.Command(os.path.join(libDir, "libportaudio.so.%d.%d" % (major, minor)), - symTrgt, symlink) - symTrgt = rsplit(symTrgt, ".", 1)[0] - env.Command(os.path.join(libDir, "libportaudio.so.%d" % major), symTrgt, symlink) - symTrgt = rsplit(symTrgt, ".", 1)[0] - env.Command(os.path.join(libDir, "libportaudio.so"), symTrgt, symlink) - -if env["enableStatic"]: - env.Default(staticLib) - env.Install(libDir, staticLib) - -env.Install(includeDir, os.path.join("include", "portaudio.h")) - - -if env["enableCxx"]: - env.SConscriptChdir(True) - cxxEnv = env.Copy() - sharedLibs, staticLibs, headers = env.SConscript(os.path.join("bindings", "cpp", "SConscript"), - exports={"env": cxxEnv, "buildDir": buildDir}, build_dir=os.path.join(buildDir, "portaudiocpp"), duplicate=False) - if env["enableStatic"]: - env.Default(staticLibs) - env.Install(libDir, staticLibs) - if env["enableShared"]: - env.Default(sharedLibs) - env.Install(libDir, sharedLibs) - env.Install(os.path.join(includeDir, "portaudiocpp"), headers) - -# Generate portaudio_config.h header with compile-time definitions of which PA -# back-ends are available, and which includes back-end extension headers - -# Host-specific headers -hostApiHeaders = {"ALSA": "pa_linux_alsa.h", - "ASIO": "pa_asio.h", - "COREAUDIO": "pa_mac_core.h", - "JACK": "pa_jack.h", - "WMME": "pa_winwmme.h", - } - -def buildConfigH(target, source, env): - """builder for portaudio_config.h""" - global hostApiHeaders, hostApis - out = "" - for hostApi in hostApis: - out += "#define PA_HAVE_%s\n" % hostApi - - hostApiSpecificHeader = hostApiHeaders.get(hostApi, None) - if hostApiSpecificHeader: - out += "#include \"%s\"\n" % hostApiSpecificHeader - - out += "\n" - # Strip the last newline - if out and out[-1] == "\n": - out = out[:-1] - - f = file(str(target[0]), 'w') - try: f.write(out) - finally: f.close() - return 0 - -# Define the builder for the config header -env.Append(BUILDERS={"portaudioConfig": env.Builder( - action=Action(buildConfigH), target_factory=env.fs.File)}) - -confH = env.portaudioConfig(File("portaudio_config.h", "include"), - File("portaudio.h", "include")) -env.Default(confH) -env.Install(os.path.join(includeDir, "portaudio"), confH) - -for api in hostApis: - if api in hostApiHeaders: - env.Install(os.path.join(includeDir, "portaudio"), - File(hostApiHeaders[api], "include")) +import sys, os.path + +def rsplit(toSplit, sub, max=-1): + """ str.rsplit seems to have been introduced in 2.4 :( """ + l = [] + i = 0 + while i != max: + try: idx = toSplit.rindex(sub) + except ValueError: break + + toSplit, splitOff = toSplit[:idx], toSplit[idx + len(sub):] + l.insert(0, splitOff) + i += 1 + + l.insert(0, toSplit) + return l + +sconsDir = os.path.join("build", "scons") +SConscript(os.path.join(sconsDir, "SConscript_common")) +Import("Platform", "Posix", "ApiVer") + +# SConscript_opts exports PortAudio options +optsDict = SConscript(os.path.join(sconsDir, "SConscript_opts")) +optionsCache = os.path.join(sconsDir, "options.cache") # Save options between runs in this cache +options = Options(optionsCache, args=ARGUMENTS) +for k in ("Installation Dirs", "Build Targets", "Host APIs", "Build Parameters", "Bindings"): + options.AddOptions(*optsDict[k]) +# Propagate options into environment +env = Environment(options=options) +# Save options for next run +options.Save(optionsCache, env) +# Generate help text for options +env.Help(options.GenerateHelpText(env)) + +buildDir = os.path.join("#", sconsDir, env["PLATFORM"]) + +# Determine parameters to build tools +if Platform in Posix: + threadCFlags = '' + if Platform != 'darwin': + threadCFlags = "-pthread " + baseLinkFlags = threadCFlags + baseCxxFlags = baseCFlags = "-Wall -pedantic -pipe " + threadCFlags + debugCxxFlags = debugCFlags = "-g" + optCxxFlags = optCFlags = "-O2" +env.Append(CCFLAGS = baseCFlags) +env.Append(CXXFLAGS = baseCxxFlags) +env.Append(LINKFLAGS = baseLinkFlags) +if env["enableDebug"]: + env.AppendUnique(CCFLAGS=debugCFlags.split()) + env.AppendUnique(CXXFLAGS=debugCxxFlags.split()) +if env["enableOptimize"]: + env.AppendUnique(CCFLAGS=optCFlags.split()) + env.AppendUnique(CXXFLAGS=optCxxFlags.split()) +if not env["enableAsserts"]: + env.AppendUnique(CPPDEFINES=["-DNDEBUG"]) +if env["customCFlags"]: + env.Append(CCFLAGS=Split(env["customCFlags"])) +if env["customCxxFlags"]: + env.Append(CXXFLAGS=Split(env["customCxxFlags"])) +if env["customLinkFlags"]: + env.Append(LINKFLAGS=Split(env["customLinkFlags"])) + +env.Append(CPPPATH=[os.path.join("#", "include"), "common"]) + +# Store all signatures in one file, otherwise .sconsign files will get installed along with our own files +env.SConsignFile(os.path.join(sconsDir, ".sconsign")) + +env.SConscriptChdir(False) +sources, sharedLib, staticLib, tests, portEnv, hostApis = env.SConscript(os.path.join("src", "SConscript"), + build_dir=buildDir, duplicate=False, exports=["env"]) + +if Platform in Posix: + prefix = env["prefix"] + includeDir = os.path.join(prefix, "include") + libDir = os.path.join(prefix, "lib") + env.Alias("install", includeDir) + env.Alias("install", libDir) + + # pkg-config + + def installPkgconfig(env, target, source): + tgt = str(target[0]) + src = str(source[0]) + f = open(src) + try: txt = f.read() + finally: f.close() + txt = txt.replace("@prefix@", prefix) + txt = txt.replace("@exec_prefix@", prefix) + txt = txt.replace("@libdir@", libDir) + txt = txt.replace("@includedir@", includeDir) + txt = txt.replace("@LIBS@", " ".join(["-l%s" % l for l in portEnv["LIBS"]])) + txt = txt.replace("@THREAD_CFLAGS@", threadCFlags) + + f = open(tgt, "w") + try: f.write(txt) + finally: f.close() + + pkgconfigTgt = "portaudio-%d.0.pc" % int(ApiVer.split(".", 1)[0]) + env.Command(os.path.join(libDir, "pkgconfig", pkgconfigTgt), + os.path.join("#", pkgconfigTgt + ".in"), installPkgconfig) + +# Default to None, since if the user disables all targets and no Default is set, all targets +# are built by default +env.Default(None) +if env["enableTests"]: + env.Default(tests) +if env["enableShared"]: + env.Default(sharedLib) + + if Platform in Posix: + def symlink(env, target, source): + trgt = str(target[0]) + src = str(source[0]) + + if os.path.islink(trgt) or os.path.exists(trgt): + os.remove(trgt) + os.symlink(os.path.basename(src), trgt) + + major, minor, micro = [int(c) for c in ApiVer.split(".")] + + soFile = "%s.%s" % (os.path.basename(str(sharedLib[0])), ApiVer) + env.InstallAs(target=os.path.join(libDir, soFile), source=sharedLib) + # Install symlinks + symTrgt = os.path.join(libDir, soFile) + env.Command(os.path.join(libDir, "libportaudio.so.%d.%d" % (major, minor)), + symTrgt, symlink) + symTrgt = rsplit(symTrgt, ".", 1)[0] + env.Command(os.path.join(libDir, "libportaudio.so.%d" % major), symTrgt, symlink) + symTrgt = rsplit(symTrgt, ".", 1)[0] + env.Command(os.path.join(libDir, "libportaudio.so"), symTrgt, symlink) + +if env["enableStatic"]: + env.Default(staticLib) + env.Install(libDir, staticLib) + +env.Install(includeDir, os.path.join("include", "portaudio.h")) + + +if env["enableCxx"]: + env.SConscriptChdir(True) + cxxEnv = env.Copy() + sharedLibs, staticLibs, headers = env.SConscript(os.path.join("bindings", "cpp", "SConscript"), + exports={"env": cxxEnv, "buildDir": buildDir}, build_dir=os.path.join(buildDir, "portaudiocpp"), duplicate=False) + if env["enableStatic"]: + env.Default(staticLibs) + env.Install(libDir, staticLibs) + if env["enableShared"]: + env.Default(sharedLibs) + env.Install(libDir, sharedLibs) + env.Install(os.path.join(includeDir, "portaudiocpp"), headers) + +# Generate portaudio_config.h header with compile-time definitions of which PA +# back-ends are available, and which includes back-end extension headers + +# Host-specific headers +hostApiHeaders = {"ALSA": "pa_linux_alsa.h", + "ASIO": "pa_asio.h", + "COREAUDIO": "pa_mac_core.h", + "JACK": "pa_jack.h", + "WMME": "pa_winwmme.h", + } + +def buildConfigH(target, source, env): + """builder for portaudio_config.h""" + global hostApiHeaders, hostApis + out = "" + for hostApi in hostApis: + out += "#define PA_HAVE_%s\n" % hostApi + + hostApiSpecificHeader = hostApiHeaders.get(hostApi, None) + if hostApiSpecificHeader: + out += "#include \"%s\"\n" % hostApiSpecificHeader + + out += "\n" + # Strip the last newline + if out and out[-1] == "\n": + out = out[:-1] + + f = file(str(target[0]), 'w') + try: f.write(out) + finally: f.close() + return 0 + +# Define the builder for the config header +env.Append(BUILDERS={"portaudioConfig": env.Builder( + action=Action(buildConfigH), target_factory=env.fs.File)}) + +confH = env.portaudioConfig(File("portaudio_config.h", "include"), + File("portaudio.h", "include")) +env.Default(confH) +env.Install(os.path.join(includeDir, "portaudio"), confH) + +for api in hostApis: + if api in hostApiHeaders: + env.Install(os.path.join(includeDir, "portaudio"), + File(hostApiHeaders[api], "include")) diff --git a/3rdparty/portaudio/aclocal.m4 b/3rdparty/portaudio/aclocal.m4 index ba12ed41fc..8021aa2e7c 100644 --- a/3rdparty/portaudio/aclocal.m4 +++ b/3rdparty/portaudio/aclocal.m4 @@ -1,8620 +1,8620 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - - -# 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], [[!?.]$], [], [.]) -)]) - - - - - -# _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\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -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) 2010 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [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 - - -# _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([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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([${with_sysroot}]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#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 -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - 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 - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - 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 - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_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* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # 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\ 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,' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@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 AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - _LT_TAGVAR(link_all_deplibs, $1)=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(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 - ;; - - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) -_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 - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -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_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine which file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS - -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 7 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -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])]) - -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) - -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 3293 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4]) -m4_define([LT_PACKAGE_REVISION], [1.3293]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4' -macro_revision='1.3293' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) - -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) - -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- -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[]dnl -])# PKG_PROG_PKG_CONFIG - -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# 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]) - -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- -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 -])# _PKG_CONFIG - -# _PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- -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 -])# _PKG_SHORT_ERRORS_SUPPORTED - - -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# 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 $1]) - -_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 -])# PKG_CHECK_MODULES - +# generated automatically by aclocal 1.11.1 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 57 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + + +# 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], [[!?.]$], [], [.]) +)]) + + + + + +# _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\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +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) 2010 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_REPLACE_SHELLFNS + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [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 + + +# _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([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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES +# -------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#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 -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + 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 + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + 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 + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_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* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + # 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\ 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,' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@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 AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(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 + ;; + + freebsd1*) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], + [[If ld is used when linking, flag to hardcode $libdir into a binary + during linking. This must work even if $libdir does not exist]]) +_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 + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +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_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) + + +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) + + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) + + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi + +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) + + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS + +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + + +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])]) + +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) + +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 3293 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4]) +m4_define([LT_PACKAGE_REVISION], [1.3293]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4' +macro_revision='1.3293' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) + +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 1 (pkg-config-0.24) +# +# Copyright © 2004 Scott James Remnant . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +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[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +# only at the first occurence in configure.ac, so if the first place +# it's called might be skipped (such as if it is within an "if", you +# 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]) + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +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 +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +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 +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# 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 $1]) + +_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 +])# PKG_CHECK_MODULES + diff --git a/3rdparty/portaudio/build/msvc/ProjectRootDir.props b/3rdparty/portaudio/build/msvc/ProjectRootDir.props index 6d95dd9538..6044b22750 100644 --- a/3rdparty/portaudio/build/msvc/ProjectRootDir.props +++ b/3rdparty/portaudio/build/msvc/ProjectRootDir.props @@ -1,18 +1,18 @@ - - - - $(ProjectDir)\..\.. - $(ProjectRootDir)\..\.. - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(ProjectRootDir) - - - $(SvnRootDir) - - + + + + $(ProjectDir)\..\.. + $(ProjectRootDir)\..\.. + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(ProjectRootDir) + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/3rdparty/portaudio/build/msvc/portaudio.def b/3rdparty/portaudio/build/msvc/portaudio.def index 2eabdcd854..bdaa8eef1c 100644 --- a/3rdparty/portaudio/build/msvc/portaudio.def +++ b/3rdparty/portaudio/build/msvc/portaudio.def @@ -1,50 +1,50 @@ -EXPORTS - -; -Pa_GetVersion @1 -Pa_GetVersionText @2 -Pa_GetErrorText @3 -Pa_Initialize @4 -Pa_Terminate @5 -Pa_GetHostApiCount @6 -Pa_GetDefaultHostApi @7 -Pa_GetHostApiInfo @8 -Pa_HostApiTypeIdToHostApiIndex @9 -Pa_HostApiDeviceIndexToDeviceIndex @10 -Pa_GetLastHostErrorInfo @11 -Pa_GetDeviceCount @12 -Pa_GetDefaultInputDevice @13 -Pa_GetDefaultOutputDevice @14 -Pa_GetDeviceInfo @15 -Pa_IsFormatSupported @16 -Pa_OpenStream @17 -Pa_OpenDefaultStream @18 -Pa_CloseStream @19 -Pa_SetStreamFinishedCallback @20 -Pa_StartStream @21 -Pa_StopStream @22 -Pa_AbortStream @23 -Pa_IsStreamStopped @24 -Pa_IsStreamActive @25 -Pa_GetStreamInfo @26 -Pa_GetStreamTime @27 -Pa_GetStreamCpuLoad @28 -Pa_ReadStream @29 -Pa_WriteStream @30 -Pa_GetStreamReadAvailable @31 -Pa_GetStreamWriteAvailable @32 -Pa_GetSampleSize @33 -Pa_Sleep @34 -PaAsio_GetAvailableBufferSizes @50 -PaAsio_ShowControlPanel @51 -PaUtil_InitializeX86PlainConverters @52 -PaAsio_GetInputChannelName @53 -PaAsio_GetOutputChannelName @54 -PaUtil_SetDebugPrintFunction @55 -PaWasapi_GetDeviceDefaultFormat @56 -PaWasapi_GetDeviceRole @57 -PaWasapi_ThreadPriorityBoost @58 -PaWasapi_ThreadPriorityRevert @59 -PaWasapi_GetFramesPerHostBuffer @60 -PaWasapi_GetJackDescription @61 +EXPORTS + +; +Pa_GetVersion @1 +Pa_GetVersionText @2 +Pa_GetErrorText @3 +Pa_Initialize @4 +Pa_Terminate @5 +Pa_GetHostApiCount @6 +Pa_GetDefaultHostApi @7 +Pa_GetHostApiInfo @8 +Pa_HostApiTypeIdToHostApiIndex @9 +Pa_HostApiDeviceIndexToDeviceIndex @10 +Pa_GetLastHostErrorInfo @11 +Pa_GetDeviceCount @12 +Pa_GetDefaultInputDevice @13 +Pa_GetDefaultOutputDevice @14 +Pa_GetDeviceInfo @15 +Pa_IsFormatSupported @16 +Pa_OpenStream @17 +Pa_OpenDefaultStream @18 +Pa_CloseStream @19 +Pa_SetStreamFinishedCallback @20 +Pa_StartStream @21 +Pa_StopStream @22 +Pa_AbortStream @23 +Pa_IsStreamStopped @24 +Pa_IsStreamActive @25 +Pa_GetStreamInfo @26 +Pa_GetStreamTime @27 +Pa_GetStreamCpuLoad @28 +Pa_ReadStream @29 +Pa_WriteStream @30 +Pa_GetStreamReadAvailable @31 +Pa_GetStreamWriteAvailable @32 +Pa_GetSampleSize @33 +Pa_Sleep @34 +PaAsio_GetAvailableBufferSizes @50 +PaAsio_ShowControlPanel @51 +PaUtil_InitializeX86PlainConverters @52 +PaAsio_GetInputChannelName @53 +PaAsio_GetOutputChannelName @54 +PaUtil_SetDebugPrintFunction @55 +PaWasapi_GetDeviceDefaultFormat @56 +PaWasapi_GetDeviceRole @57 +PaWasapi_ThreadPriorityBoost @58 +PaWasapi_ThreadPriorityRevert @59 +PaWasapi_GetFramesPerHostBuffer @60 +PaWasapi_GetJackDescription @61 PaWasapi_GetJackCount @62 \ No newline at end of file diff --git a/3rdparty/portaudio/build/msvc/portaudio_noasio.def b/3rdparty/portaudio/build/msvc/portaudio_noasio.def index 93b1443f5a..709b98f97d 100644 --- a/3rdparty/portaudio/build/msvc/portaudio_noasio.def +++ b/3rdparty/portaudio/build/msvc/portaudio_noasio.def @@ -1,46 +1,46 @@ -EXPORTS - -; -Pa_GetVersion @1 -Pa_GetVersionText @2 -Pa_GetErrorText @3 -Pa_Initialize @4 -Pa_Terminate @5 -Pa_GetHostApiCount @6 -Pa_GetDefaultHostApi @7 -Pa_GetHostApiInfo @8 -Pa_HostApiTypeIdToHostApiIndex @9 -Pa_HostApiDeviceIndexToDeviceIndex @10 -Pa_GetLastHostErrorInfo @11 -Pa_GetDeviceCount @12 -Pa_GetDefaultInputDevice @13 -Pa_GetDefaultOutputDevice @14 -Pa_GetDeviceInfo @15 -Pa_IsFormatSupported @16 -Pa_OpenStream @17 -Pa_OpenDefaultStream @18 -Pa_CloseStream @19 -Pa_SetStreamFinishedCallback @20 -Pa_StartStream @21 -Pa_StopStream @22 -Pa_AbortStream @23 -Pa_IsStreamStopped @24 -Pa_IsStreamActive @25 -Pa_GetStreamInfo @26 -Pa_GetStreamTime @27 -Pa_GetStreamCpuLoad @28 -Pa_ReadStream @29 -Pa_WriteStream @30 -Pa_GetStreamReadAvailable @31 -Pa_GetStreamWriteAvailable @32 -Pa_GetSampleSize @33 -Pa_Sleep @34 -PaUtil_InitializeX86PlainConverters @52 -PaUtil_SetDebugPrintFunction @55 -PaWasapi_GetDeviceDefaultFormat @56 -PaWasapi_GetDeviceRole @57 -PaWasapi_ThreadPriorityBoost @58 -PaWasapi_ThreadPriorityRevert @59 -PaWasapi_GetFramesPerHostBuffer @60 -PaWasapi_GetJackDescription @61 +EXPORTS + +; +Pa_GetVersion @1 +Pa_GetVersionText @2 +Pa_GetErrorText @3 +Pa_Initialize @4 +Pa_Terminate @5 +Pa_GetHostApiCount @6 +Pa_GetDefaultHostApi @7 +Pa_GetHostApiInfo @8 +Pa_HostApiTypeIdToHostApiIndex @9 +Pa_HostApiDeviceIndexToDeviceIndex @10 +Pa_GetLastHostErrorInfo @11 +Pa_GetDeviceCount @12 +Pa_GetDefaultInputDevice @13 +Pa_GetDefaultOutputDevice @14 +Pa_GetDeviceInfo @15 +Pa_IsFormatSupported @16 +Pa_OpenStream @17 +Pa_OpenDefaultStream @18 +Pa_CloseStream @19 +Pa_SetStreamFinishedCallback @20 +Pa_StartStream @21 +Pa_StopStream @22 +Pa_AbortStream @23 +Pa_IsStreamStopped @24 +Pa_IsStreamActive @25 +Pa_GetStreamInfo @26 +Pa_GetStreamTime @27 +Pa_GetStreamCpuLoad @28 +Pa_ReadStream @29 +Pa_WriteStream @30 +Pa_GetStreamReadAvailable @31 +Pa_GetStreamWriteAvailable @32 +Pa_GetSampleSize @33 +Pa_Sleep @34 +PaUtil_InitializeX86PlainConverters @52 +PaUtil_SetDebugPrintFunction @55 +PaWasapi_GetDeviceDefaultFormat @56 +PaWasapi_GetDeviceRole @57 +PaWasapi_ThreadPriorityBoost @58 +PaWasapi_ThreadPriorityRevert @59 +PaWasapi_GetFramesPerHostBuffer @60 +PaWasapi_GetJackDescription @61 PaWasapi_GetJackCount @62 \ No newline at end of file diff --git a/3rdparty/portaudio/build/msvc/portaudio_vs2012.vcxproj b/3rdparty/portaudio/build/msvc/portaudio_vs2012.vcxproj index fc3abf7241..f89cee2f95 100644 --- a/3rdparty/portaudio/build/msvc/portaudio_vs2012.vcxproj +++ b/3rdparty/portaudio/build/msvc/portaudio_vs2012.vcxproj @@ -1,669 +1,669 @@ - - - - - Debug (NO ASIO) - Win32 - - - Debug (NO ASIO) - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release (NO ASIO) - Win32 - - - Release (NO ASIO) - x64 - - - Release - Win32 - - - Release - x64 - - - - {0A18A071-125E-442F-AFF7-A3F68ABECF99} - portaudio - portaudio - - - - StaticLibrary - false - v110_xp - - - StaticLibrary - false - true - v110_xp - - - StaticLibrary - false - v110_xp - - - StaticLibrary - false - true - v110_xp - - - DynamicLibrary - false - v110_xp - - - DynamicLibrary - false - v110_xp - - - DynamicLibrary - false - v110_xp - - - DynamicLibrary - false - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - false - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - true - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - false - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - true - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Release_x86/portaudio.tlb - - - - - OnlyExplicitInline - ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) - _USRDLL;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;PA_USE_DS=1;PA_USE_WASAPI=1;PA_USE_WDMKS=1;PA_USE_WMME=0;PA_USE_ASIO=1;%(PreprocessorDefinitions) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - true - $(Platform)\$(Configuration)\portaudio.bsc - - - ksuser.lib - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - .\Release_x86/portaudio.tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - $(Platform)\$(Configuration)\portaudio.pch - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ksuser.lib;%(AdditionalDependencies) - $(Platform)\$(Configuration)\portaudio_x64.dll - true - .\portaudio.def - $(Platform)\$(Configuration)/portaudio_x64.pdb - false - - - $(Platform)\$(Configuration)/portaudio_x64.lib - MachineX64 - - - true - $(Platform)\$(Configuration)\portaudio_x64.bsc - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Debug_x86/portaudio.tlb - - - - - ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) - _DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;PA_USE_DS=1;PA_USE_WASAPI=1;PA_USE_WDMKS=1;PA_USE_WMME=0;PA_USE_ASIO=1;%(PreprocessorDefinitions) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - true - $(Platform)\$(Configuration)\portaudio.bsc - - - false - ksuser.lib - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 - .\Debug_x86/portaudio.tlb - - - - - Disabled - ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - $(Platform)\$(Configuration)\portaudio.pch - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - Level3 - true - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ksuser.lib;%(AdditionalDependencies) - $(Platform)\$(Configuration)\portaudio_x64.dll - true - .\portaudio.def - true - $(Platform)\$(Configuration)/portaudio_x64.pdb - false - - - $(Platform)\$(Configuration)\portaudio_x64.lib - MachineX64 - - - true - $(Platform)\$(Configuration)/portaudio_x64.bsc - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Release_x86/portaudio.tlb - - - - - OnlyExplicitInline - ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) - _USRDLL;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;PA_USE_DS=1;PA_USE_WASAPI=1;PA_USE_WDMKS=1;PA_USE_WMME=0;PA_USE_ASIO=0;%(PreprocessorDefinitions) - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - true - $(Platform)\$(Configuration)\portaudio.bsc - - - ksuser.lib - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - .\Release_x86/portaudio.tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - $(Platform)\$(Configuration)\portaudio.pch - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ksuser.lib;%(AdditionalDependencies) - $(Platform)\$(Configuration)\portaudio_x64.dll - true - .\portaudio.def - $(Platform)\$(Configuration)/portaudio_x64.pdb - false - - - $(Platform)\$(Configuration)/portaudio_x64.lib - MachineX64 - - - true - $(Platform)\$(Configuration)\portaudio_x64.bsc - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Debug_x86/portaudio.tlb - - - - - ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) - _DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;PA_USE_DS=1;PA_USE_WASAPI=1;PA_USE_WDMKS=1;PA_USE_WMME=0;PA_USE_ASIO=0;%(PreprocessorDefinitions) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - true - $(Platform)\$(Configuration)\portaudio.bsc - - - ksuser.lib - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 - .\Debug_x86/portaudio.tlb - - - - - Disabled - ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - $(Platform)\$(Configuration)\portaudio.pch - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - Level3 - true - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ksuser.lib;%(AdditionalDependencies) - $(Platform)\$(Configuration)\portaudio_x64.dll - true - .\portaudio.def - true - $(Platform)\$(Configuration)/portaudio_x64.pdb - false - - - $(Platform)\$(Configuration)\portaudio_x64.lib - MachineX64 - - - true - $(Platform)\$(Configuration)/portaudio_x64.bsc - - - - - - - - - - - - - - - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug (NO ASIO) + Win32 + + + Debug (NO ASIO) + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release (NO ASIO) + Win32 + + + Release (NO ASIO) + x64 + + + Release + Win32 + + + Release + x64 + + + + {0A18A071-125E-442F-AFF7-A3F68ABECF99} + portaudio + portaudio + + + + StaticLibrary + false + v110_xp + + + StaticLibrary + false + true + v110_xp + + + StaticLibrary + false + v110_xp + + + StaticLibrary + false + true + v110_xp + + + DynamicLibrary + false + v110_xp + + + DynamicLibrary + false + v110_xp + + + DynamicLibrary + false + v110_xp + + + DynamicLibrary + false + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release_x86/portaudio.tlb + + + + + OnlyExplicitInline + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + _USRDLL;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;PA_USE_DS=1;PA_USE_WASAPI=1;PA_USE_WDMKS=1;PA_USE_WMME=0;PA_USE_ASIO=1;%(PreprocessorDefinitions) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + $(Platform)\$(Configuration)\portaudio.bsc + + + ksuser.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release_x86/portaudio.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(Platform)\$(Configuration)\portaudio.pch + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ksuser.lib;%(AdditionalDependencies) + $(Platform)\$(Configuration)\portaudio_x64.dll + true + .\portaudio.def + $(Platform)\$(Configuration)/portaudio_x64.pdb + false + + + $(Platform)\$(Configuration)/portaudio_x64.lib + MachineX64 + + + true + $(Platform)\$(Configuration)\portaudio_x64.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug_x86/portaudio.tlb + + + + + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + _DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;PA_USE_DS=1;PA_USE_WASAPI=1;PA_USE_WDMKS=1;PA_USE_WMME=0;PA_USE_ASIO=1;%(PreprocessorDefinitions) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + $(Platform)\$(Configuration)\portaudio.bsc + + + false + ksuser.lib + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug_x86/portaudio.tlb + + + + + Disabled + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(Platform)\$(Configuration)\portaudio.pch + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ksuser.lib;%(AdditionalDependencies) + $(Platform)\$(Configuration)\portaudio_x64.dll + true + .\portaudio.def + true + $(Platform)\$(Configuration)/portaudio_x64.pdb + false + + + $(Platform)\$(Configuration)\portaudio_x64.lib + MachineX64 + + + true + $(Platform)\$(Configuration)/portaudio_x64.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release_x86/portaudio.tlb + + + + + OnlyExplicitInline + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + _USRDLL;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;PA_USE_DS=1;PA_USE_WASAPI=1;PA_USE_WDMKS=1;PA_USE_WMME=0;PA_USE_ASIO=0;%(PreprocessorDefinitions) + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + $(Platform)\$(Configuration)\portaudio.bsc + + + ksuser.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release_x86/portaudio.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(Platform)\$(Configuration)\portaudio.pch + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ksuser.lib;%(AdditionalDependencies) + $(Platform)\$(Configuration)\portaudio_x64.dll + true + .\portaudio.def + $(Platform)\$(Configuration)/portaudio_x64.pdb + false + + + $(Platform)\$(Configuration)/portaudio_x64.lib + MachineX64 + + + true + $(Platform)\$(Configuration)\portaudio_x64.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug_x86/portaudio.tlb + + + + + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + _DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;PA_USE_DS=1;PA_USE_WASAPI=1;PA_USE_WDMKS=1;PA_USE_WMME=0;PA_USE_ASIO=0;%(PreprocessorDefinitions) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + $(Platform)\$(Configuration)\portaudio.bsc + + + ksuser.lib + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug_x86/portaudio.tlb + + + + + Disabled + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(Platform)\$(Configuration)\portaudio.pch + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ksuser.lib;%(AdditionalDependencies) + $(Platform)\$(Configuration)\portaudio_x64.dll + true + .\portaudio.def + true + $(Platform)\$(Configuration)/portaudio_x64.pdb + false + + + $(Platform)\$(Configuration)\portaudio_x64.lib + MachineX64 + + + true + $(Platform)\$(Configuration)/portaudio_x64.bsc + + + + + + + + + + + + + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/3rdparty/portaudio/build/msvc/portaudio_vs2012.vcxproj.filters b/3rdparty/portaudio/build/msvc/portaudio_vs2012.vcxproj.filters index 29aa7178a7..39aafad668 100644 --- a/3rdparty/portaudio/build/msvc/portaudio_vs2012.vcxproj.filters +++ b/3rdparty/portaudio/build/msvc/portaudio_vs2012.vcxproj.filters @@ -1,182 +1,182 @@ - - - - - {5cc0e5d8-728d-40a7-8083-5b983fd1aee7} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {a858f4ea-8d6b-4443-90f9-c2dd3b140b6b} - - - {0ce101a1-ed76-41ee-82e4-64060016158b} - - - {add87864-e960-4687-b000-d88213e2b2d4} - - - {6766d178-09d3-4194-9e43-0311d503035c} - - - {07c0df04-c6c4-4eb9-b645-d56ade6252fd} - - - {ee059c3c-2663-474c-bc48-385c1db73147} - - - {1782b100-f22f-4c73-812d-a3c654dc9825} - - - {1af05f1a-04d9-40b1-890c-1a34a9d0192e} - - - {b6f829a2-cf78-4f0e-b051-8fccf66c5213} - - - {b10684c7-978c-4840-be31-71d29889162c} - ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - {78689f06-8c26-4417-93e2-b809a8c41ee7} - h;hpp;hxx;hm;inl - - - {0d9360dd-9d00-434a-ab46-7a89b2d35fd0} - - - - - Source Files\common - - - Source Files\common - - - Source Files\common - - - Source Files\common - - - Source Files\common - - - Source Files\common - - - Source Files\common - - - Source Files\common - - - Source Files\common - - - Source Files\common - - - Source Files\hostapi\ASIO - - - Source Files\hostapi\ASIO\ASIOSDK - - - Source Files\hostapi\ASIO\ASIOSDK - - - Source Files\hostapi\ASIO\ASIOSDK - - - Source Files\hostapi\ASIO\ASIOSDK - - - Source Files\hostapi\ASIO\ASIOSDK - - - Source Files\hostapi\ASIO\ASIOSDK - - - Source Files\hostapi\ASIO\ASIOSDK - - - Source Files\hostapi\dsound - - - Source Files\hostapi\dsound - - - Source Files\hostapi\wmme - - - Source Files\hostapi\wasapi - - - Source Files\os\win - - - Source Files\os\win - - - Source Files\os\win - - - Source Files\os\win - - - Source Files\os\win - - - Source Files\hostapi\wdmks - - - Source Files\os\win - - - - - Resource Files - - - Resource Files - - - Source Files\hostapi\wdmks - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - + + + + + {5cc0e5d8-728d-40a7-8083-5b983fd1aee7} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {a858f4ea-8d6b-4443-90f9-c2dd3b140b6b} + + + {0ce101a1-ed76-41ee-82e4-64060016158b} + + + {add87864-e960-4687-b000-d88213e2b2d4} + + + {6766d178-09d3-4194-9e43-0311d503035c} + + + {07c0df04-c6c4-4eb9-b645-d56ade6252fd} + + + {ee059c3c-2663-474c-bc48-385c1db73147} + + + {1782b100-f22f-4c73-812d-a3c654dc9825} + + + {1af05f1a-04d9-40b1-890c-1a34a9d0192e} + + + {b6f829a2-cf78-4f0e-b051-8fccf66c5213} + + + {b10684c7-978c-4840-be31-71d29889162c} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + {78689f06-8c26-4417-93e2-b809a8c41ee7} + h;hpp;hxx;hm;inl + + + {0d9360dd-9d00-434a-ab46-7a89b2d35fd0} + + + + + Source Files\common + + + Source Files\common + + + Source Files\common + + + Source Files\common + + + Source Files\common + + + Source Files\common + + + Source Files\common + + + Source Files\common + + + Source Files\common + + + Source Files\common + + + Source Files\hostapi\ASIO + + + Source Files\hostapi\ASIO\ASIOSDK + + + Source Files\hostapi\ASIO\ASIOSDK + + + Source Files\hostapi\ASIO\ASIOSDK + + + Source Files\hostapi\ASIO\ASIOSDK + + + Source Files\hostapi\ASIO\ASIOSDK + + + Source Files\hostapi\ASIO\ASIOSDK + + + Source Files\hostapi\ASIO\ASIOSDK + + + Source Files\hostapi\dsound + + + Source Files\hostapi\dsound + + + Source Files\hostapi\wmme + + + Source Files\hostapi\wasapi + + + Source Files\os\win + + + Source Files\os\win + + + Source Files\os\win + + + Source Files\os\win + + + Source Files\os\win + + + Source Files\hostapi\wdmks + + + Source Files\os\win + + + + + Resource Files + + + Resource Files + + + Source Files\hostapi\wdmks + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + \ No newline at end of file diff --git a/3rdparty/portaudio/build/msvc/readme.txt b/3rdparty/portaudio/build/msvc/readme.txt index dabdd1ec73..5fe5e28cdc 100644 --- a/3rdparty/portaudio/build/msvc/readme.txt +++ b/3rdparty/portaudio/build/msvc/readme.txt @@ -1,112 +1,112 @@ -Hello - - This is a small list of steps in order to build portaudio -(Currently v19-devel) into a VS2005 DLL and lib file. -This DLL contains all 5 current Win32 PA APIS (MME/DS/ASIO/WASAPI/WDMKS) - -1)Copy the source dirs that comes with the ASIO SDK inside src\hostapi\asio\ASIOSDK - so you should now have example: - - portaudio19svn\src\hostapi\asio\ASIOSDK\common - portaudio19svn\src\hostapi\asio\ASIOSDK\host - portaudio19svn\src\hostapi\asio\ASIOSDK\host\sample - portaudio19svn\src\hostapi\asio\ASIOSDK\host\pc - portaudio19svn\src\hostapi\asio\ASIOSDK\host\mac (not needed) - - You dont need "driver" - - To build without ASIO (or another Host API) see the "Building without ASIO support" section below. - -2) - *If you have Visual Studio 6.0*, please make sure you have it updated with the latest (and final) - microsoft libraries for it, namely: - - Service pack 5: - Latest known URL: - http://msdn2.microsoft.com/en-us/vstudio/aa718363.aspx - Yes there EXISTS a service pack 6 , but the processor pack (below) isnt compatible with it. - - Processor Pack(only works with above SP5) - Latest known URL: - http://msdn2.microsoft.com/en-us/vstudio/Aa718349.aspx - This isn't absolutely required for portaudio, but if you plan on using SSE intrinsics and similar things. - Up to you to decide upon Service pack 5 or 6 depending on your need for intrinsics. - - Platform SDK (Feb 2003) : - Latest known URL: - http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm - (This will allow your code base to be x64 friendly, with correct defines - for LONG_PTR and such) - NOTE A) Yes you have to use IE activex scripts to install that - wont work in Firefox, you - may have to temporarily change tyour default browser(aint life unfair) - NOTE B) Dont forget to hit "Register PSDK Directories with Visual Studio". - you can make sure its right in VC6 if you open tools/options/directories/include files and you see SDK 2003 as the FIRST entry - (it must be the same for libs) - - DirectX 9.0 SDK Update - (Summer 2003) - Latest known URL: - http://www.microsoft.com/downloads/details.aspx?familyid=9216652f-51e0-402e-b7b5-feb68d00f298&displaylang=en - Again register the links in VC6, and check inside vc6 if headers are in second place right after SDk 2003 - - *If you have 7.0(VC.NET/2001) or 7.1(VC.2003) * - then I suggest you open portaudio.dsp (and convert if needed) - - *If you have Visual Studio 2005 * (or later), I suggest you open the portaudio.sln file - which contains 2 projects (portaudio & portaudio_static) each with 6 configurations: Win32/x64 in both Debug, Release and ReleaseMinDependency, - last of which removes dependency of all but basic OS system DLLs. - - hit compile and hope for the best. - -3)Now in any project, in which you require portaudio, - you can just link with portaudio_x86.lib, (or _x64) and of course include the - relevant headers - (portaudio.h, and/or pa_asio.h , pa_x86_plain_converters.h) See (*) - -4) Your new exe should now use portaudio_xXX.dll. - - -Have fun! - -(*): you may want to add/remove some DLL entry points. -Right now those 6 entries are _not_ from portaudio.h - -(from portaudio.def) -(...) -PaAsio_GetAvailableLatencyValues @50 -PaAsio_ShowControlPanel @51 -PaUtil_InitializeX86PlainConverters @52 -PaAsio_GetInputChannelName @53 -PaAsio_GetOutputChannelName @54 -PaUtil_SetLogPrintFunction @55 - - -*** Building without ASIO support *** - -To build PortAudio without ASIO support you need to: - A. Make sure your project doesn't try to build any ASIO SDK files. - If you're using one of the shipped projects, remove the ASIO related files - from the project. - - B. Make sure your project doesn't try to build the PortAudio ASIO - implementation files: - src/hostapi/pa_asio.cpp - src/hostapi/iasiothiscallresolver.cpp - If you're using one of the shipped projects remove them from the project. - - C. Set the PA_USE_ASIO preprocessor symbol to zero (i.e. PA_USE_ASIO=0) in the project properties. - In VS2005 this can be added under - Project Properties > Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions - - Setting PA_USE_ASIO=0 stops src/os/win/pa_win_hostapis.c - from trying to initialize the PA ASIO implementation. - - D. Remove PaAsio_* entry points from portaudio.def, or comment them out with ; - - -A similar procedure can be used to omit any of the other host APIs from the -build. The relevant preprocessor symbols used by pa_win_hostapis.c are: -PA_USE_WMME, PA_USE_DSOUND, PA_USE_ASIO, PA_USE_WASAPI and PA_USE_WDMKS - ------ -David Viens, davidv@plogue.com -Robert Bielik, robert@xponaut.se +Hello + + This is a small list of steps in order to build portaudio +(Currently v19-devel) into a VS2005 DLL and lib file. +This DLL contains all 5 current Win32 PA APIS (MME/DS/ASIO/WASAPI/WDMKS) + +1)Copy the source dirs that comes with the ASIO SDK inside src\hostapi\asio\ASIOSDK + so you should now have example: + + portaudio19svn\src\hostapi\asio\ASIOSDK\common + portaudio19svn\src\hostapi\asio\ASIOSDK\host + portaudio19svn\src\hostapi\asio\ASIOSDK\host\sample + portaudio19svn\src\hostapi\asio\ASIOSDK\host\pc + portaudio19svn\src\hostapi\asio\ASIOSDK\host\mac (not needed) + + You dont need "driver" + + To build without ASIO (or another Host API) see the "Building without ASIO support" section below. + +2) + *If you have Visual Studio 6.0*, please make sure you have it updated with the latest (and final) + microsoft libraries for it, namely: + + Service pack 5: + Latest known URL: + http://msdn2.microsoft.com/en-us/vstudio/aa718363.aspx + Yes there EXISTS a service pack 6 , but the processor pack (below) isnt compatible with it. + + Processor Pack(only works with above SP5) + Latest known URL: + http://msdn2.microsoft.com/en-us/vstudio/Aa718349.aspx + This isn't absolutely required for portaudio, but if you plan on using SSE intrinsics and similar things. + Up to you to decide upon Service pack 5 or 6 depending on your need for intrinsics. + + Platform SDK (Feb 2003) : + Latest known URL: + http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm + (This will allow your code base to be x64 friendly, with correct defines + for LONG_PTR and such) + NOTE A) Yes you have to use IE activex scripts to install that - wont work in Firefox, you + may have to temporarily change tyour default browser(aint life unfair) + NOTE B) Dont forget to hit "Register PSDK Directories with Visual Studio". + you can make sure its right in VC6 if you open tools/options/directories/include files and you see SDK 2003 as the FIRST entry + (it must be the same for libs) + + DirectX 9.0 SDK Update - (Summer 2003) + Latest known URL: + http://www.microsoft.com/downloads/details.aspx?familyid=9216652f-51e0-402e-b7b5-feb68d00f298&displaylang=en + Again register the links in VC6, and check inside vc6 if headers are in second place right after SDk 2003 + + *If you have 7.0(VC.NET/2001) or 7.1(VC.2003) * + then I suggest you open portaudio.dsp (and convert if needed) + + *If you have Visual Studio 2005 * (or later), I suggest you open the portaudio.sln file + which contains 2 projects (portaudio & portaudio_static) each with 6 configurations: Win32/x64 in both Debug, Release and ReleaseMinDependency, + last of which removes dependency of all but basic OS system DLLs. + + hit compile and hope for the best. + +3)Now in any project, in which you require portaudio, + you can just link with portaudio_x86.lib, (or _x64) and of course include the + relevant headers + (portaudio.h, and/or pa_asio.h , pa_x86_plain_converters.h) See (*) + +4) Your new exe should now use portaudio_xXX.dll. + + +Have fun! + +(*): you may want to add/remove some DLL entry points. +Right now those 6 entries are _not_ from portaudio.h + +(from portaudio.def) +(...) +PaAsio_GetAvailableLatencyValues @50 +PaAsio_ShowControlPanel @51 +PaUtil_InitializeX86PlainConverters @52 +PaAsio_GetInputChannelName @53 +PaAsio_GetOutputChannelName @54 +PaUtil_SetLogPrintFunction @55 + + +*** Building without ASIO support *** + +To build PortAudio without ASIO support you need to: + A. Make sure your project doesn't try to build any ASIO SDK files. + If you're using one of the shipped projects, remove the ASIO related files + from the project. + + B. Make sure your project doesn't try to build the PortAudio ASIO + implementation files: + src/hostapi/pa_asio.cpp + src/hostapi/iasiothiscallresolver.cpp + If you're using one of the shipped projects remove them from the project. + + C. Set the PA_USE_ASIO preprocessor symbol to zero (i.e. PA_USE_ASIO=0) in the project properties. + In VS2005 this can be added under + Project Properties > Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions + + Setting PA_USE_ASIO=0 stops src/os/win/pa_win_hostapis.c + from trying to initialize the PA ASIO implementation. + + D. Remove PaAsio_* entry points from portaudio.def, or comment them out with ; + + +A similar procedure can be used to omit any of the other host APIs from the +build. The relevant preprocessor symbols used by pa_win_hostapis.c are: +PA_USE_WMME, PA_USE_DSOUND, PA_USE_ASIO, PA_USE_WASAPI and PA_USE_WDMKS + +----- +David Viens, davidv@plogue.com +Robert Bielik, robert@xponaut.se diff --git a/3rdparty/portaudio/config.guess b/3rdparty/portaudio/config.guess index 83637ec740..40eaed4821 100644 --- a/3rdparty/portaudio/config.guess +++ b/3rdparty/portaudio/config.guess @@ -1,1517 +1,1517 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011 Free Software Foundation, Inc. - -timestamp='2011-05-11' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# 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 - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free -Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -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 ;; - *: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/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -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:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - 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-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - 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="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${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-gnu - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-gnueabi - else - echo ${UNAME_MACHINE}-unknown-linux-gnueabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - mips:Linux:*:* | 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-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-gnu - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-tilera-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - i*86: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 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - 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 - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - 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 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. + +timestamp='2011-05-11' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# 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 + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -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 ;; + *: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/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -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:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + 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-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + 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="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${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-gnu + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | 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-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-tilera-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86: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 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + 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 + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + 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 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/3rdparty/portaudio/config.sub b/3rdparty/portaudio/config.sub index 66557664e0..30fdca8121 100644 --- a/3rdparty/portaudio/config.sub +++ b/3rdparty/portaudio/config.sub @@ -1,1760 +1,1760 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011 Free Software Foundation, Inc. - -timestamp='2011-03-23' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# 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 (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free -Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -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-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -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*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 \ - | ns16k | ns32k \ - | open8 \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | 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 \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | picochip) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - - 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-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | 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-* | tilegx-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze) - basic_machine=microblaze-xilinx - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - 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 - ;; - # This must be matched before tile*. - tilegx*) - basic_machine=tilegx-unknown - os=-linux-gnu - ;; - tile*) - basic_machine=tile-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - 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* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -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 - ;; - 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 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -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: +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. + +timestamp='2011-03-23' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# 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 (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +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-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -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*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 \ + | ns16k | ns32k \ + | open8 \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | 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 \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + + 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-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | 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-* | tilegx-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + 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 + ;; + # This must be matched before tile*. + tilegx*) + basic_machine=tilegx-unknown + os=-linux-gnu + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + 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* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -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 + ;; + 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 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/3rdparty/portaudio/configure b/3rdparty/portaudio/configure index 528023a3be..a58b15da5f 100644 --- a/3rdparty/portaudio/configure +++ b/3rdparty/portaudio/configure @@ -1,18774 +1,18774 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68. -# -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # 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 - export CONFIG_SHELL - 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+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -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= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= -PACKAGE_URL= - -ac_unique_file="include/portaudio.h" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -enable_option_checking=no -ac_subst_vars='LTLIBOBJS -LIBOBJS -WITH_ASIO_FALSE -WITH_ASIO_TRUE -ENABLE_CXX_FALSE -ENABLE_CXX_TRUE -subdirs -INCLUDES -NASMOPT -NASM -DLL_LIBS -THREAD_CFLAGS -SHARED_FLAGS -PADLL -OTHER_OBJS -LT_AGE -LT_REVISION -LT_CURRENT -JACK_LIBS -JACK_CFLAGS -PKG_CONFIG_LIBDIR -PKG_CONFIG_PATH -PKG_CONFIG -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -CXXCPP -CPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -AWK -RANLIB -STRIP -ac_ct_AR -AR -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -LIBTOOL -OBJDUMP -DLLTOOL -AS -ac_ct_CXX -CXXFLAGS -CXX -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -target_os -target_vendor -target_cpu -target -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -with_alsa -with_jack -with_oss -with_asihpi -with_winapi -with_asiodir -with_dxdir -enable_debug_output -enable_cxx -enable_mac_debug -enable_mac_universal -with_host_os -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -with_sysroot -enable_libtool_lock -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CXX -CXXFLAGS -CCC -CPP -CXXCPP -PKG_CONFIG -PKG_CONFIG_PATH -PKG_CONFIG_LIBDIR -JACK_CFLAGS -JACK_LIBS' -ac_subdirs_all='bindings/cpp' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-debug-output Enable debug output [no] - --enable-cxx Enable C++ bindings [no] - --enable-mac-debug Enable Mac debug [no] - --enable-mac-universal Build Mac universal binaries [yes] - --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-alsa Enable support for ALSA [autodetect] - --with-jack Enable support for JACK [autodetect] - --with-oss Enable support for OSS [autodetect] - --with-asihpi Enable support for ASIHPI [autodetect] - --with-winapi Select Windows API support - ([wmme|directx|asio|wasapi|wdmks][,...]) [wmme] - --with-asiodir ASIO directory [/usr/local/asiosdk2] - --with-dxdir DirectX directory [/usr/local/dx7sdk] - - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). - -Some influential environment variables: - 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 - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CPP C preprocessor - CXXCPP C++ preprocessor - 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 - JACK_CFLAGS C compiler flags for JACK, overriding pkg-config - JACK_LIBS linker flags for JACK, 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 the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -configure -generated by GNU Autoconf 2.68 - -Copyright (C) 2010 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 - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case 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 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -# -------------------------------------------- -# Tries to find the compile-time value of EXPR in a program that includes -# INCLUDES, setting VAR accordingly. Returns whether the value could be -# computed -ac_fn_c_compute_int () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=0 ac_mid=0 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid; break -else - as_fn_arith $ac_mid + 1 && ac_lo=$as_val - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=-1 ac_mid=-1 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=$ac_mid; break -else - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - ac_lo= ac_hi= -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid -else - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in #(( -?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -'') ac_retval=1 ;; -esac - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (($2) < 0) - { - long int i = longval (); - if (i != ($2)) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ($2)) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - echo >>conftest.val; read $3 config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.68. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if ${ac_cv_target+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; -esac -target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - - - -# Check whether --with-alsa was given. -if test "${with_alsa+set}" = set; then : - withval=$with_alsa; with_alsa=$withval -fi - - - -# Check whether --with-jack was given. -if test "${with_jack+set}" = set; then : - withval=$with_jack; with_jack=$withval -fi - - - -# Check whether --with-oss was given. -if test "${with_oss+set}" = set; then : - withval=$with_oss; with_oss=$withval -fi - - - -# Check whether --with-asihpi was given. -if test "${with_asihpi+set}" = set; then : - withval=$with_asihpi; with_asihpi=$withval -fi - - - -# Check whether --with-winapi was given. -if test "${with_winapi+set}" = set; then : - withval=$with_winapi; with_winapi=$withval -else - with_winapi="wmme" -fi - -case "$target_os" in *mingw* | *cygwin*) - with_wmme=no - with_directx=no - with_asio=no - with_wasapi=no - with_wdmks=no - for api in $(echo $with_winapi | sed 's/,/ /g'); do - case "$api" in - wmme|directx|asio|wasapi|wdmks) - eval with_$api=yes - ;; - *) - as_fn_error $? "unknown Windows API \"$api\" (do you need --help?)" "$LINENO" 5 - ;; - esac - done - ;; -esac - - -# Check whether --with-asiodir was given. -if test "${with_asiodir+set}" = set; then : - withval=$with_asiodir; with_asiodir=$withval -else - with_asiodir="/usr/local/asiosdk2" -fi - - - -# Check whether --with-dxdir was given. -if test "${with_dxdir+set}" = set; then : - withval=$with_dxdir; with_dxdir=$withval -else - with_dxdir="/usr/local/dx7sdk" -fi - - -debug_output=no -# Check whether --enable-debug-output was given. -if test "${enable_debug_output+set}" = set; then : - enableval=$enable_debug_output; if test "x$enableval" != "xno" ; then - -$as_echo "#define PA_ENABLE_DEBUG_OUTPUT /**/" >>confdefs.h - - debug_output=yes - fi - -fi - - -# Check whether --enable-cxx was given. -if test "${enable_cxx+set}" = set; then : - enableval=$enable_cxx; enable_cxx=$enableval -else - enable_cxx="no" -fi - - -# Check whether --enable-mac-debug was given. -if test "${enable_mac_debug+set}" = set; then : - enableval=$enable_mac_debug; enable_mac_debug=$enableval -else - enable_mac_debug="no" -fi - - -# Check whether --enable-mac-universal was given. -if test "${enable_mac_universal+set}" = set; then : - enableval=$enable_mac_universal; enable_mac_universal=$enableval -else - enable_mac_universal="yes" -fi - - - -# Check whether --with-host_os was given. -if test "${with_host_os+set}" = set; then : - withval=$with_host_os; host_os=$withval -fi - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -if [ "$with_asio" = "yes" ] || [ "$enable_cxx" = "yes" ] ; then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. -set dummy ${ac_tool_prefix}as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AS"; then - ac_cv_prog_AS="$AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AS="${ac_tool_prefix}as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AS=$ac_cv_prog_AS -if test -n "$AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 -$as_echo "$AS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AS"; then - ac_ct_AS=$AS - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AS"; then - ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AS="as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AS=$ac_cv_prog_ac_ct_AS -if test -n "$ac_ct_AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 -$as_echo "$ac_ct_AS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_AS" = x; then - AS="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AS=$ac_ct_AS - fi -else - AS="$ac_cv_prog_AS" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - - ;; -esac - -test -z "$AS" && AS=as - - - - - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4' -macro_revision='1.3293' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf - - - - - -# Set options - - - - enable_dlopen=no - - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - lt_prog_compiler_pic='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # 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\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - link_all_deplibs=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - 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 - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - 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 - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#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 -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#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 -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -else - _lt_caught_CXX_error=yes -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_flag_spec_ld_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec_CXX='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - fi - archive_cmds_need_lc_CXX=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_CXX=' ' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=yes - file_list_spec_CXX='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' - enable_shared_with_static_runtimes_CXX=yes - # Don't use ranlib - old_postinstall_cmds_CXX='chmod 644 $oldlib' - postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec_CXX='' - fi - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd[12]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - gnu*) - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - no_undefined_flag_CXX=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='${wl}-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='${wl}-z,text' - allow_undefined_flag_CXX='${wl}-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test "$ld_shlibs_CXX" = no && can_build_shared=no - - GCC_CXX="$GXX" - LD_CXX="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } -lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - case $host_os in - aix[4-9]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - ;; - esac - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs_CXX=no - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc_CXX=no - else - lt_cv_archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } - archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - 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 - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - 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 - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test "X$hardcode_automatic_CXX" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $AR in - [\\/]* | ?:[\\/]*) - ac_cv_path_AR="$AR" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_AR" && ac_cv_path_AR="no" - ;; -esac -fi -AR=$ac_cv_path_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if [ $AR = "no" ] ; then - as_fn_error $? "\"Could not find ar - needed to create a library\"" "$LINENO" 5 -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; - -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h -;; #( - no) - ;; #( - universal) - -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - - - -have_alsa=no -if test "x$with_alsa" != "xno"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for snd_pcm_open in -lasound" >&5 -$as_echo_n "checking for snd_pcm_open in -lasound... " >&6; } -if ${ac_cv_lib_asound_snd_pcm_open+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lasound $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char snd_pcm_open (); -int -main () -{ -return snd_pcm_open (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_asound_snd_pcm_open=yes -else - ac_cv_lib_asound_snd_pcm_open=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_asound_snd_pcm_open" >&5 -$as_echo "$ac_cv_lib_asound_snd_pcm_open" >&6; } -if test "x$ac_cv_lib_asound_snd_pcm_open" = xyes; then : - have_alsa=yes -else - have_alsa=no -fi - -fi -have_asihpi=no -if test "x$with_asihpi" != "xno"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HPI_SubSysCreate in -lhpi" >&5 -$as_echo_n "checking for HPI_SubSysCreate in -lhpi... " >&6; } -if ${ac_cv_lib_hpi_HPI_SubSysCreate+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lhpi -lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char HPI_SubSysCreate (); -int -main () -{ -return HPI_SubSysCreate (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_hpi_HPI_SubSysCreate=yes -else - ac_cv_lib_hpi_HPI_SubSysCreate=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hpi_HPI_SubSysCreate" >&5 -$as_echo "$ac_cv_lib_hpi_HPI_SubSysCreate" >&6; } -if test "x$ac_cv_lib_hpi_HPI_SubSysCreate" = xyes; then : - have_asihpi=yes -else - have_asihpi=no -fi - -fi -have_libossaudio=no -have_oss=no -if test "x$with_oss" != "xno"; then - for ac_header in sys/soundcard.h linux/soundcard.h machine/soundcard.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - have_oss=yes -fi - -done - - if test "x$have_oss" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _oss_ioctl in -lossaudio" >&5 -$as_echo_n "checking for _oss_ioctl in -lossaudio... " >&6; } -if ${ac_cv_lib_ossaudio__oss_ioctl+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lossaudio $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char _oss_ioctl (); -int -main () -{ -return _oss_ioctl (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ossaudio__oss_ioctl=yes -else - ac_cv_lib_ossaudio__oss_ioctl=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ossaudio__oss_ioctl" >&5 -$as_echo "$ac_cv_lib_ossaudio__oss_ioctl" >&6; } -if test "x$ac_cv_lib_ossaudio__oss_ioctl" = xyes; then : - have_libossaudio=yes -else - have_libossaudio=no -fi - - fi -fi -have_jack=no -if test "x$with_jack" != "xno"; then - - - - - - - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi -fi - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for JACK" >&5 -$as_echo_n "checking for JACK... " >&6; } - -if test -n "$JACK_CFLAGS"; then - pkg_cv_JACK_CFLAGS="$JACK_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack\""; } >&5 - ($PKG_CONFIG --exists --print-errors "jack") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_JACK_CFLAGS=`$PKG_CONFIG --cflags "jack" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$JACK_LIBS"; then - pkg_cv_JACK_LIBS="$JACK_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack\""; } >&5 - ($PKG_CONFIG --exists --print-errors "jack") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_JACK_LIBS=`$PKG_CONFIG --libs "jack" 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 - JACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "jack" 2>&1` - else - JACK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "jack" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$JACK_PKG_ERRORS" >&5 - - have_jack=no -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_jack=no -else - JACK_CFLAGS=$pkg_cv_JACK_CFLAGS - JACK_LIBS=$pkg_cv_JACK_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - have_jack=yes -fi -fi - - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 -$as_echo_n "checking size of short... " >&6; } -if ${ac_cv_sizeof_short+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_short" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (short) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_short=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 -$as_echo "$ac_cv_sizeof_short" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT $ac_cv_sizeof_short -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 -$as_echo_n "checking size of int... " >&6; } -if ${ac_cv_sizeof_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (int) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_int=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 -$as_echo "$ac_cv_sizeof_int" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT $ac_cv_sizeof_int -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 -$as_echo_n "checking size of long... " >&6; } -if ${ac_cv_sizeof_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -$as_echo "$ac_cv_sizeof_long" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -_ACEOF - - - -save_LIBS="${LIBS}" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 -$as_echo_n "checking for clock_gettime in -lrt... " >&6; } -if ${ac_cv_lib_rt_clock_gettime+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lrt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char clock_gettime (); -int -main () -{ -return clock_gettime (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_rt_clock_gettime=yes -else - ac_cv_lib_rt_clock_gettime=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 -$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } -if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : - rt_libs=" -lrt" -fi - -LIBS="${LIBS}${rt_libs}" -DLL_LIBS="${DLL_LIBS}${rt_libs}" -for ac_func in clock_gettime nanosleep -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -LIBS="${save_LIBS}" - -LT_CURRENT=2 -LT_REVISION=0 -LT_AGE=0 - - - - - - - - - - - - - - - -if ( echo "${host_os}" | grep ^darwin >> /dev/null ) && - [ "$enable_mac_universal" = "yes" ] && - [ "$enable_mac_debug" != "yes" ] ; then - CFLAGS="-O2 -Wall -pedantic -pipe -fPIC -DNDEBUG" -else - CFLAGS=${CFLAGS:-"-g -O2 -Wall -pedantic -pipe -fPIC"} -fi - -if [ $ac_cv_c_bigendian = "yes" ] ; then - CFLAGS="$CFLAGS -DPA_BIG_ENDIAN" -else - CFLAGS="$CFLAGS -DPA_LITTLE_ENDIAN" -fi - -add_objects() -{ - for o in $@; do - test "${OTHER_OBJS#*${o}*}" = "${OTHER_OBJS}" && OTHER_OBJS="$OTHER_OBJS $o" - done -} - -INCLUDES=portaudio.h - -CFLAGS="$CFLAGS -I\$(top_srcdir)/include -I\$(top_srcdir)/src/common" - -case "${host_os}" in - darwin* ) - - $as_echo "#define PA_USE_COREAUDIO 1" >>confdefs.h - - - CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix -Werror" - LIBS="-framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework Carbon" - - if test "x$enable_mac_universal" = "xyes" ; then - case "xcodebuild -version | sed -n 's/Xcode \(.*\)/\1/p'" in - - 12*|3.0|3.1) - if [ -d /Developer/SDKs/MacOSX10.5.sdk ] ; then - mac_version_min="-mmacosx-version-min=10.3" - mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.5.sdk" - else - mac_version_min="-mmacosx-version-min=10.3" - mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.4u.sdk" - fi - ;; - - *) - if xcodebuild -version -sdk macosx10.5 Path >/dev/null 2>&1 ; then - mac_version_min="-mmacosx-version-min=10.3" - mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.5 Path`" - elif xcodebuild -version -sdk macosx10.6 Path >/dev/null 2>&1 ; then - mac_version_min="-mmacosx-version-min=10.4" - mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.6 Path`" - elif xcodebuild -version -sdk macosx10.7 Path >/dev/null 2>&1 ; then - mac_version_min="-mmacosx-version-min=10.4" - mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.7 Path`" - else - as_fn_error $? "Couldn't find 10.5, 10.6, or 10.7 SDK" "$LINENO" 5 - fi - esac - - mac_arches="" - for arch in i386 x86_64 ppc ppc64 - do - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -arch $arch" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - if [ -z "$mac_arches" ] ; then - mac_arches="-arch $arch" - else - mac_arches="$mac_arches -arch $arch" - fi - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$save_CFLAGS" - done - else - mac_arches="" - mac_sysroot="" - mac_version="" - fi - SHARED_FLAGS="$LIBS -dynamiclib $mac_arches $mac_sysroot $mac_version_min" - CFLAGS="-std=c99 $CFLAGS $mac_arches $mac_sysroot $mac_version_min" - OTHER_OBJS="src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o src/hostapi/coreaudio/pa_mac_core.o src/hostapi/coreaudio/pa_mac_core_utilities.o src/hostapi/coreaudio/pa_mac_core_blocking.o src/common/pa_ringbuffer.o" - PADLL="libportaudio.dylib" - ;; - - mingw* ) - - PADLL="portaudio.dll" - THREAD_CFLAGS="-mthreads" - SHARED_FLAGS="-shared" - CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/win -DPA_USE_WMME=0 -DPA_USE_ASIO=0 -DPA_USE_WDMKS=0 -DPA_USE_DS=0 -DPA_USE_WASAPI=0" - - if [ "x$with_directx" = "xyes" ]; then - DXDIR="$with_dxdir" - add_objects src/hostapi/dsound/pa_win_ds.o src/hostapi/dsound/pa_win_ds_dynlink.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o - LIBS="${LIBS} -lwinmm -lm -ldsound -lole32" - DLL_LIBS="${DLL_LIBS} -lwinmm -lm -L$DXDIR/lib -ldsound -lole32" - #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" - #CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO" - CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_DS -DPA_USE_DS=1" - fi - - if [ "x$with_asio" = "xyes" ]; then - ASIODIR="$with_asiodir" - add_objects src/hostapi/asio/pa_asio.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/hostapi/asio/iasiothiscallresolver.o $ASIODIR/common/asio.o $ASIODIR/host/asiodrivers.o $ASIODIR/host/pc/asiolist.o - LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" - DLL_LIBS="${DLL_LIBS} -lwinmm -lm -lole32 -luuid" - CFLAGS="$CFLAGS -ffast-math -fomit-frame-pointer -I\$(top_srcdir)/src/hostapi/asio -I$ASIODIR/host/pc -I$ASIODIR/common -I$ASIODIR/host -UPA_USE_ASIO -DPA_USE_ASIO=1 -DWINDOWS" - - CFLAGS="$CFLAGS -D_WIN32_WINNT=0x0501 -DWINVER=0x0501" - - CXXFLAGS="$CFLAGS" - fi - - if [ "x$with_wdmks" = "xyes" ]; then - DXDIR="$with_dxdir" - add_objects src/hostapi/wdmks/pa_win_wdmks.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_wdmks_util.o src/os/win/pa_win_waveformat.o - LIBS="${LIBS} -lwinmm -lm -luuid -lsetupapi -lole32" - DLL_LIBS="${DLL_LIBS} -lwinmm -lm -L$DXDIR/lib -luuid -lsetupapi -lole32" - #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" - #CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO" - CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_WDMKS -DPA_USE_WDMKS=1" - fi - - if [ "x$with_wmme" = "xyes" ]; then - add_objects src/hostapi/wmme/pa_win_wmme.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_waveformat.o - LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" - DLL_LIBS="${DLL_LIBS} -lwinmm" - CFLAGS="$CFLAGS -UPA_USE_WMME -DPA_USE_WMME=1" - fi - - if [ "x$with_wasapi" = "xyes" ]; then - add_objects src/hostapi/wasapi/pa_win_wasapi.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o - LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" - DLL_LIBS="${DLL_LIBS} -lwinmm -lole32" - CFLAGS="$CFLAGS -I\$(top_srcdir)/src/hostapi/wasapi/mingw-include -UPA_USE_WASAPI -DPA_USE_WASAPI=1" - fi - ;; - - cygwin* ) - - OTHER_OBJS="src/hostapi/wmme/pa_win_wmme.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_waveformat.o" - CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/win -DPA_USE_DS=0 -DPA_USE_WDMKS=0 -DPA_USE_ASIO=0 -DPA_USE_WASAPI=0 -DPA_USE_WMME=1" - LIBS="-lwinmm -lm" - PADLL="portaudio.dll" - THREAD_CFLAGS="-mthreads" - SHARED_FLAGS="-shared" - DLL_LIBS="${DLL_LIBS} -lwinmm" - ;; - - irix* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 -$as_echo_n "checking for pthread_create in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_create+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (); -int -main () -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthread_pthread_create=yes -else - ac_cv_lib_pthread_pthread_create=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } -if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBPTHREAD 1 -_ACEOF - - LIBS="-lpthread $LIBS" - -else - as_fn_error $? "IRIX posix thread library not found!" "$LINENO" 5 -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alOpenPort in -laudio" >&5 -$as_echo_n "checking for alOpenPort in -laudio... " >&6; } -if ${ac_cv_lib_audio_alOpenPort+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-laudio $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char alOpenPort (); -int -main () -{ -return alOpenPort (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_audio_alOpenPort=yes -else - ac_cv_lib_audio_alOpenPort=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_audio_alOpenPort" >&5 -$as_echo "$ac_cv_lib_audio_alOpenPort" >&6; } -if test "x$ac_cv_lib_audio_alOpenPort" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBAUDIO 1 -_ACEOF - - LIBS="-laudio $LIBS" - -else - as_fn_error $? "IRIX audio library not found!" "$LINENO" 5 -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dmGetUST in -ldmedia" >&5 -$as_echo_n "checking for dmGetUST in -ldmedia... " >&6; } -if ${ac_cv_lib_dmedia_dmGetUST+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldmedia $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dmGetUST (); -int -main () -{ -return dmGetUST (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dmedia_dmGetUST=yes -else - ac_cv_lib_dmedia_dmGetUST=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dmedia_dmGetUST" >&5 -$as_echo "$ac_cv_lib_dmedia_dmGetUST" >&6; } -if test "x$ac_cv_lib_dmedia_dmGetUST" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDMEDIA 1 -_ACEOF - - LIBS="-ldmedia $LIBS" - -else - as_fn_error $? "IRIX digital media library not found!" "$LINENO" 5 -fi - - - $as_echo "#define PA_USE_SGI 1" >>confdefs.h - - - CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix" - - THREAD_CFLAGS="-D_REENTRANT" - - OTHER_OBJS="pa_sgi/pa_sgi.o src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o" - - LIBS="-lm -ldmedia -laudio -lpthread" - PADLL="libportaudio.so" - SHARED_FLAGS="" - ;; - - *) - - CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 -$as_echo_n "checking for pthread_create in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_create+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (); -int -main () -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthread_pthread_create=yes -else - ac_cv_lib_pthread_pthread_create=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } -if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : - have_pthread="yes" -else - as_fn_error $? "libpthread not found!" "$LINENO" 5 -fi - - - if [ "$have_alsa" = "yes" ] && [ "$with_alsa" != "no" ] ; then - DLL_LIBS="$DLL_LIBS -lasound" - LIBS="$LIBS -lasound" - OTHER_OBJS="$OTHER_OBJS src/hostapi/alsa/pa_linux_alsa.o" - INCLUDES="$INCLUDES pa_linux_alsa.h" - $as_echo "#define PA_USE_ALSA 1" >>confdefs.h - - fi - - if [ "$have_jack" = "yes" ] && [ "$with_jack" != "no" ] ; then - DLL_LIBS="$DLL_LIBS $JACK_LIBS" - CFLAGS="$CFLAGS $JACK_CFLAGS" - OTHER_OBJS="$OTHER_OBJS src/hostapi/jack/pa_jack.o src/common/pa_ringbuffer.o" - INCLUDES="$INCLUDES pa_jack.h" - $as_echo "#define PA_USE_JACK 1" >>confdefs.h - - fi - - if [ "$with_oss" != "no" ] ; then - OTHER_OBJS="$OTHER_OBJS src/hostapi/oss/pa_unix_oss.o" - if [ "$have_libossaudio" = "yes" ] ; then - DLL_LIBS="$DLL_LIBS -lossaudio" - LIBS="$LIBS -lossaudio" - fi - $as_echo "#define PA_USE_OSS 1" >>confdefs.h - - fi - - if [ "$have_asihpi" = "yes" ] && [ "$with_asihpi" != "no" ] ; then - LIBS="$LIBS -lhpi" - DLL_LIBS="$DLL_LIBS -lhpi" - OTHER_OBJS="$OTHER_OBJS src/hostapi/asihpi/pa_linux_asihpi.o" - $as_echo "#define PA_USE_ASIHPI 1" >>confdefs.h - - fi - - DLL_LIBS="$DLL_LIBS -lm -lpthread" - LIBS="$LIBS -lm -lpthread" - PADLL="libportaudio.so" - - ## support sun cc compiler flags - case "${host_os}" in - solaris*) - SHARED_FLAGS="-G" - THREAD_CFLAGS="-mt" - ;; - *) - SHARED_FLAGS="-fPIC" - THREAD_CFLAGS="-pthread" - ;; - esac - - OTHER_OBJS="$OTHER_OBJS src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o" -esac -CFLAGS="$CFLAGS $THREAD_CFLAGS" - -test "$enable_shared" != "yes" && SHARED_FLAGS="" - -if test "$enable_cxx" = "yes"; then - - -subdirs="$subdirs bindings/cpp" - - ENABLE_CXX_TRUE="" - ENABLE_CXX_FALSE="#" -else - ENABLE_CXX_TRUE="#" - ENABLE_CXX_FALSE="" -fi - - - -if test "x$with_asio" = "xyes"; then - WITH_ASIO_TRUE="" - WITH_ASIO_FALSE="@ #" -else - WITH_ASIO_TRUE="@ #" - WITH_ASIO_FALSE="" -fi - - - -ac_config_files="$ac_config_files Makefile portaudio-2.0.pc" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -:mline -/\\$/{ - N - s,\\\n,, - b mline -} -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.h` - - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## 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 $as_me, which was -generated by GNU Autoconf 2.68. 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 - - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -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 - -Configuration files: -$config_files - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.68, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2010 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' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h | --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# - - -# 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' -AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -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"`' -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"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' -predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' -predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' -postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' -reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' -reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in AS \ -DLLTOOL \ -OBJDUMP \ -SHELL \ -ECHO \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -nm_file_list_spec \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_flag_spec_ld_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "portaudio-2.0.pc") CONFIG_FILES="$CONFIG_FILES portaudio-2.0.pc" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -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" - - -eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="CXX " - -# ### BEGIN LIBTOOL CONFIG - -# Assembler program. -AS=$lt_AS - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Object dumper program. -OBJDUMP=$lt_OBJDUMP - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The 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 - -# 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 - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and in which our libraries should be installed. -lt_sysroot=$lt_sysroot - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi - -# -# CONFIG_SUBDIRS section. -# -if test "$no_recursion" != yes; then - - # Remove --cache-file, --srcdir, and --disable-option-checking arguments - # so they do not pile up. - ac_sub_configure_args= - ac_prev= - eval "set x $ac_configure_args" - shift - for ac_arg - do - if test -n "$ac_prev"; then - ac_prev= - continue - fi - case $ac_arg in - -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=*) - ;; - --config-cache | -C) - ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - ;; - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - ;; - --disable-option-checking) - ;; - *) - case $ac_arg in - *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append ac_sub_configure_args " '$ac_arg'" ;; - esac - done - - # Always prepend --prefix to ensure using the same prefix - # in subdir configurations. - ac_arg="--prefix=$prefix" - case $ac_arg in - *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" - - # Pass --silent - if test "$silent" = yes; then - ac_sub_configure_args="--silent $ac_sub_configure_args" - fi - - # Always prepend --disable-option-checking to silence warnings, since - # different subdirs can have different --enable and --with options. - ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" - - ac_popdir=`pwd` - for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue - - # Do not complain, so a configure script can configure whichever - # parts of a large source tree are present. - test -d "$srcdir/$ac_dir" || continue - - ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" - $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 - $as_echo "$ac_msg" >&6 - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - cd "$ac_dir" - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f "$ac_srcdir/configure.gnu"; then - ac_sub_configure=$ac_srcdir/configure.gnu - elif test -f "$ac_srcdir/configure"; then - ac_sub_configure=$ac_srcdir/configure - elif test -f "$ac_srcdir/configure.in"; then - # This should be Cygnus configure. - ac_sub_configure=$ac_aux_dir/configure - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 -$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} - ac_sub_configure= - fi - - # The recursion is here. - if test -n "$ac_sub_configure"; then - # Make the cache file name correct relative to the subdirectory. - case $cache_file in - [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; - *) # Relative name. - ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 -$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} - # The eval makes quoting arguments work. - eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ - --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || - as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 - fi - - cd "$ac_popdir" - done -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: -Configuration summary: - - Target ...................... $target - C++ bindings ................ $enable_cxx - Debug output ................ $debug_output" >&5 -$as_echo " -Configuration summary: - - Target ...................... $target - C++ bindings ................ $enable_cxx - Debug output ................ $debug_output" >&6; } - -case "$target_os" in *linux*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: - ALSA ........................ $have_alsa - ASIHPI ...................... $have_asihpi" >&5 -$as_echo " - ALSA ........................ $have_alsa - ASIHPI ...................... $have_asihpi" >&6; } - ;; -esac -case "$target_os" in - *mingw* | *cygwin*) - test "x$with_directx" = "xyes" && with_directx="$with_directx (${with_dxdir})" - test "x$with_wdmks" = "xyes" && with_wdmks="$with_wdmks (${with_dxdir})" - test "x$with_asio" = "xyes" && with_asio="$with_asio (${with_asiodir})" - test "x$with_wasapi" = "xyes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: - WMME ........................ $with_wmme - DSound ...................... $with_directx - ASIO ........................ $with_asio - WASAPI ...................... $with_wasapi - WDMKS ....................... $with_wdmks -" >&5 -$as_echo " - WMME ........................ $with_wmme - DSound ...................... $with_directx - ASIO ........................ $with_asio - WASAPI ...................... $with_wasapi - WDMKS ....................... $with_wdmks -" >&6; } - ;; - *darwin*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: - Mac debug flags ............. $enable_mac_debug -" >&5 -$as_echo " - Mac debug flags ............. $enable_mac_debug -" >&6; } - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: - OSS ......................... $have_oss - JACK ........................ $have_jack -" >&5 -$as_echo " - OSS ......................... $have_oss - JACK ........................ $have_jack -" >&6; } - ;; -esac +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.68. +# +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # 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 + export CONFIG_SHELL + 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+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +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= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= +PACKAGE_URL= + +ac_unique_file="include/portaudio.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +enable_option_checking=no +ac_subst_vars='LTLIBOBJS +LIBOBJS +WITH_ASIO_FALSE +WITH_ASIO_TRUE +ENABLE_CXX_FALSE +ENABLE_CXX_TRUE +subdirs +INCLUDES +NASMOPT +NASM +DLL_LIBS +THREAD_CFLAGS +SHARED_FLAGS +PADLL +OTHER_OBJS +LT_AGE +LT_REVISION +LT_CURRENT +JACK_LIBS +JACK_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +CXXCPP +CPP +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +AWK +RANLIB +STRIP +ac_ct_AR +AR +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +LIBTOOL +OBJDUMP +DLLTOOL +AS +ac_ct_CXX +CXXFLAGS +CXX +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_alsa +with_jack +with_oss +with_asihpi +with_winapi +with_asiodir +with_dxdir +enable_debug_output +enable_cxx +enable_mac_debug +enable_mac_universal +with_host_os +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +with_sysroot +enable_libtool_lock +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CXX +CXXFLAGS +CCC +CPP +CXXCPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +JACK_CFLAGS +JACK_LIBS' +ac_subdirs_all='bindings/cpp' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-debug-output Enable debug output [no] + --enable-cxx Enable C++ bindings [no] + --enable-mac-debug Enable Mac debug [no] + --enable-mac-universal Build Mac universal binaries [yes] + --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-alsa Enable support for ALSA [autodetect] + --with-jack Enable support for JACK [autodetect] + --with-oss Enable support for OSS [autodetect] + --with-asihpi Enable support for ASIHPI [autodetect] + --with-winapi Select Windows API support + ([wmme|directx|asio|wasapi|wdmks][,...]) [wmme] + --with-asiodir ASIO directory [/usr/local/asiosdk2] + --with-dxdir DirectX directory [/usr/local/dx7sdk] + + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). + +Some influential environment variables: + 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 + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CPP C preprocessor + CXXCPP C++ preprocessor + 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 + JACK_CFLAGS C compiler flags for JACK, overriding pkg-config + JACK_LIBS linker flags for JACK, 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 the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.68 + +Copyright (C) 2010 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 + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case 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 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES +# -------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_c_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid; break +else + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=$ac_mid; break +else + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + ac_lo= ac_hi= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid +else + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval () { return $2; } +static unsigned long int ulongval () { return $2; } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + echo >>conftest.val; read $3 config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.68. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if ${ac_cv_target+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + + + +# Check whether --with-alsa was given. +if test "${with_alsa+set}" = set; then : + withval=$with_alsa; with_alsa=$withval +fi + + + +# Check whether --with-jack was given. +if test "${with_jack+set}" = set; then : + withval=$with_jack; with_jack=$withval +fi + + + +# Check whether --with-oss was given. +if test "${with_oss+set}" = set; then : + withval=$with_oss; with_oss=$withval +fi + + + +# Check whether --with-asihpi was given. +if test "${with_asihpi+set}" = set; then : + withval=$with_asihpi; with_asihpi=$withval +fi + + + +# Check whether --with-winapi was given. +if test "${with_winapi+set}" = set; then : + withval=$with_winapi; with_winapi=$withval +else + with_winapi="wmme" +fi + +case "$target_os" in *mingw* | *cygwin*) + with_wmme=no + with_directx=no + with_asio=no + with_wasapi=no + with_wdmks=no + for api in $(echo $with_winapi | sed 's/,/ /g'); do + case "$api" in + wmme|directx|asio|wasapi|wdmks) + eval with_$api=yes + ;; + *) + as_fn_error $? "unknown Windows API \"$api\" (do you need --help?)" "$LINENO" 5 + ;; + esac + done + ;; +esac + + +# Check whether --with-asiodir was given. +if test "${with_asiodir+set}" = set; then : + withval=$with_asiodir; with_asiodir=$withval +else + with_asiodir="/usr/local/asiosdk2" +fi + + + +# Check whether --with-dxdir was given. +if test "${with_dxdir+set}" = set; then : + withval=$with_dxdir; with_dxdir=$withval +else + with_dxdir="/usr/local/dx7sdk" +fi + + +debug_output=no +# Check whether --enable-debug-output was given. +if test "${enable_debug_output+set}" = set; then : + enableval=$enable_debug_output; if test "x$enableval" != "xno" ; then + +$as_echo "#define PA_ENABLE_DEBUG_OUTPUT /**/" >>confdefs.h + + debug_output=yes + fi + +fi + + +# Check whether --enable-cxx was given. +if test "${enable_cxx+set}" = set; then : + enableval=$enable_cxx; enable_cxx=$enableval +else + enable_cxx="no" +fi + + +# Check whether --enable-mac-debug was given. +if test "${enable_mac_debug+set}" = set; then : + enableval=$enable_mac_debug; enable_mac_debug=$enableval +else + enable_mac_debug="no" +fi + + +# Check whether --enable-mac-universal was given. +if test "${enable_mac_universal+set}" = set; then : + enableval=$enable_mac_universal; enable_mac_universal=$enableval +else + enable_mac_universal="yes" +fi + + + +# Check whether --with-host_os was given. +if test "${with_host_os+set}" = set; then : + withval=$with_host_os; host_os=$withval +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if [ "$with_asio" = "yes" ] || [ "$enable_cxx" = "yes" ] ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AS="${ac_tool_prefix}as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +$as_echo "$AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AS="as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +$as_echo "$ac_ct_AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; +esac + +test -z "$AS" && AS=as + + + + + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4' +macro_revision='1.3293' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf + + + + + +# Set options + + + + enable_dlopen=no + + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + lt_prog_compiler_pic='-Xcompiler -fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + # 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\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld='-rpath $libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + link_all_deplibs=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + 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 + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + 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 + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#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 -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#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 -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec_CXX='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + gnu*) + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test "$ld_shlibs_CXX" = no && can_build_shared=no + + GCC_CXX="$GXX" + LD_CXX="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + 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 + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + 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 + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink || + test "$inherit_rpath_CXX" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $AR in + [\\/]* | ?:[\\/]*) + ac_cv_path_AR="$AR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_AR" && ac_cv_path_AR="no" + ;; +esac +fi +AR=$ac_cv_path_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if [ $AR = "no" ] ; then + as_fn_error $? "\"Could not find ar - needed to create a library\"" "$LINENO" 5 +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + + +have_alsa=no +if test "x$with_alsa" != "xno"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for snd_pcm_open in -lasound" >&5 +$as_echo_n "checking for snd_pcm_open in -lasound... " >&6; } +if ${ac_cv_lib_asound_snd_pcm_open+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lasound $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char snd_pcm_open (); +int +main () +{ +return snd_pcm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_asound_snd_pcm_open=yes +else + ac_cv_lib_asound_snd_pcm_open=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_asound_snd_pcm_open" >&5 +$as_echo "$ac_cv_lib_asound_snd_pcm_open" >&6; } +if test "x$ac_cv_lib_asound_snd_pcm_open" = xyes; then : + have_alsa=yes +else + have_alsa=no +fi + +fi +have_asihpi=no +if test "x$with_asihpi" != "xno"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HPI_SubSysCreate in -lhpi" >&5 +$as_echo_n "checking for HPI_SubSysCreate in -lhpi... " >&6; } +if ${ac_cv_lib_hpi_HPI_SubSysCreate+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lhpi -lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char HPI_SubSysCreate (); +int +main () +{ +return HPI_SubSysCreate (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_hpi_HPI_SubSysCreate=yes +else + ac_cv_lib_hpi_HPI_SubSysCreate=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hpi_HPI_SubSysCreate" >&5 +$as_echo "$ac_cv_lib_hpi_HPI_SubSysCreate" >&6; } +if test "x$ac_cv_lib_hpi_HPI_SubSysCreate" = xyes; then : + have_asihpi=yes +else + have_asihpi=no +fi + +fi +have_libossaudio=no +have_oss=no +if test "x$with_oss" != "xno"; then + for ac_header in sys/soundcard.h linux/soundcard.h machine/soundcard.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + have_oss=yes +fi + +done + + if test "x$have_oss" = "xyes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _oss_ioctl in -lossaudio" >&5 +$as_echo_n "checking for _oss_ioctl in -lossaudio... " >&6; } +if ${ac_cv_lib_ossaudio__oss_ioctl+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lossaudio $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char _oss_ioctl (); +int +main () +{ +return _oss_ioctl (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ossaudio__oss_ioctl=yes +else + ac_cv_lib_ossaudio__oss_ioctl=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ossaudio__oss_ioctl" >&5 +$as_echo "$ac_cv_lib_ossaudio__oss_ioctl" >&6; } +if test "x$ac_cv_lib_ossaudio__oss_ioctl" = xyes; then : + have_libossaudio=yes +else + have_libossaudio=no +fi + + fi +fi +have_jack=no +if test "x$with_jack" != "xno"; then + + + + + + + +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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 + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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 + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + 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 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for JACK" >&5 +$as_echo_n "checking for JACK... " >&6; } + +if test -n "$JACK_CFLAGS"; then + pkg_cv_JACK_CFLAGS="$JACK_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack\""; } >&5 + ($PKG_CONFIG --exists --print-errors "jack") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JACK_CFLAGS=`$PKG_CONFIG --cflags "jack" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$JACK_LIBS"; then + pkg_cv_JACK_LIBS="$JACK_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack\""; } >&5 + ($PKG_CONFIG --exists --print-errors "jack") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JACK_LIBS=`$PKG_CONFIG --libs "jack" 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 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 + JACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "jack" 2>&1` + else + JACK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "jack" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$JACK_PKG_ERRORS" >&5 + + have_jack=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_jack=no +else + JACK_CFLAGS=$pkg_cv_JACK_CFLAGS + JACK_LIBS=$pkg_cv_JACK_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_jack=yes +fi +fi + + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 +$as_echo_n "checking size of short... " >&6; } +if ${ac_cv_sizeof_short+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_short" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (short) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_short=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 +$as_echo "$ac_cv_sizeof_short" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SHORT $ac_cv_sizeof_short +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 +$as_echo_n "checking size of int... " >&6; } +if ${ac_cv_sizeof_int+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_int" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (int) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_int=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 +$as_echo "$ac_cv_sizeof_int" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +$as_echo_n "checking size of long... " >&6; } +if ${ac_cv_sizeof_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +$as_echo "$ac_cv_sizeof_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + + +save_LIBS="${LIBS}" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 +$as_echo_n "checking for clock_gettime in -lrt... " >&6; } +if ${ac_cv_lib_rt_clock_gettime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (); +int +main () +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_rt_clock_gettime=yes +else + ac_cv_lib_rt_clock_gettime=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 +$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } +if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : + rt_libs=" -lrt" +fi + +LIBS="${LIBS}${rt_libs}" +DLL_LIBS="${DLL_LIBS}${rt_libs}" +for ac_func in clock_gettime nanosleep +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +LIBS="${save_LIBS}" + +LT_CURRENT=2 +LT_REVISION=0 +LT_AGE=0 + + + + + + + + + + + + + + + +if ( echo "${host_os}" | grep ^darwin >> /dev/null ) && + [ "$enable_mac_universal" = "yes" ] && + [ "$enable_mac_debug" != "yes" ] ; then + CFLAGS="-O2 -Wall -pedantic -pipe -fPIC -DNDEBUG" +else + CFLAGS=${CFLAGS:-"-g -O2 -Wall -pedantic -pipe -fPIC"} +fi + +if [ $ac_cv_c_bigendian = "yes" ] ; then + CFLAGS="$CFLAGS -DPA_BIG_ENDIAN" +else + CFLAGS="$CFLAGS -DPA_LITTLE_ENDIAN" +fi + +add_objects() +{ + for o in $@; do + test "${OTHER_OBJS#*${o}*}" = "${OTHER_OBJS}" && OTHER_OBJS="$OTHER_OBJS $o" + done +} + +INCLUDES=portaudio.h + +CFLAGS="$CFLAGS -I\$(top_srcdir)/include -I\$(top_srcdir)/src/common" + +case "${host_os}" in + darwin* ) + + $as_echo "#define PA_USE_COREAUDIO 1" >>confdefs.h + + + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix -Werror" + LIBS="-framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework Carbon" + + if test "x$enable_mac_universal" = "xyes" ; then + case "xcodebuild -version | sed -n 's/Xcode \(.*\)/\1/p'" in + + 12*|3.0|3.1) + if [ -d /Developer/SDKs/MacOSX10.5.sdk ] ; then + mac_version_min="-mmacosx-version-min=10.3" + mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.5.sdk" + else + mac_version_min="-mmacosx-version-min=10.3" + mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.4u.sdk" + fi + ;; + + *) + if xcodebuild -version -sdk macosx10.5 Path >/dev/null 2>&1 ; then + mac_version_min="-mmacosx-version-min=10.3" + mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.5 Path`" + elif xcodebuild -version -sdk macosx10.6 Path >/dev/null 2>&1 ; then + mac_version_min="-mmacosx-version-min=10.4" + mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.6 Path`" + elif xcodebuild -version -sdk macosx10.7 Path >/dev/null 2>&1 ; then + mac_version_min="-mmacosx-version-min=10.4" + mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.7 Path`" + else + as_fn_error $? "Couldn't find 10.5, 10.6, or 10.7 SDK" "$LINENO" 5 + fi + esac + + mac_arches="" + for arch in i386 x86_64 ppc ppc64 + do + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -arch $arch" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + if [ -z "$mac_arches" ] ; then + mac_arches="-arch $arch" + else + mac_arches="$mac_arches -arch $arch" + fi + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + done + else + mac_arches="" + mac_sysroot="" + mac_version="" + fi + SHARED_FLAGS="$LIBS -dynamiclib $mac_arches $mac_sysroot $mac_version_min" + CFLAGS="-std=c99 $CFLAGS $mac_arches $mac_sysroot $mac_version_min" + OTHER_OBJS="src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o src/hostapi/coreaudio/pa_mac_core.o src/hostapi/coreaudio/pa_mac_core_utilities.o src/hostapi/coreaudio/pa_mac_core_blocking.o src/common/pa_ringbuffer.o" + PADLL="libportaudio.dylib" + ;; + + mingw* ) + + PADLL="portaudio.dll" + THREAD_CFLAGS="-mthreads" + SHARED_FLAGS="-shared" + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/win -DPA_USE_WMME=0 -DPA_USE_ASIO=0 -DPA_USE_WDMKS=0 -DPA_USE_DS=0 -DPA_USE_WASAPI=0" + + if [ "x$with_directx" = "xyes" ]; then + DXDIR="$with_dxdir" + add_objects src/hostapi/dsound/pa_win_ds.o src/hostapi/dsound/pa_win_ds_dynlink.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -ldsound -lole32" + DLL_LIBS="${DLL_LIBS} -lwinmm -lm -L$DXDIR/lib -ldsound -lole32" + #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" + #CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO" + CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_DS -DPA_USE_DS=1" + fi + + if [ "x$with_asio" = "xyes" ]; then + ASIODIR="$with_asiodir" + add_objects src/hostapi/asio/pa_asio.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/hostapi/asio/iasiothiscallresolver.o $ASIODIR/common/asio.o $ASIODIR/host/asiodrivers.o $ASIODIR/host/pc/asiolist.o + LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" + DLL_LIBS="${DLL_LIBS} -lwinmm -lm -lole32 -luuid" + CFLAGS="$CFLAGS -ffast-math -fomit-frame-pointer -I\$(top_srcdir)/src/hostapi/asio -I$ASIODIR/host/pc -I$ASIODIR/common -I$ASIODIR/host -UPA_USE_ASIO -DPA_USE_ASIO=1 -DWINDOWS" + + CFLAGS="$CFLAGS -D_WIN32_WINNT=0x0501 -DWINVER=0x0501" + + CXXFLAGS="$CFLAGS" + fi + + if [ "x$with_wdmks" = "xyes" ]; then + DXDIR="$with_dxdir" + add_objects src/hostapi/wdmks/pa_win_wdmks.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_wdmks_util.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -luuid -lsetupapi -lole32" + DLL_LIBS="${DLL_LIBS} -lwinmm -lm -L$DXDIR/lib -luuid -lsetupapi -lole32" + #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" + #CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO" + CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_WDMKS -DPA_USE_WDMKS=1" + fi + + if [ "x$with_wmme" = "xyes" ]; then + add_objects src/hostapi/wmme/pa_win_wmme.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" + DLL_LIBS="${DLL_LIBS} -lwinmm" + CFLAGS="$CFLAGS -UPA_USE_WMME -DPA_USE_WMME=1" + fi + + if [ "x$with_wasapi" = "xyes" ]; then + add_objects src/hostapi/wasapi/pa_win_wasapi.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" + DLL_LIBS="${DLL_LIBS} -lwinmm -lole32" + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/hostapi/wasapi/mingw-include -UPA_USE_WASAPI -DPA_USE_WASAPI=1" + fi + ;; + + cygwin* ) + + OTHER_OBJS="src/hostapi/wmme/pa_win_wmme.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_waveformat.o" + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/win -DPA_USE_DS=0 -DPA_USE_WDMKS=0 -DPA_USE_ASIO=0 -DPA_USE_WASAPI=0 -DPA_USE_WMME=1" + LIBS="-lwinmm -lm" + PADLL="portaudio.dll" + THREAD_CFLAGS="-mthreads" + SHARED_FLAGS="-shared" + DLL_LIBS="${DLL_LIBS} -lwinmm" + ;; + + irix* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 +$as_echo_n "checking for pthread_create in -lpthread... " >&6; } +if ${ac_cv_lib_pthread_pthread_create+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_create (); +int +main () +{ +return pthread_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_create=yes +else + ac_cv_lib_pthread_pthread_create=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 +$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } +if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBPTHREAD 1 +_ACEOF + + LIBS="-lpthread $LIBS" + +else + as_fn_error $? "IRIX posix thread library not found!" "$LINENO" 5 +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alOpenPort in -laudio" >&5 +$as_echo_n "checking for alOpenPort in -laudio... " >&6; } +if ${ac_cv_lib_audio_alOpenPort+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-laudio $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char alOpenPort (); +int +main () +{ +return alOpenPort (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_audio_alOpenPort=yes +else + ac_cv_lib_audio_alOpenPort=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_audio_alOpenPort" >&5 +$as_echo "$ac_cv_lib_audio_alOpenPort" >&6; } +if test "x$ac_cv_lib_audio_alOpenPort" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBAUDIO 1 +_ACEOF + + LIBS="-laudio $LIBS" + +else + as_fn_error $? "IRIX audio library not found!" "$LINENO" 5 +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dmGetUST in -ldmedia" >&5 +$as_echo_n "checking for dmGetUST in -ldmedia... " >&6; } +if ${ac_cv_lib_dmedia_dmGetUST+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldmedia $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dmGetUST (); +int +main () +{ +return dmGetUST (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dmedia_dmGetUST=yes +else + ac_cv_lib_dmedia_dmGetUST=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dmedia_dmGetUST" >&5 +$as_echo "$ac_cv_lib_dmedia_dmGetUST" >&6; } +if test "x$ac_cv_lib_dmedia_dmGetUST" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBDMEDIA 1 +_ACEOF + + LIBS="-ldmedia $LIBS" + +else + as_fn_error $? "IRIX digital media library not found!" "$LINENO" 5 +fi + + + $as_echo "#define PA_USE_SGI 1" >>confdefs.h + + + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix" + + THREAD_CFLAGS="-D_REENTRANT" + + OTHER_OBJS="pa_sgi/pa_sgi.o src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o" + + LIBS="-lm -ldmedia -laudio -lpthread" + PADLL="libportaudio.so" + SHARED_FLAGS="" + ;; + + *) + + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 +$as_echo_n "checking for pthread_create in -lpthread... " >&6; } +if ${ac_cv_lib_pthread_pthread_create+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_create (); +int +main () +{ +return pthread_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_create=yes +else + ac_cv_lib_pthread_pthread_create=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 +$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } +if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : + have_pthread="yes" +else + as_fn_error $? "libpthread not found!" "$LINENO" 5 +fi + + + if [ "$have_alsa" = "yes" ] && [ "$with_alsa" != "no" ] ; then + DLL_LIBS="$DLL_LIBS -lasound" + LIBS="$LIBS -lasound" + OTHER_OBJS="$OTHER_OBJS src/hostapi/alsa/pa_linux_alsa.o" + INCLUDES="$INCLUDES pa_linux_alsa.h" + $as_echo "#define PA_USE_ALSA 1" >>confdefs.h + + fi + + if [ "$have_jack" = "yes" ] && [ "$with_jack" != "no" ] ; then + DLL_LIBS="$DLL_LIBS $JACK_LIBS" + CFLAGS="$CFLAGS $JACK_CFLAGS" + OTHER_OBJS="$OTHER_OBJS src/hostapi/jack/pa_jack.o src/common/pa_ringbuffer.o" + INCLUDES="$INCLUDES pa_jack.h" + $as_echo "#define PA_USE_JACK 1" >>confdefs.h + + fi + + if [ "$with_oss" != "no" ] ; then + OTHER_OBJS="$OTHER_OBJS src/hostapi/oss/pa_unix_oss.o" + if [ "$have_libossaudio" = "yes" ] ; then + DLL_LIBS="$DLL_LIBS -lossaudio" + LIBS="$LIBS -lossaudio" + fi + $as_echo "#define PA_USE_OSS 1" >>confdefs.h + + fi + + if [ "$have_asihpi" = "yes" ] && [ "$with_asihpi" != "no" ] ; then + LIBS="$LIBS -lhpi" + DLL_LIBS="$DLL_LIBS -lhpi" + OTHER_OBJS="$OTHER_OBJS src/hostapi/asihpi/pa_linux_asihpi.o" + $as_echo "#define PA_USE_ASIHPI 1" >>confdefs.h + + fi + + DLL_LIBS="$DLL_LIBS -lm -lpthread" + LIBS="$LIBS -lm -lpthread" + PADLL="libportaudio.so" + + ## support sun cc compiler flags + case "${host_os}" in + solaris*) + SHARED_FLAGS="-G" + THREAD_CFLAGS="-mt" + ;; + *) + SHARED_FLAGS="-fPIC" + THREAD_CFLAGS="-pthread" + ;; + esac + + OTHER_OBJS="$OTHER_OBJS src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o" +esac +CFLAGS="$CFLAGS $THREAD_CFLAGS" + +test "$enable_shared" != "yes" && SHARED_FLAGS="" + +if test "$enable_cxx" = "yes"; then + + +subdirs="$subdirs bindings/cpp" + + ENABLE_CXX_TRUE="" + ENABLE_CXX_FALSE="#" +else + ENABLE_CXX_TRUE="#" + ENABLE_CXX_FALSE="" +fi + + + +if test "x$with_asio" = "xyes"; then + WITH_ASIO_TRUE="" + WITH_ASIO_FALSE="@ #" +else + WITH_ASIO_TRUE="@ #" + WITH_ASIO_FALSE="" +fi + + + +ac_config_files="$ac_config_files Makefile portaudio-2.0.pc" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## 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 $as_me, which was +generated by GNU Autoconf 2.68. 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 + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +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 + +Configuration files: +$config_files + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.68, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2010 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' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# + + +# 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' +AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +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"`' +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"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in AS \ +DLLTOOL \ +OBJDUMP \ +SHELL \ +ECHO \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +nm_file_list_spec \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_flag_spec_ld \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_flag_spec_ld_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "portaudio-2.0.pc") CONFIG_FILES="$CONFIG_FILES portaudio-2.0.pc" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +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" + + +eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="CXX " + +# ### BEGIN LIBTOOL CONFIG + +# Assembler program. +AS=$lt_AS + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Object dumper program. +OBJDUMP=$lt_OBJDUMP + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The 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 + +# 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 + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi + +# +# CONFIG_SUBDIRS section. +# +if test "$no_recursion" != yes; then + + # Remove --cache-file, --srcdir, and --disable-option-checking arguments + # so they do not pile up. + ac_sub_configure_args= + ac_prev= + eval "set x $ac_configure_args" + shift + for ac_arg + do + if test -n "$ac_prev"; then + ac_prev= + continue + fi + case $ac_arg in + -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=*) + ;; + --config-cache | -C) + ;; + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + ;; + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + ;; + --disable-option-checking) + ;; + *) + case $ac_arg in + *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_sub_configure_args " '$ac_arg'" ;; + esac + done + + # Always prepend --prefix to ensure using the same prefix + # in subdir configurations. + ac_arg="--prefix=$prefix" + case $ac_arg in + *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" + + # Pass --silent + if test "$silent" = yes; then + ac_sub_configure_args="--silent $ac_sub_configure_args" + fi + + # Always prepend --disable-option-checking to silence warnings, since + # different subdirs can have different --enable and --with options. + ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" + + ac_popdir=`pwd` + for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue + + # Do not complain, so a configure script can configure whichever + # parts of a large source tree are present. + test -d "$srcdir/$ac_dir" || continue + + ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" + $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 + $as_echo "$ac_msg" >&6 + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + cd "$ac_dir" + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f "$ac_srcdir/configure.gnu"; then + ac_sub_configure=$ac_srcdir/configure.gnu + elif test -f "$ac_srcdir/configure"; then + ac_sub_configure=$ac_srcdir/configure + elif test -f "$ac_srcdir/configure.in"; then + # This should be Cygnus configure. + ac_sub_configure=$ac_aux_dir/configure + else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 +$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} + ac_sub_configure= + fi + + # The recursion is here. + if test -n "$ac_sub_configure"; then + # Make the cache file name correct relative to the subdirectory. + case $cache_file in + [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; + *) # Relative name. + ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 +$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} + # The eval makes quoting arguments work. + eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ + --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || + as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 + fi + + cd "$ac_popdir" + done +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: +Configuration summary: + + Target ...................... $target + C++ bindings ................ $enable_cxx + Debug output ................ $debug_output" >&5 +$as_echo " +Configuration summary: + + Target ...................... $target + C++ bindings ................ $enable_cxx + Debug output ................ $debug_output" >&6; } + +case "$target_os" in *linux*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: + ALSA ........................ $have_alsa + ASIHPI ...................... $have_asihpi" >&5 +$as_echo " + ALSA ........................ $have_alsa + ASIHPI ...................... $have_asihpi" >&6; } + ;; +esac +case "$target_os" in + *mingw* | *cygwin*) + test "x$with_directx" = "xyes" && with_directx="$with_directx (${with_dxdir})" + test "x$with_wdmks" = "xyes" && with_wdmks="$with_wdmks (${with_dxdir})" + test "x$with_asio" = "xyes" && with_asio="$with_asio (${with_asiodir})" + test "x$with_wasapi" = "xyes" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: + WMME ........................ $with_wmme + DSound ...................... $with_directx + ASIO ........................ $with_asio + WASAPI ...................... $with_wasapi + WDMKS ....................... $with_wdmks +" >&5 +$as_echo " + WMME ........................ $with_wmme + DSound ...................... $with_directx + ASIO ........................ $with_asio + WASAPI ...................... $with_wasapi + WDMKS ....................... $with_wdmks +" >&6; } + ;; + *darwin*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: + Mac debug flags ............. $enable_mac_debug +" >&5 +$as_echo " + Mac debug flags ............. $enable_mac_debug +" >&6; } + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: + OSS ......................... $have_oss + JACK ........................ $have_jack +" >&5 +$as_echo " + OSS ......................... $have_oss + JACK ........................ $have_jack +" >&6; } + ;; +esac diff --git a/3rdparty/portaudio/configure.in b/3rdparty/portaudio/configure.in index 58cd61e43e..7783581832 100644 --- a/3rdparty/portaudio/configure.in +++ b/3rdparty/portaudio/configure.in @@ -1,501 +1,501 @@ -dnl -dnl portaudio V19 configure.in script -dnl -dnl Dominic Mazzoni, Arve Knudsen, Stelios Bounanos -dnl - -dnl Require autoconf >= 2.13 -AC_PREREQ(2.13) - -dnl Init autoconf and make sure configure is being called -dnl from the right directory -AC_INIT([include/portaudio.h]) - -dnl Define build, build_cpu, build_vendor, build_os -AC_CANONICAL_BUILD -dnl Define host, host_cpu, host_vendor, host_os -AC_CANONICAL_HOST -dnl Define target, target_cpu, target_vendor, target_os -AC_CANONICAL_TARGET - -dnl Specify options - -AC_ARG_WITH(alsa, - AS_HELP_STRING([--with-alsa], [Enable support for ALSA @<:@autodetect@:>@]), - [with_alsa=$withval]) - -AC_ARG_WITH(jack, - AS_HELP_STRING([--with-jack], [Enable support for JACK @<:@autodetect@:>@]), - [with_jack=$withval]) - -AC_ARG_WITH(oss, - AS_HELP_STRING([--with-oss], [Enable support for OSS @<:@autodetect@:>@]), - [with_oss=$withval]) - -AC_ARG_WITH(asihpi, - AS_HELP_STRING([--with-asihpi], [Enable support for ASIHPI @<:@autodetect@:>@]), - [with_asihpi=$withval]) - -AC_ARG_WITH(winapi, - AS_HELP_STRING([--with-winapi], - [Select Windows API support (@<:@wmme|directx|asio|wasapi|wdmks@:>@@<:@,...@:>@) @<:@wmme@:>@]), - [with_winapi=$withval], [with_winapi="wmme"]) -case "$target_os" in *mingw* | *cygwin*) - with_wmme=no - with_directx=no - with_asio=no - with_wasapi=no - with_wdmks=no - for api in $(echo $with_winapi | sed 's/,/ /g'); do - case "$api" in - wmme|directx|asio|wasapi|wdmks) - eval with_$api=yes - ;; - *) - AC_MSG_ERROR([unknown Windows API \"$api\" (do you need --help?)]) - ;; - esac - done - ;; -esac - -AC_ARG_WITH(asiodir, - AS_HELP_STRING([--with-asiodir], [ASIO directory @<:@/usr/local/asiosdk2@:>@]), - with_asiodir=$withval, with_asiodir="/usr/local/asiosdk2") - -AC_ARG_WITH(dxdir, - AS_HELP_STRING([--with-dxdir], [DirectX directory @<:@/usr/local/dx7sdk@:>@]), - with_dxdir=$withval, with_dxdir="/usr/local/dx7sdk") - -debug_output=no -AC_ARG_ENABLE(debug-output, - AS_HELP_STRING([--enable-debug-output], [Enable debug output @<:@no@:>@]), - [if test "x$enableval" != "xno" ; then - AC_DEFINE(PA_ENABLE_DEBUG_OUTPUT,,[Enable debugging messages]) - debug_output=yes - fi - ]) - -AC_ARG_ENABLE(cxx, - AS_HELP_STRING([--enable-cxx], [Enable C++ bindings @<:@no@:>@]), - enable_cxx=$enableval, enable_cxx="no") - -AC_ARG_ENABLE(mac-debug, - AS_HELP_STRING([--enable-mac-debug], [Enable Mac debug @<:@no@:>@]), - enable_mac_debug=$enableval, enable_mac_debug="no") - -AC_ARG_ENABLE(mac-universal, - AS_HELP_STRING([--enable-mac-universal], [Build Mac universal binaries @<:@yes@:>@]), - enable_mac_universal=$enableval, enable_mac_universal="yes") - -dnl Continue to accept --host_os for compatibility but do not document -dnl it (the correct way to change host_os is with --host=...). Moved -dnl here because the empty help string generates a blank line which we -dnl can use to separate PA options from libtool options. -AC_ARG_WITH(host_os, [], host_os=$withval) - -dnl Checks for programs. - -AC_PROG_CC -dnl ASIO and CXX bindings need a C++ compiler -if [[ "$with_asio" = "yes" ] || [ "$enable_cxx" = "yes" ]] ; then - AC_PROG_CXX -fi -AC_LIBTOOL_WIN32_DLL -AC_PROG_LIBTOOL -AC_PROG_INSTALL -AC_PROG_LN_S -AC_PATH_PROG(AR, ar, no) -if [[ $AR = "no" ]] ; then - AC_MSG_ERROR("Could not find ar - needed to create a library") -fi - -dnl This must be one of the first tests we do or it will fail... -AC_C_BIGENDIAN - -dnl checks for various host APIs and arguments to configure that -dnl turn them on or off - -have_alsa=no -if test "x$with_alsa" != "xno"; then - AC_CHECK_LIB(asound, snd_pcm_open, have_alsa=yes, have_alsa=no) -fi -have_asihpi=no -if test "x$with_asihpi" != "xno"; then - AC_CHECK_LIB(hpi, HPI_SubSysCreate, have_asihpi=yes, have_asihpi=no, -lm) -fi -have_libossaudio=no -have_oss=no -if test "x$with_oss" != "xno"; then - AC_CHECK_HEADERS([sys/soundcard.h linux/soundcard.h machine/soundcard.h], [have_oss=yes]) - if test "x$have_oss" = "xyes"; then - AC_CHECK_LIB(ossaudio, _oss_ioctl, have_libossaudio=yes, have_libossaudio=no) - fi -fi -have_jack=no -if test "x$with_jack" != "xno"; then - PKG_CHECK_MODULES(JACK, jack, have_jack=yes, have_jack=no) -fi - - -dnl sizeof checks: we will need a 16-bit and a 32-bit type - -AC_CHECK_SIZEOF(short) -AC_CHECK_SIZEOF(int) -AC_CHECK_SIZEOF(long) - -save_LIBS="${LIBS}" -AC_CHECK_LIB(rt, clock_gettime, [rt_libs=" -lrt"]) -LIBS="${LIBS}${rt_libs}" -DLL_LIBS="${DLL_LIBS}${rt_libs}" -AC_CHECK_FUNCS([clock_gettime nanosleep]) -LIBS="${save_LIBS}" - -dnl LT_RELEASE=19 -LT_CURRENT=2 -LT_REVISION=0 -LT_AGE=0 - -AC_SUBST(LT_CURRENT) -AC_SUBST(LT_REVISION) -AC_SUBST(LT_AGE) - -dnl extra variables -AC_SUBST(OTHER_OBJS) -AC_SUBST(PADLL) -AC_SUBST(SHARED_FLAGS) -AC_SUBST(THREAD_CFLAGS) -AC_SUBST(DLL_LIBS) -AC_SUBST(CXXFLAGS) -AC_SUBST(NASM) -AC_SUBST(NASMOPT) -AC_SUBST(INCLUDES) - -dnl -g is optional on darwin -if ( echo "${host_os}" | grep ^darwin >> /dev/null ) && - [[ "$enable_mac_universal" = "yes" ] && - [ "$enable_mac_debug" != "yes" ]] ; then - CFLAGS="-O2 -Wall -pedantic -pipe -fPIC -DNDEBUG" -else - CFLAGS=${CFLAGS:-"-g -O2 -Wall -pedantic -pipe -fPIC"} -fi - -if [[ $ac_cv_c_bigendian = "yes" ]] ; then - CFLAGS="$CFLAGS -DPA_BIG_ENDIAN" -else - CFLAGS="$CFLAGS -DPA_LITTLE_ENDIAN" -fi - -add_objects() -{ - for o in $@; do - test "${OTHER_OBJS#*${o}*}" = "${OTHER_OBJS}" && OTHER_OBJS="$OTHER_OBJS $o" - done -} - -INCLUDES=portaudio.h - -dnl Include directories needed by all implementations -CFLAGS="$CFLAGS -I\$(top_srcdir)/include -I\$(top_srcdir)/src/common" - -case "${host_os}" in - darwin* ) - dnl Mac OS X configuration - - AC_DEFINE(PA_USE_COREAUDIO,1) - - CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix -Werror" - LIBS="-framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework Carbon" - - if test "x$enable_mac_universal" = "xyes" ; then - case "xcodebuild -version | sed -n 's/Xcode \(.*\)/\1/p'" in - - [12]*|3.0|3.1) - dnl In pre-3.2 versions of Xcode, xcodebuild doesn't - dnl support -sdk, so we can't use that to look for - dnl SDKs. However, in those versions of Xcode, the - dnl SDKs are under /Developer/SDKs, so we can just look - dnl there. Also, we assume they had no SDKs later - dnl than 10.5, as 3.2 was the version that came with - dnl 10.6, at least if the Wikipedia page for Xcode - dnl is to be believed. - if [[ -d /Developer/SDKs/MacOSX10.5.sdk ]] ; then - mac_version_min="-mmacosx-version-min=10.3" - mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.5.sdk" - else - mac_version_min="-mmacosx-version-min=10.3" - mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.4u.sdk" - fi - ;; - - *) - dnl In 3.2 and later, xcodebuild supports -sdk, and, in - dnl 4.3 and later, the SDKs aren't under /Developer/SDKs - dnl as there *is* no /Developer, so we use -sdk to check - dnl what SDKs are available and to get the full path of - dnl the SDKs. - if xcodebuild -version -sdk macosx10.5 Path >/dev/null 2>&1 ; then - mac_version_min="-mmacosx-version-min=10.3" - mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.5 Path`" - elif xcodebuild -version -sdk macosx10.6 Path >/dev/null 2>&1 ; then - mac_version_min="-mmacosx-version-min=10.4" - mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.6 Path`" - elif xcodebuild -version -sdk macosx10.7 Path >/dev/null 2>&1 ; then - mac_version_min="-mmacosx-version-min=10.4" - mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.7 Path`" - else - AC_MSG_ERROR([Couldn't find 10.5, 10.6, or 10.7 SDK]) - fi - esac - - dnl Pick which architectures to build for based on what - dnl the compiler supports. - mac_arches="" - for arch in i386 x86_64 ppc ppc64 - do - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -arch $arch" - AC_TRY_COMPILE([], [return 0;], - [ - if [[ -z "$mac_arches" ]] ; then - mac_arches="-arch $arch" - else - mac_arches="$mac_arches -arch $arch" - fi - ]) - CFLAGS="$save_CFLAGS" - done - else - mac_arches="" - mac_sysroot="" - mac_version="" - fi - SHARED_FLAGS="$LIBS -dynamiclib $mac_arches $mac_sysroot $mac_version_min" - CFLAGS="-std=c99 $CFLAGS $mac_arches $mac_sysroot $mac_version_min" - OTHER_OBJS="src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o src/hostapi/coreaudio/pa_mac_core.o src/hostapi/coreaudio/pa_mac_core_utilities.o src/hostapi/coreaudio/pa_mac_core_blocking.o src/common/pa_ringbuffer.o" - PADLL="libportaudio.dylib" - ;; - - mingw* ) - dnl MingW configuration - - PADLL="portaudio.dll" - THREAD_CFLAGS="-mthreads" - SHARED_FLAGS="-shared" - CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/win -DPA_USE_WMME=0 -DPA_USE_ASIO=0 -DPA_USE_WDMKS=0 -DPA_USE_DS=0 -DPA_USE_WASAPI=0" - - if [[ "x$with_directx" = "xyes" ]]; then - DXDIR="$with_dxdir" - add_objects src/hostapi/dsound/pa_win_ds.o src/hostapi/dsound/pa_win_ds_dynlink.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o - LIBS="${LIBS} -lwinmm -lm -ldsound -lole32" - DLL_LIBS="${DLL_LIBS} -lwinmm -lm -L$DXDIR/lib -ldsound -lole32" - #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" - #CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO" - CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_DS -DPA_USE_DS=1" - fi - - if [[ "x$with_asio" = "xyes" ]]; then - ASIODIR="$with_asiodir" - add_objects src/hostapi/asio/pa_asio.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/hostapi/asio/iasiothiscallresolver.o $ASIODIR/common/asio.o $ASIODIR/host/asiodrivers.o $ASIODIR/host/pc/asiolist.o - LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" - DLL_LIBS="${DLL_LIBS} -lwinmm -lm -lole32 -luuid" - CFLAGS="$CFLAGS -ffast-math -fomit-frame-pointer -I\$(top_srcdir)/src/hostapi/asio -I$ASIODIR/host/pc -I$ASIODIR/common -I$ASIODIR/host -UPA_USE_ASIO -DPA_USE_ASIO=1 -DWINDOWS" - - dnl Setting the windows version flags below resolves a conflict between Interlocked* - dnl definitions in mingw winbase.h and Interlocked* hacks in ASIO SDK combase.h - dnl combase.h is included by asiodrvr.h - dnl PortAudio does not actually require Win XP (winver 501) APIs - CFLAGS="$CFLAGS -D_WIN32_WINNT=0x0501 -DWINVER=0x0501" - - CXXFLAGS="$CFLAGS" - fi - - if [[ "x$with_wdmks" = "xyes" ]]; then - DXDIR="$with_dxdir" - add_objects src/hostapi/wdmks/pa_win_wdmks.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_wdmks_util.o src/os/win/pa_win_waveformat.o - LIBS="${LIBS} -lwinmm -lm -luuid -lsetupapi -lole32" - DLL_LIBS="${DLL_LIBS} -lwinmm -lm -L$DXDIR/lib -luuid -lsetupapi -lole32" - #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" - #CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO" - CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_WDMKS -DPA_USE_WDMKS=1" - fi - - if [[ "x$with_wmme" = "xyes" ]]; then - add_objects src/hostapi/wmme/pa_win_wmme.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_waveformat.o - LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" - DLL_LIBS="${DLL_LIBS} -lwinmm" - CFLAGS="$CFLAGS -UPA_USE_WMME -DPA_USE_WMME=1" - fi - - if [[ "x$with_wasapi" = "xyes" ]]; then - add_objects src/hostapi/wasapi/pa_win_wasapi.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o - LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" - DLL_LIBS="${DLL_LIBS} -lwinmm -lole32" - CFLAGS="$CFLAGS -I\$(top_srcdir)/src/hostapi/wasapi/mingw-include -UPA_USE_WASAPI -DPA_USE_WASAPI=1" - fi - ;; - - cygwin* ) - dnl Cygwin configuration - - OTHER_OBJS="src/hostapi/wmme/pa_win_wmme.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_waveformat.o" - CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/win -DPA_USE_DS=0 -DPA_USE_WDMKS=0 -DPA_USE_ASIO=0 -DPA_USE_WASAPI=0 -DPA_USE_WMME=1" - LIBS="-lwinmm -lm" - PADLL="portaudio.dll" - THREAD_CFLAGS="-mthreads" - SHARED_FLAGS="-shared" - DLL_LIBS="${DLL_LIBS} -lwinmm" - ;; - - irix* ) - dnl SGI IRIX audio library (AL) configuration (Pieter, oct 2-13, 2003). - dnl The 'dmedia' library is needed to read the Unadjusted System Time (UST). - dnl - AC_CHECK_LIB(pthread, pthread_create, , AC_MSG_ERROR([IRIX posix thread library not found!])) - AC_CHECK_LIB(audio, alOpenPort, , AC_MSG_ERROR([IRIX audio library not found!])) - AC_CHECK_LIB(dmedia, dmGetUST, , AC_MSG_ERROR([IRIX digital media library not found!])) - - dnl See the '#ifdef PA_USE_SGI' in file pa_unix/pa_unix_hostapis.c - dnl which selects the appropriate PaXXX_Initialize() function. - dnl - AC_DEFINE(PA_USE_SGI,1) - - CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix" - - dnl The _REENTRANT option for pthread safety. Perhaps not necessary but it 'll do no harm. - dnl - THREAD_CFLAGS="-D_REENTRANT" - - OTHER_OBJS="pa_sgi/pa_sgi.o src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o" - - dnl SGI books say -lpthread should be the last of the libs mentioned. - dnl - LIBS="-lm -ldmedia -laudio -lpthread" - PADLL="libportaudio.so" - SHARED_FLAGS="" - ;; - - *) - dnl Unix configuration - - CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix" - - AC_CHECK_LIB(pthread, pthread_create,[have_pthread="yes"], - AC_MSG_ERROR([libpthread not found!])) - - if [[ "$have_alsa" = "yes" ] && [ "$with_alsa" != "no" ]] ; then - DLL_LIBS="$DLL_LIBS -lasound" - LIBS="$LIBS -lasound" - OTHER_OBJS="$OTHER_OBJS src/hostapi/alsa/pa_linux_alsa.o" - INCLUDES="$INCLUDES pa_linux_alsa.h" - AC_DEFINE(PA_USE_ALSA,1) - fi - - if [[ "$have_jack" = "yes" ] && [ "$with_jack" != "no" ]] ; then - DLL_LIBS="$DLL_LIBS $JACK_LIBS" - CFLAGS="$CFLAGS $JACK_CFLAGS" - OTHER_OBJS="$OTHER_OBJS src/hostapi/jack/pa_jack.o src/common/pa_ringbuffer.o" - INCLUDES="$INCLUDES pa_jack.h" - AC_DEFINE(PA_USE_JACK,1) - fi - - if [[ "$with_oss" != "no" ]] ; then - OTHER_OBJS="$OTHER_OBJS src/hostapi/oss/pa_unix_oss.o" - if [[ "$have_libossaudio" = "yes" ]] ; then - DLL_LIBS="$DLL_LIBS -lossaudio" - LIBS="$LIBS -lossaudio" - fi - AC_DEFINE(PA_USE_OSS,1) - fi - - if [[ "$have_asihpi" = "yes" ] && [ "$with_asihpi" != "no" ]] ; then - LIBS="$LIBS -lhpi" - DLL_LIBS="$DLL_LIBS -lhpi" - OTHER_OBJS="$OTHER_OBJS src/hostapi/asihpi/pa_linux_asihpi.o" - AC_DEFINE(PA_USE_ASIHPI,1) - fi - - DLL_LIBS="$DLL_LIBS -lm -lpthread" - LIBS="$LIBS -lm -lpthread" - PADLL="libportaudio.so" - - ## support sun cc compiler flags - case "${host_os}" in - solaris*) - SHARED_FLAGS="-G" - THREAD_CFLAGS="-mt" - ;; - *) - SHARED_FLAGS="-fPIC" - THREAD_CFLAGS="-pthread" - ;; - esac - - OTHER_OBJS="$OTHER_OBJS src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o" -esac -CFLAGS="$CFLAGS $THREAD_CFLAGS" - -test "$enable_shared" != "yes" && SHARED_FLAGS="" - -if test "$enable_cxx" = "yes"; then - AC_CONFIG_SUBDIRS([bindings/cpp]) - ENABLE_CXX_TRUE="" - ENABLE_CXX_FALSE="#" -else - ENABLE_CXX_TRUE="#" - ENABLE_CXX_FALSE="" -fi -AC_SUBST(ENABLE_CXX_TRUE) -AC_SUBST(ENABLE_CXX_FALSE) - -if test "x$with_asio" = "xyes"; then - WITH_ASIO_TRUE="" - WITH_ASIO_FALSE="@ #" -else - WITH_ASIO_TRUE="@ #" - WITH_ASIO_FALSE="" -fi -AC_SUBST(WITH_ASIO_TRUE) -AC_SUBST(WITH_ASIO_FALSE) - -AC_OUTPUT([Makefile portaudio-2.0.pc]) - -AC_MSG_RESULT([ -Configuration summary: - - Target ...................... $target - C++ bindings ................ $enable_cxx - Debug output ................ $debug_output]) - -case "$target_os" in *linux*) - AC_MSG_RESULT([ - ALSA ........................ $have_alsa - ASIHPI ...................... $have_asihpi]) - ;; -esac -case "$target_os" in - *mingw* | *cygwin*) - test "x$with_directx" = "xyes" && with_directx="$with_directx (${with_dxdir})" - test "x$with_wdmks" = "xyes" && with_wdmks="$with_wdmks (${with_dxdir})" - test "x$with_asio" = "xyes" && with_asio="$with_asio (${with_asiodir})" - test "x$with_wasapi" = "xyes" - AC_MSG_RESULT([ - WMME ........................ $with_wmme - DSound ...................... $with_directx - ASIO ........................ $with_asio - WASAPI ...................... $with_wasapi - WDMKS ....................... $with_wdmks -]) - ;; - *darwin*) - AC_MSG_RESULT([ - Mac debug flags ............. $enable_mac_debug -]) - ;; - *) - AC_MSG_RESULT([ - OSS ......................... $have_oss - JACK ........................ $have_jack -]) - ;; -esac +dnl +dnl portaudio V19 configure.in script +dnl +dnl Dominic Mazzoni, Arve Knudsen, Stelios Bounanos +dnl + +dnl Require autoconf >= 2.13 +AC_PREREQ(2.13) + +dnl Init autoconf and make sure configure is being called +dnl from the right directory +AC_INIT([include/portaudio.h]) + +dnl Define build, build_cpu, build_vendor, build_os +AC_CANONICAL_BUILD +dnl Define host, host_cpu, host_vendor, host_os +AC_CANONICAL_HOST +dnl Define target, target_cpu, target_vendor, target_os +AC_CANONICAL_TARGET + +dnl Specify options + +AC_ARG_WITH(alsa, + AS_HELP_STRING([--with-alsa], [Enable support for ALSA @<:@autodetect@:>@]), + [with_alsa=$withval]) + +AC_ARG_WITH(jack, + AS_HELP_STRING([--with-jack], [Enable support for JACK @<:@autodetect@:>@]), + [with_jack=$withval]) + +AC_ARG_WITH(oss, + AS_HELP_STRING([--with-oss], [Enable support for OSS @<:@autodetect@:>@]), + [with_oss=$withval]) + +AC_ARG_WITH(asihpi, + AS_HELP_STRING([--with-asihpi], [Enable support for ASIHPI @<:@autodetect@:>@]), + [with_asihpi=$withval]) + +AC_ARG_WITH(winapi, + AS_HELP_STRING([--with-winapi], + [Select Windows API support (@<:@wmme|directx|asio|wasapi|wdmks@:>@@<:@,...@:>@) @<:@wmme@:>@]), + [with_winapi=$withval], [with_winapi="wmme"]) +case "$target_os" in *mingw* | *cygwin*) + with_wmme=no + with_directx=no + with_asio=no + with_wasapi=no + with_wdmks=no + for api in $(echo $with_winapi | sed 's/,/ /g'); do + case "$api" in + wmme|directx|asio|wasapi|wdmks) + eval with_$api=yes + ;; + *) + AC_MSG_ERROR([unknown Windows API \"$api\" (do you need --help?)]) + ;; + esac + done + ;; +esac + +AC_ARG_WITH(asiodir, + AS_HELP_STRING([--with-asiodir], [ASIO directory @<:@/usr/local/asiosdk2@:>@]), + with_asiodir=$withval, with_asiodir="/usr/local/asiosdk2") + +AC_ARG_WITH(dxdir, + AS_HELP_STRING([--with-dxdir], [DirectX directory @<:@/usr/local/dx7sdk@:>@]), + with_dxdir=$withval, with_dxdir="/usr/local/dx7sdk") + +debug_output=no +AC_ARG_ENABLE(debug-output, + AS_HELP_STRING([--enable-debug-output], [Enable debug output @<:@no@:>@]), + [if test "x$enableval" != "xno" ; then + AC_DEFINE(PA_ENABLE_DEBUG_OUTPUT,,[Enable debugging messages]) + debug_output=yes + fi + ]) + +AC_ARG_ENABLE(cxx, + AS_HELP_STRING([--enable-cxx], [Enable C++ bindings @<:@no@:>@]), + enable_cxx=$enableval, enable_cxx="no") + +AC_ARG_ENABLE(mac-debug, + AS_HELP_STRING([--enable-mac-debug], [Enable Mac debug @<:@no@:>@]), + enable_mac_debug=$enableval, enable_mac_debug="no") + +AC_ARG_ENABLE(mac-universal, + AS_HELP_STRING([--enable-mac-universal], [Build Mac universal binaries @<:@yes@:>@]), + enable_mac_universal=$enableval, enable_mac_universal="yes") + +dnl Continue to accept --host_os for compatibility but do not document +dnl it (the correct way to change host_os is with --host=...). Moved +dnl here because the empty help string generates a blank line which we +dnl can use to separate PA options from libtool options. +AC_ARG_WITH(host_os, [], host_os=$withval) + +dnl Checks for programs. + +AC_PROG_CC +dnl ASIO and CXX bindings need a C++ compiler +if [[ "$with_asio" = "yes" ] || [ "$enable_cxx" = "yes" ]] ; then + AC_PROG_CXX +fi +AC_LIBTOOL_WIN32_DLL +AC_PROG_LIBTOOL +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PATH_PROG(AR, ar, no) +if [[ $AR = "no" ]] ; then + AC_MSG_ERROR("Could not find ar - needed to create a library") +fi + +dnl This must be one of the first tests we do or it will fail... +AC_C_BIGENDIAN + +dnl checks for various host APIs and arguments to configure that +dnl turn them on or off + +have_alsa=no +if test "x$with_alsa" != "xno"; then + AC_CHECK_LIB(asound, snd_pcm_open, have_alsa=yes, have_alsa=no) +fi +have_asihpi=no +if test "x$with_asihpi" != "xno"; then + AC_CHECK_LIB(hpi, HPI_SubSysCreate, have_asihpi=yes, have_asihpi=no, -lm) +fi +have_libossaudio=no +have_oss=no +if test "x$with_oss" != "xno"; then + AC_CHECK_HEADERS([sys/soundcard.h linux/soundcard.h machine/soundcard.h], [have_oss=yes]) + if test "x$have_oss" = "xyes"; then + AC_CHECK_LIB(ossaudio, _oss_ioctl, have_libossaudio=yes, have_libossaudio=no) + fi +fi +have_jack=no +if test "x$with_jack" != "xno"; then + PKG_CHECK_MODULES(JACK, jack, have_jack=yes, have_jack=no) +fi + + +dnl sizeof checks: we will need a 16-bit and a 32-bit type + +AC_CHECK_SIZEOF(short) +AC_CHECK_SIZEOF(int) +AC_CHECK_SIZEOF(long) + +save_LIBS="${LIBS}" +AC_CHECK_LIB(rt, clock_gettime, [rt_libs=" -lrt"]) +LIBS="${LIBS}${rt_libs}" +DLL_LIBS="${DLL_LIBS}${rt_libs}" +AC_CHECK_FUNCS([clock_gettime nanosleep]) +LIBS="${save_LIBS}" + +dnl LT_RELEASE=19 +LT_CURRENT=2 +LT_REVISION=0 +LT_AGE=0 + +AC_SUBST(LT_CURRENT) +AC_SUBST(LT_REVISION) +AC_SUBST(LT_AGE) + +dnl extra variables +AC_SUBST(OTHER_OBJS) +AC_SUBST(PADLL) +AC_SUBST(SHARED_FLAGS) +AC_SUBST(THREAD_CFLAGS) +AC_SUBST(DLL_LIBS) +AC_SUBST(CXXFLAGS) +AC_SUBST(NASM) +AC_SUBST(NASMOPT) +AC_SUBST(INCLUDES) + +dnl -g is optional on darwin +if ( echo "${host_os}" | grep ^darwin >> /dev/null ) && + [[ "$enable_mac_universal" = "yes" ] && + [ "$enable_mac_debug" != "yes" ]] ; then + CFLAGS="-O2 -Wall -pedantic -pipe -fPIC -DNDEBUG" +else + CFLAGS=${CFLAGS:-"-g -O2 -Wall -pedantic -pipe -fPIC"} +fi + +if [[ $ac_cv_c_bigendian = "yes" ]] ; then + CFLAGS="$CFLAGS -DPA_BIG_ENDIAN" +else + CFLAGS="$CFLAGS -DPA_LITTLE_ENDIAN" +fi + +add_objects() +{ + for o in $@; do + test "${OTHER_OBJS#*${o}*}" = "${OTHER_OBJS}" && OTHER_OBJS="$OTHER_OBJS $o" + done +} + +INCLUDES=portaudio.h + +dnl Include directories needed by all implementations +CFLAGS="$CFLAGS -I\$(top_srcdir)/include -I\$(top_srcdir)/src/common" + +case "${host_os}" in + darwin* ) + dnl Mac OS X configuration + + AC_DEFINE(PA_USE_COREAUDIO,1) + + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix -Werror" + LIBS="-framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework Carbon" + + if test "x$enable_mac_universal" = "xyes" ; then + case "xcodebuild -version | sed -n 's/Xcode \(.*\)/\1/p'" in + + [12]*|3.0|3.1) + dnl In pre-3.2 versions of Xcode, xcodebuild doesn't + dnl support -sdk, so we can't use that to look for + dnl SDKs. However, in those versions of Xcode, the + dnl SDKs are under /Developer/SDKs, so we can just look + dnl there. Also, we assume they had no SDKs later + dnl than 10.5, as 3.2 was the version that came with + dnl 10.6, at least if the Wikipedia page for Xcode + dnl is to be believed. + if [[ -d /Developer/SDKs/MacOSX10.5.sdk ]] ; then + mac_version_min="-mmacosx-version-min=10.3" + mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.5.sdk" + else + mac_version_min="-mmacosx-version-min=10.3" + mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.4u.sdk" + fi + ;; + + *) + dnl In 3.2 and later, xcodebuild supports -sdk, and, in + dnl 4.3 and later, the SDKs aren't under /Developer/SDKs + dnl as there *is* no /Developer, so we use -sdk to check + dnl what SDKs are available and to get the full path of + dnl the SDKs. + if xcodebuild -version -sdk macosx10.5 Path >/dev/null 2>&1 ; then + mac_version_min="-mmacosx-version-min=10.3" + mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.5 Path`" + elif xcodebuild -version -sdk macosx10.6 Path >/dev/null 2>&1 ; then + mac_version_min="-mmacosx-version-min=10.4" + mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.6 Path`" + elif xcodebuild -version -sdk macosx10.7 Path >/dev/null 2>&1 ; then + mac_version_min="-mmacosx-version-min=10.4" + mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.7 Path`" + else + AC_MSG_ERROR([Couldn't find 10.5, 10.6, or 10.7 SDK]) + fi + esac + + dnl Pick which architectures to build for based on what + dnl the compiler supports. + mac_arches="" + for arch in i386 x86_64 ppc ppc64 + do + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -arch $arch" + AC_TRY_COMPILE([], [return 0;], + [ + if [[ -z "$mac_arches" ]] ; then + mac_arches="-arch $arch" + else + mac_arches="$mac_arches -arch $arch" + fi + ]) + CFLAGS="$save_CFLAGS" + done + else + mac_arches="" + mac_sysroot="" + mac_version="" + fi + SHARED_FLAGS="$LIBS -dynamiclib $mac_arches $mac_sysroot $mac_version_min" + CFLAGS="-std=c99 $CFLAGS $mac_arches $mac_sysroot $mac_version_min" + OTHER_OBJS="src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o src/hostapi/coreaudio/pa_mac_core.o src/hostapi/coreaudio/pa_mac_core_utilities.o src/hostapi/coreaudio/pa_mac_core_blocking.o src/common/pa_ringbuffer.o" + PADLL="libportaudio.dylib" + ;; + + mingw* ) + dnl MingW configuration + + PADLL="portaudio.dll" + THREAD_CFLAGS="-mthreads" + SHARED_FLAGS="-shared" + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/win -DPA_USE_WMME=0 -DPA_USE_ASIO=0 -DPA_USE_WDMKS=0 -DPA_USE_DS=0 -DPA_USE_WASAPI=0" + + if [[ "x$with_directx" = "xyes" ]]; then + DXDIR="$with_dxdir" + add_objects src/hostapi/dsound/pa_win_ds.o src/hostapi/dsound/pa_win_ds_dynlink.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -ldsound -lole32" + DLL_LIBS="${DLL_LIBS} -lwinmm -lm -L$DXDIR/lib -ldsound -lole32" + #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" + #CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO" + CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_DS -DPA_USE_DS=1" + fi + + if [[ "x$with_asio" = "xyes" ]]; then + ASIODIR="$with_asiodir" + add_objects src/hostapi/asio/pa_asio.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/hostapi/asio/iasiothiscallresolver.o $ASIODIR/common/asio.o $ASIODIR/host/asiodrivers.o $ASIODIR/host/pc/asiolist.o + LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" + DLL_LIBS="${DLL_LIBS} -lwinmm -lm -lole32 -luuid" + CFLAGS="$CFLAGS -ffast-math -fomit-frame-pointer -I\$(top_srcdir)/src/hostapi/asio -I$ASIODIR/host/pc -I$ASIODIR/common -I$ASIODIR/host -UPA_USE_ASIO -DPA_USE_ASIO=1 -DWINDOWS" + + dnl Setting the windows version flags below resolves a conflict between Interlocked* + dnl definitions in mingw winbase.h and Interlocked* hacks in ASIO SDK combase.h + dnl combase.h is included by asiodrvr.h + dnl PortAudio does not actually require Win XP (winver 501) APIs + CFLAGS="$CFLAGS -D_WIN32_WINNT=0x0501 -DWINVER=0x0501" + + CXXFLAGS="$CFLAGS" + fi + + if [[ "x$with_wdmks" = "xyes" ]]; then + DXDIR="$with_dxdir" + add_objects src/hostapi/wdmks/pa_win_wdmks.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_wdmks_util.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -luuid -lsetupapi -lole32" + DLL_LIBS="${DLL_LIBS} -lwinmm -lm -L$DXDIR/lib -luuid -lsetupapi -lole32" + #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" + #CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO" + CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_WDMKS -DPA_USE_WDMKS=1" + fi + + if [[ "x$with_wmme" = "xyes" ]]; then + add_objects src/hostapi/wmme/pa_win_wmme.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" + DLL_LIBS="${DLL_LIBS} -lwinmm" + CFLAGS="$CFLAGS -UPA_USE_WMME -DPA_USE_WMME=1" + fi + + if [[ "x$with_wasapi" = "xyes" ]]; then + add_objects src/hostapi/wasapi/pa_win_wasapi.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" + DLL_LIBS="${DLL_LIBS} -lwinmm -lole32" + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/hostapi/wasapi/mingw-include -UPA_USE_WASAPI -DPA_USE_WASAPI=1" + fi + ;; + + cygwin* ) + dnl Cygwin configuration + + OTHER_OBJS="src/hostapi/wmme/pa_win_wmme.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_waveformat.o" + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/win -DPA_USE_DS=0 -DPA_USE_WDMKS=0 -DPA_USE_ASIO=0 -DPA_USE_WASAPI=0 -DPA_USE_WMME=1" + LIBS="-lwinmm -lm" + PADLL="portaudio.dll" + THREAD_CFLAGS="-mthreads" + SHARED_FLAGS="-shared" + DLL_LIBS="${DLL_LIBS} -lwinmm" + ;; + + irix* ) + dnl SGI IRIX audio library (AL) configuration (Pieter, oct 2-13, 2003). + dnl The 'dmedia' library is needed to read the Unadjusted System Time (UST). + dnl + AC_CHECK_LIB(pthread, pthread_create, , AC_MSG_ERROR([IRIX posix thread library not found!])) + AC_CHECK_LIB(audio, alOpenPort, , AC_MSG_ERROR([IRIX audio library not found!])) + AC_CHECK_LIB(dmedia, dmGetUST, , AC_MSG_ERROR([IRIX digital media library not found!])) + + dnl See the '#ifdef PA_USE_SGI' in file pa_unix/pa_unix_hostapis.c + dnl which selects the appropriate PaXXX_Initialize() function. + dnl + AC_DEFINE(PA_USE_SGI,1) + + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix" + + dnl The _REENTRANT option for pthread safety. Perhaps not necessary but it 'll do no harm. + dnl + THREAD_CFLAGS="-D_REENTRANT" + + OTHER_OBJS="pa_sgi/pa_sgi.o src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o" + + dnl SGI books say -lpthread should be the last of the libs mentioned. + dnl + LIBS="-lm -ldmedia -laudio -lpthread" + PADLL="libportaudio.so" + SHARED_FLAGS="" + ;; + + *) + dnl Unix configuration + + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix" + + AC_CHECK_LIB(pthread, pthread_create,[have_pthread="yes"], + AC_MSG_ERROR([libpthread not found!])) + + if [[ "$have_alsa" = "yes" ] && [ "$with_alsa" != "no" ]] ; then + DLL_LIBS="$DLL_LIBS -lasound" + LIBS="$LIBS -lasound" + OTHER_OBJS="$OTHER_OBJS src/hostapi/alsa/pa_linux_alsa.o" + INCLUDES="$INCLUDES pa_linux_alsa.h" + AC_DEFINE(PA_USE_ALSA,1) + fi + + if [[ "$have_jack" = "yes" ] && [ "$with_jack" != "no" ]] ; then + DLL_LIBS="$DLL_LIBS $JACK_LIBS" + CFLAGS="$CFLAGS $JACK_CFLAGS" + OTHER_OBJS="$OTHER_OBJS src/hostapi/jack/pa_jack.o src/common/pa_ringbuffer.o" + INCLUDES="$INCLUDES pa_jack.h" + AC_DEFINE(PA_USE_JACK,1) + fi + + if [[ "$with_oss" != "no" ]] ; then + OTHER_OBJS="$OTHER_OBJS src/hostapi/oss/pa_unix_oss.o" + if [[ "$have_libossaudio" = "yes" ]] ; then + DLL_LIBS="$DLL_LIBS -lossaudio" + LIBS="$LIBS -lossaudio" + fi + AC_DEFINE(PA_USE_OSS,1) + fi + + if [[ "$have_asihpi" = "yes" ] && [ "$with_asihpi" != "no" ]] ; then + LIBS="$LIBS -lhpi" + DLL_LIBS="$DLL_LIBS -lhpi" + OTHER_OBJS="$OTHER_OBJS src/hostapi/asihpi/pa_linux_asihpi.o" + AC_DEFINE(PA_USE_ASIHPI,1) + fi + + DLL_LIBS="$DLL_LIBS -lm -lpthread" + LIBS="$LIBS -lm -lpthread" + PADLL="libportaudio.so" + + ## support sun cc compiler flags + case "${host_os}" in + solaris*) + SHARED_FLAGS="-G" + THREAD_CFLAGS="-mt" + ;; + *) + SHARED_FLAGS="-fPIC" + THREAD_CFLAGS="-pthread" + ;; + esac + + OTHER_OBJS="$OTHER_OBJS src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o" +esac +CFLAGS="$CFLAGS $THREAD_CFLAGS" + +test "$enable_shared" != "yes" && SHARED_FLAGS="" + +if test "$enable_cxx" = "yes"; then + AC_CONFIG_SUBDIRS([bindings/cpp]) + ENABLE_CXX_TRUE="" + ENABLE_CXX_FALSE="#" +else + ENABLE_CXX_TRUE="#" + ENABLE_CXX_FALSE="" +fi +AC_SUBST(ENABLE_CXX_TRUE) +AC_SUBST(ENABLE_CXX_FALSE) + +if test "x$with_asio" = "xyes"; then + WITH_ASIO_TRUE="" + WITH_ASIO_FALSE="@ #" +else + WITH_ASIO_TRUE="@ #" + WITH_ASIO_FALSE="" +fi +AC_SUBST(WITH_ASIO_TRUE) +AC_SUBST(WITH_ASIO_FALSE) + +AC_OUTPUT([Makefile portaudio-2.0.pc]) + +AC_MSG_RESULT([ +Configuration summary: + + Target ...................... $target + C++ bindings ................ $enable_cxx + Debug output ................ $debug_output]) + +case "$target_os" in *linux*) + AC_MSG_RESULT([ + ALSA ........................ $have_alsa + ASIHPI ...................... $have_asihpi]) + ;; +esac +case "$target_os" in + *mingw* | *cygwin*) + test "x$with_directx" = "xyes" && with_directx="$with_directx (${with_dxdir})" + test "x$with_wdmks" = "xyes" && with_wdmks="$with_wdmks (${with_dxdir})" + test "x$with_asio" = "xyes" && with_asio="$with_asio (${with_asiodir})" + test "x$with_wasapi" = "xyes" + AC_MSG_RESULT([ + WMME ........................ $with_wmme + DSound ...................... $with_directx + ASIO ........................ $with_asio + WASAPI ...................... $with_wasapi + WDMKS ....................... $with_wdmks +]) + ;; + *darwin*) + AC_MSG_RESULT([ + Mac debug flags ............. $enable_mac_debug +]) + ;; + *) + AC_MSG_RESULT([ + OSS ......................... $have_oss + JACK ........................ $have_jack +]) + ;; +esac diff --git a/3rdparty/portaudio/doc/src/api_overview.dox b/3rdparty/portaudio/doc/src/api_overview.dox index 2758f212ed..98a0dbdddb 100644 --- a/3rdparty/portaudio/doc/src/api_overview.dox +++ b/3rdparty/portaudio/doc/src/api_overview.dox @@ -1,162 +1,162 @@ -/** @page api_overview PortAudio API Overview - -This page provides a top-down overview of the entire PortAudio API. It describes how all of the PortAudio data types and functions fit together. It provides links to the documentation for each function and data type. You can find all of the detailed documentation for each API function and data type on the portaudio.h page. - -@section introduction Introduction - -PortAudio provides a uniform application programming interface (API) across all supported platforms. You can think of the PortAudio library as a wrapper that converts calls to the PortAudio API into calls to platform-specific native audio APIs. Operating systems often offer more than one native audio API and some APIs (such as JACK) may be available on multiple target operating systems. PortAudio supports all the major native audio APIs on each supported platform. The diagram below illustrates the relationship between your application, PortAudio, and the supported native audio APIs: - -@image html portaudio-external-architecture-diagram.png - -PortAudio provides a uniform interface to native audio APIs. However, it doesn't always provide totally uniform functionality. There are cases where PortAudio is limited by the capabilities of the underlying native audio API. For example, PortAudio doesn't provide sample rate conversion if you request a sample rate that is not supported by the native audio API. Another example is that the ASIO SDK only allows one device to be open at a time, so PortAudio/ASIO doesn't currently support opening multiple ASIO devices simultaneously. - -@section key_abstractions Key abstractions: Host APIs, Devices and Streams - -The PortAudio processing model includes three main abstractions: Host APIs, audio Devices and audio Streams. - -Host APIs represent platform-specific native audio APIs. Some examples of Host APIs are Core Audio on Mac OS, WMME and DirectSound on Windows and OSS and ALSA on Linux. The diagram in the previous section shows many of the supported native APIs. Sometimes it's useful to know which Host APIs you're dealing with, but it is easy to use PortAudio without ever interacting directly with the Host API abstraction. - -Devices represent individual hardware audio interfaces or audio ports on the host platform. Devices have names and certain capabilities such as supported sample rates and the number of supported input and output channels. PortAudio provides functions to enumerate available Devices and to query for Device capabilities. - -Streams manage active audio input and output from and to Devices. Streams may be half duplex (input or output) or full duplex (simultaneous input and output). Streams operate at a specific sample rate with particular sample formats, buffer sizes and internal buffering latencies. You specify these parameters when you open the Stream. Audio data is communicated between a Stream and your application via a user provided asynchronous callback function or by invoking synchronous read and write functions. - -PortAudio supports audio input and output in a variety of sample formats: 8, 16, 24 and 32 bit integer formats and 32 bit floating point, irrespective of the formats supported by the native audio API. PortAudio also supports multichannel buffers in both interleaved and non-interleaved (separate buffer per channel) formats and automatically performs conversion when necessary. If requested, PortAudio can clamp out-of range samples and/or dither to a native format. - -The PortAudio API offers the following functionality: -- Initialize and terminate the library -- Enumerate available Host APIs -- Enumerate available Devices either globally, or within each Host API -- Discover default or recommended Devices and Device settings -- Discover Device capabilities such as supported audio data formats and sample rates -- Create and control audio Streams to acquire audio from and output audio to Devices -- Provide Stream timing information to support synchronising audio with other parts of your application -- Retrieve version and error information. - -These functions are described in more detail below. - - -@section top_level_functions Initialization, termination and utility functions - -The PortAudio library must be initialized before it can be used and terminated to clean up afterwards. You initialize PortAudio by calling Pa_Initialize() and clean up by calling Pa_Terminate(). - -You can query PortAudio for version information using Pa_GetVersion() to get a numeric version number and Pa_GetVersionText() to get a string. - -The size in bytes of the various sample formats represented by the @ref PaSampleFormat enumeration can be obtained using Pa_GetSampleSize(). - -Pa_Sleep() sleeps for a specified number of milliseconds. This isn't intended for use in production systems; it's provided only as a simple portable way to implement tests and examples where the main thread sleeps while audio is acquired or played by an asynchronous callback function. - -@section host_apis Host APIs - -A Host API acts as a top-level grouping for all of the Devices offered by a single native platform audio API. Each Host API has a unique type identifier, a name, zero or more Devices, and nominated default input and output Devices. - -Host APIs are usually referenced by index: an integer of type @ref PaHostApiIndex that ranges between zero and Pa_GetHostApiCount() - 1. You can enumerate all available Host APIs by counting across this range. - -You can retrieve the index of the default Host API by calling Pa_GetDefaultHostApi(). - -Information about a Host API, such as it's name and default devices, is stored in a @ref PaHostApiInfo structure. You can retrieve a pointer to a particular Host API's @ref PaHostApiInfo structure by calling Pa_GetHostApiInfo() with the Host API's index as a parameter. - -Most PortAudio functions reference Host APIs by @ref PaHostApiIndex indices. Each Host API also has a unique type identifier defined in the @ref PaHostApiTypeId enumeration. -You can call Pa_HostApiTypeIdToHostApiIndex() to retrieve the current @ref PaHostApiIndex for a particular @ref PaHostApiTypeId. - -@section devices Devices - -A Device represents an audio endpoint provided by a particular native audio API. This usually corresponds to a specific input or output port on a hardware audio interface, or to the interface as a whole. Each Host API operates independently, so a single physical audio port may be addressable via different Devices exposed by different Host APIs. - -A Device has a name, is associated with a Host API, and has a maximum number of supported input and output channels. PortAudio provides recommended default latency values and a default sample rate for each Device. To obtain more detailed information about device capabilities you can call Pa_IsFormatSupported() to query whether it is possible to open a Stream using particular Devices, parameters and sample rate. - -Although each Device conceptually belongs to a specific Host API, most PortAudio functions and data structures refer to Devices using a global, Host API-independent index of type @ref PaDeviceIndex – an integer of that ranges between zero and Pa_GetDeviceCount() - 1. The reasons for this are partly historical but it also makes it easy for applications to ignore the Host API abstraction and just work with Devices and Streams. - -If you want to enumerate Devices belonging to a particular Host API you can count between 0 and PaHostApiInfo::deviceCount - 1. You can convert this Host API-specific index value to a global @ref PaDeviceIndex value by calling Pa_HostApiDeviceIndexToDeviceIndex(). - -Information about a Device is stored in a @ref PaDeviceInfo structure. You can retrieve a pointer to a Devices's @ref PaDeviceInfo structure by calling Pa_GetDeviceInfo() with the Device's index as a parameter. - -You can retrieve the indices of the global default input and output devices using Pa_GetDefaultInputDevice() and Pa_GetDefaultOutputDevice(). Default Devices for each Host API are stored in the Host API's @ref PaHostApiInfo structures. - -For an example of enumerating devices and printing information about their capabilities see the pa_devs.c program in the test directory of the PortAudio distribution. - -@section streams Streams - -A Stream represents an active flow of audio data between your application and one or more audio Devices. A Stream operates at a specific sample rate with specific sample formats and buffer sizes. - -@subsection io_methods I/O Methods: callback and read/write - -PortAudio offers two methods for communicating audio data between an open Stream and your Application: (1) an asynchronous callback interface, where PortAudio calls a user defined callback function when new audio data is available or required, and (2) synchronous read and write functions which can be used in a blocking or non-blocking manner. You choose between the two methods when you open a Stream. The two methods are discussed in more detail below. - -@subsection opening_and_closing_streams Opening and Closing Streams - -You call Pa_OpenStream() to open a Stream, specifying the Device(s) to use, the number of input and output channels, sample formats, suggested latency values and flags that control dithering, clipping and overflow handling. You specify many of these parameters in two PaStreamParameters structures, one for input and one for output. If you're using the callback I/O method you also pass a callback buffer size, callback function pointer and user data pointer. - -Devices may be full duplex (supporting simultaneous input and output) or half duplex (supporting input or output) – usually this reflects the structure of the underlying native audio API. When opening a Stream you can specify one full duplex Device for both input and output, or two different Devices for input and output. Some Host APIs only support full-duplex operation with a full-duplex device (e.g. ASIO) but most are able to aggregate two half duplex devices into a full duplex Stream. PortAudio requires that all devices specified in a call to Pa_OpenStream() belong to the same Host API. - -A successful call to Pa_OpenStream() creates a pointer to a @ref PaStream – an opaque handle representing the open Stream. All PortAudio API functions that operate on open Streams take a pointer to a @ref PaStream as their first parameter. - -PortAudio also provides Pa_OpenDefaultStream() – a simpler alternative to Pa_OpenStream() which you can use when you want to open the default audio Device(s) with default latency parameters. - -You call Pa_CloseStream() to close a Stream when you've finished using it. - -@subsection starting_and_stopping_streams Starting and Stopping Streams - -Newly opened Streams are initially stopped. You call Pa_StartStream() to start a Stream. You can stop a running Stream using Pa_StopStream() or Pa_AbortStream() (the Stop function plays out all internally queued audio data, while Abort tries to stop as quickly as possible). An open Stream can be started and stopped multiple times. You can call Pa_IsStreamStopped() to query whether a Stream is running or stopped. - -By calling Pa_SetStreamFinishedCallback() it is possible to register a special @ref PaStreamFinishedCallback that will be called when the Stream has completed playing any internally queued buffers. This can be used in conjunction with the @ref paComplete stream callback return value (see below) to avoid blocking on a call to Pa_StopStream() while queued audio data is still playing. - -@subsection callback_io_method The Callback I/O Method - -So-called 'callback Streams' operate by periodically invoking a callback function you supply to Pa_OpenStream(). The callback function must implement the @ref PaStreamCallback signature. It gets called by PortAudio every time PortAudio needs your application to consume or produce audio data. The callback is passed pointers to buffers containing the audio to process. The format (interleave, sample data type) and size of these buffers is determined by the parameters passed to Pa_OpenStream() when the Stream was opened. - -Stream callbacks usually return @ref paContinue to indicate that PortAudio should keep the stream running. It is possible to deactivate a Stream from the stream callback by returning either @ref paComplete or @ref paAbort. In this case the Stream enters a deactivated state after the last buffer has finished playing (@ref paComplete) or as soon as possible (@ref paAbort). You can detect the deactivated state by calling Pa_IsStreamActive() or by using Pa_SetStreamFinishedCallback() to subscribe to a stream finished notification. Note that even if the stream callback returns @ref paComplete it's still necessary to call Pa_StopStream() or Pa_AbortStream() to enter the stopped state. - -Many of the tests in the /tests directory of the PortAudio distribution implement PortAudio stream callbacks. For example see: patest_sine.c (audio output), patest_record.c (audio input), patest_wire.c (audio pass-through) and pa_fuzz.c (simple audio effects processing). - -IMPORTANT: The stream callback function often needs to operate with very high or real-time priority. As a result there are strict requirements placed on the type of code that can be executed in a stream callback. In general this means avoiding any code that might block, including: acquiring locks, calling OS API functions including allocating memory. With the exception of Pa_GetStreamCpuLoad() you may not call PortAudio API functions from within the stream callback. - -@subsection read_write_io_method The Read/Write I/O Method - -As an alternative to the callback I/O method, PortAudio provides a synchronous read/write interface for acquiring and playing audio. This can be useful for applications that don't require the lowest possibly latency, or don't warrant the increased complexity of synchronising with an asynchronous callback funciton. This I/O method is also useful when calling PortAudio from programming languages that don't support asynchronous callbacks. - -To open a Stream in read/write mode you pass a NULL stream callback function pointer to Pa_OpenStream(). - -To write audio data to a Stream call Pa_WriteStream() and to read data call Pa_ReadStream(). These functions will block if the internal buffers are full, making them safe to call in a tight loop. If you want to avoid blocking you can query the amount of available read or write space using Pa_GetStreamReadAvailable() or Pa_GetStreamWriteAvailable() and use the returned values to limit the amount of data you read or write. - -For examples of the read/write I/O method see the following examples in the /tests directory of the PortAudio distribution: patest_read_record.c (audio input), patest_write_sine.c (audio output), patest_read_write_wire.c (audio pass-through). - -@subsection stream_info Retrieving Stream Information - -You can retrieve information about an open Stream by calling Pa_GetStreamInfo(). This returns a @ref PaStreamInfo structure containing the actual input and output latency and sample rate of the stream. It's possible for these values to be different from the suggested values passed to Pa_OpenStream(). - -When using a callback stream you can call Pa_GetStreamCpuLoad() to retrieve a rough estimate of the amount of CPU time your callback function is using. - -@subsection stream_timing Stream Timing Information - -When using the callback I/O method your stream callback function receives timing information via a pointer to a PaStreamCallbackTimeInfo structure. This structure contains the current time along with the estimated hardware capture and playback time of the first sample of the input and output buffers. All times are measured in seconds relative to a Stream-specific clock. The current Stream clock time can be retrieved using Pa_GetStreamTime(). - -You can use the stream callback @ref PaStreamCallbackTimeInfo times in conjunction with timestamps returned by Pa_GetStreamTime() to implement time synchronization schemes such as time aligning your GUI display with rendered audio, or maintaining synchronization between MIDI and audio playback. - -@section error_handling Error Handling - -Most PortAudio functions return error codes using values from the @ref PaError enumeration. All error codes are negative values. Some functions return values greater than or equal to zero for normal results and a negative error code in case of error. - -You can convert @ref PaError error codes to human readable text by calling Pa_GetErrorText(). - -PortAudio usually tries to translate error conditions into portable @ref PaError error codes. However if an unexpected error is encountered the @ref paUnanticipatedHostError code may be returned. In this case a further mechanism is provided to query for Host API-specific error information. If PortAudio returns @ref paUnanticipatedHostError you can call Pa_GetLastHostErrorInfo() to retrieve a pointer to a @ref PaHostErrorInfo structure that provides more information, including the Host API that encountered the error, a native API error code and error text. - -@section host_api_extensions Host API and Platform-specific Extensions - -The public PortAudio API only exposes functionality that can be provided across all target platforms. In some cases individual native audio APIs offer unique functionality. Some PortAudio Host APIs expose this functionality via Host API-specific extensions. Examples include access to low-level buffering and priority parameters, opening a Stream with only a subset of a Device's channels, or accessing channel metadata such as channel names. - -Host API-specific extensions are provided in the form of additional functions and data structures defined in Host API-specific header files found in the /include directory. - -The @ref PaStreamParameters structure passed to Pa_IsFormatSupported() and Pa_OpenStream() has a field named @ref PaStreamParameters::hostApiSpecificStreamInfo that is sometimes used to pass low level information when opening a Stream. - -See the documentation for the individual Host API-specific header files for details of the extended functionality they expose: - -- pa_asio.h -- pa_jack.h -- pa_linux_alsa.h -- pa_mac_core.h -- pa_win_ds.h -- pa_win_wasapi.h -- pa_win_wmme.h -- pa_win_waveformat.h - +/** @page api_overview PortAudio API Overview + +This page provides a top-down overview of the entire PortAudio API. It describes how all of the PortAudio data types and functions fit together. It provides links to the documentation for each function and data type. You can find all of the detailed documentation for each API function and data type on the portaudio.h page. + +@section introduction Introduction + +PortAudio provides a uniform application programming interface (API) across all supported platforms. You can think of the PortAudio library as a wrapper that converts calls to the PortAudio API into calls to platform-specific native audio APIs. Operating systems often offer more than one native audio API and some APIs (such as JACK) may be available on multiple target operating systems. PortAudio supports all the major native audio APIs on each supported platform. The diagram below illustrates the relationship between your application, PortAudio, and the supported native audio APIs: + +@image html portaudio-external-architecture-diagram.png + +PortAudio provides a uniform interface to native audio APIs. However, it doesn't always provide totally uniform functionality. There are cases where PortAudio is limited by the capabilities of the underlying native audio API. For example, PortAudio doesn't provide sample rate conversion if you request a sample rate that is not supported by the native audio API. Another example is that the ASIO SDK only allows one device to be open at a time, so PortAudio/ASIO doesn't currently support opening multiple ASIO devices simultaneously. + +@section key_abstractions Key abstractions: Host APIs, Devices and Streams + +The PortAudio processing model includes three main abstractions: Host APIs, audio Devices and audio Streams. + +Host APIs represent platform-specific native audio APIs. Some examples of Host APIs are Core Audio on Mac OS, WMME and DirectSound on Windows and OSS and ALSA on Linux. The diagram in the previous section shows many of the supported native APIs. Sometimes it's useful to know which Host APIs you're dealing with, but it is easy to use PortAudio without ever interacting directly with the Host API abstraction. + +Devices represent individual hardware audio interfaces or audio ports on the host platform. Devices have names and certain capabilities such as supported sample rates and the number of supported input and output channels. PortAudio provides functions to enumerate available Devices and to query for Device capabilities. + +Streams manage active audio input and output from and to Devices. Streams may be half duplex (input or output) or full duplex (simultaneous input and output). Streams operate at a specific sample rate with particular sample formats, buffer sizes and internal buffering latencies. You specify these parameters when you open the Stream. Audio data is communicated between a Stream and your application via a user provided asynchronous callback function or by invoking synchronous read and write functions. + +PortAudio supports audio input and output in a variety of sample formats: 8, 16, 24 and 32 bit integer formats and 32 bit floating point, irrespective of the formats supported by the native audio API. PortAudio also supports multichannel buffers in both interleaved and non-interleaved (separate buffer per channel) formats and automatically performs conversion when necessary. If requested, PortAudio can clamp out-of range samples and/or dither to a native format. + +The PortAudio API offers the following functionality: +- Initialize and terminate the library +- Enumerate available Host APIs +- Enumerate available Devices either globally, or within each Host API +- Discover default or recommended Devices and Device settings +- Discover Device capabilities such as supported audio data formats and sample rates +- Create and control audio Streams to acquire audio from and output audio to Devices +- Provide Stream timing information to support synchronising audio with other parts of your application +- Retrieve version and error information. + +These functions are described in more detail below. + + +@section top_level_functions Initialization, termination and utility functions + +The PortAudio library must be initialized before it can be used and terminated to clean up afterwards. You initialize PortAudio by calling Pa_Initialize() and clean up by calling Pa_Terminate(). + +You can query PortAudio for version information using Pa_GetVersion() to get a numeric version number and Pa_GetVersionText() to get a string. + +The size in bytes of the various sample formats represented by the @ref PaSampleFormat enumeration can be obtained using Pa_GetSampleSize(). + +Pa_Sleep() sleeps for a specified number of milliseconds. This isn't intended for use in production systems; it's provided only as a simple portable way to implement tests and examples where the main thread sleeps while audio is acquired or played by an asynchronous callback function. + +@section host_apis Host APIs + +A Host API acts as a top-level grouping for all of the Devices offered by a single native platform audio API. Each Host API has a unique type identifier, a name, zero or more Devices, and nominated default input and output Devices. + +Host APIs are usually referenced by index: an integer of type @ref PaHostApiIndex that ranges between zero and Pa_GetHostApiCount() - 1. You can enumerate all available Host APIs by counting across this range. + +You can retrieve the index of the default Host API by calling Pa_GetDefaultHostApi(). + +Information about a Host API, such as it's name and default devices, is stored in a @ref PaHostApiInfo structure. You can retrieve a pointer to a particular Host API's @ref PaHostApiInfo structure by calling Pa_GetHostApiInfo() with the Host API's index as a parameter. + +Most PortAudio functions reference Host APIs by @ref PaHostApiIndex indices. Each Host API also has a unique type identifier defined in the @ref PaHostApiTypeId enumeration. +You can call Pa_HostApiTypeIdToHostApiIndex() to retrieve the current @ref PaHostApiIndex for a particular @ref PaHostApiTypeId. + +@section devices Devices + +A Device represents an audio endpoint provided by a particular native audio API. This usually corresponds to a specific input or output port on a hardware audio interface, or to the interface as a whole. Each Host API operates independently, so a single physical audio port may be addressable via different Devices exposed by different Host APIs. + +A Device has a name, is associated with a Host API, and has a maximum number of supported input and output channels. PortAudio provides recommended default latency values and a default sample rate for each Device. To obtain more detailed information about device capabilities you can call Pa_IsFormatSupported() to query whether it is possible to open a Stream using particular Devices, parameters and sample rate. + +Although each Device conceptually belongs to a specific Host API, most PortAudio functions and data structures refer to Devices using a global, Host API-independent index of type @ref PaDeviceIndex – an integer of that ranges between zero and Pa_GetDeviceCount() - 1. The reasons for this are partly historical but it also makes it easy for applications to ignore the Host API abstraction and just work with Devices and Streams. + +If you want to enumerate Devices belonging to a particular Host API you can count between 0 and PaHostApiInfo::deviceCount - 1. You can convert this Host API-specific index value to a global @ref PaDeviceIndex value by calling Pa_HostApiDeviceIndexToDeviceIndex(). + +Information about a Device is stored in a @ref PaDeviceInfo structure. You can retrieve a pointer to a Devices's @ref PaDeviceInfo structure by calling Pa_GetDeviceInfo() with the Device's index as a parameter. + +You can retrieve the indices of the global default input and output devices using Pa_GetDefaultInputDevice() and Pa_GetDefaultOutputDevice(). Default Devices for each Host API are stored in the Host API's @ref PaHostApiInfo structures. + +For an example of enumerating devices and printing information about their capabilities see the pa_devs.c program in the test directory of the PortAudio distribution. + +@section streams Streams + +A Stream represents an active flow of audio data between your application and one or more audio Devices. A Stream operates at a specific sample rate with specific sample formats and buffer sizes. + +@subsection io_methods I/O Methods: callback and read/write + +PortAudio offers two methods for communicating audio data between an open Stream and your Application: (1) an asynchronous callback interface, where PortAudio calls a user defined callback function when new audio data is available or required, and (2) synchronous read and write functions which can be used in a blocking or non-blocking manner. You choose between the two methods when you open a Stream. The two methods are discussed in more detail below. + +@subsection opening_and_closing_streams Opening and Closing Streams + +You call Pa_OpenStream() to open a Stream, specifying the Device(s) to use, the number of input and output channels, sample formats, suggested latency values and flags that control dithering, clipping and overflow handling. You specify many of these parameters in two PaStreamParameters structures, one for input and one for output. If you're using the callback I/O method you also pass a callback buffer size, callback function pointer and user data pointer. + +Devices may be full duplex (supporting simultaneous input and output) or half duplex (supporting input or output) – usually this reflects the structure of the underlying native audio API. When opening a Stream you can specify one full duplex Device for both input and output, or two different Devices for input and output. Some Host APIs only support full-duplex operation with a full-duplex device (e.g. ASIO) but most are able to aggregate two half duplex devices into a full duplex Stream. PortAudio requires that all devices specified in a call to Pa_OpenStream() belong to the same Host API. + +A successful call to Pa_OpenStream() creates a pointer to a @ref PaStream – an opaque handle representing the open Stream. All PortAudio API functions that operate on open Streams take a pointer to a @ref PaStream as their first parameter. + +PortAudio also provides Pa_OpenDefaultStream() – a simpler alternative to Pa_OpenStream() which you can use when you want to open the default audio Device(s) with default latency parameters. + +You call Pa_CloseStream() to close a Stream when you've finished using it. + +@subsection starting_and_stopping_streams Starting and Stopping Streams + +Newly opened Streams are initially stopped. You call Pa_StartStream() to start a Stream. You can stop a running Stream using Pa_StopStream() or Pa_AbortStream() (the Stop function plays out all internally queued audio data, while Abort tries to stop as quickly as possible). An open Stream can be started and stopped multiple times. You can call Pa_IsStreamStopped() to query whether a Stream is running or stopped. + +By calling Pa_SetStreamFinishedCallback() it is possible to register a special @ref PaStreamFinishedCallback that will be called when the Stream has completed playing any internally queued buffers. This can be used in conjunction with the @ref paComplete stream callback return value (see below) to avoid blocking on a call to Pa_StopStream() while queued audio data is still playing. + +@subsection callback_io_method The Callback I/O Method + +So-called 'callback Streams' operate by periodically invoking a callback function you supply to Pa_OpenStream(). The callback function must implement the @ref PaStreamCallback signature. It gets called by PortAudio every time PortAudio needs your application to consume or produce audio data. The callback is passed pointers to buffers containing the audio to process. The format (interleave, sample data type) and size of these buffers is determined by the parameters passed to Pa_OpenStream() when the Stream was opened. + +Stream callbacks usually return @ref paContinue to indicate that PortAudio should keep the stream running. It is possible to deactivate a Stream from the stream callback by returning either @ref paComplete or @ref paAbort. In this case the Stream enters a deactivated state after the last buffer has finished playing (@ref paComplete) or as soon as possible (@ref paAbort). You can detect the deactivated state by calling Pa_IsStreamActive() or by using Pa_SetStreamFinishedCallback() to subscribe to a stream finished notification. Note that even if the stream callback returns @ref paComplete it's still necessary to call Pa_StopStream() or Pa_AbortStream() to enter the stopped state. + +Many of the tests in the /tests directory of the PortAudio distribution implement PortAudio stream callbacks. For example see: patest_sine.c (audio output), patest_record.c (audio input), patest_wire.c (audio pass-through) and pa_fuzz.c (simple audio effects processing). + +IMPORTANT: The stream callback function often needs to operate with very high or real-time priority. As a result there are strict requirements placed on the type of code that can be executed in a stream callback. In general this means avoiding any code that might block, including: acquiring locks, calling OS API functions including allocating memory. With the exception of Pa_GetStreamCpuLoad() you may not call PortAudio API functions from within the stream callback. + +@subsection read_write_io_method The Read/Write I/O Method + +As an alternative to the callback I/O method, PortAudio provides a synchronous read/write interface for acquiring and playing audio. This can be useful for applications that don't require the lowest possibly latency, or don't warrant the increased complexity of synchronising with an asynchronous callback funciton. This I/O method is also useful when calling PortAudio from programming languages that don't support asynchronous callbacks. + +To open a Stream in read/write mode you pass a NULL stream callback function pointer to Pa_OpenStream(). + +To write audio data to a Stream call Pa_WriteStream() and to read data call Pa_ReadStream(). These functions will block if the internal buffers are full, making them safe to call in a tight loop. If you want to avoid blocking you can query the amount of available read or write space using Pa_GetStreamReadAvailable() or Pa_GetStreamWriteAvailable() and use the returned values to limit the amount of data you read or write. + +For examples of the read/write I/O method see the following examples in the /tests directory of the PortAudio distribution: patest_read_record.c (audio input), patest_write_sine.c (audio output), patest_read_write_wire.c (audio pass-through). + +@subsection stream_info Retrieving Stream Information + +You can retrieve information about an open Stream by calling Pa_GetStreamInfo(). This returns a @ref PaStreamInfo structure containing the actual input and output latency and sample rate of the stream. It's possible for these values to be different from the suggested values passed to Pa_OpenStream(). + +When using a callback stream you can call Pa_GetStreamCpuLoad() to retrieve a rough estimate of the amount of CPU time your callback function is using. + +@subsection stream_timing Stream Timing Information + +When using the callback I/O method your stream callback function receives timing information via a pointer to a PaStreamCallbackTimeInfo structure. This structure contains the current time along with the estimated hardware capture and playback time of the first sample of the input and output buffers. All times are measured in seconds relative to a Stream-specific clock. The current Stream clock time can be retrieved using Pa_GetStreamTime(). + +You can use the stream callback @ref PaStreamCallbackTimeInfo times in conjunction with timestamps returned by Pa_GetStreamTime() to implement time synchronization schemes such as time aligning your GUI display with rendered audio, or maintaining synchronization between MIDI and audio playback. + +@section error_handling Error Handling + +Most PortAudio functions return error codes using values from the @ref PaError enumeration. All error codes are negative values. Some functions return values greater than or equal to zero for normal results and a negative error code in case of error. + +You can convert @ref PaError error codes to human readable text by calling Pa_GetErrorText(). + +PortAudio usually tries to translate error conditions into portable @ref PaError error codes. However if an unexpected error is encountered the @ref paUnanticipatedHostError code may be returned. In this case a further mechanism is provided to query for Host API-specific error information. If PortAudio returns @ref paUnanticipatedHostError you can call Pa_GetLastHostErrorInfo() to retrieve a pointer to a @ref PaHostErrorInfo structure that provides more information, including the Host API that encountered the error, a native API error code and error text. + +@section host_api_extensions Host API and Platform-specific Extensions + +The public PortAudio API only exposes functionality that can be provided across all target platforms. In some cases individual native audio APIs offer unique functionality. Some PortAudio Host APIs expose this functionality via Host API-specific extensions. Examples include access to low-level buffering and priority parameters, opening a Stream with only a subset of a Device's channels, or accessing channel metadata such as channel names. + +Host API-specific extensions are provided in the form of additional functions and data structures defined in Host API-specific header files found in the /include directory. + +The @ref PaStreamParameters structure passed to Pa_IsFormatSupported() and Pa_OpenStream() has a field named @ref PaStreamParameters::hostApiSpecificStreamInfo that is sometimes used to pass low level information when opening a Stream. + +See the documentation for the individual Host API-specific header files for details of the extended functionality they expose: + +- pa_asio.h +- pa_jack.h +- pa_linux_alsa.h +- pa_mac_core.h +- pa_win_ds.h +- pa_win_wasapi.h +- pa_win_wmme.h +- pa_win_waveformat.h + */ \ No newline at end of file diff --git a/3rdparty/portaudio/doc/src/license.dox b/3rdparty/portaudio/doc/src/license.dox index 31724b6980..8d0c51f140 100644 --- a/3rdparty/portaudio/doc/src/license.dox +++ b/3rdparty/portaudio/doc/src/license.dox @@ -1,38 +1,38 @@ -/** @page License PortAudio License - -PortAudio Portable Real-Time Audio Library
-Copyright (c) 1999-2011 Ross Bencina, Phil Burk - - - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files -(the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -
- -The text above constitutes the entire PortAudio license; however, -the PortAudio community also makes the following non-binding requests: - -Any person wishing to distribute modifications to the Software is -requested to send the modifications to the original developer so that -they can be incorporated into the canonical version. It is also -requested that these non-binding requests be included along with the -license above. - +/** @page License PortAudio License + +PortAudio Portable Real-Time Audio Library
+Copyright (c) 1999-2011 Ross Bencina, Phil Burk + + + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files +(the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +
+ +The text above constitutes the entire PortAudio license; however, +the PortAudio community also makes the following non-binding requests: + +Any person wishing to distribute modifications to the Software is +requested to send the modifications to the original developer so that +they can be incorporated into the canonical version. It is also +requested that these non-binding requests be included along with the +license above. + */ \ No newline at end of file diff --git a/3rdparty/portaudio/doc/src/srcguide.dox b/3rdparty/portaudio/doc/src/srcguide.dox index c13babfdac..26fd941926 100644 --- a/3rdparty/portaudio/doc/src/srcguide.dox +++ b/3rdparty/portaudio/doc/src/srcguide.dox @@ -1,55 +1,55 @@ -/* - define all of the file groups used to structure the documentation. -*/ - -/** - @defgroup public_header Public API definitions for users of PortAudio -*/ - -/** - @internal - @defgroup common_src Source code common to all implementations -*/ - -/** - @internal - @defgroup win_src Source code common to all Windows implementations -*/ - -/** - @internal - @defgroup unix_src Source code common to all Unix implementations -*/ - -/** - @internal - @defgroup macosx_src Source code common to all Macintosh implementations -*/ - -/** - @internal - @defgroup hostapi_src Source code for specific Host APIs -*/ - -/** - @internal - @defgroup test_src Test programs -*/ - -/** - @defgroup examples_src Example programs demonstrating PortAudio usage -*/ - -/** - @internal - @page srcguide A guide to the PortAudio sources - - - \ref public_header - - \ref examples_src - - \ref common_src - - \ref win_src - - \ref unix_src - - \ref macosx_src - - \ref hostapi_src - - \ref test_src +/* + define all of the file groups used to structure the documentation. +*/ + +/** + @defgroup public_header Public API definitions for users of PortAudio +*/ + +/** + @internal + @defgroup common_src Source code common to all implementations +*/ + +/** + @internal + @defgroup win_src Source code common to all Windows implementations +*/ + +/** + @internal + @defgroup unix_src Source code common to all Unix implementations +*/ + +/** + @internal + @defgroup macosx_src Source code common to all Macintosh implementations +*/ + +/** + @internal + @defgroup hostapi_src Source code for specific Host APIs +*/ + +/** + @internal + @defgroup test_src Test programs +*/ + +/** + @defgroup examples_src Example programs demonstrating PortAudio usage +*/ + +/** + @internal + @page srcguide A guide to the PortAudio sources + + - \ref public_header + - \ref examples_src + - \ref common_src + - \ref win_src + - \ref unix_src + - \ref macosx_src + - \ref hostapi_src + - \ref test_src */ \ No newline at end of file diff --git a/3rdparty/portaudio/doc/utils/checkfiledocs.py b/3rdparty/portaudio/doc/utils/checkfiledocs.py index b7a754e23d..857eaf945e 100644 --- a/3rdparty/portaudio/doc/utils/checkfiledocs.py +++ b/3rdparty/portaudio/doc/utils/checkfiledocs.py @@ -1,77 +1,77 @@ -import os -import os.path -import string - -paRootDirectory = '../../' -paHtmlDocDirectory = os.path.join( paRootDirectory, "doc", "html" ) - -## Script to check documentation status -## this script assumes that html doxygen documentation has been generated -## -## it then walks the entire portaudio source tree and check that -## - every source file (.c,.h,.cpp) has a doxygen comment block containing -## - a @file directive -## - a @brief directive -## - a @ingroup directive -## - it also checks that a corresponding html documentation file has been generated. -## -## This can be used as a first-level check to make sure the documentation is in order. -## -## The idea is to get a list of which files are missing doxygen documentation. - - -# recurse from top and return a list of all with the given -# extensions. ignore .svn directories. return absolute paths -def recursiveFindFiles( top, extensions, includePaths ): - result = [] - for (dirpath, dirnames, filenames) in os.walk(top): - if not '.svn' in dirpath: - for f in filenames: - if os.path.splitext(f)[1] in extensions: - if includePaths: - result.append( os.path.abspath( os.path.join( dirpath, f ) ) ) - else: - result.append( f ) - return result - -# generate the html file name that doxygen would use for -# a particular source file. this is a brittle conversion -# which i worked out by trial and error -def doxygenHtmlDocFileName( sourceFile ): - return sourceFile.replace( '_', '__' ).replace( '.', '_8' ) + '.html' - - -sourceFiles = recursiveFindFiles( paRootDirectory, [ '.c', '.h', '.cpp' ], True ); -docFiles = recursiveFindFiles( paHtmlDocDirectory, [ '.html' ], False ); - - - -currentFile = "" - -def printError( f, message ): - global currentFile - if f != currentFile: - currentFile = f - print f, ":" - print "\t!", message - - -for f in sourceFiles: - if not doxygenHtmlDocFileName( os.path.basename(f) ) in docFiles: - printError( f, "no doxygen generated doc page" ) - - s = file( f, 'rt' ).read() - - if not '/**' in s: - printError( f, "no doxygen /** block" ) - - if not '@file' in s: - printError( f, "no doxygen @file tag" ) - - if not '@brief' in s: - printError( f, "no doxygen @brief tag" ) - - if not '@ingroup' in s: - printError( f, "no doxygen @ingroup tag" ) - - +import os +import os.path +import string + +paRootDirectory = '../../' +paHtmlDocDirectory = os.path.join( paRootDirectory, "doc", "html" ) + +## Script to check documentation status +## this script assumes that html doxygen documentation has been generated +## +## it then walks the entire portaudio source tree and check that +## - every source file (.c,.h,.cpp) has a doxygen comment block containing +## - a @file directive +## - a @brief directive +## - a @ingroup directive +## - it also checks that a corresponding html documentation file has been generated. +## +## This can be used as a first-level check to make sure the documentation is in order. +## +## The idea is to get a list of which files are missing doxygen documentation. + + +# recurse from top and return a list of all with the given +# extensions. ignore .svn directories. return absolute paths +def recursiveFindFiles( top, extensions, includePaths ): + result = [] + for (dirpath, dirnames, filenames) in os.walk(top): + if not '.svn' in dirpath: + for f in filenames: + if os.path.splitext(f)[1] in extensions: + if includePaths: + result.append( os.path.abspath( os.path.join( dirpath, f ) ) ) + else: + result.append( f ) + return result + +# generate the html file name that doxygen would use for +# a particular source file. this is a brittle conversion +# which i worked out by trial and error +def doxygenHtmlDocFileName( sourceFile ): + return sourceFile.replace( '_', '__' ).replace( '.', '_8' ) + '.html' + + +sourceFiles = recursiveFindFiles( paRootDirectory, [ '.c', '.h', '.cpp' ], True ); +docFiles = recursiveFindFiles( paHtmlDocDirectory, [ '.html' ], False ); + + + +currentFile = "" + +def printError( f, message ): + global currentFile + if f != currentFile: + currentFile = f + print f, ":" + print "\t!", message + + +for f in sourceFiles: + if not doxygenHtmlDocFileName( os.path.basename(f) ) in docFiles: + printError( f, "no doxygen generated doc page" ) + + s = file( f, 'rt' ).read() + + if not '/**' in s: + printError( f, "no doxygen /** block" ) + + if not '@file' in s: + printError( f, "no doxygen @file tag" ) + + if not '@brief' in s: + printError( f, "no doxygen @brief tag" ) + + if not '@ingroup' in s: + printError( f, "no doxygen @ingroup tag" ) + + diff --git a/3rdparty/portaudio/fixdir.bat b/3rdparty/portaudio/fixdir.bat index b6e8c25bc4..92d6c7470d 100644 --- a/3rdparty/portaudio/fixdir.bat +++ b/3rdparty/portaudio/fixdir.bat @@ -1,19 +1,19 @@ -rem Use Astyle to fix style in 'C' files -cd %1% - -fixlines -p *.c -fixlines -p *.cpp -fixlines -p *.cc - -astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.c -astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.cpp -astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.cc -del *.orig -@rem convert line terminators to Unix style LFs -fixlines -u *.c -fixlines -u *.cpp -fixlines -u *.cc -fixlines -u *.h -del *.bak - -cd ..\ +rem Use Astyle to fix style in 'C' files +cd %1% + +fixlines -p *.c +fixlines -p *.cpp +fixlines -p *.cc + +astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.c +astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.cpp +astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.cc +del *.orig +@rem convert line terminators to Unix style LFs +fixlines -u *.c +fixlines -u *.cpp +fixlines -u *.cc +fixlines -u *.h +del *.bak + +cd ..\ diff --git a/3rdparty/portaudio/fixfile.bat b/3rdparty/portaudio/fixfile.bat index 699ea7ff13..48f6fbc2f6 100644 --- a/3rdparty/portaudio/fixfile.bat +++ b/3rdparty/portaudio/fixfile.bat @@ -1,7 +1,7 @@ -rem Use Astyle to fix style in a file -fixlines -p %1% -astyle --style=ansi -c -o --convert-tabs --indent-preprocessor %1% -del %1%.orig -@rem convert line terminators to Unix style LFs -fixlines -u %1% -del %1%.bak +rem Use Astyle to fix style in a file +fixlines -p %1% +astyle --style=ansi -c -o --convert-tabs --indent-preprocessor %1% +del %1%.orig +@rem convert line terminators to Unix style LFs +fixlines -u %1% +del %1%.bak diff --git a/3rdparty/portaudio/index.html b/3rdparty/portaudio/index.html index a192543c35..55f9ed62c5 100644 --- a/3rdparty/portaudio/index.html +++ b/3rdparty/portaudio/index.html @@ -1,105 +1,105 @@ - - - - - - - - - PortAudio Implementations for DirectSound - - -  -
- - - -
-
-

-PortAudio - Portable Audio Library

-
- -

PortAudio is a cross platform, open-source, audio -I/O library proposed by Ross Bencina to the music-dsp -mailing list. It lets you write simple audio programs in 'C' that will -compile and run on Windows, Macintosh, Unix, BeOS. PortAudio is -intended to promote the exchange of audio synthesis software between developers -on different platforms. -

For complete information on PortAudio and to download the latest releases, -please visit "http://www.portaudio.com". -
  -
  -

-

-Click here for Documentation

- -

-

- -

-Contacts and E-Mail List

- -
    -
  • -If you are using or implementing PortAudio then please join the PortAudio -mail list .
  • - -
  • -If you find bugs in one of these implementations, or have suggestions, -please e-mail them to Phil Burk.
  • - -
  • -If you make improvements to the library, please send them to us so we can -incorporate the improvements.
  • -
- -

-License

- - -
-

-PortAudio Portable Real-Time Audio Library -
Copyright © 1999-2006 Ross Bencina and Phil Burk -

-

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 ON INFRINGEMENT. -
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT -OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -THE USE OR OTHER DEALINGS IN THE SOFTWARE. -

- -

-The text above constitutes the entire PortAudio license; however, -the PortAudio community also makes the following non-binding requests: -

-

-Any person wishing to distribute modifications to the Software is -requested to send the modifications to the original developer so that -they can be incorporated into the canonical version. It is also -requested that these non-binding requests be included along with the -license above. -

- -
- - - -
  - - + + + + + + + + + PortAudio Implementations for DirectSound + + +  +
+ + + +
+
+

+PortAudio - Portable Audio Library

+
+ +

PortAudio is a cross platform, open-source, audio +I/O library proposed by Ross Bencina to the music-dsp +mailing list. It lets you write simple audio programs in 'C' that will +compile and run on Windows, Macintosh, Unix, BeOS. PortAudio is +intended to promote the exchange of audio synthesis software between developers +on different platforms. +

For complete information on PortAudio and to download the latest releases, +please visit "http://www.portaudio.com". +
  +
  +

+

+Click here for Documentation

+ +

+

+ +

+Contacts and E-Mail List

+ +
    +
  • +If you are using or implementing PortAudio then please join the PortAudio +mail list .
  • + +
  • +If you find bugs in one of these implementations, or have suggestions, +please e-mail them to Phil Burk.
  • + +
  • +If you make improvements to the library, please send them to us so we can +incorporate the improvements.
  • +
+ +

+License

+ + +
+

+PortAudio Portable Real-Time Audio Library +
Copyright © 1999-2006 Ross Bencina and Phil Burk +

+

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 ON INFRINGEMENT. +
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +THE USE OR OTHER DEALINGS IN THE SOFTWARE. +

+ +

+The text above constitutes the entire PortAudio license; however, +the PortAudio community also makes the following non-binding requests: +

+

+Any person wishing to distribute modifications to the Software is +requested to send the modifications to the original developer so that +they can be incorporated into the canonical version. It is also +requested that these non-binding requests be included along with the +license above. +

+ +
+ + + +
  + + diff --git a/3rdparty/portaudio/install-sh b/3rdparty/portaudio/install-sh index 16c160754b..6781b987bd 100644 --- a/3rdparty/portaudio/install-sh +++ b/3rdparty/portaudio/install-sh @@ -1,520 +1,520 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2009-04-28.21; # UTC - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -nl=' -' -IFS=" "" $nl" - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -no_target_directory= - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) dst_arg=$2 - shift;; - - -T) no_target_directory=true;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - -*) prefix='./';; - *) prefix='';; - esac - - eval "$initialize_posix_glob" - - oIFS=$IFS - IFS=/ - $posix_glob set -f - set fnord $dstdir - shift - $posix_glob set +f - IFS=$oIFS - - prefixes= - - for d - do - test -z "$d" && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2009-04-28.21; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/3rdparty/portaudio/pablio/README.txt b/3rdparty/portaudio/pablio/README.txt index a73a8e0c0b..84438bf095 100644 --- a/3rdparty/portaudio/pablio/README.txt +++ b/3rdparty/portaudio/pablio/README.txt @@ -1,49 +1,49 @@ -README for PABLIO -Portable Audio Blocking I/O Library -Author: Phil Burk - -PABLIO is a simplified interface to PortAudio that provides -read/write style blocking I/O. - -PABLIO is DEPRECATED. We recommend that people use the blocking I/O calls -that are now part of the PortAudio API. These are Pa_ReadStream() and -Pa_WriteStream(). - -http://portaudio.com/docs/v19-doxydocs/blocking_read_write.html - -/* - * More information on PortAudio at: http://www.portaudio.com - * Copyright (c) 1999-2000 Phil Burk - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ - - +README for PABLIO +Portable Audio Blocking I/O Library +Author: Phil Burk + +PABLIO is a simplified interface to PortAudio that provides +read/write style blocking I/O. + +PABLIO is DEPRECATED. We recommend that people use the blocking I/O calls +that are now part of the PortAudio API. These are Pa_ReadStream() and +Pa_WriteStream(). + +http://portaudio.com/docs/v19-doxydocs/blocking_read_write.html + +/* + * More information on PortAudio at: http://www.portaudio.com + * Copyright (c) 1999-2000 Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + + diff --git a/3rdparty/portaudio/pablio/pablio.def b/3rdparty/portaudio/pablio/pablio.def index 36af739341..a10f952915 100644 --- a/3rdparty/portaudio/pablio/pablio.def +++ b/3rdparty/portaudio/pablio/pablio.def @@ -1,35 +1,35 @@ -LIBRARY PABLIO -DESCRIPTION 'PABLIO Portable Audio Blocking I/O' - -EXPORTS - ; Explicit exports can go here - Pa_Initialize @1 - Pa_Terminate @2 - Pa_GetHostError @3 - Pa_GetErrorText @4 - Pa_CountDevices @5 - Pa_GetDefaultInputDeviceID @6 - Pa_GetDefaultOutputDeviceID @7 - Pa_GetDeviceInfo @8 - Pa_OpenStream @9 - Pa_OpenDefaultStream @10 - Pa_CloseStream @11 - Pa_StartStream @12 - Pa_StopStream @13 - Pa_StreamActive @14 - Pa_StreamTime @15 - Pa_GetCPULoad @16 - Pa_GetMinNumBuffers @17 - Pa_Sleep @18 - - OpenAudioStream @19 - CloseAudioStream @20 - WriteAudioStream @21 - ReadAudioStream @22 - - Pa_GetSampleSize @23 - - ;123456789012345678901234567890123456 - ;000000000111111111122222222223333333 - - +LIBRARY PABLIO +DESCRIPTION 'PABLIO Portable Audio Blocking I/O' + +EXPORTS + ; Explicit exports can go here + Pa_Initialize @1 + Pa_Terminate @2 + Pa_GetHostError @3 + Pa_GetErrorText @4 + Pa_CountDevices @5 + Pa_GetDefaultInputDeviceID @6 + Pa_GetDefaultOutputDeviceID @7 + Pa_GetDeviceInfo @8 + Pa_OpenStream @9 + Pa_OpenDefaultStream @10 + Pa_CloseStream @11 + Pa_StartStream @12 + Pa_StopStream @13 + Pa_StreamActive @14 + Pa_StreamTime @15 + Pa_GetCPULoad @16 + Pa_GetMinNumBuffers @17 + Pa_Sleep @18 + + OpenAudioStream @19 + CloseAudioStream @20 + WriteAudioStream @21 + ReadAudioStream @22 + + Pa_GetSampleSize @23 + + ;123456789012345678901234567890123456 + ;000000000111111111122222222223333333 + + diff --git a/3rdparty/portaudio/portaudio-2.0.pc.in b/3rdparty/portaudio/portaudio-2.0.pc.in index d08fa9355e..f5c196913a 100644 --- a/3rdparty/portaudio/portaudio-2.0.pc.in +++ b/3rdparty/portaudio/portaudio-2.0.pc.in @@ -1,12 +1,12 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: PortAudio -Description: Portable audio I/O -Requires: -Version: 19 - -Libs: -L${libdir} -lportaudio @LIBS@ -Cflags: -I${includedir} @THREAD_CFLAGS@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: PortAudio +Description: Portable audio I/O +Requires: +Version: 19 + +Libs: -L${libdir} -lportaudio @LIBS@ +Cflags: -I${includedir} @THREAD_CFLAGS@ diff --git a/3rdparty/portaudio/src/SConscript b/3rdparty/portaudio/src/SConscript index 84ab1338b8..5cc915216d 100644 --- a/3rdparty/portaudio/src/SConscript +++ b/3rdparty/portaudio/src/SConscript @@ -1,220 +1,220 @@ -import os.path, copy, sys - -def checkSymbol(conf, header, library=None, symbol=None, autoAdd=True, critical=False, pkgName=None): - """ Check for symbol in library, optionally look only for header. - @param conf: Configure instance. - @param header: The header file where the symbol is declared. - @param library: The library in which the symbol exists, if None it is taken to be the standard C library. - @param symbol: The symbol to look for, if None only the header will be looked up. - @param autoAdd: Automatically link with this library if check is positive. - @param critical: Raise on error? - @param pkgName: Optional name of pkg-config entry for library, to determine build parameters. - @return: True/False - """ - origEnv = conf.env.Copy() # Copy unmodified environment so we can restore it upon error - env = conf.env - if library is None: - library = "c" # Standard library - autoAdd = False - - if pkgName is not None: - origLibs = copy.copy(env.get("LIBS", None)) - - try: env.ParseConfig("pkg-config --silence-errors %s --cflags --libs" % pkgName) - except: pass - else: - # I see no other way of checking that the parsing succeeded, if it did add no more linking parameters - if env.get("LIBS", None) != origLibs: - autoAdd = False - - try: - if not conf.CheckCHeader(header, include_quotes="<>"): - raise ConfigurationError("missing header %s" % header) - if symbol is not None and not conf.CheckLib(library, symbol, language="C", autoadd=autoAdd): - raise ConfigurationError("missing symbol %s in library %s" % (symbol, library)) - except ConfigurationError: - conf.env = origEnv - if not critical: - return False - raise - - return True - -import SCons.Errors - -# Import common variables - -# Could use '#' to refer to top-level SConstruct directory, but looks like env.SConsignFile doesn't interpret this at least :( -sconsDir = os.path.abspath(os.path.join("build", "scons")) - -try: - Import("Platform", "Posix", "ConfigurationError", "ApiVer") -except SCons.Errors.UserError: - # The common objects must be exported first - SConscript(os.path.join(sconsDir, "SConscript_common")) - Import("Platform", "Posix", "ConfigurationError", "ApiVer") - -Import("env") - -# This will be manipulated -env = env.Copy() - -# We operate with a set of needed libraries and optional libraries, the latter stemming from host API implementations. -# For libraries of both types we record a set of values that is used to look for the library in question, during -# configuration. If the corresponding library for a host API implementation isn't found, the implementation is left out. -neededLibs = [] -optionalImpls = {} -if Platform in Posix: - env.Append(CPPPATH=os.path.join("os", "unix")) - neededLibs += [("pthread", "pthread.h", "pthread_create"), ("m", "math.h", "sin")] - if env["useALSA"]: - optionalImpls["ALSA"] = ("asound", "alsa/asoundlib.h", "snd_pcm_open") - if env["useJACK"]: - optionalImpls["JACK"] = ("jack", "jack/jack.h", "jack_client_new") - if env["useOSS"]: - # TODO: It looks like the prefix for soundcard.h depends on the platform - optionalImpls["OSS"] = ("oss", "sys/soundcard.h", None) - if Platform == 'netbsd': - optionalImpls["OSS"] = ("ossaudio", "sys/soundcard.h", "_oss_ioctl") - if env["useASIHPI"]: - optionalImpls["ASIHPI"] = ("hpi", "asihpi/hpi.h", "HPI_SubSysCreate") - if env["useCOREAUDIO"]: - optionalImpls["COREAUDIO"] = ("CoreAudio", "CoreAudio/CoreAudio.h", None) -else: - raise ConfigurationError("unknown platform %s" % Platform) - -if Platform == "darwin": - env.Append(LINKFLAGS="-framework CoreFoundation -framework CoreServices -framework CoreAudio -framework AudioToolBox -framework AudioUnit") -elif Platform == "cygwin": - env.Append(LIBS=["winmm"]) -elif Platform == "irix": - neededLibs += [("audio", "dmedia/audio.h", "alOpenPort"), ("dmedia", "dmedia/dmedia.h", "dmGetUST")] - env.Append(CPPDEFINES=["PA_USE_SGI"]) - -def CheckCTypeSize(context, tp): - """ Check size of C type. - @param context: A configuration context. - @param tp: The type to check. - @return: Size of type, in bytes. - """ - context.Message("Checking the size of C type %s..." % tp) - ret = context.TryRun(""" -#include - -int main() { - printf("%%d", sizeof(%s)); - return 0; -} -""" % tp, ".c") - if not ret[0]: - context.Result(" Couldn't obtain size of type %s!" % tp) - return None - - assert ret[1] - sz = int(ret[1]) - context.Result("%d" % sz) - return sz - -""" -if sys.byteorder == "little": - env.Append(CPPDEFINES=["PA_LITTLE_ENDIAN"]) -elif sys.byteorder == "big": - env.Append(CPPDEFINES=["PA_BIG_ENDIAN"]) -else: - raise ConfigurationError("unknown byte order: %s" % sys.byteorder) -""" -if env["enableDebugOutput"]: - env.Append(CPPDEFINES=["PA_ENABLE_DEBUG_OUTPUT"]) - -# Start configuration - -# Use an absolute path for conf_dir, otherwise it gets created both relative to current directory and build directory -conf = env.Configure(log_file=os.path.join(sconsDir, "sconf.log"), custom_tests={"CheckCTypeSize": CheckCTypeSize}, - conf_dir=os.path.join(sconsDir, ".sconf_temp")) -conf.env.Append(CPPDEFINES=["SIZEOF_SHORT=%d" % conf.CheckCTypeSize("short")]) -conf.env.Append(CPPDEFINES=["SIZEOF_INT=%d" % conf.CheckCTypeSize("int")]) -conf.env.Append(CPPDEFINES=["SIZEOF_LONG=%d" % conf.CheckCTypeSize("long")]) -if checkSymbol(conf, "time.h", "rt", "clock_gettime"): - conf.env.Append(CPPDEFINES=["HAVE_CLOCK_GETTIME"]) -if checkSymbol(conf, "time.h", symbol="nanosleep"): - conf.env.Append(CPPDEFINES=["HAVE_NANOSLEEP"]) -if conf.CheckCHeader("sys/soundcard.h"): - conf.env.Append(CPPDEFINES=["HAVE_SYS_SOUNDCARD_H"]) -if conf.CheckCHeader("linux/soundcard.h"): - conf.env.Append(CPPDEFINES=["HAVE_LINUX_SOUNDCARD_H"]) -if conf.CheckCHeader("machine/soundcard.h"): - conf.env.Append(CPPDEFINES=["HAVE_MACHINE_SOUNDCARD_H"]) - -# Look for needed libraries and link with them -for lib, hdr, sym in neededLibs: - checkSymbol(conf, hdr, lib, sym, critical=True) -# Look for host API libraries, if a library isn't found disable corresponding host API implementation. -for name, val in optionalImpls.items(): - lib, hdr, sym = val - if checkSymbol(conf, hdr, lib, sym, critical=False, pkgName=name.lower()): - conf.env.Append(CPPDEFINES=["PA_USE_%s=1" % name.upper()]) - else: - del optionalImpls[name] - -# Configuration finished -env = conf.Finish() - -# PA infrastructure -CommonSources = [os.path.join("common", f) for f in "pa_allocation.c pa_converters.c pa_cpuload.c pa_dither.c pa_front.c \ - pa_process.c pa_stream.c pa_trace.c pa_debugprint.c pa_ringbuffer.c".split()] -CommonSources.append(os.path.join("hostapi", "skeleton", "pa_hostapi_skeleton.c")) - -# Host APIs implementations -ImplSources = [] -if Platform in Posix: - ImplSources += [os.path.join("os", "unix", f) for f in "pa_unix_hostapis.c pa_unix_util.c".split()] - -if "ALSA" in optionalImpls: - ImplSources.append(os.path.join("hostapi", "alsa", "pa_linux_alsa.c")) -if "JACK" in optionalImpls: - ImplSources.append(os.path.join("hostapi", "jack", "pa_jack.c")) -if "OSS" in optionalImpls: - ImplSources.append(os.path.join("hostapi", "oss", "pa_unix_oss.c")) -if "ASIHPI" in optionalImpls: - ImplSources.append(os.path.join("hostapi", "asihpi", "pa_linux_asihpi.c")) -if "COREAUDIO" in optionalImpls: - ImplSources.append([os.path.join("hostapi", "coreaudio", f) for f in """ - pa_mac_core.c pa_mac_core_blocking.c pa_mac_core_utilities.c - """.split()]) - - -sources = CommonSources + ImplSources - -sharedLibEnv = env.Copy() -if Platform in Posix: - # Add soname to library, this is so a reference is made to the versioned library in programs linking against libportaudio.so - if Platform != 'darwin': - sharedLibEnv.AppendUnique(SHLINKFLAGS="-Wl,-soname=libportaudio.so.%d" % int(ApiVer.split(".")[0])) -sharedLib = sharedLibEnv.SharedLibrary(target="portaudio", source=sources) - -staticLib = env.StaticLibrary(target="portaudio", source=sources) - -if Platform in Posix: - prefix = env["prefix"] - includeDir = os.path.join(prefix, "include") - libDir = os.path.join(prefix, "lib") - -testNames = ["patest_sine", "paqa_devs", "paqa_errs", "patest1", "patest_buffer", "patest_callbackstop", "patest_clip", \ - "patest_dither", "patest_hang", "patest_in_overflow", "patest_latency", "patest_leftright", "patest_longsine", \ - "patest_many", "patest_maxsines", "patest_multi_sine", "patest_out_underflow", "patest_pink", "patest_prime", \ - "patest_read_record", "patest_record", "patest_ringmix", "patest_saw", "patest_sine8", "patest_sine", \ - "patest_sine_time", "patest_start_stop", "patest_stop", "patest_sync", "patest_toomanysines", \ - "patest_underflow", "patest_wire", "patest_write_sine", "pa_devs", "pa_fuzz", "pa_minlat", \ - "patest_sine_channelmaps",] - -# The test directory ("bin") should be in the top-level PA directory -tests = [env.Program(target=os.path.join("#", "bin", name), source=[os.path.join("#", "test", name + ".c"), - staticLib]) for name in testNames] - -# Detect host APIs -hostApis = [] -for cppdef in env["CPPDEFINES"]: - if cppdef.startswith("PA_USE_"): - hostApis.append(cppdef[7:-2]) - -Return("sources", "sharedLib", "staticLib", "tests", "env", "hostApis") +import os.path, copy, sys + +def checkSymbol(conf, header, library=None, symbol=None, autoAdd=True, critical=False, pkgName=None): + """ Check for symbol in library, optionally look only for header. + @param conf: Configure instance. + @param header: The header file where the symbol is declared. + @param library: The library in which the symbol exists, if None it is taken to be the standard C library. + @param symbol: The symbol to look for, if None only the header will be looked up. + @param autoAdd: Automatically link with this library if check is positive. + @param critical: Raise on error? + @param pkgName: Optional name of pkg-config entry for library, to determine build parameters. + @return: True/False + """ + origEnv = conf.env.Copy() # Copy unmodified environment so we can restore it upon error + env = conf.env + if library is None: + library = "c" # Standard library + autoAdd = False + + if pkgName is not None: + origLibs = copy.copy(env.get("LIBS", None)) + + try: env.ParseConfig("pkg-config --silence-errors %s --cflags --libs" % pkgName) + except: pass + else: + # I see no other way of checking that the parsing succeeded, if it did add no more linking parameters + if env.get("LIBS", None) != origLibs: + autoAdd = False + + try: + if not conf.CheckCHeader(header, include_quotes="<>"): + raise ConfigurationError("missing header %s" % header) + if symbol is not None and not conf.CheckLib(library, symbol, language="C", autoadd=autoAdd): + raise ConfigurationError("missing symbol %s in library %s" % (symbol, library)) + except ConfigurationError: + conf.env = origEnv + if not critical: + return False + raise + + return True + +import SCons.Errors + +# Import common variables + +# Could use '#' to refer to top-level SConstruct directory, but looks like env.SConsignFile doesn't interpret this at least :( +sconsDir = os.path.abspath(os.path.join("build", "scons")) + +try: + Import("Platform", "Posix", "ConfigurationError", "ApiVer") +except SCons.Errors.UserError: + # The common objects must be exported first + SConscript(os.path.join(sconsDir, "SConscript_common")) + Import("Platform", "Posix", "ConfigurationError", "ApiVer") + +Import("env") + +# This will be manipulated +env = env.Copy() + +# We operate with a set of needed libraries and optional libraries, the latter stemming from host API implementations. +# For libraries of both types we record a set of values that is used to look for the library in question, during +# configuration. If the corresponding library for a host API implementation isn't found, the implementation is left out. +neededLibs = [] +optionalImpls = {} +if Platform in Posix: + env.Append(CPPPATH=os.path.join("os", "unix")) + neededLibs += [("pthread", "pthread.h", "pthread_create"), ("m", "math.h", "sin")] + if env["useALSA"]: + optionalImpls["ALSA"] = ("asound", "alsa/asoundlib.h", "snd_pcm_open") + if env["useJACK"]: + optionalImpls["JACK"] = ("jack", "jack/jack.h", "jack_client_new") + if env["useOSS"]: + # TODO: It looks like the prefix for soundcard.h depends on the platform + optionalImpls["OSS"] = ("oss", "sys/soundcard.h", None) + if Platform == 'netbsd': + optionalImpls["OSS"] = ("ossaudio", "sys/soundcard.h", "_oss_ioctl") + if env["useASIHPI"]: + optionalImpls["ASIHPI"] = ("hpi", "asihpi/hpi.h", "HPI_SubSysCreate") + if env["useCOREAUDIO"]: + optionalImpls["COREAUDIO"] = ("CoreAudio", "CoreAudio/CoreAudio.h", None) +else: + raise ConfigurationError("unknown platform %s" % Platform) + +if Platform == "darwin": + env.Append(LINKFLAGS="-framework CoreFoundation -framework CoreServices -framework CoreAudio -framework AudioToolBox -framework AudioUnit") +elif Platform == "cygwin": + env.Append(LIBS=["winmm"]) +elif Platform == "irix": + neededLibs += [("audio", "dmedia/audio.h", "alOpenPort"), ("dmedia", "dmedia/dmedia.h", "dmGetUST")] + env.Append(CPPDEFINES=["PA_USE_SGI"]) + +def CheckCTypeSize(context, tp): + """ Check size of C type. + @param context: A configuration context. + @param tp: The type to check. + @return: Size of type, in bytes. + """ + context.Message("Checking the size of C type %s..." % tp) + ret = context.TryRun(""" +#include + +int main() { + printf("%%d", sizeof(%s)); + return 0; +} +""" % tp, ".c") + if not ret[0]: + context.Result(" Couldn't obtain size of type %s!" % tp) + return None + + assert ret[1] + sz = int(ret[1]) + context.Result("%d" % sz) + return sz + +""" +if sys.byteorder == "little": + env.Append(CPPDEFINES=["PA_LITTLE_ENDIAN"]) +elif sys.byteorder == "big": + env.Append(CPPDEFINES=["PA_BIG_ENDIAN"]) +else: + raise ConfigurationError("unknown byte order: %s" % sys.byteorder) +""" +if env["enableDebugOutput"]: + env.Append(CPPDEFINES=["PA_ENABLE_DEBUG_OUTPUT"]) + +# Start configuration + +# Use an absolute path for conf_dir, otherwise it gets created both relative to current directory and build directory +conf = env.Configure(log_file=os.path.join(sconsDir, "sconf.log"), custom_tests={"CheckCTypeSize": CheckCTypeSize}, + conf_dir=os.path.join(sconsDir, ".sconf_temp")) +conf.env.Append(CPPDEFINES=["SIZEOF_SHORT=%d" % conf.CheckCTypeSize("short")]) +conf.env.Append(CPPDEFINES=["SIZEOF_INT=%d" % conf.CheckCTypeSize("int")]) +conf.env.Append(CPPDEFINES=["SIZEOF_LONG=%d" % conf.CheckCTypeSize("long")]) +if checkSymbol(conf, "time.h", "rt", "clock_gettime"): + conf.env.Append(CPPDEFINES=["HAVE_CLOCK_GETTIME"]) +if checkSymbol(conf, "time.h", symbol="nanosleep"): + conf.env.Append(CPPDEFINES=["HAVE_NANOSLEEP"]) +if conf.CheckCHeader("sys/soundcard.h"): + conf.env.Append(CPPDEFINES=["HAVE_SYS_SOUNDCARD_H"]) +if conf.CheckCHeader("linux/soundcard.h"): + conf.env.Append(CPPDEFINES=["HAVE_LINUX_SOUNDCARD_H"]) +if conf.CheckCHeader("machine/soundcard.h"): + conf.env.Append(CPPDEFINES=["HAVE_MACHINE_SOUNDCARD_H"]) + +# Look for needed libraries and link with them +for lib, hdr, sym in neededLibs: + checkSymbol(conf, hdr, lib, sym, critical=True) +# Look for host API libraries, if a library isn't found disable corresponding host API implementation. +for name, val in optionalImpls.items(): + lib, hdr, sym = val + if checkSymbol(conf, hdr, lib, sym, critical=False, pkgName=name.lower()): + conf.env.Append(CPPDEFINES=["PA_USE_%s=1" % name.upper()]) + else: + del optionalImpls[name] + +# Configuration finished +env = conf.Finish() + +# PA infrastructure +CommonSources = [os.path.join("common", f) for f in "pa_allocation.c pa_converters.c pa_cpuload.c pa_dither.c pa_front.c \ + pa_process.c pa_stream.c pa_trace.c pa_debugprint.c pa_ringbuffer.c".split()] +CommonSources.append(os.path.join("hostapi", "skeleton", "pa_hostapi_skeleton.c")) + +# Host APIs implementations +ImplSources = [] +if Platform in Posix: + ImplSources += [os.path.join("os", "unix", f) for f in "pa_unix_hostapis.c pa_unix_util.c".split()] + +if "ALSA" in optionalImpls: + ImplSources.append(os.path.join("hostapi", "alsa", "pa_linux_alsa.c")) +if "JACK" in optionalImpls: + ImplSources.append(os.path.join("hostapi", "jack", "pa_jack.c")) +if "OSS" in optionalImpls: + ImplSources.append(os.path.join("hostapi", "oss", "pa_unix_oss.c")) +if "ASIHPI" in optionalImpls: + ImplSources.append(os.path.join("hostapi", "asihpi", "pa_linux_asihpi.c")) +if "COREAUDIO" in optionalImpls: + ImplSources.append([os.path.join("hostapi", "coreaudio", f) for f in """ + pa_mac_core.c pa_mac_core_blocking.c pa_mac_core_utilities.c + """.split()]) + + +sources = CommonSources + ImplSources + +sharedLibEnv = env.Copy() +if Platform in Posix: + # Add soname to library, this is so a reference is made to the versioned library in programs linking against libportaudio.so + if Platform != 'darwin': + sharedLibEnv.AppendUnique(SHLINKFLAGS="-Wl,-soname=libportaudio.so.%d" % int(ApiVer.split(".")[0])) +sharedLib = sharedLibEnv.SharedLibrary(target="portaudio", source=sources) + +staticLib = env.StaticLibrary(target="portaudio", source=sources) + +if Platform in Posix: + prefix = env["prefix"] + includeDir = os.path.join(prefix, "include") + libDir = os.path.join(prefix, "lib") + +testNames = ["patest_sine", "paqa_devs", "paqa_errs", "patest1", "patest_buffer", "patest_callbackstop", "patest_clip", \ + "patest_dither", "patest_hang", "patest_in_overflow", "patest_latency", "patest_leftright", "patest_longsine", \ + "patest_many", "patest_maxsines", "patest_multi_sine", "patest_out_underflow", "patest_pink", "patest_prime", \ + "patest_read_record", "patest_record", "patest_ringmix", "patest_saw", "patest_sine8", "patest_sine", \ + "patest_sine_time", "patest_start_stop", "patest_stop", "patest_sync", "patest_toomanysines", \ + "patest_underflow", "patest_wire", "patest_write_sine", "pa_devs", "pa_fuzz", "pa_minlat", \ + "patest_sine_channelmaps",] + +# The test directory ("bin") should be in the top-level PA directory +tests = [env.Program(target=os.path.join("#", "bin", name), source=[os.path.join("#", "test", name + ".c"), + staticLib]) for name in testNames] + +# Detect host APIs +hostApis = [] +for cppdef in env["CPPDEFINES"]: + if cppdef.startswith("PA_USE_"): + hostApis.append(cppdef[7:-2]) + +Return("sources", "sharedLib", "staticLib", "tests", "env", "hostApis") diff --git a/3rdparty/portaudio/src/hostapi/asio/ASIO-README.txt b/3rdparty/portaudio/src/hostapi/asio/ASIO-README.txt index c619a32580..bc86caa5be 100644 --- a/3rdparty/portaudio/src/hostapi/asio/ASIO-README.txt +++ b/3rdparty/portaudio/src/hostapi/asio/ASIO-README.txt @@ -1,147 +1,147 @@ -ASIO-README.txt - -This document contains information to help you compile PortAudio with -ASIO support. If you find any omissions or errors in this document -please notify us on the PortAudio mailing list. - -NOTE: The Macintosh sections of this document are provided for historical -reference. They refer to pre-OS X Macintosh. PortAudio no longer -supports pre-OS X Macintosh. Steinberg does not support ASIO on Mac OS X. - - -Building PortAudio with ASIO support ------------------------------------- - -To build PortAudio with ASIO support you need to compile and link with -pa_asio.c, and files from the ASIO SDK (see below), along with the common -PortAudio files from src/common/ and platform specific files from -src/os/win/ (for Win32). - -If you are compiling with a non-Microsoft compiler on Windows, also -compile and link with iasiothiscallresolver.cpp (see below for -an explanation). - -For some platforms (MingW, Cygwin/MingW), you may simply -be able to type: - -./configure --with-host_os=mingw --with-winapi=asio [--with-asiodir=/usr/local/asiosdk2] -make - -and life will be good. Make sure you update the above with the correct local -path to the ASIO SDK. - - -For Microsoft Visual C++ there is an build tutorial here: -http://www.portaudio.com/trac/wiki/TutorialDir/Compile/WindowsASIOMSVC - - - -Obtaining the ASIO SDK ----------------------- - -In order to build PortAudio with ASIO support, you need to download -the ASIO SDK (version 2.0 or later) from Steinberg. Steinberg makes the ASIO -SDK available to anyone free of charge, however they do not permit its -source code to be distributed. - -NOTE: In some cases the ASIO SDK may require patching, see below -for further details. - -http://www.steinberg.net/en/company/developer.html - -If the above link is broken search Google for: -"download steinberg ASIO SDK" - - - -Building the ASIO SDK on Windows --------------------------------- - -To build the ASIO SDK on Windows you need to compile and link with the -following files from the ASIO SDK: - -asio_sdk\common\asio.cpp -asio_sdk\host\asiodrivers.cpp -asio_sdk\host\pc\asiolist.cpp - -You may also need to adjust your include paths to support inclusion of -header files from the above directories. - -The ASIO SDK depends on the following COM API functions: -CoInitialize, CoUninitialize, CoCreateInstance, CLSIDFromString -For compilation with MinGW you will need to link with -lole32, for -Borland compilers link with Import32.lib. - - - -Non-Microsoft (MSVC) Compilers on Windows including Borland and GCC -------------------------------------------------------------------- - -Steinberg did not specify a calling convention in the IASIO interface -definition. This causes the Microsoft compiler to use the proprietary -thiscall convention which is not compatible with other compilers, such -as compilers from Borland (BCC and C++Builder) and GNU (gcc). -Steinberg's ASIO SDK will compile but crash on initialization if -compiled with a non-Microsoft compiler on Windows. - -PortAudio solves this problem using the iasiothiscallresolver library -which is included in the distribution. When building ASIO support for -non-Microsoft compilers, be sure to compile and link with -iasiothiscallresolver.cpp. Note that iasiothiscallresolver includes -conditional directives which cause it to have no effect if it is -compiled with a Microsoft compiler, or on the Macintosh. - -If you use configure and make (see above), this should be handled -automatically for you. - -For further information about the IASIO thiscall problem see this page: -http://www.rossbencina.com/code/iasio-thiscall-resolver - - - -Building the ASIO SDK on (Pre-OS X) Macintosh ---------------------------------------------- - -To build the ASIO SDK on Macintosh you need to compile and link with the -following files from the ASIO SDK: - -host/asiodrivers.cpp -host/mac/asioshlib.cpp -host/mac/codefragements.cpp - -You may also need to adjust your include paths to support inclusion of -header files from the above directories. - - - -(Pre-OS X) Macintosh ASIO SDK Bug Patch ---------------------------------------- - -There is a bug in the ASIO SDK that causes the Macintosh version to -often fail during initialization. Below is a patch that you can apply. - -In codefragments.cpp replace getFrontProcessDirectory function with -the following one (GetFrontProcess replaced by GetCurrentProcess). - - -bool CodeFragments::getFrontProcessDirectory(void *specs) -{ - FSSpec *fss = (FSSpec *)specs; - ProcessInfoRec pif; - ProcessSerialNumber psn; - - memset(&psn,0,(long)sizeof(ProcessSerialNumber)); - // if(GetFrontProcess(&psn) == noErr) // wrong !!! - if(GetCurrentProcess(&psn) == noErr) // correct !!! - { - pif.processName = 0; - pif.processAppSpec = fss; - pif.processInfoLength = sizeof(ProcessInfoRec); - if(GetProcessInformation(&psn, &pif) == noErr) - return true; - } - return false; -} - - -### +ASIO-README.txt + +This document contains information to help you compile PortAudio with +ASIO support. If you find any omissions or errors in this document +please notify us on the PortAudio mailing list. + +NOTE: The Macintosh sections of this document are provided for historical +reference. They refer to pre-OS X Macintosh. PortAudio no longer +supports pre-OS X Macintosh. Steinberg does not support ASIO on Mac OS X. + + +Building PortAudio with ASIO support +------------------------------------ + +To build PortAudio with ASIO support you need to compile and link with +pa_asio.c, and files from the ASIO SDK (see below), along with the common +PortAudio files from src/common/ and platform specific files from +src/os/win/ (for Win32). + +If you are compiling with a non-Microsoft compiler on Windows, also +compile and link with iasiothiscallresolver.cpp (see below for +an explanation). + +For some platforms (MingW, Cygwin/MingW), you may simply +be able to type: + +./configure --with-host_os=mingw --with-winapi=asio [--with-asiodir=/usr/local/asiosdk2] +make + +and life will be good. Make sure you update the above with the correct local +path to the ASIO SDK. + + +For Microsoft Visual C++ there is an build tutorial here: +http://www.portaudio.com/trac/wiki/TutorialDir/Compile/WindowsASIOMSVC + + + +Obtaining the ASIO SDK +---------------------- + +In order to build PortAudio with ASIO support, you need to download +the ASIO SDK (version 2.0 or later) from Steinberg. Steinberg makes the ASIO +SDK available to anyone free of charge, however they do not permit its +source code to be distributed. + +NOTE: In some cases the ASIO SDK may require patching, see below +for further details. + +http://www.steinberg.net/en/company/developer.html + +If the above link is broken search Google for: +"download steinberg ASIO SDK" + + + +Building the ASIO SDK on Windows +-------------------------------- + +To build the ASIO SDK on Windows you need to compile and link with the +following files from the ASIO SDK: + +asio_sdk\common\asio.cpp +asio_sdk\host\asiodrivers.cpp +asio_sdk\host\pc\asiolist.cpp + +You may also need to adjust your include paths to support inclusion of +header files from the above directories. + +The ASIO SDK depends on the following COM API functions: +CoInitialize, CoUninitialize, CoCreateInstance, CLSIDFromString +For compilation with MinGW you will need to link with -lole32, for +Borland compilers link with Import32.lib. + + + +Non-Microsoft (MSVC) Compilers on Windows including Borland and GCC +------------------------------------------------------------------- + +Steinberg did not specify a calling convention in the IASIO interface +definition. This causes the Microsoft compiler to use the proprietary +thiscall convention which is not compatible with other compilers, such +as compilers from Borland (BCC and C++Builder) and GNU (gcc). +Steinberg's ASIO SDK will compile but crash on initialization if +compiled with a non-Microsoft compiler on Windows. + +PortAudio solves this problem using the iasiothiscallresolver library +which is included in the distribution. When building ASIO support for +non-Microsoft compilers, be sure to compile and link with +iasiothiscallresolver.cpp. Note that iasiothiscallresolver includes +conditional directives which cause it to have no effect if it is +compiled with a Microsoft compiler, or on the Macintosh. + +If you use configure and make (see above), this should be handled +automatically for you. + +For further information about the IASIO thiscall problem see this page: +http://www.rossbencina.com/code/iasio-thiscall-resolver + + + +Building the ASIO SDK on (Pre-OS X) Macintosh +--------------------------------------------- + +To build the ASIO SDK on Macintosh you need to compile and link with the +following files from the ASIO SDK: + +host/asiodrivers.cpp +host/mac/asioshlib.cpp +host/mac/codefragements.cpp + +You may also need to adjust your include paths to support inclusion of +header files from the above directories. + + + +(Pre-OS X) Macintosh ASIO SDK Bug Patch +--------------------------------------- + +There is a bug in the ASIO SDK that causes the Macintosh version to +often fail during initialization. Below is a patch that you can apply. + +In codefragments.cpp replace getFrontProcessDirectory function with +the following one (GetFrontProcess replaced by GetCurrentProcess). + + +bool CodeFragments::getFrontProcessDirectory(void *specs) +{ + FSSpec *fss = (FSSpec *)specs; + ProcessInfoRec pif; + ProcessSerialNumber psn; + + memset(&psn,0,(long)sizeof(ProcessSerialNumber)); + // if(GetFrontProcess(&psn) == noErr) // wrong !!! + if(GetCurrentProcess(&psn) == noErr) // correct !!! + { + pif.processName = 0; + pif.processAppSpec = fss; + pif.processInfoLength = sizeof(ProcessInfoRec); + if(GetProcessInformation(&psn, &pif) == noErr) + return true; + } + return false; +} + + +### diff --git a/3rdparty/portaudio/src/hostapi/coreaudio/notes.txt b/3rdparty/portaudio/src/hostapi/coreaudio/notes.txt index 3c3652bd48..145afe1544 100644 --- a/3rdparty/portaudio/src/hostapi/coreaudio/notes.txt +++ b/3rdparty/portaudio/src/hostapi/coreaudio/notes.txt @@ -1,196 +1,196 @@ -Notes on status of CoreAudio Implementation of PortAudio - -Document Last Updated December 9, 2005 - -There are currently two implementations of PortAudio for Mac Core Audio. - -The original is in pa_mac_core_old.c, and the newer, default implementation -is in pa_mac_core.c. -Only pa_mac_core.c is currently developed and supported as it uses apple's -current core audio technology. To select use the old implementation, replace -pa_mac_core.c with pa_mac_core_old.c (eg. "cp pa_mac_core_auhal.c -pa_mac_core.c"), then run configure and make as usual. - -------------------------------------------- - -Notes on Newer/Default AUHAL implementation: - -by Bjorn Roche - -Last Updated December 9, 2005 - -Principle of Operation: - -This implementation uses AUHAL for audio I/O. To some extent, it also -operates at the "HAL" Layer, though this behavior can be limited by -platform specific flags (see pa_mac_core.h for details). The default -settings should be reasonable: they don't change the SR of the device and -don't cause interruptions if other devices are using the device. - -Major Software Elements Used: Apple's HAL AUs provide output SR -conversion transparently, however, only on output, so this -implementation uses AudioConverters to convert the sample rate on input. -A PortAudio ring buffer is used to buffer input when sample rate -conversion is required or when separate audio units are used for duplex -IO. Finally, a PortAudio buffer processor is used to convert formats and -provide additional buffers if needed. Internally, interleaved floating -point data streams are used exclusively - the audio unit converts from -the audio hardware's native format to interleaved float PCM and -PortAudio's Buffer processor is used for conversion to user formats. - -Simplex Input: Simplex input uses a single callback. If sample rate -conversion is required, a ring buffer and AudioConverter are used as -well. - -Simplex output: Simplex output uses a single callback. No ring buffer or -audio converter is used because AUHAL does its own output SR conversion. - -Duplex, one device (no SR conversion): When one device is used, a single -callback is used. This achieves very low latency. - -Duplex, separate devices or SR conversion: When SR conversion is -required, data must be buffered before it is converted and data is not -always available at the same times on input and output, so SR conversion -requires the same treatment as separate devices. The input callback -reads data and puts it in the ring buffer. The output callback reads the -data off the ring buffer, into an audio converter and finally to the -buffer processor. - -Platform Specific Options: - -By using the flags in pa_mac_core.h, the user may specify several options. -For example, the user can specify the sample-rate conversion quality, and -the extent to which PA will attempt to "play nice" and to what extent it -will interrupt other apps to improve performance. For example, if 44100 Hz -sample rate is requested but the device is set at 48000 Hz, PA can either -change the device for optimal playback ("Pro" mode), which may interrupt -other programs playing back audio, or simple use a sample-rate coversion, -which allows for friendlier sharing of the device ("Play Nice" mode). - -Additionally, the user may define a "channel mapping" by calling -paSetupMacCoreChannelMap() on their stream info structure before opening -the stream with it. See below for creating a channel map. - -Known issues: - -- Buffering: No buffering beyond that provided by core audio is provided -except where absolutely needed for the implementation to work. This may cause -issues with large framesPerBuffer settings and it also means that no additional -latency will be provided even if a large latency setting is selected. - -- Latency: Latency settings are generally ignored. They may be used as a -hint for buffer size in paHostFramesPerBufferUnspecified, or the value may -be used in cases where additional buffering is needed, such as doing input and -output on seperate devices. Latency settings are always automatically bound -to "safe" values, however, so setting extreme values here should not be -an issue. - -- Buffer Size: paHostFramesPerBufferUnspecified and specific host buffer sizes -are supported. paHostFramesPerBufferUnspecified works best in "pro" mode, -where the buffer size and sample rate of the audio device is most likely -to match the expected values. In the case of paHostFramesPerBuffer, an -appropriate framesPerBuffer value will be used that guarantees minimum -requested latency if that's possible. - -- Timing info. It reports on stream time, but I'm probably doing something -wrong since patest_sine_time often reports negative latency numbers. Also, -there are currently issues with some devices whehn plugging/unplugging -devices. - -- xrun detection: The only xrun detection performed is when reading -and writing the ring buffer. There is probably more that can be done. - -- abort/stop issues: stopping a stream is always a complete operation, -but latency should be low enough to make the lack of a separate abort -unnecessary. Apple clarifies its AudioOutputUnitStop() call here: -http://lists.apple.com/archives/coreaudio-api/2005/Dec/msg00055.html - -- blocking interface: should work fine. - -- multichannel: It has been tested successfully on multichannel hardware -from MOTU: traveler and 896HD. Also Presonus firepod and others. It is -believed to work with all Core Audio devices, including virtual devices -such as soundflower. - -- sample rate conversion quality: By default, SR conversion is the maximum -available. This can be tweaked using flags pa_mac_core.h. Note that the AU -render quyality property is used to set the sample rate conversion quality -as "documented" here: -http://lists.apple.com/archives/coreaudio-api/2004/Jan/msg00141.html - -- x86/Universal Binary: Universal binaries can be build. - - - -Creating a channel map: - -How to create the map array - Text taken From AUHAL.rtfd : -[3] Channel Maps -Clients can tell the AUHAL units which channels of the device they are interested in. For example, the client may be processing stereo data, but outputting to a six-channel device. This is done by using the kAudioOutputUnitProperty_ChannelMap property. To use this property: - -For Output: -Create an array of SInt32 that is the size of the number of channels of the device (Get the Format of the AUHAL's output Element == 0) -Initialize each of the array's values to -1 (-1 indicates that that channel is NOT to be presented in the conversion.) - -Next, for each channel of your app's output, set: -channelMapArray[deviceOutputChannel] = desiredAppOutputChannel. - -For example: we have a 6 channel output device and our application has a stereo source it wants to provide to the device. Suppose we want that stereo source to go to the 3rd and 4th channels of the device. The channel map would look like this: { -1, -1, 0, 1, -1, -1 } - -Where the formats are: -Input Element == 0: 2 channels (- client format - settable) -Output Element == 0: 6 channels (- device format - NOT settable) - -So channel 2 (zero-based) of the device will take the first channel of output and channel 3 will take the second channel of output. (This translates to the 3rd and 4th plugs of the 6 output plugs of the device of course!) - -For Input: -Create an array of SInt32 that is the size of the number of channels of the format you require for input. Get (or Set in this case as needed) the AUHAL's output Element == 1. - -Next, for each channel of input you require, set: -channelMapArray[desiredAppInputChannel] = deviceOutputChannel; - -For example: we have a 6 channel input device from which we wish to receive stereo input from the 3rd and 4th channels. The channel map looks like this: { 2, 3 } - -Where the formats are: -Input Element == 0: 2 channels (- device format - NOT settable) -Output Element == 0: 6 channels (- client format - settable) - - - ----------------------------------------- - -Notes on Original implementation: - -by Phil Burk and Darren Gibbs - -Last updated March 20, 2002 - -WHAT WORKS - -Output with very low latency, <10 msec. -Half duplex input or output. -Full duplex on the same CoreAudio device. -The paFLoat32, paInt16, paInt8, paUInt8 sample formats. -Pa_GetCPULoad() -Pa_StreamTime() - -KNOWN BUGS OR LIMITATIONS - -We do not yet support simultaneous input and output on different -devices. Note that some CoreAudio devices like the Roland UH30 look -like one device but are actually two different CoreAudio devices. The -Built-In audio is typically one CoreAudio device. - -Mono doesn't work. - -DEVICE MAPPING - -CoreAudio devices can support both input and output. But the sample -rates supported may be different. So we have map one or two PortAudio -device to each CoreAudio device depending on whether it supports -input, output or both. - -When we query devices, we first get a list of CoreAudio devices. Then -we scan the list and add a PortAudio device for each CoreAudio device -that supports input. Then we make a scan for output devices. - +Notes on status of CoreAudio Implementation of PortAudio + +Document Last Updated December 9, 2005 + +There are currently two implementations of PortAudio for Mac Core Audio. + +The original is in pa_mac_core_old.c, and the newer, default implementation +is in pa_mac_core.c. +Only pa_mac_core.c is currently developed and supported as it uses apple's +current core audio technology. To select use the old implementation, replace +pa_mac_core.c with pa_mac_core_old.c (eg. "cp pa_mac_core_auhal.c +pa_mac_core.c"), then run configure and make as usual. + +------------------------------------------- + +Notes on Newer/Default AUHAL implementation: + +by Bjorn Roche + +Last Updated December 9, 2005 + +Principle of Operation: + +This implementation uses AUHAL for audio I/O. To some extent, it also +operates at the "HAL" Layer, though this behavior can be limited by +platform specific flags (see pa_mac_core.h for details). The default +settings should be reasonable: they don't change the SR of the device and +don't cause interruptions if other devices are using the device. + +Major Software Elements Used: Apple's HAL AUs provide output SR +conversion transparently, however, only on output, so this +implementation uses AudioConverters to convert the sample rate on input. +A PortAudio ring buffer is used to buffer input when sample rate +conversion is required or when separate audio units are used for duplex +IO. Finally, a PortAudio buffer processor is used to convert formats and +provide additional buffers if needed. Internally, interleaved floating +point data streams are used exclusively - the audio unit converts from +the audio hardware's native format to interleaved float PCM and +PortAudio's Buffer processor is used for conversion to user formats. + +Simplex Input: Simplex input uses a single callback. If sample rate +conversion is required, a ring buffer and AudioConverter are used as +well. + +Simplex output: Simplex output uses a single callback. No ring buffer or +audio converter is used because AUHAL does its own output SR conversion. + +Duplex, one device (no SR conversion): When one device is used, a single +callback is used. This achieves very low latency. + +Duplex, separate devices or SR conversion: When SR conversion is +required, data must be buffered before it is converted and data is not +always available at the same times on input and output, so SR conversion +requires the same treatment as separate devices. The input callback +reads data and puts it in the ring buffer. The output callback reads the +data off the ring buffer, into an audio converter and finally to the +buffer processor. + +Platform Specific Options: + +By using the flags in pa_mac_core.h, the user may specify several options. +For example, the user can specify the sample-rate conversion quality, and +the extent to which PA will attempt to "play nice" and to what extent it +will interrupt other apps to improve performance. For example, if 44100 Hz +sample rate is requested but the device is set at 48000 Hz, PA can either +change the device for optimal playback ("Pro" mode), which may interrupt +other programs playing back audio, or simple use a sample-rate coversion, +which allows for friendlier sharing of the device ("Play Nice" mode). + +Additionally, the user may define a "channel mapping" by calling +paSetupMacCoreChannelMap() on their stream info structure before opening +the stream with it. See below for creating a channel map. + +Known issues: + +- Buffering: No buffering beyond that provided by core audio is provided +except where absolutely needed for the implementation to work. This may cause +issues with large framesPerBuffer settings and it also means that no additional +latency will be provided even if a large latency setting is selected. + +- Latency: Latency settings are generally ignored. They may be used as a +hint for buffer size in paHostFramesPerBufferUnspecified, or the value may +be used in cases where additional buffering is needed, such as doing input and +output on seperate devices. Latency settings are always automatically bound +to "safe" values, however, so setting extreme values here should not be +an issue. + +- Buffer Size: paHostFramesPerBufferUnspecified and specific host buffer sizes +are supported. paHostFramesPerBufferUnspecified works best in "pro" mode, +where the buffer size and sample rate of the audio device is most likely +to match the expected values. In the case of paHostFramesPerBuffer, an +appropriate framesPerBuffer value will be used that guarantees minimum +requested latency if that's possible. + +- Timing info. It reports on stream time, but I'm probably doing something +wrong since patest_sine_time often reports negative latency numbers. Also, +there are currently issues with some devices whehn plugging/unplugging +devices. + +- xrun detection: The only xrun detection performed is when reading +and writing the ring buffer. There is probably more that can be done. + +- abort/stop issues: stopping a stream is always a complete operation, +but latency should be low enough to make the lack of a separate abort +unnecessary. Apple clarifies its AudioOutputUnitStop() call here: +http://lists.apple.com/archives/coreaudio-api/2005/Dec/msg00055.html + +- blocking interface: should work fine. + +- multichannel: It has been tested successfully on multichannel hardware +from MOTU: traveler and 896HD. Also Presonus firepod and others. It is +believed to work with all Core Audio devices, including virtual devices +such as soundflower. + +- sample rate conversion quality: By default, SR conversion is the maximum +available. This can be tweaked using flags pa_mac_core.h. Note that the AU +render quyality property is used to set the sample rate conversion quality +as "documented" here: +http://lists.apple.com/archives/coreaudio-api/2004/Jan/msg00141.html + +- x86/Universal Binary: Universal binaries can be build. + + + +Creating a channel map: + +How to create the map array - Text taken From AUHAL.rtfd : +[3] Channel Maps +Clients can tell the AUHAL units which channels of the device they are interested in. For example, the client may be processing stereo data, but outputting to a six-channel device. This is done by using the kAudioOutputUnitProperty_ChannelMap property. To use this property: + +For Output: +Create an array of SInt32 that is the size of the number of channels of the device (Get the Format of the AUHAL's output Element == 0) +Initialize each of the array's values to -1 (-1 indicates that that channel is NOT to be presented in the conversion.) + +Next, for each channel of your app's output, set: +channelMapArray[deviceOutputChannel] = desiredAppOutputChannel. + +For example: we have a 6 channel output device and our application has a stereo source it wants to provide to the device. Suppose we want that stereo source to go to the 3rd and 4th channels of the device. The channel map would look like this: { -1, -1, 0, 1, -1, -1 } + +Where the formats are: +Input Element == 0: 2 channels (- client format - settable) +Output Element == 0: 6 channels (- device format - NOT settable) + +So channel 2 (zero-based) of the device will take the first channel of output and channel 3 will take the second channel of output. (This translates to the 3rd and 4th plugs of the 6 output plugs of the device of course!) + +For Input: +Create an array of SInt32 that is the size of the number of channels of the format you require for input. Get (or Set in this case as needed) the AUHAL's output Element == 1. + +Next, for each channel of input you require, set: +channelMapArray[desiredAppInputChannel] = deviceOutputChannel; + +For example: we have a 6 channel input device from which we wish to receive stereo input from the 3rd and 4th channels. The channel map looks like this: { 2, 3 } + +Where the formats are: +Input Element == 0: 2 channels (- device format - NOT settable) +Output Element == 0: 6 channels (- client format - settable) + + + +---------------------------------------- + +Notes on Original implementation: + +by Phil Burk and Darren Gibbs + +Last updated March 20, 2002 + +WHAT WORKS + +Output with very low latency, <10 msec. +Half duplex input or output. +Full duplex on the same CoreAudio device. +The paFLoat32, paInt16, paInt8, paUInt8 sample formats. +Pa_GetCPULoad() +Pa_StreamTime() + +KNOWN BUGS OR LIMITATIONS + +We do not yet support simultaneous input and output on different +devices. Note that some CoreAudio devices like the Roland UH30 look +like one device but are actually two different CoreAudio devices. The +Built-In audio is typically one CoreAudio device. + +Mono doesn't work. + +DEVICE MAPPING + +CoreAudio devices can support both input and output. But the sample +rates supported may be different. So we have map one or two PortAudio +device to each CoreAudio device depending on whether it supports +input, output or both. + +When we query devices, we first get a list of CoreAudio devices. Then +we scan the list and add a PortAudio device for each CoreAudio device +that supports input. Then we make a scan for output devices. + diff --git a/3rdparty/portaudio/src/hostapi/skeleton/pa_hostapi_skeleton.c b/3rdparty/portaudio/src/hostapi/skeleton/pa_hostapi_skeleton.c index 887e2d954b..24eb450096 100644 --- a/3rdparty/portaudio/src/hostapi/skeleton/pa_hostapi_skeleton.c +++ b/3rdparty/portaudio/src/hostapi/skeleton/pa_hostapi_skeleton.c @@ -1,818 +1,818 @@ -/* - * $Id: pa_hostapi_skeleton.c 1668 2011-05-02 17:07:11Z rossb $ - * Portable Audio I/O Library skeleton implementation - * demonstrates how to use the common functions to implement support - * for a host API - * - * Based on the Open Source API proposed by Ross Bencina - * Copyright (c) 1999-2002 Ross Bencina, Phil Burk - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ - -/** @file - @ingroup common_src - - @brief Skeleton implementation of support for a host API. - - This file is provided as a starting point for implementing support for - a new host API. It provides examples of how the common code can be used. - - @note IMPLEMENT ME comments are used to indicate functionality - which much be customised for each implementation. -*/ - - -#include /* strlen() */ - -#include "pa_util.h" -#include "pa_allocation.h" -#include "pa_hostapi.h" -#include "pa_stream.h" -#include "pa_cpuload.h" -#include "pa_process.h" - - -/* prototypes for functions declared in this file */ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -PaError PaSkeleton_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index ); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -static void Terminate( struct PaUtilHostApiRepresentation *hostApi ); -static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi, - const PaStreamParameters *inputParameters, - const PaStreamParameters *outputParameters, - double sampleRate ); -static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, - PaStream** s, - const PaStreamParameters *inputParameters, - const PaStreamParameters *outputParameters, - double sampleRate, - unsigned long framesPerBuffer, - PaStreamFlags streamFlags, - PaStreamCallback *streamCallback, - void *userData ); -static PaError CloseStream( PaStream* stream ); -static PaError StartStream( PaStream *stream ); -static PaError StopStream( PaStream *stream ); -static PaError AbortStream( PaStream *stream ); -static PaError IsStreamStopped( PaStream *s ); -static PaError IsStreamActive( PaStream *stream ); -static PaTime GetStreamTime( PaStream *stream ); -static double GetStreamCpuLoad( PaStream* stream ); -static PaError ReadStream( PaStream* stream, void *buffer, unsigned long frames ); -static PaError WriteStream( PaStream* stream, const void *buffer, unsigned long frames ); -static signed long GetStreamReadAvailable( PaStream* stream ); -static signed long GetStreamWriteAvailable( PaStream* stream ); - - -/* IMPLEMENT ME: a macro like the following one should be used for reporting - host errors */ -#define PA_SKELETON_SET_LAST_HOST_ERROR( errorCode, errorText ) \ - PaUtil_SetLastHostErrorInfo( paInDevelopment, errorCode, errorText ) - -/* PaSkeletonHostApiRepresentation - host api datastructure specific to this implementation */ - -typedef struct -{ - PaUtilHostApiRepresentation inheritedHostApiRep; - PaUtilStreamInterface callbackStreamInterface; - PaUtilStreamInterface blockingStreamInterface; - - PaUtilAllocationGroup *allocations; - - /* implementation specific data goes here */ -} -PaSkeletonHostApiRepresentation; /* IMPLEMENT ME: rename this */ - - -PaError PaSkeleton_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex ) -{ - PaError result = paNoError; - int i, deviceCount; - PaSkeletonHostApiRepresentation *skeletonHostApi; - PaDeviceInfo *deviceInfoArray; - - skeletonHostApi = (PaSkeletonHostApiRepresentation*)PaUtil_AllocateMemory( sizeof(PaSkeletonHostApiRepresentation) ); - if( !skeletonHostApi ) - { - result = paInsufficientMemory; - goto error; - } - - skeletonHostApi->allocations = PaUtil_CreateAllocationGroup(); - if( !skeletonHostApi->allocations ) - { - result = paInsufficientMemory; - goto error; - } - - *hostApi = &skeletonHostApi->inheritedHostApiRep; - (*hostApi)->info.structVersion = 1; - (*hostApi)->info.type = paInDevelopment; /* IMPLEMENT ME: change to correct type id */ - (*hostApi)->info.name = "skeleton implementation"; /* IMPLEMENT ME: change to correct name */ - - (*hostApi)->info.defaultInputDevice = paNoDevice; /* IMPLEMENT ME */ - (*hostApi)->info.defaultOutputDevice = paNoDevice; /* IMPLEMENT ME */ - - (*hostApi)->info.deviceCount = 0; - - deviceCount = 0; /* IMPLEMENT ME */ - - if( deviceCount > 0 ) - { - (*hostApi)->deviceInfos = (PaDeviceInfo**)PaUtil_GroupAllocateMemory( - skeletonHostApi->allocations, sizeof(PaDeviceInfo*) * deviceCount ); - if( !(*hostApi)->deviceInfos ) - { - result = paInsufficientMemory; - goto error; - } - - /* allocate all device info structs in a contiguous block */ - deviceInfoArray = (PaDeviceInfo*)PaUtil_GroupAllocateMemory( - skeletonHostApi->allocations, sizeof(PaDeviceInfo) * deviceCount ); - if( !deviceInfoArray ) - { - result = paInsufficientMemory; - goto error; - } - - for( i=0; i < deviceCount; ++i ) - { - PaDeviceInfo *deviceInfo = &deviceInfoArray[i]; - deviceInfo->structVersion = 2; - deviceInfo->hostApi = hostApiIndex; - deviceInfo->name = 0; /* IMPLEMENT ME: allocate block and copy name eg: - deviceName = (char*)PaUtil_GroupAllocateMemory( skeletonHostApi->allocations, strlen(srcName) + 1 ); - if( !deviceName ) - { - result = paInsufficientMemory; - goto error; - } - strcpy( deviceName, srcName ); - deviceInfo->name = deviceName; - */ - - deviceInfo->maxInputChannels = 0; /* IMPLEMENT ME */ - deviceInfo->maxOutputChannels = 0; /* IMPLEMENT ME */ - - deviceInfo->defaultLowInputLatency = 0.; /* IMPLEMENT ME */ - deviceInfo->defaultLowOutputLatency = 0.; /* IMPLEMENT ME */ - deviceInfo->defaultHighInputLatency = 0.; /* IMPLEMENT ME */ - deviceInfo->defaultHighOutputLatency = 0.; /* IMPLEMENT ME */ - - deviceInfo->defaultSampleRate = 0.; /* IMPLEMENT ME */ - - (*hostApi)->deviceInfos[i] = deviceInfo; - ++(*hostApi)->info.deviceCount; - } - } - - (*hostApi)->Terminate = Terminate; - (*hostApi)->OpenStream = OpenStream; - (*hostApi)->IsFormatSupported = IsFormatSupported; - - PaUtil_InitializeStreamInterface( &skeletonHostApi->callbackStreamInterface, CloseStream, StartStream, - StopStream, AbortStream, IsStreamStopped, IsStreamActive, - GetStreamTime, GetStreamCpuLoad, - PaUtil_DummyRead, PaUtil_DummyWrite, - PaUtil_DummyGetReadAvailable, PaUtil_DummyGetWriteAvailable ); - - PaUtil_InitializeStreamInterface( &skeletonHostApi->blockingStreamInterface, CloseStream, StartStream, - StopStream, AbortStream, IsStreamStopped, IsStreamActive, - GetStreamTime, PaUtil_DummyGetCpuLoad, - ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable ); - - return result; - -error: - if( skeletonHostApi ) - { - if( skeletonHostApi->allocations ) - { - PaUtil_FreeAllAllocations( skeletonHostApi->allocations ); - PaUtil_DestroyAllocationGroup( skeletonHostApi->allocations ); - } - - PaUtil_FreeMemory( skeletonHostApi ); - } - return result; -} - - -static void Terminate( struct PaUtilHostApiRepresentation *hostApi ) -{ - PaSkeletonHostApiRepresentation *skeletonHostApi = (PaSkeletonHostApiRepresentation*)hostApi; - - /* - IMPLEMENT ME: - - clean up any resources not handled by the allocation group - */ - - if( skeletonHostApi->allocations ) - { - PaUtil_FreeAllAllocations( skeletonHostApi->allocations ); - PaUtil_DestroyAllocationGroup( skeletonHostApi->allocations ); - } - - PaUtil_FreeMemory( skeletonHostApi ); -} - - -static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi, - const PaStreamParameters *inputParameters, - const PaStreamParameters *outputParameters, - double sampleRate ) -{ - int inputChannelCount, outputChannelCount; - PaSampleFormat inputSampleFormat, outputSampleFormat; - - if( inputParameters ) - { - inputChannelCount = inputParameters->channelCount; - inputSampleFormat = inputParameters->sampleFormat; - - /* all standard sample formats are supported by the buffer adapter, - this implementation doesn't support any custom sample formats */ - if( inputSampleFormat & paCustomFormat ) - return paSampleFormatNotSupported; - - /* unless alternate device specification is supported, reject the use of - paUseHostApiSpecificDeviceSpecification */ - - if( inputParameters->device == paUseHostApiSpecificDeviceSpecification ) - return paInvalidDevice; - - /* check that input device can support inputChannelCount */ - if( inputChannelCount > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels ) - return paInvalidChannelCount; - - /* validate inputStreamInfo */ - if( inputParameters->hostApiSpecificStreamInfo ) - return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */ - } - else - { - inputChannelCount = 0; - } - - if( outputParameters ) - { - outputChannelCount = outputParameters->channelCount; - outputSampleFormat = outputParameters->sampleFormat; - - /* all standard sample formats are supported by the buffer adapter, - this implementation doesn't support any custom sample formats */ - if( outputSampleFormat & paCustomFormat ) - return paSampleFormatNotSupported; - - /* unless alternate device specification is supported, reject the use of - paUseHostApiSpecificDeviceSpecification */ - - if( outputParameters->device == paUseHostApiSpecificDeviceSpecification ) - return paInvalidDevice; - - /* check that output device can support outputChannelCount */ - if( outputChannelCount > hostApi->deviceInfos[ outputParameters->device ]->maxOutputChannels ) - return paInvalidChannelCount; - - /* validate outputStreamInfo */ - if( outputParameters->hostApiSpecificStreamInfo ) - return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */ - } - else - { - outputChannelCount = 0; - } - - /* - IMPLEMENT ME: - - - if a full duplex stream is requested, check that the combination - of input and output parameters is supported if necessary - - - check that the device supports sampleRate - - Because the buffer adapter handles conversion between all standard - sample formats, the following checks are only required if paCustomFormat - is implemented, or under some other unusual conditions. - - - check that input device can support inputSampleFormat, or that - we have the capability to convert from inputSampleFormat to - a native format - - - check that output device can support outputSampleFormat, or that - we have the capability to convert from outputSampleFormat to - a native format - */ - - - /* suppress unused variable warnings */ - (void) sampleRate; - - return paFormatIsSupported; -} - -/* PaSkeletonStream - a stream data structure specifically for this implementation */ - -typedef struct PaSkeletonStream -{ /* IMPLEMENT ME: rename this */ - PaUtilStreamRepresentation streamRepresentation; - PaUtilCpuLoadMeasurer cpuLoadMeasurer; - PaUtilBufferProcessor bufferProcessor; - - /* IMPLEMENT ME: - - implementation specific data goes here - */ - unsigned long framesPerHostCallback; /* just an example */ -} -PaSkeletonStream; - -/* see pa_hostapi.h for a list of validity guarantees made about OpenStream parameters */ - -static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, - PaStream** s, - const PaStreamParameters *inputParameters, - const PaStreamParameters *outputParameters, - double sampleRate, - unsigned long framesPerBuffer, - PaStreamFlags streamFlags, - PaStreamCallback *streamCallback, - void *userData ) -{ - PaError result = paNoError; - PaSkeletonHostApiRepresentation *skeletonHostApi = (PaSkeletonHostApiRepresentation*)hostApi; - PaSkeletonStream *stream = 0; - unsigned long framesPerHostBuffer = framesPerBuffer; /* these may not be equivalent for all implementations */ - int inputChannelCount, outputChannelCount; - PaSampleFormat inputSampleFormat, outputSampleFormat; - PaSampleFormat hostInputSampleFormat, hostOutputSampleFormat; - - - if( inputParameters ) - { - inputChannelCount = inputParameters->channelCount; - inputSampleFormat = inputParameters->sampleFormat; - - /* unless alternate device specification is supported, reject the use of - paUseHostApiSpecificDeviceSpecification */ - - if( inputParameters->device == paUseHostApiSpecificDeviceSpecification ) - return paInvalidDevice; - - /* check that input device can support inputChannelCount */ - if( inputChannelCount > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels ) - return paInvalidChannelCount; - - /* validate inputStreamInfo */ - if( inputParameters->hostApiSpecificStreamInfo ) - return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */ - - /* IMPLEMENT ME - establish which host formats are available */ - hostInputSampleFormat = - PaUtil_SelectClosestAvailableFormat( paInt16 /* native formats */, inputSampleFormat ); - } - else - { - inputChannelCount = 0; - inputSampleFormat = hostInputSampleFormat = paInt16; /* Surpress 'uninitialised var' warnings. */ - } - - if( outputParameters ) - { - outputChannelCount = outputParameters->channelCount; - outputSampleFormat = outputParameters->sampleFormat; - - /* unless alternate device specification is supported, reject the use of - paUseHostApiSpecificDeviceSpecification */ - - if( outputParameters->device == paUseHostApiSpecificDeviceSpecification ) - return paInvalidDevice; - - /* check that output device can support inputChannelCount */ - if( outputChannelCount > hostApi->deviceInfos[ outputParameters->device ]->maxOutputChannels ) - return paInvalidChannelCount; - - /* validate outputStreamInfo */ - if( outputParameters->hostApiSpecificStreamInfo ) - return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */ - - /* IMPLEMENT ME - establish which host formats are available */ - hostOutputSampleFormat = - PaUtil_SelectClosestAvailableFormat( paInt16 /* native formats */, outputSampleFormat ); - } - else - { - outputChannelCount = 0; - outputSampleFormat = hostOutputSampleFormat = paInt16; /* Surpress 'uninitialized var' warnings. */ - } - - /* - IMPLEMENT ME: - - ( the following two checks are taken care of by PaUtil_InitializeBufferProcessor() FIXME - checks needed? ) - - - check that input device can support inputSampleFormat, or that - we have the capability to convert from outputSampleFormat to - a native format - - - check that output device can support outputSampleFormat, or that - we have the capability to convert from outputSampleFormat to - a native format - - - if a full duplex stream is requested, check that the combination - of input and output parameters is supported - - - check that the device supports sampleRate - - - alter sampleRate to a close allowable rate if possible / necessary - - - validate suggestedInputLatency and suggestedOutputLatency parameters, - use default values where necessary - */ - - - - - /* validate platform specific flags */ - if( (streamFlags & paPlatformSpecificFlags) != 0 ) - return paInvalidFlag; /* unexpected platform specific flag */ - - - stream = (PaSkeletonStream*)PaUtil_AllocateMemory( sizeof(PaSkeletonStream) ); - if( !stream ) - { - result = paInsufficientMemory; - goto error; - } - - if( streamCallback ) - { - PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation, - &skeletonHostApi->callbackStreamInterface, streamCallback, userData ); - } - else - { - PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation, - &skeletonHostApi->blockingStreamInterface, streamCallback, userData ); - } - - PaUtil_InitializeCpuLoadMeasurer( &stream->cpuLoadMeasurer, sampleRate ); - - - /* we assume a fixed host buffer size in this example, but the buffer processor - can also support bounded and unknown host buffer sizes by passing - paUtilBoundedHostBufferSize or paUtilUnknownHostBufferSize instead of - paUtilFixedHostBufferSize below. */ - - result = PaUtil_InitializeBufferProcessor( &stream->bufferProcessor, - inputChannelCount, inputSampleFormat, hostInputSampleFormat, - outputChannelCount, outputSampleFormat, hostOutputSampleFormat, - sampleRate, streamFlags, framesPerBuffer, - framesPerHostBuffer, paUtilFixedHostBufferSize, - streamCallback, userData ); - if( result != paNoError ) - goto error; - - - /* - IMPLEMENT ME: initialise the following fields with estimated or actual - values. - */ - stream->streamRepresentation.streamInfo.inputLatency = - (PaTime)PaUtil_GetBufferProcessorInputLatencyFrames(&stream->bufferProcessor) / sampleRate; /* inputLatency is specified in _seconds_ */ - stream->streamRepresentation.streamInfo.outputLatency = - (PaTime)PaUtil_GetBufferProcessorOutputLatencyFrames(&stream->bufferProcessor) / sampleRate; /* outputLatency is specified in _seconds_ */ - stream->streamRepresentation.streamInfo.sampleRate = sampleRate; - - - /* - IMPLEMENT ME: - - additional stream setup + opening - */ - - stream->framesPerHostCallback = framesPerHostBuffer; - - *s = (PaStream*)stream; - - return result; - -error: - if( stream ) - PaUtil_FreeMemory( stream ); - - return result; -} - -/* - ExampleHostProcessingLoop() illustrates the kind of processing which may - occur in a host implementation. - -*/ -static void ExampleHostProcessingLoop( void *inputBuffer, void *outputBuffer, void *userData ) -{ - PaSkeletonStream *stream = (PaSkeletonStream*)userData; - PaStreamCallbackTimeInfo timeInfo = {0,0,0}; /* IMPLEMENT ME */ - int callbackResult; - unsigned long framesProcessed; - - PaUtil_BeginCpuLoadMeasurement( &stream->cpuLoadMeasurer ); - - /* - IMPLEMENT ME: - - generate timing information - - handle buffer slips - */ - - /* - If you need to byte swap or shift inputBuffer to convert it into a - portaudio format, do it here. - */ - - - - PaUtil_BeginBufferProcessing( &stream->bufferProcessor, &timeInfo, 0 /* IMPLEMENT ME: pass underflow/overflow flags when necessary */ ); - - /* - depending on whether the host buffers are interleaved, non-interleaved - or a mixture, you will want to call PaUtil_SetInterleaved*Channels(), - PaUtil_SetNonInterleaved*Channel() or PaUtil_Set*Channel() here. - */ - - PaUtil_SetInputFrameCount( &stream->bufferProcessor, 0 /* default to host buffer size */ ); - PaUtil_SetInterleavedInputChannels( &stream->bufferProcessor, - 0, /* first channel of inputBuffer is channel 0 */ - inputBuffer, - 0 ); /* 0 - use inputChannelCount passed to init buffer processor */ - - PaUtil_SetOutputFrameCount( &stream->bufferProcessor, 0 /* default to host buffer size */ ); - PaUtil_SetInterleavedOutputChannels( &stream->bufferProcessor, - 0, /* first channel of outputBuffer is channel 0 */ - outputBuffer, - 0 ); /* 0 - use outputChannelCount passed to init buffer processor */ - - /* you must pass a valid value of callback result to PaUtil_EndBufferProcessing() - in general you would pass paContinue for normal operation, and - paComplete to drain the buffer processor's internal output buffer. - You can check whether the buffer processor's output buffer is empty - using PaUtil_IsBufferProcessorOuputEmpty( bufferProcessor ) - */ - callbackResult = paContinue; - framesProcessed = PaUtil_EndBufferProcessing( &stream->bufferProcessor, &callbackResult ); - - - /* - If you need to byte swap or shift outputBuffer to convert it to - host format, do it here. - */ - - PaUtil_EndCpuLoadMeasurement( &stream->cpuLoadMeasurer, framesProcessed ); - - - if( callbackResult == paContinue ) - { - /* nothing special to do */ - } - else if( callbackResult == paAbort ) - { - /* IMPLEMENT ME - finish playback immediately */ - - /* once finished, call the finished callback */ - if( stream->streamRepresentation.streamFinishedCallback != 0 ) - stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData ); - } - else - { - /* User callback has asked us to stop with paComplete or other non-zero value */ - - /* IMPLEMENT ME - finish playback once currently queued audio has completed */ - - /* once finished, call the finished callback */ - if( stream->streamRepresentation.streamFinishedCallback != 0 ) - stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData ); - } -} - - -/* - When CloseStream() is called, the multi-api layer ensures that - the stream has already been stopped or aborted. -*/ -static PaError CloseStream( PaStream* s ) -{ - PaError result = paNoError; - PaSkeletonStream *stream = (PaSkeletonStream*)s; - - /* - IMPLEMENT ME: - - additional stream closing + cleanup - */ - - PaUtil_TerminateBufferProcessor( &stream->bufferProcessor ); - PaUtil_TerminateStreamRepresentation( &stream->streamRepresentation ); - PaUtil_FreeMemory( stream ); - - return result; -} - - -static PaError StartStream( PaStream *s ) -{ - PaError result = paNoError; - PaSkeletonStream *stream = (PaSkeletonStream*)s; - - PaUtil_ResetBufferProcessor( &stream->bufferProcessor ); - - /* IMPLEMENT ME, see portaudio.h for required behavior */ - - /* suppress unused function warning. the code in ExampleHostProcessingLoop or - something similar should be implemented to feed samples to and from the - host after StartStream() is called. - */ - (void) ExampleHostProcessingLoop; - - return result; -} - - -static PaError StopStream( PaStream *s ) -{ - PaError result = paNoError; - PaSkeletonStream *stream = (PaSkeletonStream*)s; - - /* suppress unused variable warnings */ - (void) stream; - - /* IMPLEMENT ME, see portaudio.h for required behavior */ - - return result; -} - - -static PaError AbortStream( PaStream *s ) -{ - PaError result = paNoError; - PaSkeletonStream *stream = (PaSkeletonStream*)s; - - /* suppress unused variable warnings */ - (void) stream; - - /* IMPLEMENT ME, see portaudio.h for required behavior */ - - return result; -} - - -static PaError IsStreamStopped( PaStream *s ) -{ - PaSkeletonStream *stream = (PaSkeletonStream*)s; - - /* suppress unused variable warnings */ - (void) stream; - - /* IMPLEMENT ME, see portaudio.h for required behavior */ - - return 0; -} - - -static PaError IsStreamActive( PaStream *s ) -{ - PaSkeletonStream *stream = (PaSkeletonStream*)s; - - /* suppress unused variable warnings */ - (void) stream; - - /* IMPLEMENT ME, see portaudio.h for required behavior */ - - return 0; -} - - -static PaTime GetStreamTime( PaStream *s ) -{ - PaSkeletonStream *stream = (PaSkeletonStream*)s; - - /* suppress unused variable warnings */ - (void) stream; - - /* IMPLEMENT ME, see portaudio.h for required behavior*/ - - return 0; -} - - -static double GetStreamCpuLoad( PaStream* s ) -{ - PaSkeletonStream *stream = (PaSkeletonStream*)s; - - return PaUtil_GetCpuLoad( &stream->cpuLoadMeasurer ); -} - - -/* - As separate stream interfaces are used for blocking and callback - streams, the following functions can be guaranteed to only be called - for blocking streams. -*/ - -static PaError ReadStream( PaStream* s, - void *buffer, - unsigned long frames ) -{ - PaSkeletonStream *stream = (PaSkeletonStream*)s; - - /* suppress unused variable warnings */ - (void) buffer; - (void) frames; - (void) stream; - - /* IMPLEMENT ME, see portaudio.h for required behavior*/ - - return paNoError; -} - - -static PaError WriteStream( PaStream* s, - const void *buffer, - unsigned long frames ) -{ - PaSkeletonStream *stream = (PaSkeletonStream*)s; - - /* suppress unused variable warnings */ - (void) buffer; - (void) frames; - (void) stream; - - /* IMPLEMENT ME, see portaudio.h for required behavior*/ - - return paNoError; -} - - -static signed long GetStreamReadAvailable( PaStream* s ) -{ - PaSkeletonStream *stream = (PaSkeletonStream*)s; - - /* suppress unused variable warnings */ - (void) stream; - - /* IMPLEMENT ME, see portaudio.h for required behavior*/ - - return 0; -} - - -static signed long GetStreamWriteAvailable( PaStream* s ) -{ - PaSkeletonStream *stream = (PaSkeletonStream*)s; - - /* suppress unused variable warnings */ - (void) stream; - - /* IMPLEMENT ME, see portaudio.h for required behavior*/ - - return 0; -} - - - - +/* + * $Id: pa_hostapi_skeleton.c 1668 2011-05-02 17:07:11Z rossb $ + * Portable Audio I/O Library skeleton implementation + * demonstrates how to use the common functions to implement support + * for a host API + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 1999-2002 Ross Bencina, Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src + + @brief Skeleton implementation of support for a host API. + + This file is provided as a starting point for implementing support for + a new host API. It provides examples of how the common code can be used. + + @note IMPLEMENT ME comments are used to indicate functionality + which much be customised for each implementation. +*/ + + +#include /* strlen() */ + +#include "pa_util.h" +#include "pa_allocation.h" +#include "pa_hostapi.h" +#include "pa_stream.h" +#include "pa_cpuload.h" +#include "pa_process.h" + + +/* prototypes for functions declared in this file */ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +PaError PaSkeleton_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index ); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +static void Terminate( struct PaUtilHostApiRepresentation *hostApi ); +static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi, + const PaStreamParameters *inputParameters, + const PaStreamParameters *outputParameters, + double sampleRate ); +static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, + PaStream** s, + const PaStreamParameters *inputParameters, + const PaStreamParameters *outputParameters, + double sampleRate, + unsigned long framesPerBuffer, + PaStreamFlags streamFlags, + PaStreamCallback *streamCallback, + void *userData ); +static PaError CloseStream( PaStream* stream ); +static PaError StartStream( PaStream *stream ); +static PaError StopStream( PaStream *stream ); +static PaError AbortStream( PaStream *stream ); +static PaError IsStreamStopped( PaStream *s ); +static PaError IsStreamActive( PaStream *stream ); +static PaTime GetStreamTime( PaStream *stream ); +static double GetStreamCpuLoad( PaStream* stream ); +static PaError ReadStream( PaStream* stream, void *buffer, unsigned long frames ); +static PaError WriteStream( PaStream* stream, const void *buffer, unsigned long frames ); +static signed long GetStreamReadAvailable( PaStream* stream ); +static signed long GetStreamWriteAvailable( PaStream* stream ); + + +/* IMPLEMENT ME: a macro like the following one should be used for reporting + host errors */ +#define PA_SKELETON_SET_LAST_HOST_ERROR( errorCode, errorText ) \ + PaUtil_SetLastHostErrorInfo( paInDevelopment, errorCode, errorText ) + +/* PaSkeletonHostApiRepresentation - host api datastructure specific to this implementation */ + +typedef struct +{ + PaUtilHostApiRepresentation inheritedHostApiRep; + PaUtilStreamInterface callbackStreamInterface; + PaUtilStreamInterface blockingStreamInterface; + + PaUtilAllocationGroup *allocations; + + /* implementation specific data goes here */ +} +PaSkeletonHostApiRepresentation; /* IMPLEMENT ME: rename this */ + + +PaError PaSkeleton_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex ) +{ + PaError result = paNoError; + int i, deviceCount; + PaSkeletonHostApiRepresentation *skeletonHostApi; + PaDeviceInfo *deviceInfoArray; + + skeletonHostApi = (PaSkeletonHostApiRepresentation*)PaUtil_AllocateMemory( sizeof(PaSkeletonHostApiRepresentation) ); + if( !skeletonHostApi ) + { + result = paInsufficientMemory; + goto error; + } + + skeletonHostApi->allocations = PaUtil_CreateAllocationGroup(); + if( !skeletonHostApi->allocations ) + { + result = paInsufficientMemory; + goto error; + } + + *hostApi = &skeletonHostApi->inheritedHostApiRep; + (*hostApi)->info.structVersion = 1; + (*hostApi)->info.type = paInDevelopment; /* IMPLEMENT ME: change to correct type id */ + (*hostApi)->info.name = "skeleton implementation"; /* IMPLEMENT ME: change to correct name */ + + (*hostApi)->info.defaultInputDevice = paNoDevice; /* IMPLEMENT ME */ + (*hostApi)->info.defaultOutputDevice = paNoDevice; /* IMPLEMENT ME */ + + (*hostApi)->info.deviceCount = 0; + + deviceCount = 0; /* IMPLEMENT ME */ + + if( deviceCount > 0 ) + { + (*hostApi)->deviceInfos = (PaDeviceInfo**)PaUtil_GroupAllocateMemory( + skeletonHostApi->allocations, sizeof(PaDeviceInfo*) * deviceCount ); + if( !(*hostApi)->deviceInfos ) + { + result = paInsufficientMemory; + goto error; + } + + /* allocate all device info structs in a contiguous block */ + deviceInfoArray = (PaDeviceInfo*)PaUtil_GroupAllocateMemory( + skeletonHostApi->allocations, sizeof(PaDeviceInfo) * deviceCount ); + if( !deviceInfoArray ) + { + result = paInsufficientMemory; + goto error; + } + + for( i=0; i < deviceCount; ++i ) + { + PaDeviceInfo *deviceInfo = &deviceInfoArray[i]; + deviceInfo->structVersion = 2; + deviceInfo->hostApi = hostApiIndex; + deviceInfo->name = 0; /* IMPLEMENT ME: allocate block and copy name eg: + deviceName = (char*)PaUtil_GroupAllocateMemory( skeletonHostApi->allocations, strlen(srcName) + 1 ); + if( !deviceName ) + { + result = paInsufficientMemory; + goto error; + } + strcpy( deviceName, srcName ); + deviceInfo->name = deviceName; + */ + + deviceInfo->maxInputChannels = 0; /* IMPLEMENT ME */ + deviceInfo->maxOutputChannels = 0; /* IMPLEMENT ME */ + + deviceInfo->defaultLowInputLatency = 0.; /* IMPLEMENT ME */ + deviceInfo->defaultLowOutputLatency = 0.; /* IMPLEMENT ME */ + deviceInfo->defaultHighInputLatency = 0.; /* IMPLEMENT ME */ + deviceInfo->defaultHighOutputLatency = 0.; /* IMPLEMENT ME */ + + deviceInfo->defaultSampleRate = 0.; /* IMPLEMENT ME */ + + (*hostApi)->deviceInfos[i] = deviceInfo; + ++(*hostApi)->info.deviceCount; + } + } + + (*hostApi)->Terminate = Terminate; + (*hostApi)->OpenStream = OpenStream; + (*hostApi)->IsFormatSupported = IsFormatSupported; + + PaUtil_InitializeStreamInterface( &skeletonHostApi->callbackStreamInterface, CloseStream, StartStream, + StopStream, AbortStream, IsStreamStopped, IsStreamActive, + GetStreamTime, GetStreamCpuLoad, + PaUtil_DummyRead, PaUtil_DummyWrite, + PaUtil_DummyGetReadAvailable, PaUtil_DummyGetWriteAvailable ); + + PaUtil_InitializeStreamInterface( &skeletonHostApi->blockingStreamInterface, CloseStream, StartStream, + StopStream, AbortStream, IsStreamStopped, IsStreamActive, + GetStreamTime, PaUtil_DummyGetCpuLoad, + ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable ); + + return result; + +error: + if( skeletonHostApi ) + { + if( skeletonHostApi->allocations ) + { + PaUtil_FreeAllAllocations( skeletonHostApi->allocations ); + PaUtil_DestroyAllocationGroup( skeletonHostApi->allocations ); + } + + PaUtil_FreeMemory( skeletonHostApi ); + } + return result; +} + + +static void Terminate( struct PaUtilHostApiRepresentation *hostApi ) +{ + PaSkeletonHostApiRepresentation *skeletonHostApi = (PaSkeletonHostApiRepresentation*)hostApi; + + /* + IMPLEMENT ME: + - clean up any resources not handled by the allocation group + */ + + if( skeletonHostApi->allocations ) + { + PaUtil_FreeAllAllocations( skeletonHostApi->allocations ); + PaUtil_DestroyAllocationGroup( skeletonHostApi->allocations ); + } + + PaUtil_FreeMemory( skeletonHostApi ); +} + + +static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi, + const PaStreamParameters *inputParameters, + const PaStreamParameters *outputParameters, + double sampleRate ) +{ + int inputChannelCount, outputChannelCount; + PaSampleFormat inputSampleFormat, outputSampleFormat; + + if( inputParameters ) + { + inputChannelCount = inputParameters->channelCount; + inputSampleFormat = inputParameters->sampleFormat; + + /* all standard sample formats are supported by the buffer adapter, + this implementation doesn't support any custom sample formats */ + if( inputSampleFormat & paCustomFormat ) + return paSampleFormatNotSupported; + + /* unless alternate device specification is supported, reject the use of + paUseHostApiSpecificDeviceSpecification */ + + if( inputParameters->device == paUseHostApiSpecificDeviceSpecification ) + return paInvalidDevice; + + /* check that input device can support inputChannelCount */ + if( inputChannelCount > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels ) + return paInvalidChannelCount; + + /* validate inputStreamInfo */ + if( inputParameters->hostApiSpecificStreamInfo ) + return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */ + } + else + { + inputChannelCount = 0; + } + + if( outputParameters ) + { + outputChannelCount = outputParameters->channelCount; + outputSampleFormat = outputParameters->sampleFormat; + + /* all standard sample formats are supported by the buffer adapter, + this implementation doesn't support any custom sample formats */ + if( outputSampleFormat & paCustomFormat ) + return paSampleFormatNotSupported; + + /* unless alternate device specification is supported, reject the use of + paUseHostApiSpecificDeviceSpecification */ + + if( outputParameters->device == paUseHostApiSpecificDeviceSpecification ) + return paInvalidDevice; + + /* check that output device can support outputChannelCount */ + if( outputChannelCount > hostApi->deviceInfos[ outputParameters->device ]->maxOutputChannels ) + return paInvalidChannelCount; + + /* validate outputStreamInfo */ + if( outputParameters->hostApiSpecificStreamInfo ) + return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */ + } + else + { + outputChannelCount = 0; + } + + /* + IMPLEMENT ME: + + - if a full duplex stream is requested, check that the combination + of input and output parameters is supported if necessary + + - check that the device supports sampleRate + + Because the buffer adapter handles conversion between all standard + sample formats, the following checks are only required if paCustomFormat + is implemented, or under some other unusual conditions. + + - check that input device can support inputSampleFormat, or that + we have the capability to convert from inputSampleFormat to + a native format + + - check that output device can support outputSampleFormat, or that + we have the capability to convert from outputSampleFormat to + a native format + */ + + + /* suppress unused variable warnings */ + (void) sampleRate; + + return paFormatIsSupported; +} + +/* PaSkeletonStream - a stream data structure specifically for this implementation */ + +typedef struct PaSkeletonStream +{ /* IMPLEMENT ME: rename this */ + PaUtilStreamRepresentation streamRepresentation; + PaUtilCpuLoadMeasurer cpuLoadMeasurer; + PaUtilBufferProcessor bufferProcessor; + + /* IMPLEMENT ME: + - implementation specific data goes here + */ + unsigned long framesPerHostCallback; /* just an example */ +} +PaSkeletonStream; + +/* see pa_hostapi.h for a list of validity guarantees made about OpenStream parameters */ + +static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, + PaStream** s, + const PaStreamParameters *inputParameters, + const PaStreamParameters *outputParameters, + double sampleRate, + unsigned long framesPerBuffer, + PaStreamFlags streamFlags, + PaStreamCallback *streamCallback, + void *userData ) +{ + PaError result = paNoError; + PaSkeletonHostApiRepresentation *skeletonHostApi = (PaSkeletonHostApiRepresentation*)hostApi; + PaSkeletonStream *stream = 0; + unsigned long framesPerHostBuffer = framesPerBuffer; /* these may not be equivalent for all implementations */ + int inputChannelCount, outputChannelCount; + PaSampleFormat inputSampleFormat, outputSampleFormat; + PaSampleFormat hostInputSampleFormat, hostOutputSampleFormat; + + + if( inputParameters ) + { + inputChannelCount = inputParameters->channelCount; + inputSampleFormat = inputParameters->sampleFormat; + + /* unless alternate device specification is supported, reject the use of + paUseHostApiSpecificDeviceSpecification */ + + if( inputParameters->device == paUseHostApiSpecificDeviceSpecification ) + return paInvalidDevice; + + /* check that input device can support inputChannelCount */ + if( inputChannelCount > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels ) + return paInvalidChannelCount; + + /* validate inputStreamInfo */ + if( inputParameters->hostApiSpecificStreamInfo ) + return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */ + + /* IMPLEMENT ME - establish which host formats are available */ + hostInputSampleFormat = + PaUtil_SelectClosestAvailableFormat( paInt16 /* native formats */, inputSampleFormat ); + } + else + { + inputChannelCount = 0; + inputSampleFormat = hostInputSampleFormat = paInt16; /* Surpress 'uninitialised var' warnings. */ + } + + if( outputParameters ) + { + outputChannelCount = outputParameters->channelCount; + outputSampleFormat = outputParameters->sampleFormat; + + /* unless alternate device specification is supported, reject the use of + paUseHostApiSpecificDeviceSpecification */ + + if( outputParameters->device == paUseHostApiSpecificDeviceSpecification ) + return paInvalidDevice; + + /* check that output device can support inputChannelCount */ + if( outputChannelCount > hostApi->deviceInfos[ outputParameters->device ]->maxOutputChannels ) + return paInvalidChannelCount; + + /* validate outputStreamInfo */ + if( outputParameters->hostApiSpecificStreamInfo ) + return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */ + + /* IMPLEMENT ME - establish which host formats are available */ + hostOutputSampleFormat = + PaUtil_SelectClosestAvailableFormat( paInt16 /* native formats */, outputSampleFormat ); + } + else + { + outputChannelCount = 0; + outputSampleFormat = hostOutputSampleFormat = paInt16; /* Surpress 'uninitialized var' warnings. */ + } + + /* + IMPLEMENT ME: + + ( the following two checks are taken care of by PaUtil_InitializeBufferProcessor() FIXME - checks needed? ) + + - check that input device can support inputSampleFormat, or that + we have the capability to convert from outputSampleFormat to + a native format + + - check that output device can support outputSampleFormat, or that + we have the capability to convert from outputSampleFormat to + a native format + + - if a full duplex stream is requested, check that the combination + of input and output parameters is supported + + - check that the device supports sampleRate + + - alter sampleRate to a close allowable rate if possible / necessary + + - validate suggestedInputLatency and suggestedOutputLatency parameters, + use default values where necessary + */ + + + + + /* validate platform specific flags */ + if( (streamFlags & paPlatformSpecificFlags) != 0 ) + return paInvalidFlag; /* unexpected platform specific flag */ + + + stream = (PaSkeletonStream*)PaUtil_AllocateMemory( sizeof(PaSkeletonStream) ); + if( !stream ) + { + result = paInsufficientMemory; + goto error; + } + + if( streamCallback ) + { + PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation, + &skeletonHostApi->callbackStreamInterface, streamCallback, userData ); + } + else + { + PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation, + &skeletonHostApi->blockingStreamInterface, streamCallback, userData ); + } + + PaUtil_InitializeCpuLoadMeasurer( &stream->cpuLoadMeasurer, sampleRate ); + + + /* we assume a fixed host buffer size in this example, but the buffer processor + can also support bounded and unknown host buffer sizes by passing + paUtilBoundedHostBufferSize or paUtilUnknownHostBufferSize instead of + paUtilFixedHostBufferSize below. */ + + result = PaUtil_InitializeBufferProcessor( &stream->bufferProcessor, + inputChannelCount, inputSampleFormat, hostInputSampleFormat, + outputChannelCount, outputSampleFormat, hostOutputSampleFormat, + sampleRate, streamFlags, framesPerBuffer, + framesPerHostBuffer, paUtilFixedHostBufferSize, + streamCallback, userData ); + if( result != paNoError ) + goto error; + + + /* + IMPLEMENT ME: initialise the following fields with estimated or actual + values. + */ + stream->streamRepresentation.streamInfo.inputLatency = + (PaTime)PaUtil_GetBufferProcessorInputLatencyFrames(&stream->bufferProcessor) / sampleRate; /* inputLatency is specified in _seconds_ */ + stream->streamRepresentation.streamInfo.outputLatency = + (PaTime)PaUtil_GetBufferProcessorOutputLatencyFrames(&stream->bufferProcessor) / sampleRate; /* outputLatency is specified in _seconds_ */ + stream->streamRepresentation.streamInfo.sampleRate = sampleRate; + + + /* + IMPLEMENT ME: + - additional stream setup + opening + */ + + stream->framesPerHostCallback = framesPerHostBuffer; + + *s = (PaStream*)stream; + + return result; + +error: + if( stream ) + PaUtil_FreeMemory( stream ); + + return result; +} + +/* + ExampleHostProcessingLoop() illustrates the kind of processing which may + occur in a host implementation. + +*/ +static void ExampleHostProcessingLoop( void *inputBuffer, void *outputBuffer, void *userData ) +{ + PaSkeletonStream *stream = (PaSkeletonStream*)userData; + PaStreamCallbackTimeInfo timeInfo = {0,0,0}; /* IMPLEMENT ME */ + int callbackResult; + unsigned long framesProcessed; + + PaUtil_BeginCpuLoadMeasurement( &stream->cpuLoadMeasurer ); + + /* + IMPLEMENT ME: + - generate timing information + - handle buffer slips + */ + + /* + If you need to byte swap or shift inputBuffer to convert it into a + portaudio format, do it here. + */ + + + + PaUtil_BeginBufferProcessing( &stream->bufferProcessor, &timeInfo, 0 /* IMPLEMENT ME: pass underflow/overflow flags when necessary */ ); + + /* + depending on whether the host buffers are interleaved, non-interleaved + or a mixture, you will want to call PaUtil_SetInterleaved*Channels(), + PaUtil_SetNonInterleaved*Channel() or PaUtil_Set*Channel() here. + */ + + PaUtil_SetInputFrameCount( &stream->bufferProcessor, 0 /* default to host buffer size */ ); + PaUtil_SetInterleavedInputChannels( &stream->bufferProcessor, + 0, /* first channel of inputBuffer is channel 0 */ + inputBuffer, + 0 ); /* 0 - use inputChannelCount passed to init buffer processor */ + + PaUtil_SetOutputFrameCount( &stream->bufferProcessor, 0 /* default to host buffer size */ ); + PaUtil_SetInterleavedOutputChannels( &stream->bufferProcessor, + 0, /* first channel of outputBuffer is channel 0 */ + outputBuffer, + 0 ); /* 0 - use outputChannelCount passed to init buffer processor */ + + /* you must pass a valid value of callback result to PaUtil_EndBufferProcessing() + in general you would pass paContinue for normal operation, and + paComplete to drain the buffer processor's internal output buffer. + You can check whether the buffer processor's output buffer is empty + using PaUtil_IsBufferProcessorOuputEmpty( bufferProcessor ) + */ + callbackResult = paContinue; + framesProcessed = PaUtil_EndBufferProcessing( &stream->bufferProcessor, &callbackResult ); + + + /* + If you need to byte swap or shift outputBuffer to convert it to + host format, do it here. + */ + + PaUtil_EndCpuLoadMeasurement( &stream->cpuLoadMeasurer, framesProcessed ); + + + if( callbackResult == paContinue ) + { + /* nothing special to do */ + } + else if( callbackResult == paAbort ) + { + /* IMPLEMENT ME - finish playback immediately */ + + /* once finished, call the finished callback */ + if( stream->streamRepresentation.streamFinishedCallback != 0 ) + stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData ); + } + else + { + /* User callback has asked us to stop with paComplete or other non-zero value */ + + /* IMPLEMENT ME - finish playback once currently queued audio has completed */ + + /* once finished, call the finished callback */ + if( stream->streamRepresentation.streamFinishedCallback != 0 ) + stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData ); + } +} + + +/* + When CloseStream() is called, the multi-api layer ensures that + the stream has already been stopped or aborted. +*/ +static PaError CloseStream( PaStream* s ) +{ + PaError result = paNoError; + PaSkeletonStream *stream = (PaSkeletonStream*)s; + + /* + IMPLEMENT ME: + - additional stream closing + cleanup + */ + + PaUtil_TerminateBufferProcessor( &stream->bufferProcessor ); + PaUtil_TerminateStreamRepresentation( &stream->streamRepresentation ); + PaUtil_FreeMemory( stream ); + + return result; +} + + +static PaError StartStream( PaStream *s ) +{ + PaError result = paNoError; + PaSkeletonStream *stream = (PaSkeletonStream*)s; + + PaUtil_ResetBufferProcessor( &stream->bufferProcessor ); + + /* IMPLEMENT ME, see portaudio.h for required behavior */ + + /* suppress unused function warning. the code in ExampleHostProcessingLoop or + something similar should be implemented to feed samples to and from the + host after StartStream() is called. + */ + (void) ExampleHostProcessingLoop; + + return result; +} + + +static PaError StopStream( PaStream *s ) +{ + PaError result = paNoError; + PaSkeletonStream *stream = (PaSkeletonStream*)s; + + /* suppress unused variable warnings */ + (void) stream; + + /* IMPLEMENT ME, see portaudio.h for required behavior */ + + return result; +} + + +static PaError AbortStream( PaStream *s ) +{ + PaError result = paNoError; + PaSkeletonStream *stream = (PaSkeletonStream*)s; + + /* suppress unused variable warnings */ + (void) stream; + + /* IMPLEMENT ME, see portaudio.h for required behavior */ + + return result; +} + + +static PaError IsStreamStopped( PaStream *s ) +{ + PaSkeletonStream *stream = (PaSkeletonStream*)s; + + /* suppress unused variable warnings */ + (void) stream; + + /* IMPLEMENT ME, see portaudio.h for required behavior */ + + return 0; +} + + +static PaError IsStreamActive( PaStream *s ) +{ + PaSkeletonStream *stream = (PaSkeletonStream*)s; + + /* suppress unused variable warnings */ + (void) stream; + + /* IMPLEMENT ME, see portaudio.h for required behavior */ + + return 0; +} + + +static PaTime GetStreamTime( PaStream *s ) +{ + PaSkeletonStream *stream = (PaSkeletonStream*)s; + + /* suppress unused variable warnings */ + (void) stream; + + /* IMPLEMENT ME, see portaudio.h for required behavior*/ + + return 0; +} + + +static double GetStreamCpuLoad( PaStream* s ) +{ + PaSkeletonStream *stream = (PaSkeletonStream*)s; + + return PaUtil_GetCpuLoad( &stream->cpuLoadMeasurer ); +} + + +/* + As separate stream interfaces are used for blocking and callback + streams, the following functions can be guaranteed to only be called + for blocking streams. +*/ + +static PaError ReadStream( PaStream* s, + void *buffer, + unsigned long frames ) +{ + PaSkeletonStream *stream = (PaSkeletonStream*)s; + + /* suppress unused variable warnings */ + (void) buffer; + (void) frames; + (void) stream; + + /* IMPLEMENT ME, see portaudio.h for required behavior*/ + + return paNoError; +} + + +static PaError WriteStream( PaStream* s, + const void *buffer, + unsigned long frames ) +{ + PaSkeletonStream *stream = (PaSkeletonStream*)s; + + /* suppress unused variable warnings */ + (void) buffer; + (void) frames; + (void) stream; + + /* IMPLEMENT ME, see portaudio.h for required behavior*/ + + return paNoError; +} + + +static signed long GetStreamReadAvailable( PaStream* s ) +{ + PaSkeletonStream *stream = (PaSkeletonStream*)s; + + /* suppress unused variable warnings */ + (void) stream; + + /* IMPLEMENT ME, see portaudio.h for required behavior*/ + + return 0; +} + + +static signed long GetStreamWriteAvailable( PaStream* s ) +{ + PaSkeletonStream *stream = (PaSkeletonStream*)s; + + /* suppress unused variable warnings */ + (void) stream; + + /* IMPLEMENT ME, see portaudio.h for required behavior*/ + + return 0; +} + + + + diff --git a/3rdparty/portaudio/src/hostapi/wasapi/readme.txt b/3rdparty/portaudio/src/hostapi/wasapi/readme.txt index 7d4082b6e0..08fedeb074 100644 --- a/3rdparty/portaudio/src/hostapi/wasapi/readme.txt +++ b/3rdparty/portaudio/src/hostapi/wasapi/readme.txt @@ -1,25 +1,25 @@ -************** -* WASAPI API * -************** - ----------------------------------------- -Microsoft Visual Studio 2005SP1/2008/10 ----------------------------------------- -No specific actions are needed to compile WASAPI API under Visual Studio. -You are only required to install min. Windows Vista SDK (v6.0A) prior -compilation. - ----------------------------------------- -MinGW (GCC 32-bit)/ MinGW64 (GCC 64-bit) ----------------------------------------- -To compile under MinGW you are required to include 'mingw-include' directory -which contains necessary files with WASAPI API. These files are modified -in order to be compiled by MinGW compiler. These files are taken from -Windows Vista SDK (v6.0A). MinGW compilation is tested and proved to be -fully working under 32-bit and 64-bit modes. -MinGW (32-bit) tested: gcc version 4.4.0 (GCC) -MinGW64 (64-bit) tested: gcc version 4.4.4 20100226 (prerelease) (GCC) - -PortAudio -/Dmitry Kostjuchenko/ +************** +* WASAPI API * +************** + +---------------------------------------- +Microsoft Visual Studio 2005SP1/2008/10 +---------------------------------------- +No specific actions are needed to compile WASAPI API under Visual Studio. +You are only required to install min. Windows Vista SDK (v6.0A) prior +compilation. + +---------------------------------------- +MinGW (GCC 32-bit)/ MinGW64 (GCC 64-bit) +---------------------------------------- +To compile under MinGW you are required to include 'mingw-include' directory +which contains necessary files with WASAPI API. These files are modified +in order to be compiled by MinGW compiler. These files are taken from +Windows Vista SDK (v6.0A). MinGW compilation is tested and proved to be +fully working under 32-bit and 64-bit modes. +MinGW (32-bit) tested: gcc version 4.4.0 (GCC) +MinGW64 (64-bit) tested: gcc version 4.4.4 20100226 (prerelease) (GCC) + +PortAudio +/Dmitry Kostjuchenko/ 04.03.2010 \ No newline at end of file diff --git a/3rdparty/portaudio/src/hostapi/wdmks/readme.txt b/3rdparty/portaudio/src/hostapi/wdmks/readme.txt index b3faf33856..c4c349c2a4 100644 --- a/3rdparty/portaudio/src/hostapi/wdmks/readme.txt +++ b/3rdparty/portaudio/src/hostapi/wdmks/readme.txt @@ -1,85 +1,85 @@ -Notes about WDM-KS host API ---------------------------- - -Status history --------------- -16th January 2011: -Added support for WaveRT device API (Vista and later) for even lesser -latency support. - -10th November 2005: -Made following changes: - * OpenStream: Try all PaSampleFormats internally if the the chosen - format is not supported natively. This fixed several problems - with soundcards that did not take kindly to using 24-bit 3-byte formats. - * OpenStream: Make the minimum framesPerHostIBuffer (and framesPerHostOBuffer) - the default frameSize for the playback/recording pin. - * ProcessingThread: Added a switch to only call PaUtil_EndBufferProcessing - if the total input frames equals the total output frames - -5th September 2004: -This is the first public version of the code. It should be considered -an alpha release with zero guarantee not to crash on any particular -system. So far it has only been tested in the author's development -environment, which means a Win2k/SP2 PIII laptop with integrated -SoundMAX driver and USB Tascam US-428 compiled with both MinGW -(GCC 3.3) and MSVC++6 using the MS DirectX 9 SDK. -It has been most widely tested with the MinGW build, with most of the -test programs (particularly paqa_devs and paqa_errs) passing. -There are some notable failures: patest_out_underflow and both of the -blocking I/O tests (as blocking I/O is not implemented). -At this point the code needs to be tested with a much wider variety -of configurations and feedback provided from testers regarding -both working and failing cases. - -What is the WDM-KS host API? ----------------------------- -PortAudio for Windows currently has 3 functional host implementations. -MME uses the oldest Windows audio API which does not offer good -play/record latency. -DirectX improves this, but still imposes a penalty -of 10s of milliseconds due to the system mixing of streams from -multiple applications. -ASIO offers very good latency, but requires special drivers which are -not always available for cheaper audio hardware. Also, when ASIO -drivers are available, they are not always so robust because they -bypass all of the standardised Windows device driver architecture -and hit the hardware their own way. -Alternatively there are a couple of free (but closed source) ASIO -implementations which connect to the lower level Windows -"Kernel Streaming" API, but again these require special installation -by the user, and can be limited in functionality or difficult to use. - -This is where the PortAudio "WDM-KS" host implementation comes in. -It directly connects PortAudio to the same Kernel Streaming API which -those ASIO bridges use. This avoids the mixing penatly of DirectX, -giving at least as good latency as any ASIO driver, but it has the -advantage of working with ANY Windows audio hardware which is available -through the normal MME/DirectX routes without the user requiring -any additional device drivers to be installed, and allowing all -device selection to be done through the normal PortAudio API. - -Note that in general you should only be using this host API if your -application has a real requirement for very low latency audio (<20ms), -either because you are generating sounds in real-time based upon -user input, or you a processing recorded audio in real time. - -The only thing to be aware of is that using the KS interface will -block that device from being used by the rest of system through -the higher level APIs, or conversely, if the system is using -a device, the KS API will not be able to use it. MS recommend that -you should keep the device open only when your application has focus. -In PortAudio terms, this means having a stream Open on a WDMKS device. - -Usage ------ -To add the WDMKS backend to your program which is already using -PortAudio, you must define PA_USE_WDMKS=1 in your build file, -and include the pa_win_wdmks\pa_win_wdmks.c into your build. -The file should compile in both C and C++. -You will need a DirectX SDK installed on your system for the -ks.h and ksmedia.h header files. -You will need to link to the system "setupapi" library. -Note that if you use MinGW, you will get more warnings from -the DX header files when using GCC(C), and still a few warnings -with G++(CPP). +Notes about WDM-KS host API +--------------------------- + +Status history +-------------- +16th January 2011: +Added support for WaveRT device API (Vista and later) for even lesser +latency support. + +10th November 2005: +Made following changes: + * OpenStream: Try all PaSampleFormats internally if the the chosen + format is not supported natively. This fixed several problems + with soundcards that did not take kindly to using 24-bit 3-byte formats. + * OpenStream: Make the minimum framesPerHostIBuffer (and framesPerHostOBuffer) + the default frameSize for the playback/recording pin. + * ProcessingThread: Added a switch to only call PaUtil_EndBufferProcessing + if the total input frames equals the total output frames + +5th September 2004: +This is the first public version of the code. It should be considered +an alpha release with zero guarantee not to crash on any particular +system. So far it has only been tested in the author's development +environment, which means a Win2k/SP2 PIII laptop with integrated +SoundMAX driver and USB Tascam US-428 compiled with both MinGW +(GCC 3.3) and MSVC++6 using the MS DirectX 9 SDK. +It has been most widely tested with the MinGW build, with most of the +test programs (particularly paqa_devs and paqa_errs) passing. +There are some notable failures: patest_out_underflow and both of the +blocking I/O tests (as blocking I/O is not implemented). +At this point the code needs to be tested with a much wider variety +of configurations and feedback provided from testers regarding +both working and failing cases. + +What is the WDM-KS host API? +---------------------------- +PortAudio for Windows currently has 3 functional host implementations. +MME uses the oldest Windows audio API which does not offer good +play/record latency. +DirectX improves this, but still imposes a penalty +of 10s of milliseconds due to the system mixing of streams from +multiple applications. +ASIO offers very good latency, but requires special drivers which are +not always available for cheaper audio hardware. Also, when ASIO +drivers are available, they are not always so robust because they +bypass all of the standardised Windows device driver architecture +and hit the hardware their own way. +Alternatively there are a couple of free (but closed source) ASIO +implementations which connect to the lower level Windows +"Kernel Streaming" API, but again these require special installation +by the user, and can be limited in functionality or difficult to use. + +This is where the PortAudio "WDM-KS" host implementation comes in. +It directly connects PortAudio to the same Kernel Streaming API which +those ASIO bridges use. This avoids the mixing penatly of DirectX, +giving at least as good latency as any ASIO driver, but it has the +advantage of working with ANY Windows audio hardware which is available +through the normal MME/DirectX routes without the user requiring +any additional device drivers to be installed, and allowing all +device selection to be done through the normal PortAudio API. + +Note that in general you should only be using this host API if your +application has a real requirement for very low latency audio (<20ms), +either because you are generating sounds in real-time based upon +user input, or you a processing recorded audio in real time. + +The only thing to be aware of is that using the KS interface will +block that device from being used by the rest of system through +the higher level APIs, or conversely, if the system is using +a device, the KS API will not be able to use it. MS recommend that +you should keep the device open only when your application has focus. +In PortAudio terms, this means having a stream Open on a WDMKS device. + +Usage +----- +To add the WDMKS backend to your program which is already using +PortAudio, you must define PA_USE_WDMKS=1 in your build file, +and include the pa_win_wdmks\pa_win_wdmks.c into your build. +The file should compile in both C and C++. +You will need a DirectX SDK installed on your system for the +ks.h and ksmedia.h header files. +You will need to link to the system "setupapi" library. +Note that if you use MinGW, you will get more warnings from +the DX header files when using GCC(C), and still a few warnings +with G++(CPP). diff --git a/3rdparty/portaudio/src/os/win/pa_win_coinitialize.c b/3rdparty/portaudio/src/os/win/pa_win_coinitialize.c index e15b145e23..5c31716c0f 100644 --- a/3rdparty/portaudio/src/os/win/pa_win_coinitialize.c +++ b/3rdparty/portaudio/src/os/win/pa_win_coinitialize.c @@ -1,144 +1,144 @@ -/* - * Microsoft COM initialization routines - * Copyright (c) 1999-2011 Ross Bencina, Dmitry Kostjuchenko - * - * Based on the Open Source API proposed by Ross Bencina - * Copyright (c) 1999-2011 Ross Bencina, Phil Burk - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ - -/** @file - @ingroup win_src - - @brief Microsoft COM initialization routines. -*/ - -#include -#include - -#include "portaudio.h" -#include "pa_util.h" -#include "pa_debugprint.h" - -#include "pa_win_coinitialize.h" - - -#if (defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER >= 1200))) && !defined(_WIN32_WCE) /* MSC version 6 and above */ -#pragma comment( lib, "ole32.lib" ) -#endif - - -/* use some special bit patterns here to try to guard against uninitialized memory errors */ -#define PAWINUTIL_COM_INITIALIZED (0xb38f) -#define PAWINUTIL_COM_NOT_INITIALIZED (0xf1cd) - - -PaError PaWinUtil_CoInitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult ) -{ - HRESULT hr; - - comInitializationResult->state = PAWINUTIL_COM_NOT_INITIALIZED; - - /* - If COM is already initialized CoInitialize will either return - FALSE, or RPC_E_CHANGED_MODE if it was initialised in a different - threading mode. In either case we shouldn't consider it an error - but we need to be careful to not call CoUninitialize() if - RPC_E_CHANGED_MODE was returned. - */ - - hr = CoInitialize(0); /* use legacy-safe equivalent to CoInitializeEx(NULL, COINIT_APARTMENTTHREADED) */ - if( FAILED(hr) && hr != RPC_E_CHANGED_MODE ) - { - PA_DEBUG(("CoInitialize(0) failed. hr=%d\n", hr)); - - if( hr == E_OUTOFMEMORY ) - return paInsufficientMemory; - - { - char *lpMsgBuf; - FormatMessage( - FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, - hr, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &lpMsgBuf, - 0, - NULL - ); - PaUtil_SetLastHostErrorInfo( hostApiType, hr, lpMsgBuf ); - LocalFree( lpMsgBuf ); - } - - return paUnanticipatedHostError; - } - - if( hr != RPC_E_CHANGED_MODE ) - { - comInitializationResult->state = PAWINUTIL_COM_INITIALIZED; - - /* - Memorize calling thread id and report warning on Uninitialize if - calling thread is different as CoInitialize must match CoUninitialize - in the same thread. - */ - comInitializationResult->initializingThreadId = GetCurrentThreadId(); - } - - return paNoError; -} - - -void PaWinUtil_CoUninitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult ) -{ - if( comInitializationResult->state != PAWINUTIL_COM_NOT_INITIALIZED - && comInitializationResult->state != PAWINUTIL_COM_INITIALIZED ){ - - PA_DEBUG(("ERROR: PaWinUtil_CoUninitialize called without calling PaWinUtil_CoInitialize\n")); - } - - if( comInitializationResult->state == PAWINUTIL_COM_INITIALIZED ) - { - DWORD currentThreadId = GetCurrentThreadId(); - if( comInitializationResult->initializingThreadId != currentThreadId ) - { - PA_DEBUG(("ERROR: failed PaWinUtil_CoUninitialize calling thread[%d] does not match initializing thread[%d]\n", - currentThreadId, comInitializationResult->initializingThreadId)); - } - else - { - CoUninitialize(); - - comInitializationResult->state = PAWINUTIL_COM_NOT_INITIALIZED; - } - } +/* + * Microsoft COM initialization routines + * Copyright (c) 1999-2011 Ross Bencina, Dmitry Kostjuchenko + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 1999-2011 Ross Bencina, Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup win_src + + @brief Microsoft COM initialization routines. +*/ + +#include +#include + +#include "portaudio.h" +#include "pa_util.h" +#include "pa_debugprint.h" + +#include "pa_win_coinitialize.h" + + +#if (defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER >= 1200))) && !defined(_WIN32_WCE) /* MSC version 6 and above */ +#pragma comment( lib, "ole32.lib" ) +#endif + + +/* use some special bit patterns here to try to guard against uninitialized memory errors */ +#define PAWINUTIL_COM_INITIALIZED (0xb38f) +#define PAWINUTIL_COM_NOT_INITIALIZED (0xf1cd) + + +PaError PaWinUtil_CoInitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult ) +{ + HRESULT hr; + + comInitializationResult->state = PAWINUTIL_COM_NOT_INITIALIZED; + + /* + If COM is already initialized CoInitialize will either return + FALSE, or RPC_E_CHANGED_MODE if it was initialised in a different + threading mode. In either case we shouldn't consider it an error + but we need to be careful to not call CoUninitialize() if + RPC_E_CHANGED_MODE was returned. + */ + + hr = CoInitialize(0); /* use legacy-safe equivalent to CoInitializeEx(NULL, COINIT_APARTMENTTHREADED) */ + if( FAILED(hr) && hr != RPC_E_CHANGED_MODE ) + { + PA_DEBUG(("CoInitialize(0) failed. hr=%d\n", hr)); + + if( hr == E_OUTOFMEMORY ) + return paInsufficientMemory; + + { + char *lpMsgBuf; + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + hr, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &lpMsgBuf, + 0, + NULL + ); + PaUtil_SetLastHostErrorInfo( hostApiType, hr, lpMsgBuf ); + LocalFree( lpMsgBuf ); + } + + return paUnanticipatedHostError; + } + + if( hr != RPC_E_CHANGED_MODE ) + { + comInitializationResult->state = PAWINUTIL_COM_INITIALIZED; + + /* + Memorize calling thread id and report warning on Uninitialize if + calling thread is different as CoInitialize must match CoUninitialize + in the same thread. + */ + comInitializationResult->initializingThreadId = GetCurrentThreadId(); + } + + return paNoError; +} + + +void PaWinUtil_CoUninitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult ) +{ + if( comInitializationResult->state != PAWINUTIL_COM_NOT_INITIALIZED + && comInitializationResult->state != PAWINUTIL_COM_INITIALIZED ){ + + PA_DEBUG(("ERROR: PaWinUtil_CoUninitialize called without calling PaWinUtil_CoInitialize\n")); + } + + if( comInitializationResult->state == PAWINUTIL_COM_INITIALIZED ) + { + DWORD currentThreadId = GetCurrentThreadId(); + if( comInitializationResult->initializingThreadId != currentThreadId ) + { + PA_DEBUG(("ERROR: failed PaWinUtil_CoUninitialize calling thread[%d] does not match initializing thread[%d]\n", + currentThreadId, comInitializationResult->initializingThreadId)); + } + else + { + CoUninitialize(); + + comInitializationResult->state = PAWINUTIL_COM_NOT_INITIALIZED; + } + } } \ No newline at end of file diff --git a/3rdparty/portaudio/src/os/win/pa_win_coinitialize.h b/3rdparty/portaudio/src/os/win/pa_win_coinitialize.h index a76337c088..687ab83187 100644 --- a/3rdparty/portaudio/src/os/win/pa_win_coinitialize.h +++ b/3rdparty/portaudio/src/os/win/pa_win_coinitialize.h @@ -1,94 +1,94 @@ -/* - * Microsoft COM initialization routines - * Copyright (c) 1999-2011 Ross Bencina, Phil Burk - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ - -/** @file - @ingroup win_src - - @brief Microsoft COM initialization routines. -*/ - -#ifndef PA_WIN_COINITIALIZE_H -#define PA_WIN_COINITIALIZE_H - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - - -/** - @brief Data type used to hold the result of an attempt to initialize COM - using PaWinUtil_CoInitialize. Must be retained between a call to - PaWinUtil_CoInitialize and a matching call to PaWinUtil_CoUninitialize. -*/ -typedef struct PaWinUtilComInitializationResult{ - int state; - int initializingThreadId; -} PaWinUtilComInitializationResult; - - -/** - @brief Initialize Microsoft COM subsystem on the current thread. - - @param hostApiType the host API type id of the caller. Used for error reporting. - - @param comInitializationResult An output parameter. The value pointed to by - this parameter stores information required by PaWinUtil_CoUninitialize - to correctly uninitialize COM. The value should be retained and later - passed to PaWinUtil_CoUninitialize. - - If PaWinUtil_CoInitialize returns paNoError, the caller must later call - PaWinUtil_CoUninitialize once. -*/ -PaError PaWinUtil_CoInitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult ); - - -/** - @brief Uninitialize the Microsoft COM subsystem on the current thread using - the result of a previous call to PaWinUtil_CoInitialize. Must be called on the same - thread as PaWinUtil_CoInitialize. - - @param hostApiType the host API type id of the caller. Used for error reporting. - - @param comInitializationResult An input parameter. A pointer to a value previously - initialized by a call to PaWinUtil_CoInitialize. -*/ -void PaWinUtil_CoUninitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult ); - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif /* PA_WIN_COINITIALIZE_H */ +/* + * Microsoft COM initialization routines + * Copyright (c) 1999-2011 Ross Bencina, Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup win_src + + @brief Microsoft COM initialization routines. +*/ + +#ifndef PA_WIN_COINITIALIZE_H +#define PA_WIN_COINITIALIZE_H + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +/** + @brief Data type used to hold the result of an attempt to initialize COM + using PaWinUtil_CoInitialize. Must be retained between a call to + PaWinUtil_CoInitialize and a matching call to PaWinUtil_CoUninitialize. +*/ +typedef struct PaWinUtilComInitializationResult{ + int state; + int initializingThreadId; +} PaWinUtilComInitializationResult; + + +/** + @brief Initialize Microsoft COM subsystem on the current thread. + + @param hostApiType the host API type id of the caller. Used for error reporting. + + @param comInitializationResult An output parameter. The value pointed to by + this parameter stores information required by PaWinUtil_CoUninitialize + to correctly uninitialize COM. The value should be retained and later + passed to PaWinUtil_CoUninitialize. + + If PaWinUtil_CoInitialize returns paNoError, the caller must later call + PaWinUtil_CoUninitialize once. +*/ +PaError PaWinUtil_CoInitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult ); + + +/** + @brief Uninitialize the Microsoft COM subsystem on the current thread using + the result of a previous call to PaWinUtil_CoInitialize. Must be called on the same + thread as PaWinUtil_CoInitialize. + + @param hostApiType the host API type id of the caller. Used for error reporting. + + @param comInitializationResult An input parameter. A pointer to a value previously + initialized by a call to PaWinUtil_CoInitialize. +*/ +void PaWinUtil_CoUninitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult ); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PA_WIN_COINITIALIZE_H */ diff --git a/3rdparty/soundtouch/BPMDetect.cpp b/3rdparty/soundtouch/BPMDetect.cpp index 34dbb4730a..6f3cf04daa 100644 --- a/3rdparty/soundtouch/BPMDetect.cpp +++ b/3rdparty/soundtouch/BPMDetect.cpp @@ -1,370 +1,370 @@ -//////////////////////////////////////////////////////////////////////////////// -/// -/// Beats-per-minute (BPM) detection routine. -/// -/// The beat detection algorithm works as follows: -/// - Use function 'inputSamples' to input a chunks of samples to the class for -/// analysis. It's a good idea to enter a large sound file or stream in smallish -/// chunks of around few kilosamples in order not to extinguish too much RAM memory. -/// - Inputted sound data is decimated to approx 500 Hz to reduce calculation burden, -/// which is basically ok as low (bass) frequencies mostly determine the beat rate. -/// Simple averaging is used for anti-alias filtering because the resulting signal -/// quality isn't of that high importance. -/// - Decimated sound data is enveloped, i.e. the amplitude shape is detected by -/// taking absolute value that's smoothed by sliding average. Signal levels that -/// are below a couple of times the general RMS amplitude level are cut away to -/// leave only notable peaks there. -/// - Repeating sound patterns (e.g. beats) are detected by calculating short-term -/// autocorrelation function of the enveloped signal. -/// - After whole sound data file has been analyzed as above, the bpm level is -/// detected by function 'getBpm' that finds the highest peak of the autocorrelation -/// function, calculates it's precise location and converts this reading to bpm's. -/// -/// Author : Copyright (c) Olli Parviainen -/// Author e-mail : oparviai 'at' iki.fi -/// SoundTouch WWW: http://www.surina.net/soundtouch -/// -//////////////////////////////////////////////////////////////////////////////// -// -// Last changed : $Date: 2012-08-30 16:45:25 -0300 (qui, 30 ago 2012) $ -// File revision : $Revision: 4 $ -// -// $Id: BPMDetect.cpp 149 2012-08-30 19:45:25Z oparviai $ -// -//////////////////////////////////////////////////////////////////////////////// -// -// License : -// -// SoundTouch audio processing library -// Copyright (c) Olli Parviainen -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -//////////////////////////////////////////////////////////////////////////////// - -#include -#include -#include -#include -#include "FIFOSampleBuffer.h" -#include "PeakFinder.h" -#include "BPMDetect.h" - -using namespace soundtouch; - -#define INPUT_BLOCK_SAMPLES 2048 -#define DECIMATED_BLOCK_SAMPLES 256 - -/// decay constant for calculating RMS volume sliding average approximation -/// (time constant is about 10 sec) -const float avgdecay = 0.99986f; - -/// Normalization coefficient for calculating RMS sliding average approximation. -const float avgnorm = (1 - avgdecay); - - -//////////////////////////////////////////////////////////////////////////////// - -// Enable following define to create bpm analysis file: - -// #define _CREATE_BPM_DEBUG_FILE - -#ifdef _CREATE_BPM_DEBUG_FILE - - #define DEBUGFILE_NAME "c:\\temp\\soundtouch-bpm-debug.txt" - - static void _SaveDebugData(const float *data, int minpos, int maxpos, double coeff) - { - FILE *fptr = fopen(DEBUGFILE_NAME, "wt"); - int i; - - if (fptr) - { - printf("\n\nWriting BPM debug data into file " DEBUGFILE_NAME "\n\n"); - for (i = minpos; i < maxpos; i ++) - { - fprintf(fptr, "%d\t%.1lf\t%f\n", i, coeff / (double)i, data[i]); - } - fclose(fptr); - } - } -#else - #define _SaveDebugData(a,b,c,d) -#endif - -//////////////////////////////////////////////////////////////////////////////// - - -BPMDetect::BPMDetect(int numChannels, int aSampleRate) -{ - this->sampleRate = aSampleRate; - this->channels = numChannels; - - decimateSum = 0; - decimateCount = 0; - - envelopeAccu = 0; - - // Initialize RMS volume accumulator to RMS level of 1500 (out of 32768) that's - // safe initial RMS signal level value for song data. This value is then adapted - // to the actual level during processing. -#ifdef SOUNDTOUCH_INTEGER_SAMPLES - // integer samples - RMSVolumeAccu = (1500 * 1500) / avgnorm; -#else - // float samples, scaled to range [-1..+1[ - RMSVolumeAccu = (0.045f * 0.045f) / avgnorm; -#endif - - // choose decimation factor so that result is approx. 1000 Hz - decimateBy = sampleRate / 1000; - assert(decimateBy > 0); - assert(INPUT_BLOCK_SAMPLES < decimateBy * DECIMATED_BLOCK_SAMPLES); - - // Calculate window length & starting item according to desired min & max bpms - windowLen = (60 * sampleRate) / (decimateBy * MIN_BPM); - windowStart = (60 * sampleRate) / (decimateBy * MAX_BPM); - - assert(windowLen > windowStart); - - // allocate new working objects - xcorr = new float[windowLen]; - memset(xcorr, 0, windowLen * sizeof(float)); - - // allocate processing buffer - buffer = new FIFOSampleBuffer(); - // we do processing in mono mode - buffer->setChannels(1); - buffer->clear(); -} - - - -BPMDetect::~BPMDetect() -{ - delete[] xcorr; - delete buffer; -} - - - -/// convert to mono, low-pass filter & decimate to about 500 Hz. -/// return number of outputted samples. -/// -/// Decimation is used to remove the unnecessary frequencies and thus to reduce -/// the amount of data needed to be processed as calculating autocorrelation -/// function is a very-very heavy operation. -/// -/// Anti-alias filtering is done simply by averaging the samples. This is really a -/// poor-man's anti-alias filtering, but it's not so critical in this kind of application -/// (it'd also be difficult to design a high-quality filter with steep cut-off at very -/// narrow band) -int BPMDetect::decimate(SAMPLETYPE *dest, const SAMPLETYPE *src, int numsamples) -{ - int count, outcount; - LONG_SAMPLETYPE out; - - assert(channels > 0); - assert(decimateBy > 0); - outcount = 0; - for (count = 0; count < numsamples; count ++) - { - int j; - - // convert to mono and accumulate - for (j = 0; j < channels; j ++) - { - decimateSum += src[j]; - } - src += j; - - decimateCount ++; - if (decimateCount >= decimateBy) - { - // Store every Nth sample only - out = (LONG_SAMPLETYPE)(decimateSum / (decimateBy * channels)); - decimateSum = 0; - decimateCount = 0; -#ifdef SOUNDTOUCH_INTEGER_SAMPLES - // check ranges for sure (shouldn't actually be necessary) - if (out > 32767) - { - out = 32767; - } - else if (out < -32768) - { - out = -32768; - } -#endif // SOUNDTOUCH_INTEGER_SAMPLES - dest[outcount] = (SAMPLETYPE)out; - outcount ++; - } - } - return outcount; -} - - - -// Calculates autocorrelation function of the sample history buffer -void BPMDetect::updateXCorr(int process_samples) -{ - int offs; - SAMPLETYPE *pBuffer; - - assert(buffer->numSamples() >= (uint)(process_samples + windowLen)); - - pBuffer = buffer->ptrBegin(); - for (offs = windowStart; offs < windowLen; offs ++) - { - LONG_SAMPLETYPE sum; - int i; - - sum = 0; - for (i = 0; i < process_samples; i ++) - { - sum += pBuffer[i] * pBuffer[i + offs]; // scaling the sub-result shouldn't be necessary - } -// xcorr[offs] *= xcorr_decay; // decay 'xcorr' here with suitable coefficients - // if it's desired that the system adapts automatically to - // various bpms, e.g. in processing continouos music stream. - // The 'xcorr_decay' should be a value that's smaller than but - // close to one, and should also depend on 'process_samples' value. - - xcorr[offs] += (float)sum; - } -} - - -// Calculates envelope of the sample data -void BPMDetect::calcEnvelope(SAMPLETYPE *samples, int numsamples) -{ - const static double decay = 0.7f; // decay constant for smoothing the envelope - const static double norm = (1 - decay); - - int i; - LONG_SAMPLETYPE out; - double val; - - for (i = 0; i < numsamples; i ++) - { - // calc average RMS volume - RMSVolumeAccu *= avgdecay; - val = (float)fabs((float)samples[i]); - RMSVolumeAccu += val * val; - - // cut amplitudes that are below cutoff ~2 times RMS volume - // (we're interested in peak values, not the silent moments) - if (val < 0.5 * sqrt(RMSVolumeAccu * avgnorm)) - { - val = 0; - } - - // smooth amplitude envelope - envelopeAccu *= decay; - envelopeAccu += val; - out = (LONG_SAMPLETYPE)(envelopeAccu * norm); - -#ifdef SOUNDTOUCH_INTEGER_SAMPLES - // cut peaks (shouldn't be necessary though) - if (out > 32767) out = 32767; -#endif // SOUNDTOUCH_INTEGER_SAMPLES - samples[i] = (SAMPLETYPE)out; - } -} - - - -void BPMDetect::inputSamples(const SAMPLETYPE *samples, int numSamples) -{ - SAMPLETYPE decimated[DECIMATED_BLOCK_SAMPLES]; - - // iterate so that max INPUT_BLOCK_SAMPLES processed per iteration - while (numSamples > 0) - { - int block; - int decSamples; - - block = (numSamples > INPUT_BLOCK_SAMPLES) ? INPUT_BLOCK_SAMPLES : numSamples; - - // decimate. note that converts to mono at the same time - decSamples = decimate(decimated, samples, block); - samples += block * channels; - numSamples -= block; - - // envelope new samples and add them to buffer - calcEnvelope(decimated, decSamples); - buffer->putSamples(decimated, decSamples); - } - - // when the buffer has enought samples for processing... - if ((int)buffer->numSamples() > windowLen) - { - int processLength; - - // how many samples are processed - processLength = (int)buffer->numSamples() - windowLen; - - // ... calculate autocorrelations for oldest samples... - updateXCorr(processLength); - // ... and remove them from the buffer - buffer->receiveSamples(processLength); - } -} - - - -void BPMDetect::removeBias() -{ - int i; - float minval = 1e12f; // arbitrary large number - - for (i = windowStart; i < windowLen; i ++) - { - if (xcorr[i] < minval) - { - minval = xcorr[i]; - } - } - - for (i = windowStart; i < windowLen; i ++) - { - xcorr[i] -= minval; - } -} - - -float BPMDetect::getBpm() -{ - double peakPos; - double coeff; - PeakFinder peakFinder; - - coeff = 60.0 * ((double)sampleRate / (double)decimateBy); - - // save bpm debug analysis data if debug data enabled - _SaveDebugData(xcorr, windowStart, windowLen, coeff); - - // remove bias from xcorr data - removeBias(); - - // find peak position - peakPos = peakFinder.detectPeak(xcorr, windowStart, windowLen); - - assert(decimateBy != 0); - if (peakPos < 1e-9) return 0.0; // detection failed. - - // calculate BPM - return (float) (coeff / peakPos); -} +//////////////////////////////////////////////////////////////////////////////// +/// +/// Beats-per-minute (BPM) detection routine. +/// +/// The beat detection algorithm works as follows: +/// - Use function 'inputSamples' to input a chunks of samples to the class for +/// analysis. It's a good idea to enter a large sound file or stream in smallish +/// chunks of around few kilosamples in order not to extinguish too much RAM memory. +/// - Inputted sound data is decimated to approx 500 Hz to reduce calculation burden, +/// which is basically ok as low (bass) frequencies mostly determine the beat rate. +/// Simple averaging is used for anti-alias filtering because the resulting signal +/// quality isn't of that high importance. +/// - Decimated sound data is enveloped, i.e. the amplitude shape is detected by +/// taking absolute value that's smoothed by sliding average. Signal levels that +/// are below a couple of times the general RMS amplitude level are cut away to +/// leave only notable peaks there. +/// - Repeating sound patterns (e.g. beats) are detected by calculating short-term +/// autocorrelation function of the enveloped signal. +/// - After whole sound data file has been analyzed as above, the bpm level is +/// detected by function 'getBpm' that finds the highest peak of the autocorrelation +/// function, calculates it's precise location and converts this reading to bpm's. +/// +/// Author : Copyright (c) Olli Parviainen +/// Author e-mail : oparviai 'at' iki.fi +/// SoundTouch WWW: http://www.surina.net/soundtouch +/// +//////////////////////////////////////////////////////////////////////////////// +// +// Last changed : $Date: 2012-08-30 16:45:25 -0300 (qui, 30 ago 2012) $ +// File revision : $Revision: 4 $ +// +// $Id: BPMDetect.cpp 149 2012-08-30 19:45:25Z oparviai $ +// +//////////////////////////////////////////////////////////////////////////////// +// +// License : +// +// SoundTouch audio processing library +// Copyright (c) Olli Parviainen +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include "FIFOSampleBuffer.h" +#include "PeakFinder.h" +#include "BPMDetect.h" + +using namespace soundtouch; + +#define INPUT_BLOCK_SAMPLES 2048 +#define DECIMATED_BLOCK_SAMPLES 256 + +/// decay constant for calculating RMS volume sliding average approximation +/// (time constant is about 10 sec) +const float avgdecay = 0.99986f; + +/// Normalization coefficient for calculating RMS sliding average approximation. +const float avgnorm = (1 - avgdecay); + + +//////////////////////////////////////////////////////////////////////////////// + +// Enable following define to create bpm analysis file: + +// #define _CREATE_BPM_DEBUG_FILE + +#ifdef _CREATE_BPM_DEBUG_FILE + + #define DEBUGFILE_NAME "c:\\temp\\soundtouch-bpm-debug.txt" + + static void _SaveDebugData(const float *data, int minpos, int maxpos, double coeff) + { + FILE *fptr = fopen(DEBUGFILE_NAME, "wt"); + int i; + + if (fptr) + { + printf("\n\nWriting BPM debug data into file " DEBUGFILE_NAME "\n\n"); + for (i = minpos; i < maxpos; i ++) + { + fprintf(fptr, "%d\t%.1lf\t%f\n", i, coeff / (double)i, data[i]); + } + fclose(fptr); + } + } +#else + #define _SaveDebugData(a,b,c,d) +#endif + +//////////////////////////////////////////////////////////////////////////////// + + +BPMDetect::BPMDetect(int numChannels, int aSampleRate) +{ + this->sampleRate = aSampleRate; + this->channels = numChannels; + + decimateSum = 0; + decimateCount = 0; + + envelopeAccu = 0; + + // Initialize RMS volume accumulator to RMS level of 1500 (out of 32768) that's + // safe initial RMS signal level value for song data. This value is then adapted + // to the actual level during processing. +#ifdef SOUNDTOUCH_INTEGER_SAMPLES + // integer samples + RMSVolumeAccu = (1500 * 1500) / avgnorm; +#else + // float samples, scaled to range [-1..+1[ + RMSVolumeAccu = (0.045f * 0.045f) / avgnorm; +#endif + + // choose decimation factor so that result is approx. 1000 Hz + decimateBy = sampleRate / 1000; + assert(decimateBy > 0); + assert(INPUT_BLOCK_SAMPLES < decimateBy * DECIMATED_BLOCK_SAMPLES); + + // Calculate window length & starting item according to desired min & max bpms + windowLen = (60 * sampleRate) / (decimateBy * MIN_BPM); + windowStart = (60 * sampleRate) / (decimateBy * MAX_BPM); + + assert(windowLen > windowStart); + + // allocate new working objects + xcorr = new float[windowLen]; + memset(xcorr, 0, windowLen * sizeof(float)); + + // allocate processing buffer + buffer = new FIFOSampleBuffer(); + // we do processing in mono mode + buffer->setChannels(1); + buffer->clear(); +} + + + +BPMDetect::~BPMDetect() +{ + delete[] xcorr; + delete buffer; +} + + + +/// convert to mono, low-pass filter & decimate to about 500 Hz. +/// return number of outputted samples. +/// +/// Decimation is used to remove the unnecessary frequencies and thus to reduce +/// the amount of data needed to be processed as calculating autocorrelation +/// function is a very-very heavy operation. +/// +/// Anti-alias filtering is done simply by averaging the samples. This is really a +/// poor-man's anti-alias filtering, but it's not so critical in this kind of application +/// (it'd also be difficult to design a high-quality filter with steep cut-off at very +/// narrow band) +int BPMDetect::decimate(SAMPLETYPE *dest, const SAMPLETYPE *src, int numsamples) +{ + int count, outcount; + LONG_SAMPLETYPE out; + + assert(channels > 0); + assert(decimateBy > 0); + outcount = 0; + for (count = 0; count < numsamples; count ++) + { + int j; + + // convert to mono and accumulate + for (j = 0; j < channels; j ++) + { + decimateSum += src[j]; + } + src += j; + + decimateCount ++; + if (decimateCount >= decimateBy) + { + // Store every Nth sample only + out = (LONG_SAMPLETYPE)(decimateSum / (decimateBy * channels)); + decimateSum = 0; + decimateCount = 0; +#ifdef SOUNDTOUCH_INTEGER_SAMPLES + // check ranges for sure (shouldn't actually be necessary) + if (out > 32767) + { + out = 32767; + } + else if (out < -32768) + { + out = -32768; + } +#endif // SOUNDTOUCH_INTEGER_SAMPLES + dest[outcount] = (SAMPLETYPE)out; + outcount ++; + } + } + return outcount; +} + + + +// Calculates autocorrelation function of the sample history buffer +void BPMDetect::updateXCorr(int process_samples) +{ + int offs; + SAMPLETYPE *pBuffer; + + assert(buffer->numSamples() >= (uint)(process_samples + windowLen)); + + pBuffer = buffer->ptrBegin(); + for (offs = windowStart; offs < windowLen; offs ++) + { + LONG_SAMPLETYPE sum; + int i; + + sum = 0; + for (i = 0; i < process_samples; i ++) + { + sum += pBuffer[i] * pBuffer[i + offs]; // scaling the sub-result shouldn't be necessary + } +// xcorr[offs] *= xcorr_decay; // decay 'xcorr' here with suitable coefficients + // if it's desired that the system adapts automatically to + // various bpms, e.g. in processing continouos music stream. + // The 'xcorr_decay' should be a value that's smaller than but + // close to one, and should also depend on 'process_samples' value. + + xcorr[offs] += (float)sum; + } +} + + +// Calculates envelope of the sample data +void BPMDetect::calcEnvelope(SAMPLETYPE *samples, int numsamples) +{ + const static double decay = 0.7f; // decay constant for smoothing the envelope + const static double norm = (1 - decay); + + int i; + LONG_SAMPLETYPE out; + double val; + + for (i = 0; i < numsamples; i ++) + { + // calc average RMS volume + RMSVolumeAccu *= avgdecay; + val = (float)fabs((float)samples[i]); + RMSVolumeAccu += val * val; + + // cut amplitudes that are below cutoff ~2 times RMS volume + // (we're interested in peak values, not the silent moments) + if (val < 0.5 * sqrt(RMSVolumeAccu * avgnorm)) + { + val = 0; + } + + // smooth amplitude envelope + envelopeAccu *= decay; + envelopeAccu += val; + out = (LONG_SAMPLETYPE)(envelopeAccu * norm); + +#ifdef SOUNDTOUCH_INTEGER_SAMPLES + // cut peaks (shouldn't be necessary though) + if (out > 32767) out = 32767; +#endif // SOUNDTOUCH_INTEGER_SAMPLES + samples[i] = (SAMPLETYPE)out; + } +} + + + +void BPMDetect::inputSamples(const SAMPLETYPE *samples, int numSamples) +{ + SAMPLETYPE decimated[DECIMATED_BLOCK_SAMPLES]; + + // iterate so that max INPUT_BLOCK_SAMPLES processed per iteration + while (numSamples > 0) + { + int block; + int decSamples; + + block = (numSamples > INPUT_BLOCK_SAMPLES) ? INPUT_BLOCK_SAMPLES : numSamples; + + // decimate. note that converts to mono at the same time + decSamples = decimate(decimated, samples, block); + samples += block * channels; + numSamples -= block; + + // envelope new samples and add them to buffer + calcEnvelope(decimated, decSamples); + buffer->putSamples(decimated, decSamples); + } + + // when the buffer has enought samples for processing... + if ((int)buffer->numSamples() > windowLen) + { + int processLength; + + // how many samples are processed + processLength = (int)buffer->numSamples() - windowLen; + + // ... calculate autocorrelations for oldest samples... + updateXCorr(processLength); + // ... and remove them from the buffer + buffer->receiveSamples(processLength); + } +} + + + +void BPMDetect::removeBias() +{ + int i; + float minval = 1e12f; // arbitrary large number + + for (i = windowStart; i < windowLen; i ++) + { + if (xcorr[i] < minval) + { + minval = xcorr[i]; + } + } + + for (i = windowStart; i < windowLen; i ++) + { + xcorr[i] -= minval; + } +} + + +float BPMDetect::getBpm() +{ + double peakPos; + double coeff; + PeakFinder peakFinder; + + coeff = 60.0 * ((double)sampleRate / (double)decimateBy); + + // save bpm debug analysis data if debug data enabled + _SaveDebugData(xcorr, windowStart, windowLen, coeff); + + // remove bias from xcorr data + removeBias(); + + // find peak position + peakPos = peakFinder.detectPeak(xcorr, windowStart, windowLen); + + assert(decimateBy != 0); + if (peakPos < 1e-9) return 0.0; // detection failed. + + // calculate BPM + return (float) (coeff / peakPos); +} diff --git a/3rdparty/soundtouch/Makefile.am b/3rdparty/soundtouch/Makefile.am index 709f0cbd23..3c70f56e05 100644 --- a/3rdparty/soundtouch/Makefile.am +++ b/3rdparty/soundtouch/Makefile.am @@ -1,71 +1,71 @@ -## Process this file with automake to create Makefile.in -## -## $Id: Makefile.am 138 2012-04-01 20:00:09Z oparviai $ -## -## This file is part of SoundTouch, an audio processing library for pitch/time adjustments -## -## SoundTouch 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. -## -## SoundTouch is distributed in the hope that it will be useful, but WITHOUT ANY -## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -## A PARTICULAR PURPOSE. See the GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License along with -## this program; if not, write to the Free Software Foundation, Inc., 59 Temple -## Place - Suite 330, Boston, MA 02111-1307, USA - - -include $(top_srcdir)/config/am_include.mk - - -# set to something if you want other stuff to be included in the distribution tarball -EXTRA_DIST=SoundTouch.dsp SoundTouch.dsw SoundTouch.sln SoundTouch.vcproj - -noinst_HEADERS=AAFilter.h cpu_detect.h cpu_detect_x86.cpp FIRFilter.h RateTransposer.h TDStretch.h PeakFinder.h - -lib_LTLIBRARIES=libSoundTouch.la -# -libSoundTouch_la_SOURCES=AAFilter.cpp FIRFilter.cpp FIFOSampleBuffer.cpp RateTransposer.cpp SoundTouch.cpp TDStretch.cpp cpu_detect_x86.cpp BPMDetect.cpp PeakFinder.cpp - - -# Compiler flags -AM_CXXFLAGS=-O3 -fcheck-new -I../../include - -# Compile the files that need MMX and SSE individually. -libSoundTouch_la_LIBADD=libSoundTouchMMX.la libSoundTouchSSE.la -noinst_LTLIBRARIES=libSoundTouchMMX.la libSoundTouchSSE.la -libSoundTouchMMX_la_SOURCES=mmx_optimized.cpp -libSoundTouchSSE_la_SOURCES=sse_optimized.cpp - -# We enable optimizations by default. -# If MMX is supported compile with -mmmx. -# Do not assume -msse is also supported. -if HAVE_MMX -libSoundTouchMMX_la_CXXFLAGS = -mmmx $(AM_CXXFLAGS) -else -libSoundTouchMMX_la_CXXFLAGS = $(AM_CXXFLAGS) -endif - -# We enable optimizations by default. -# If SSE is supported compile with -msse. -if HAVE_SSE -libSoundTouchSSE_la_CXXFLAGS = -msse $(AM_CXXFLAGS) -else -libSoundTouchSSE_la_CXXFLAGS = $(AM_CXXFLAGS) -endif - -# Let the user disable optimizations if he wishes to. -if !X86_OPTIMIZATIONS -libSoundTouchMMX_la_CXXFLAGS = $(AM_CXXFLAGS) -libSoundTouchSSE_la_CXXFLAGS = $(AM_CXXFLAGS) -endif - - -# other linking flags to add -# noinst_LTLIBRARIES = libSoundTouchOpt.la -# libSoundTouch_la_LIBADD = libSoundTouchOpt.la -# libSoundTouchOpt_la_SOURCES = mmx_optimized.cpp sse_optimized.cpp -# libSoundTouchOpt_la_CXXFLAGS = -O3 -msse -fcheck-new -I../../include +## Process this file with automake to create Makefile.in +## +## $Id: Makefile.am 138 2012-04-01 20:00:09Z oparviai $ +## +## This file is part of SoundTouch, an audio processing library for pitch/time adjustments +## +## SoundTouch 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. +## +## SoundTouch is distributed in the hope that it will be useful, but WITHOUT ANY +## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +## A PARTICULAR PURPOSE. See the GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License along with +## this program; if not, write to the Free Software Foundation, Inc., 59 Temple +## Place - Suite 330, Boston, MA 02111-1307, USA + + +include $(top_srcdir)/config/am_include.mk + + +# set to something if you want other stuff to be included in the distribution tarball +EXTRA_DIST=SoundTouch.dsp SoundTouch.dsw SoundTouch.sln SoundTouch.vcproj + +noinst_HEADERS=AAFilter.h cpu_detect.h cpu_detect_x86.cpp FIRFilter.h RateTransposer.h TDStretch.h PeakFinder.h + +lib_LTLIBRARIES=libSoundTouch.la +# +libSoundTouch_la_SOURCES=AAFilter.cpp FIRFilter.cpp FIFOSampleBuffer.cpp RateTransposer.cpp SoundTouch.cpp TDStretch.cpp cpu_detect_x86.cpp BPMDetect.cpp PeakFinder.cpp + + +# Compiler flags +AM_CXXFLAGS=-O3 -fcheck-new -I../../include + +# Compile the files that need MMX and SSE individually. +libSoundTouch_la_LIBADD=libSoundTouchMMX.la libSoundTouchSSE.la +noinst_LTLIBRARIES=libSoundTouchMMX.la libSoundTouchSSE.la +libSoundTouchMMX_la_SOURCES=mmx_optimized.cpp +libSoundTouchSSE_la_SOURCES=sse_optimized.cpp + +# We enable optimizations by default. +# If MMX is supported compile with -mmmx. +# Do not assume -msse is also supported. +if HAVE_MMX +libSoundTouchMMX_la_CXXFLAGS = -mmmx $(AM_CXXFLAGS) +else +libSoundTouchMMX_la_CXXFLAGS = $(AM_CXXFLAGS) +endif + +# We enable optimizations by default. +# If SSE is supported compile with -msse. +if HAVE_SSE +libSoundTouchSSE_la_CXXFLAGS = -msse $(AM_CXXFLAGS) +else +libSoundTouchSSE_la_CXXFLAGS = $(AM_CXXFLAGS) +endif + +# Let the user disable optimizations if he wishes to. +if !X86_OPTIMIZATIONS +libSoundTouchMMX_la_CXXFLAGS = $(AM_CXXFLAGS) +libSoundTouchSSE_la_CXXFLAGS = $(AM_CXXFLAGS) +endif + + +# other linking flags to add +# noinst_LTLIBRARIES = libSoundTouchOpt.la +# libSoundTouch_la_LIBADD = libSoundTouchOpt.la +# libSoundTouchOpt_la_SOURCES = mmx_optimized.cpp sse_optimized.cpp +# libSoundTouchOpt_la_CXXFLAGS = -O3 -msse -fcheck-new -I../../include diff --git a/3rdparty/soundtouch/PeakFinder.cpp b/3rdparty/soundtouch/PeakFinder.cpp index 71203983f6..cc6a81d0a6 100644 --- a/3rdparty/soundtouch/PeakFinder.cpp +++ b/3rdparty/soundtouch/PeakFinder.cpp @@ -1,276 +1,276 @@ -//////////////////////////////////////////////////////////////////////////////// -/// -/// Peak detection routine. -/// -/// The routine detects highest value on an array of values and calculates the -/// precise peak location as a mass-center of the 'hump' around the peak value. -/// -/// Author : Copyright (c) Olli Parviainen -/// Author e-mail : oparviai 'at' iki.fi -/// SoundTouch WWW: http://www.surina.net/soundtouch -/// -//////////////////////////////////////////////////////////////////////////////// -// -// Last changed : $Date: 2012-12-28 17:52:47 -0200 (sex, 28 dez 2012) $ -// File revision : $Revision: 4 $ -// -// $Id: PeakFinder.cpp 164 2012-12-28 19:52:47Z oparviai $ -// -//////////////////////////////////////////////////////////////////////////////// -// -// License : -// -// SoundTouch audio processing library -// Copyright (c) Olli Parviainen -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -//////////////////////////////////////////////////////////////////////////////// - -#include -#include - -#include "PeakFinder.h" - -using namespace soundtouch; - -#define max(x, y) (((x) > (y)) ? (x) : (y)) - - -PeakFinder::PeakFinder() -{ - minPos = maxPos = 0; -} - - -// Finds real 'top' of a peak hump from neighnourhood of the given 'peakpos'. -int PeakFinder::findTop(const float *data, int peakpos) const -{ - int i; - int start, end; - float refvalue; - - refvalue = data[peakpos]; - - // seek within ±10 points - start = peakpos - 10; - if (start < minPos) start = minPos; - end = peakpos + 10; - if (end > maxPos) end = maxPos; - - for (i = start; i <= end; i ++) - { - if (data[i] > refvalue) - { - peakpos = i; - refvalue = data[i]; - } - } - - // failure if max value is at edges of seek range => it's not peak, it's at slope. - if ((peakpos == start) || (peakpos == end)) return 0; - - return peakpos; -} - - -// Finds 'ground level' of a peak hump by starting from 'peakpos' and proceeding -// to direction defined by 'direction' until next 'hump' after minimum value will -// begin -int PeakFinder::findGround(const float *data, int peakpos, int direction) const -{ - int lowpos; - int pos; - int climb_count; - float refvalue; - float delta; - - climb_count = 0; - refvalue = data[peakpos]; - lowpos = peakpos; - - pos = peakpos; - - while ((pos > minPos+1) && (pos < maxPos-1)) - { - int prevpos; - - prevpos = pos; - pos += direction; - - // calculate derivate - delta = data[pos] - data[prevpos]; - if (delta <= 0) - { - // going downhill, ok - if (climb_count) - { - climb_count --; // decrease climb count - } - - // check if new minimum found - if (data[pos] < refvalue) - { - // new minimum found - lowpos = pos; - refvalue = data[pos]; - } - } - else - { - // going uphill, increase climbing counter - climb_count ++; - if (climb_count > 5) break; // we've been climbing too long => it's next uphill => quit - } - } - return lowpos; -} - - -// Find offset where the value crosses the given level, when starting from 'peakpos' and -// proceeds to direction defined in 'direction' -int PeakFinder::findCrossingLevel(const float *data, float level, int peakpos, int direction) const -{ - float peaklevel; - int pos; - - peaklevel = data[peakpos]; - assert(peaklevel >= level); - pos = peakpos; - while ((pos >= minPos) && (pos < maxPos)) - { - if (data[pos + direction] < level) return pos; // crossing found - pos += direction; - } - return -1; // not found -} - - -// Calculates the center of mass location of 'data' array items between 'firstPos' and 'lastPos' -double PeakFinder::calcMassCenter(const float *data, int firstPos, int lastPos) const -{ - int i; - float sum; - float wsum; - - sum = 0; - wsum = 0; - for (i = firstPos; i <= lastPos; i ++) - { - sum += (float)i * data[i]; - wsum += data[i]; - } - - if (wsum < 1e-6) return 0; - return sum / wsum; -} - - - -/// get exact center of peak near given position by calculating local mass of center -double PeakFinder::getPeakCenter(const float *data, int peakpos) const -{ - float peakLevel; // peak level - int crosspos1, crosspos2; // position where the peak 'hump' crosses cutting level - float cutLevel; // cutting value - float groundLevel; // ground level of the peak - int gp1, gp2; // bottom positions of the peak 'hump' - - // find ground positions. - gp1 = findGround(data, peakpos, -1); - gp2 = findGround(data, peakpos, 1); - - groundLevel = 0.5f * (data[gp1] + data[gp2]); - peakLevel = data[peakpos]; - - // calculate 70%-level of the peak - cutLevel = 0.70f * peakLevel + 0.30f * groundLevel; - // find mid-level crossings - crosspos1 = findCrossingLevel(data, cutLevel, peakpos, -1); - crosspos2 = findCrossingLevel(data, cutLevel, peakpos, 1); - - if ((crosspos1 < 0) || (crosspos2 < 0)) return 0; // no crossing, no peak.. - - // calculate mass center of the peak surroundings - return calcMassCenter(data, crosspos1, crosspos2); -} - - - -double PeakFinder::detectPeak(const float *data, int aminPos, int amaxPos) -{ - - int i; - int peakpos; // position of peak level - double highPeak, peak; - - this->minPos = aminPos; - this->maxPos = amaxPos; - - // find absolute peak - peakpos = minPos; - peak = data[minPos]; - for (i = minPos + 1; i < maxPos; i ++) - { - if (data[i] > peak) - { - peak = data[i]; - peakpos = i; - } - } - - // Calculate exact location of the highest peak mass center - highPeak = getPeakCenter(data, peakpos); - peak = highPeak; - - // Now check if the highest peak were in fact harmonic of the true base beat peak - // - sometimes the highest peak can be Nth harmonic of the true base peak yet - // just a slightly higher than the true base - - for (i = 3; i < 10; i ++) - { - double peaktmp, harmonic; - int i1,i2; - - harmonic = (double)i * 0.5; - peakpos = (int)(highPeak / harmonic + 0.5f); - if (peakpos < minPos) break; - peakpos = findTop(data, peakpos); // seek true local maximum index - if (peakpos == 0) continue; // no local max here - - // calculate mass-center of possible harmonic peak - peaktmp = getPeakCenter(data, peakpos); - - // accept harmonic peak if - // (a) it is found - // (b) is within ±4% of the expected harmonic interval - // (c) has at least half x-corr value of the max. peak - - double diff = harmonic * peaktmp / highPeak; - if ((diff < 0.96) || (diff > 1.04)) continue; // peak too afar from expected - - // now compare to highest detected peak - i1 = (int)(highPeak + 0.5); - i2 = (int)(peaktmp + 0.5); - if (data[i2] >= 0.4*data[i1]) - { - // The harmonic is at least half as high primary peak, - // thus use the harmonic peak instead - peak = peaktmp; - } - } - - return peak; -} +//////////////////////////////////////////////////////////////////////////////// +/// +/// Peak detection routine. +/// +/// The routine detects highest value on an array of values and calculates the +/// precise peak location as a mass-center of the 'hump' around the peak value. +/// +/// Author : Copyright (c) Olli Parviainen +/// Author e-mail : oparviai 'at' iki.fi +/// SoundTouch WWW: http://www.surina.net/soundtouch +/// +//////////////////////////////////////////////////////////////////////////////// +// +// Last changed : $Date: 2012-12-28 17:52:47 -0200 (sex, 28 dez 2012) $ +// File revision : $Revision: 4 $ +// +// $Id: PeakFinder.cpp 164 2012-12-28 19:52:47Z oparviai $ +// +//////////////////////////////////////////////////////////////////////////////// +// +// License : +// +// SoundTouch audio processing library +// Copyright (c) Olli Parviainen +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include + +#include "PeakFinder.h" + +using namespace soundtouch; + +#define max(x, y) (((x) > (y)) ? (x) : (y)) + + +PeakFinder::PeakFinder() +{ + minPos = maxPos = 0; +} + + +// Finds real 'top' of a peak hump from neighnourhood of the given 'peakpos'. +int PeakFinder::findTop(const float *data, int peakpos) const +{ + int i; + int start, end; + float refvalue; + + refvalue = data[peakpos]; + + // seek within ±10 points + start = peakpos - 10; + if (start < minPos) start = minPos; + end = peakpos + 10; + if (end > maxPos) end = maxPos; + + for (i = start; i <= end; i ++) + { + if (data[i] > refvalue) + { + peakpos = i; + refvalue = data[i]; + } + } + + // failure if max value is at edges of seek range => it's not peak, it's at slope. + if ((peakpos == start) || (peakpos == end)) return 0; + + return peakpos; +} + + +// Finds 'ground level' of a peak hump by starting from 'peakpos' and proceeding +// to direction defined by 'direction' until next 'hump' after minimum value will +// begin +int PeakFinder::findGround(const float *data, int peakpos, int direction) const +{ + int lowpos; + int pos; + int climb_count; + float refvalue; + float delta; + + climb_count = 0; + refvalue = data[peakpos]; + lowpos = peakpos; + + pos = peakpos; + + while ((pos > minPos+1) && (pos < maxPos-1)) + { + int prevpos; + + prevpos = pos; + pos += direction; + + // calculate derivate + delta = data[pos] - data[prevpos]; + if (delta <= 0) + { + // going downhill, ok + if (climb_count) + { + climb_count --; // decrease climb count + } + + // check if new minimum found + if (data[pos] < refvalue) + { + // new minimum found + lowpos = pos; + refvalue = data[pos]; + } + } + else + { + // going uphill, increase climbing counter + climb_count ++; + if (climb_count > 5) break; // we've been climbing too long => it's next uphill => quit + } + } + return lowpos; +} + + +// Find offset where the value crosses the given level, when starting from 'peakpos' and +// proceeds to direction defined in 'direction' +int PeakFinder::findCrossingLevel(const float *data, float level, int peakpos, int direction) const +{ + float peaklevel; + int pos; + + peaklevel = data[peakpos]; + assert(peaklevel >= level); + pos = peakpos; + while ((pos >= minPos) && (pos < maxPos)) + { + if (data[pos + direction] < level) return pos; // crossing found + pos += direction; + } + return -1; // not found +} + + +// Calculates the center of mass location of 'data' array items between 'firstPos' and 'lastPos' +double PeakFinder::calcMassCenter(const float *data, int firstPos, int lastPos) const +{ + int i; + float sum; + float wsum; + + sum = 0; + wsum = 0; + for (i = firstPos; i <= lastPos; i ++) + { + sum += (float)i * data[i]; + wsum += data[i]; + } + + if (wsum < 1e-6) return 0; + return sum / wsum; +} + + + +/// get exact center of peak near given position by calculating local mass of center +double PeakFinder::getPeakCenter(const float *data, int peakpos) const +{ + float peakLevel; // peak level + int crosspos1, crosspos2; // position where the peak 'hump' crosses cutting level + float cutLevel; // cutting value + float groundLevel; // ground level of the peak + int gp1, gp2; // bottom positions of the peak 'hump' + + // find ground positions. + gp1 = findGround(data, peakpos, -1); + gp2 = findGround(data, peakpos, 1); + + groundLevel = 0.5f * (data[gp1] + data[gp2]); + peakLevel = data[peakpos]; + + // calculate 70%-level of the peak + cutLevel = 0.70f * peakLevel + 0.30f * groundLevel; + // find mid-level crossings + crosspos1 = findCrossingLevel(data, cutLevel, peakpos, -1); + crosspos2 = findCrossingLevel(data, cutLevel, peakpos, 1); + + if ((crosspos1 < 0) || (crosspos2 < 0)) return 0; // no crossing, no peak.. + + // calculate mass center of the peak surroundings + return calcMassCenter(data, crosspos1, crosspos2); +} + + + +double PeakFinder::detectPeak(const float *data, int aminPos, int amaxPos) +{ + + int i; + int peakpos; // position of peak level + double highPeak, peak; + + this->minPos = aminPos; + this->maxPos = amaxPos; + + // find absolute peak + peakpos = minPos; + peak = data[minPos]; + for (i = minPos + 1; i < maxPos; i ++) + { + if (data[i] > peak) + { + peak = data[i]; + peakpos = i; + } + } + + // Calculate exact location of the highest peak mass center + highPeak = getPeakCenter(data, peakpos); + peak = highPeak; + + // Now check if the highest peak were in fact harmonic of the true base beat peak + // - sometimes the highest peak can be Nth harmonic of the true base peak yet + // just a slightly higher than the true base + + for (i = 3; i < 10; i ++) + { + double peaktmp, harmonic; + int i1,i2; + + harmonic = (double)i * 0.5; + peakpos = (int)(highPeak / harmonic + 0.5f); + if (peakpos < minPos) break; + peakpos = findTop(data, peakpos); // seek true local maximum index + if (peakpos == 0) continue; // no local max here + + // calculate mass-center of possible harmonic peak + peaktmp = getPeakCenter(data, peakpos); + + // accept harmonic peak if + // (a) it is found + // (b) is within ±4% of the expected harmonic interval + // (c) has at least half x-corr value of the max. peak + + double diff = harmonic * peaktmp / highPeak; + if ((diff < 0.96) || (diff > 1.04)) continue; // peak too afar from expected + + // now compare to highest detected peak + i1 = (int)(highPeak + 0.5); + i2 = (int)(peaktmp + 0.5); + if (data[i2] >= 0.4*data[i1]) + { + // The harmonic is at least half as high primary peak, + // thus use the harmonic peak instead + peak = peaktmp; + } + } + + return peak; +} diff --git a/3rdparty/soundtouch/PeakFinder.h b/3rdparty/soundtouch/PeakFinder.h index c781643304..c2bbb6e95f 100644 --- a/3rdparty/soundtouch/PeakFinder.h +++ b/3rdparty/soundtouch/PeakFinder.h @@ -1,97 +1,97 @@ -//////////////////////////////////////////////////////////////////////////////// -/// -/// The routine detects highest value on an array of values and calculates the -/// precise peak location as a mass-center of the 'hump' around the peak value. -/// -/// Author : Copyright (c) Olli Parviainen -/// Author e-mail : oparviai 'at' iki.fi -/// SoundTouch WWW: http://www.surina.net/soundtouch -/// -//////////////////////////////////////////////////////////////////////////////// -// -// Last changed : $Date: 2011-12-30 18:33:46 -0200 (sex, 30 dez 2011) $ -// File revision : $Revision: 4 $ -// -// $Id: PeakFinder.h 132 2011-12-30 20:33:46Z oparviai $ -// -//////////////////////////////////////////////////////////////////////////////// -// -// License : -// -// SoundTouch audio processing library -// Copyright (c) Olli Parviainen -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -//////////////////////////////////////////////////////////////////////////////// - -#ifndef _PeakFinder_H_ -#define _PeakFinder_H_ - -namespace soundtouch -{ - -class PeakFinder -{ -protected: - /// Min, max allowed peak positions within the data vector - int minPos, maxPos; - - /// Calculates the mass center between given vector items. - double calcMassCenter(const float *data, ///< Data vector. - int firstPos, ///< Index of first vector item beloging to the peak. - int lastPos ///< Index of last vector item beloging to the peak. - ) const; - - /// Finds the data vector index where the monotoniously decreasing signal crosses the - /// given level. - int findCrossingLevel(const float *data, ///< Data vector. - float level, ///< Goal crossing level. - int peakpos, ///< Peak position index within the data vector. - int direction /// Direction where to proceed from the peak: 1 = right, -1 = left. - ) const; - - // Finds real 'top' of a peak hump from neighnourhood of the given 'peakpos'. - int findTop(const float *data, int peakpos) const; - - - /// Finds the 'ground' level, i.e. smallest level between two neighbouring peaks, to right- - /// or left-hand side of the given peak position. - int findGround(const float *data, /// Data vector. - int peakpos, /// Peak position index within the data vector. - int direction /// Direction where to proceed from the peak: 1 = right, -1 = left. - ) const; - - /// get exact center of peak near given position by calculating local mass of center - double getPeakCenter(const float *data, int peakpos) const; - -public: - /// Constructor. - PeakFinder(); - - /// Detect exact peak position of the data vector by finding the largest peak 'hump' - /// and calculating the mass-center location of the peak hump. - /// - /// \return The location of the largest base harmonic peak hump. - double detectPeak(const float *data, /// Data vector to be analyzed. The data vector has - /// to be at least 'maxPos' items long. - int minPos, ///< Min allowed peak location within the vector data. - int maxPos ///< Max allowed peak location within the vector data. - ); -}; - -} - -#endif // _PeakFinder_H_ +//////////////////////////////////////////////////////////////////////////////// +/// +/// The routine detects highest value on an array of values and calculates the +/// precise peak location as a mass-center of the 'hump' around the peak value. +/// +/// Author : Copyright (c) Olli Parviainen +/// Author e-mail : oparviai 'at' iki.fi +/// SoundTouch WWW: http://www.surina.net/soundtouch +/// +//////////////////////////////////////////////////////////////////////////////// +// +// Last changed : $Date: 2011-12-30 18:33:46 -0200 (sex, 30 dez 2011) $ +// File revision : $Revision: 4 $ +// +// $Id: PeakFinder.h 132 2011-12-30 20:33:46Z oparviai $ +// +//////////////////////////////////////////////////////////////////////////////// +// +// License : +// +// SoundTouch audio processing library +// Copyright (c) Olli Parviainen +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef _PeakFinder_H_ +#define _PeakFinder_H_ + +namespace soundtouch +{ + +class PeakFinder +{ +protected: + /// Min, max allowed peak positions within the data vector + int minPos, maxPos; + + /// Calculates the mass center between given vector items. + double calcMassCenter(const float *data, ///< Data vector. + int firstPos, ///< Index of first vector item beloging to the peak. + int lastPos ///< Index of last vector item beloging to the peak. + ) const; + + /// Finds the data vector index where the monotoniously decreasing signal crosses the + /// given level. + int findCrossingLevel(const float *data, ///< Data vector. + float level, ///< Goal crossing level. + int peakpos, ///< Peak position index within the data vector. + int direction /// Direction where to proceed from the peak: 1 = right, -1 = left. + ) const; + + // Finds real 'top' of a peak hump from neighnourhood of the given 'peakpos'. + int findTop(const float *data, int peakpos) const; + + + /// Finds the 'ground' level, i.e. smallest level between two neighbouring peaks, to right- + /// or left-hand side of the given peak position. + int findGround(const float *data, /// Data vector. + int peakpos, /// Peak position index within the data vector. + int direction /// Direction where to proceed from the peak: 1 = right, -1 = left. + ) const; + + /// get exact center of peak near given position by calculating local mass of center + double getPeakCenter(const float *data, int peakpos) const; + +public: + /// Constructor. + PeakFinder(); + + /// Detect exact peak position of the data vector by finding the largest peak 'hump' + /// and calculating the mass-center location of the peak hump. + /// + /// \return The location of the largest base harmonic peak hump. + double detectPeak(const float *data, /// Data vector to be analyzed. The data vector has + /// to be at least 'maxPos' items long. + int minPos, ///< Min allowed peak location within the vector data. + int maxPos ///< Max allowed peak location within the vector data. + ); +}; + +} + +#endif // _PeakFinder_H_ diff --git a/3rdparty/soundtouch/SoundTouch_vs2012.vcxproj b/3rdparty/soundtouch/SoundTouch_vs2012.vcxproj index aa3c5c5ba2..69e1ccbb45 100644 --- a/3rdparty/soundtouch/SoundTouch_vs2012.vcxproj +++ b/3rdparty/soundtouch/SoundTouch_vs2012.vcxproj @@ -1,116 +1,116 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D} - SoundTouch - SoundTouch - - - - StaticLibrary - MultiByte - true - v110_xp - - - StaticLibrary - MultiByte - true - v110_xp - - - StaticLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName)-dev - - - - Level3 - - - - - Level3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D} + SoundTouch + SoundTouch + + + + StaticLibrary + MultiByte + true + v110_xp + + + StaticLibrary + MultiByte + true + v110_xp + + + StaticLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)-dev + + + + Level3 + + + + + Level3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/3rdparty/soundtouch/SoundTouch_vs2012.vcxproj.filters b/3rdparty/soundtouch/SoundTouch_vs2012.vcxproj.filters index aff33f582a..6b7c493050 100644 --- a/3rdparty/soundtouch/SoundTouch_vs2012.vcxproj.filters +++ b/3rdparty/soundtouch/SoundTouch_vs2012.vcxproj.filters @@ -1,83 +1,83 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + \ No newline at end of file diff --git a/3rdparty/soundtouch/cpu_detect_x86.cpp b/3rdparty/soundtouch/cpu_detect_x86.cpp index 4b09dba20b..0526102c51 100644 --- a/3rdparty/soundtouch/cpu_detect_x86.cpp +++ b/3rdparty/soundtouch/cpu_detect_x86.cpp @@ -1,137 +1,137 @@ -//////////////////////////////////////////////////////////////////////////////// -/// -/// Generic version of the x86 CPU extension detection routine. -/// -/// This file is for GNU & other non-Windows compilers, see 'cpu_detect_x86_win.cpp' -/// for the Microsoft compiler version. -/// -/// Author : Copyright (c) Olli Parviainen -/// Author e-mail : oparviai 'at' iki.fi -/// SoundTouch WWW: http://www.surina.net/soundtouch -/// -//////////////////////////////////////////////////////////////////////////////// -// -// Last changed : $Date: 2012-11-08 16:44:37 -0200 (qui, 08 nov 2012) $ -// File revision : $Revision: 4 $ -// -// $Id: cpu_detect_x86.cpp 159 2012-11-08 18:44:37Z oparviai $ -// -//////////////////////////////////////////////////////////////////////////////// -// -// License : -// -// SoundTouch audio processing library -// Copyright (c) Olli Parviainen -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -//////////////////////////////////////////////////////////////////////////////// - -#include "cpu_detect.h" -#include "STTypes.h" - -#if defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS) - - #if defined(__GNUC__) && defined(__i386__) - // gcc - #include "cpuid.h" - #elif defined(_M_IX86) - // windows non-gcc - #include - #define bit_MMX (1 << 23) - #define bit_SSE (1 << 25) - #define bit_SSE2 (1 << 26) - #endif - -#endif - - -////////////////////////////////////////////////////////////////////////////// -// -// processor instructions extension detection routines -// -////////////////////////////////////////////////////////////////////////////// - -// Flag variable indicating whick ISA extensions are disabled (for debugging) -static uint _dwDisabledISA = 0x00; // 0xffffffff; //<- use this to disable all extensions - -// Disables given set of instruction extensions. See SUPPORT_... defines. -void disableExtensions(uint dwDisableMask) -{ - _dwDisabledISA = dwDisableMask; -} - - - -/// Checks which instruction set extensions are supported by the CPU. -uint detectCPUextensions(void) -{ -/// If building for a 64bit system (no Itanium) and the user wants optimizations. -/// Return the OR of SUPPORT_{MMX,SSE,SSE2}. 11001 or 0x19. -/// Keep the _dwDisabledISA test (2 more operations, could be eliminated). -#if ((defined(__GNUC__) && defined(__x86_64__)) \ - || defined(_M_X64)) \ - && defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS) - return 0x19 & ~_dwDisabledISA; - -/// If building for a 32bit system and the user wants optimizations. -/// Keep the _dwDisabledISA test (2 more operations, could be eliminated). -#elif ((defined(__GNUC__) && defined(__i386__)) \ - || defined(_M_IX86)) \ - && defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS) - - if (_dwDisabledISA == 0xffffffff) return 0; - - uint res = 0; - -#if defined(__GNUC__) - // GCC version of cpuid. Requires GCC 4.3.0 or later for __cpuid intrinsic support. - uint eax, ebx, ecx, edx; // unsigned int is the standard type. uint is defined by the compiler and not guaranteed to be portable. - - // Check if no cpuid support. - if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) return 0; // always disable extensions. - - if (edx & bit_MMX) res = res | SUPPORT_MMX; - if (edx & bit_SSE) res = res | SUPPORT_SSE; - if (edx & bit_SSE2) res = res | SUPPORT_SSE2; - -#else - // Window / VS version of cpuid. Notice that Visual Studio 2005 or later required - // for __cpuid intrinsic support. - int reg[4] = {-1}; - - // Check if no cpuid support. - __cpuid(reg,0); - if ((unsigned int)reg[0] == 0) return 0; // always disable extensions. - - __cpuid(reg,1); - if ((unsigned int)reg[3] & bit_MMX) res = res | SUPPORT_MMX; - if ((unsigned int)reg[3] & bit_SSE) res = res | SUPPORT_SSE; - if ((unsigned int)reg[3] & bit_SSE2) res = res | SUPPORT_SSE2; - -#endif - - return res & ~_dwDisabledISA; - -#else - -/// One of these is true: -/// 1) We don't want optimizations. -/// 2) Using an unsupported compiler. -/// 3) Running on a non-x86 platform. - return 0; - -#endif -} +//////////////////////////////////////////////////////////////////////////////// +/// +/// Generic version of the x86 CPU extension detection routine. +/// +/// This file is for GNU & other non-Windows compilers, see 'cpu_detect_x86_win.cpp' +/// for the Microsoft compiler version. +/// +/// Author : Copyright (c) Olli Parviainen +/// Author e-mail : oparviai 'at' iki.fi +/// SoundTouch WWW: http://www.surina.net/soundtouch +/// +//////////////////////////////////////////////////////////////////////////////// +// +// Last changed : $Date: 2012-11-08 16:44:37 -0200 (qui, 08 nov 2012) $ +// File revision : $Revision: 4 $ +// +// $Id: cpu_detect_x86.cpp 159 2012-11-08 18:44:37Z oparviai $ +// +//////////////////////////////////////////////////////////////////////////////// +// +// License : +// +// SoundTouch audio processing library +// Copyright (c) Olli Parviainen +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +//////////////////////////////////////////////////////////////////////////////// + +#include "cpu_detect.h" +#include "STTypes.h" + +#if defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS) + + #if defined(__GNUC__) && defined(__i386__) + // gcc + #include "cpuid.h" + #elif defined(_M_IX86) + // windows non-gcc + #include + #define bit_MMX (1 << 23) + #define bit_SSE (1 << 25) + #define bit_SSE2 (1 << 26) + #endif + +#endif + + +////////////////////////////////////////////////////////////////////////////// +// +// processor instructions extension detection routines +// +////////////////////////////////////////////////////////////////////////////// + +// Flag variable indicating whick ISA extensions are disabled (for debugging) +static uint _dwDisabledISA = 0x00; // 0xffffffff; //<- use this to disable all extensions + +// Disables given set of instruction extensions. See SUPPORT_... defines. +void disableExtensions(uint dwDisableMask) +{ + _dwDisabledISA = dwDisableMask; +} + + + +/// Checks which instruction set extensions are supported by the CPU. +uint detectCPUextensions(void) +{ +/// If building for a 64bit system (no Itanium) and the user wants optimizations. +/// Return the OR of SUPPORT_{MMX,SSE,SSE2}. 11001 or 0x19. +/// Keep the _dwDisabledISA test (2 more operations, could be eliminated). +#if ((defined(__GNUC__) && defined(__x86_64__)) \ + || defined(_M_X64)) \ + && defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS) + return 0x19 & ~_dwDisabledISA; + +/// If building for a 32bit system and the user wants optimizations. +/// Keep the _dwDisabledISA test (2 more operations, could be eliminated). +#elif ((defined(__GNUC__) && defined(__i386__)) \ + || defined(_M_IX86)) \ + && defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS) + + if (_dwDisabledISA == 0xffffffff) return 0; + + uint res = 0; + +#if defined(__GNUC__) + // GCC version of cpuid. Requires GCC 4.3.0 or later for __cpuid intrinsic support. + uint eax, ebx, ecx, edx; // unsigned int is the standard type. uint is defined by the compiler and not guaranteed to be portable. + + // Check if no cpuid support. + if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) return 0; // always disable extensions. + + if (edx & bit_MMX) res = res | SUPPORT_MMX; + if (edx & bit_SSE) res = res | SUPPORT_SSE; + if (edx & bit_SSE2) res = res | SUPPORT_SSE2; + +#else + // Window / VS version of cpuid. Notice that Visual Studio 2005 or later required + // for __cpuid intrinsic support. + int reg[4] = {-1}; + + // Check if no cpuid support. + __cpuid(reg,0); + if ((unsigned int)reg[0] == 0) return 0; // always disable extensions. + + __cpuid(reg,1); + if ((unsigned int)reg[3] & bit_MMX) res = res | SUPPORT_MMX; + if ((unsigned int)reg[3] & bit_SSE) res = res | SUPPORT_SSE; + if ((unsigned int)reg[3] & bit_SSE2) res = res | SUPPORT_SSE2; + +#endif + + return res & ~_dwDisabledISA; + +#else + +/// One of these is true: +/// 1) We don't want optimizations. +/// 2) Using an unsupported compiler. +/// 3) Running on a non-x86 platform. + return 0; + +#endif +} diff --git a/3rdparty/svn_readme.txt b/3rdparty/svn_readme.txt index 5065e1c3bb..243b62ffd3 100644 --- a/3rdparty/svn_readme.txt +++ b/3rdparty/svn_readme.txt @@ -1,26 +1,26 @@ - -Folder: /3rdparty - -This folder contains libraries written and (un?)maintained by people or parties -outside the Pcsx2 DevTeam. Libraries or code snippets written by the PCSX2 team -are housed in /common instead. - -Cross-Compilation: - -Most libraries includes in /3rdparty come as either default installations in Linux -distributions, or are easily obtainable. Using the PCSX2 versions included here is -optional in such cases, however using the distro-provided packages is not recommended. -(using PCSX2 included versions may help resolve versioning issues). - -Note that wxWidgets includes *only* MSW projects and files. Linux and Mac platforms -are assumed to have wx already available in your distributions. - -Modifications: - -Most of these libs in /3rdparty have been tailored slightly from the original -forms downloaded from the net. So if you want to upgrade to a new version you -will need to do a proper diff merge. Likewise, if you modify anything in a -3rdparty library you should be sure to tag the modification with your sig or -a "pcsx2" or something. Thirdly, you can use Svn Log to check for modifications, -however folder renames or svn homesite changes may not have all relevant history + +Folder: /3rdparty + +This folder contains libraries written and (un?)maintained by people or parties +outside the Pcsx2 DevTeam. Libraries or code snippets written by the PCSX2 team +are housed in /common instead. + +Cross-Compilation: + +Most libraries includes in /3rdparty come as either default installations in Linux +distributions, or are easily obtainable. Using the PCSX2 versions included here is +optional in such cases, however using the distro-provided packages is not recommended. +(using PCSX2 included versions may help resolve versioning issues). + +Note that wxWidgets includes *only* MSW projects and files. Linux and Mac platforms +are assumed to have wx already available in your distributions. + +Modifications: + +Most of these libs in /3rdparty have been tailored slightly from the original +forms downloaded from the net. So if you want to upgrade to a new version you +will need to do a proper diff merge. Likewise, if you modify anything in a +3rdparty library you should be sure to tag the modification with your sig or +a "pcsx2" or something. Thirdly, you can use Svn Log to check for modifications, +however folder renames or svn homesite changes may not have all relevant history necessary to make an accurate merge. \ No newline at end of file diff --git a/3rdparty/w32pthreads/ANNOUNCE b/3rdparty/w32pthreads/ANNOUNCE index 86b87fa004..97d94e7026 100644 --- a/3rdparty/w32pthreads/ANNOUNCE +++ b/3rdparty/w32pthreads/ANNOUNCE @@ -1,476 +1,476 @@ - PTHREADS-WIN32 RELEASE 2.8.0 (2006-12-22) - ----------------------------------------- - Web Site: http://sources.redhat.com/pthreads-win32/ - FTP Site: ftp://sources.redhat.com/pub/pthreads-win32 - Maintainer: Ross Johnson - - -We are pleased to announce the availability of a new release of -Pthreads-win32, an Open Source Software implementation of the -Threads component of the POSIX 1003.1 2001 Standard for Microsoft's -Win32 environment. Some functions from other sections of POSIX -1003.1 2001 are also supported including semaphores and scheduling -functions. - -Some common non-portable functions are also implemented for -additional compatibility, as are a few functions specific -to pthreads-win32 for easier integration with Win32 applications. - -Pthreads-win32 is free software, distributed under the GNU Lesser -General Public License (LGPL). - - -Acknowledgements ----------------- -This library is based originally on a Win32 pthreads -implementation contributed by John Bossom . - -The implementation of Condition Variables uses algorithms developed -by Alexander Terekhov and Louis Thomas. - -The implementation of POSIX mutexes has been improved by Thomas Pfaff -and later by Alexander Terekhov. - -The implementation of Spinlocks and Barriers was contributed -by Ross Johnson. - -The implementation of read/write locks was contributed by -Aurelio Medina and improved by Alexander Terekhov. - -Many others have contributed significant time and effort to solve crutial -problems in order to make the library workable, robust and reliable. - -Thanks to Xavier Leroy for granting permission to use and modify his -LinuxThreads manual pages. - -Thanks to The Open Group for making the Single Unix Specification -publicly available - many of the manual pages included in the package -were extracted from it. - -There is also a separate CONTRIBUTORS file. This file and others are -on the web site: - - http://sources.redhat.com/pthreads-win32 - -As much as possible, the ChangeLog file acknowledges contributions to the -code base in more detail. - - -Changes since the last release ------------------------------- -These are now documented in the NEWS file. -See the ChangeLog file also. - - -Known Bugs ----------- -These are now documented in the BUGS file. - - -Level of standards conformance ------------------------------- - -The following POSIX 1003.1 2001 options are defined and set to 200112L: - - _POSIX_THREADS - _POSIX_THREAD_SAFE_FUNCTIONS - _POSIX_THREAD_ATTR_STACKSIZE - _POSIX_THREAD_PRIORITY_SCHEDULING - _POSIX_SEMAPHORES - _POSIX_READER_WRITER_LOCKS - _POSIX_SPIN_LOCKS - _POSIX_BARRIERS - - -The following POSIX 1003.1 2001 options are defined and set to -1: - - _POSIX_THREAD_ATTR_STACKADDR - _POSIX_THREAD_PRIO_INHERIT - _POSIX_THREAD_PRIO_PROTECT - _POSIX_THREAD_PROCESS_SHARED - - -The following POSIX 1003.1 2001 limits are defined and set: - - _POSIX_THREAD_THREADS_MAX - _POSIX_SEM_VALUE_MAX - _POSIX_SEM_NSEMS_MAX - _POSIX_THREAD_KEYS_MAX - _POSIX_THREAD_DESTRUCTOR_ITERATIONS - PTHREAD_STACK_MIN - PTHREAD_THREADS_MAX - SEM_VALUE_MAX - SEM_NSEMS_MAX - PTHREAD_KEYS_MAX - PTHREAD_DESTRUCTOR_ITERATIONS - - -The following functions are implemented: - - --------------------------- - PThreads - --------------------------- - pthread_attr_init - pthread_attr_destroy - pthread_attr_getdetachstate - pthread_attr_getstackaddr - pthread_attr_getstacksize - pthread_attr_setdetachstate - pthread_attr_setstackaddr - pthread_attr_setstacksize - - pthread_create - pthread_detach - pthread_equal - pthread_exit - pthread_join - pthread_once - pthread_self - - pthread_cancel - pthread_cleanup_pop - pthread_cleanup_push - pthread_setcancelstate - pthread_setcanceltype - pthread_testcancel - - --------------------------- - Thread Specific Data - --------------------------- - pthread_key_create - pthread_key_delete - pthread_setspecific - pthread_getspecific - - --------------------------- - Mutexes - --------------------------- - pthread_mutexattr_init - pthread_mutexattr_destroy - pthread_mutexattr_getpshared - pthread_mutexattr_setpshared - pthread_mutexattr_gettype - pthread_mutexattr_settype (types: PTHREAD_MUTEX_DEFAULT - PTHREAD_MUTEX_NORMAL - PTHREAD_MUTEX_ERRORCHECK - PTHREAD_MUTEX_RECURSIVE ) - pthread_mutex_init - pthread_mutex_destroy - pthread_mutex_lock - pthread_mutex_trylock - pthread_mutex_timedlock - pthread_mutex_unlock - - --------------------------- - Condition Variables - --------------------------- - pthread_condattr_init - pthread_condattr_destroy - pthread_condattr_getpshared - pthread_condattr_setpshared - - pthread_cond_init - pthread_cond_destroy - pthread_cond_wait - pthread_cond_timedwait - pthread_cond_signal - pthread_cond_broadcast - - --------------------------- - Read/Write Locks - --------------------------- - pthread_rwlock_init - pthread_rwlock_destroy - pthread_rwlock_tryrdlock - pthread_rwlock_trywrlock - pthread_rwlock_rdlock - pthread_rwlock_timedrdlock - pthread_rwlock_rwlock - pthread_rwlock_timedwrlock - pthread_rwlock_unlock - pthread_rwlockattr_init - pthread_rwlockattr_destroy - pthread_rwlockattr_getpshared - pthread_rwlockattr_setpshared - - --------------------------- - Spin Locks - --------------------------- - pthread_spin_init - pthread_spin_destroy - pthread_spin_lock - pthread_spin_unlock - pthread_spin_trylock - - --------------------------- - Barriers - --------------------------- - pthread_barrier_init - pthread_barrier_destroy - pthread_barrier_wait - pthread_barrierattr_init - pthread_barrierattr_destroy - pthread_barrierattr_getpshared - pthread_barrierattr_setpshared - - --------------------------- - Semaphores - --------------------------- - sem_init - sem_destroy - sem_post - sem_wait - sem_trywait - sem_timedwait - sem_getvalue (# free if +ve, # of waiters if -ve) - sem_open (returns an error ENOSYS) - sem_close (returns an error ENOSYS) - sem_unlink (returns an error ENOSYS) - - --------------------------- - RealTime Scheduling - --------------------------- - pthread_attr_getschedparam - pthread_attr_setschedparam - pthread_attr_getinheritsched - pthread_attr_setinheritsched - pthread_attr_getschedpolicy (only supports SCHED_OTHER) - pthread_attr_setschedpolicy (only supports SCHED_OTHER) - pthread_getschedparam - pthread_setschedparam - pthread_getconcurrency - pthread_setconcurrency - pthread_attr_getscope - pthread_attr_setscope (only supports PTHREAD_SCOPE_SYSTEM) - sched_get_priority_max - sched_get_priority_min - sched_rr_get_interval (returns an error ENOTSUP) - sched_setscheduler (only supports SCHED_OTHER) - sched_getscheduler (only supports SCHED_OTHER) - sched_yield - - --------------------------- - Signals - --------------------------- - pthread_sigmask - pthread_kill (only supports zero sig value, - for thread validity checking) - - --------------------------- - Non-portable routines (see the README.NONPORTABLE file for usage) - --------------------------- - pthread_getw32threadhandle_np - pthread_timechange_handler_np - pthread_delay_np - pthread_mutexattr_getkind_np - pthread_mutexattr_setkind_np (types: PTHREAD_MUTEX_FAST_NP, - PTHREAD_MUTEX_ERRORCHECK_NP, - PTHREAD_MUTEX_RECURSIVE_NP, - PTHREAD_MUTEX_ADAPTIVE_NP, - PTHREAD_MUTEX_TIMED_NP) - pthread_num_processors_np - pthread_win32_process_attach_np (Required when statically linking - the library) - pthread_win32_process_detach_np (Required when statically linking - the library) - pthread_win32_thread_attach_np (Required when statically linking - the library) - pthread_win32_thread_detach_np (Required when statically linking - the library) - - --------------------------- - Static Initializers - --------------------------- - PTHREAD_ONCE_INIT - PTHREAD_MUTEX_INITIALIZER - PTHREAD_RECURSIVE_MUTEX_INITIALIZER - PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP - PTHREAD_ERRORCHECK_MUTEX_INITIALIZER - PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP - PTHREAD_COND_INITIALIZER - PTHREAD_RWLOCK_INITIALIZER - PTHREAD_SPINLOCK_INITIALIZER - - --------------------------- - Thread-Safe C Runtime Library (macros) - --------------------------- - strtok_r - asctime_r - ctime_r - gmtime_r - localtime_r - rand_r - - -The following functions are not implemented: - - --------------------------- - RealTime Scheduling - --------------------------- - pthread_mutex_getprioceiling - pthread_mutex_setprioceiling - pthread_mutex_attr_getprioceiling - pthread_mutex_attr_getprotocol - pthread_mutex_attr_setprioceiling - pthread_mutex_attr_setprotocol - - --------------------------- - Fork Handlers - --------------------------- - pthread_atfork - - --------------------------- - Stdio - --------------------------- - flockfile - ftrylockfile - funlockfile - getc_unlocked - getchar_unlocked - putc_unlocked - putchar_unlocked - - --------------------------- - Thread-Safe C Runtime Library - --------------------------- - readdir_r - getgrgid_r - getgrnam_r - getpwuid_r - getpwnam_r - - --------------------------- - Signals - --------------------------- - sigtimedwait - sigwait - sigwaitinfo - - --------------------------- - General - --------------------------- - sysconf - -The library includes two non-API functions for creating cancellation -points in applications and libraries: - - pthreadCancelableWait - pthreadCancelableTimedWait - - -Availability ------------- - -The prebuilt DLL, export libs (for both MSVC and Mingw32), and the header -files (pthread.h, semaphore.h, sched.h) are available along with the -complete source code. - -The source code can be found at: - - ftp://sources.redhat.com/pub/pthreads-win32 - -and as individual source code files at - - ftp://sources.redhat.com/pub/pthreads-win32/source - -The pre-built DLL, export libraries and include files can be found at: - - ftp://sources.redhat.com/pub/pthreads-win32/dll-latest - - - -Mailing List ------------- - -There is a mailing list for discussing pthreads on Win32. To join, -send email to: - - pthreads-win32-subscribe@sourceware.cygnus.com - - -Application Development Environments ------------------------------------- - -See the README file for more information. - -MSVC: -MSVC using SEH works. Distribute pthreadVSE.dll with your application. -MSVC using C++ EH works. Distribute pthreadVCE.dll with your application. -MSVC using C setjmp/longjmp works. Distribute pthreadVC.dll with your application. - - -Mingw32: -See the FAQ, Questions 6 and 10. - -Mingw using C++ EH works. Distribute pthreadGCE.dll with your application. -Mingw using C setjmp/longjmp works. Distribute pthreadGC.dll with your application. - - -Cygwin: (http://sourceware.cygnus.com/cygwin/) -Developers using Cygwin will not need pthreads-win32 since it has POSIX threads -support. Refer to its documentation for details and extent. - - -UWIN: -UWIN is a complete Unix-like environment for Windows from AT&T. Pthreads-win32 -doesn't currently support UWIN (and vice versa), but that may change in the -future. - -Generally: -For convenience, the following pre-built files are available on the FTP site -(see Availability above): - - pthread.h - for POSIX 1c threads - semaphore.h - for POSIX 1b semaphores - sched.h - for POSIX 1b scheduling - pthreadVCE.dll - built with MSVC++ compiler using C++ EH - pthreadVCE.lib - pthreadVC.dll - built with MSVC compiler using C setjmp/longjmp - pthreadVC.lib - pthreadVSE.dll - built with MSVC compiler using SEH - pthreadVSE.lib - pthreadGCE.dll - built with Mingw32 G++ 2.95.2-1 - pthreadGC.dll - built with Mingw32 GCC 2.95.2-1 using setjmp/longjmp - libpthreadGCE.a - derived from pthreadGCE.dll - libpthreadGC.a - derived from pthreadGC.dll - gcc.dll - needed if distributing applications that use - pthreadGCE.dll (but see the FAQ Q 10 for the latest - related information) - -These are the only files you need in order to build POSIX threads -applications for Win32 using either MSVC or Mingw32. - -See the FAQ file in the source tree for additional information. - - -Documentation -------------- - -For the authoritative reference, see the online POSIX -standard reference at: - - http://www.OpenGroup.org - -For POSIX Thread API programming, several reference books are -available: - - Programming with POSIX Threads - David R. Butenhof - Addison-Wesley (pub) - - Pthreads Programming - By Bradford Nichols, Dick Buttlar & Jacqueline Proulx Farrell - O'Reilly (pub) - -On the web: see the links at the bottom of the pthreads-win32 site: - - http://sources.redhat.com/pthreads-win32/ - - Currently, there is no documentation included in the package apart - from the copious comments in the source code. - - - -Enjoy! - -Ross Johnson + PTHREADS-WIN32 RELEASE 2.8.0 (2006-12-22) + ----------------------------------------- + Web Site: http://sources.redhat.com/pthreads-win32/ + FTP Site: ftp://sources.redhat.com/pub/pthreads-win32 + Maintainer: Ross Johnson + + +We are pleased to announce the availability of a new release of +Pthreads-win32, an Open Source Software implementation of the +Threads component of the POSIX 1003.1 2001 Standard for Microsoft's +Win32 environment. Some functions from other sections of POSIX +1003.1 2001 are also supported including semaphores and scheduling +functions. + +Some common non-portable functions are also implemented for +additional compatibility, as are a few functions specific +to pthreads-win32 for easier integration with Win32 applications. + +Pthreads-win32 is free software, distributed under the GNU Lesser +General Public License (LGPL). + + +Acknowledgements +---------------- +This library is based originally on a Win32 pthreads +implementation contributed by John Bossom . + +The implementation of Condition Variables uses algorithms developed +by Alexander Terekhov and Louis Thomas. + +The implementation of POSIX mutexes has been improved by Thomas Pfaff +and later by Alexander Terekhov. + +The implementation of Spinlocks and Barriers was contributed +by Ross Johnson. + +The implementation of read/write locks was contributed by +Aurelio Medina and improved by Alexander Terekhov. + +Many others have contributed significant time and effort to solve crutial +problems in order to make the library workable, robust and reliable. + +Thanks to Xavier Leroy for granting permission to use and modify his +LinuxThreads manual pages. + +Thanks to The Open Group for making the Single Unix Specification +publicly available - many of the manual pages included in the package +were extracted from it. + +There is also a separate CONTRIBUTORS file. This file and others are +on the web site: + + http://sources.redhat.com/pthreads-win32 + +As much as possible, the ChangeLog file acknowledges contributions to the +code base in more detail. + + +Changes since the last release +------------------------------ +These are now documented in the NEWS file. +See the ChangeLog file also. + + +Known Bugs +---------- +These are now documented in the BUGS file. + + +Level of standards conformance +------------------------------ + +The following POSIX 1003.1 2001 options are defined and set to 200112L: + + _POSIX_THREADS + _POSIX_THREAD_SAFE_FUNCTIONS + _POSIX_THREAD_ATTR_STACKSIZE + _POSIX_THREAD_PRIORITY_SCHEDULING + _POSIX_SEMAPHORES + _POSIX_READER_WRITER_LOCKS + _POSIX_SPIN_LOCKS + _POSIX_BARRIERS + + +The following POSIX 1003.1 2001 options are defined and set to -1: + + _POSIX_THREAD_ATTR_STACKADDR + _POSIX_THREAD_PRIO_INHERIT + _POSIX_THREAD_PRIO_PROTECT + _POSIX_THREAD_PROCESS_SHARED + + +The following POSIX 1003.1 2001 limits are defined and set: + + _POSIX_THREAD_THREADS_MAX + _POSIX_SEM_VALUE_MAX + _POSIX_SEM_NSEMS_MAX + _POSIX_THREAD_KEYS_MAX + _POSIX_THREAD_DESTRUCTOR_ITERATIONS + PTHREAD_STACK_MIN + PTHREAD_THREADS_MAX + SEM_VALUE_MAX + SEM_NSEMS_MAX + PTHREAD_KEYS_MAX + PTHREAD_DESTRUCTOR_ITERATIONS + + +The following functions are implemented: + + --------------------------- + PThreads + --------------------------- + pthread_attr_init + pthread_attr_destroy + pthread_attr_getdetachstate + pthread_attr_getstackaddr + pthread_attr_getstacksize + pthread_attr_setdetachstate + pthread_attr_setstackaddr + pthread_attr_setstacksize + + pthread_create + pthread_detach + pthread_equal + pthread_exit + pthread_join + pthread_once + pthread_self + + pthread_cancel + pthread_cleanup_pop + pthread_cleanup_push + pthread_setcancelstate + pthread_setcanceltype + pthread_testcancel + + --------------------------- + Thread Specific Data + --------------------------- + pthread_key_create + pthread_key_delete + pthread_setspecific + pthread_getspecific + + --------------------------- + Mutexes + --------------------------- + pthread_mutexattr_init + pthread_mutexattr_destroy + pthread_mutexattr_getpshared + pthread_mutexattr_setpshared + pthread_mutexattr_gettype + pthread_mutexattr_settype (types: PTHREAD_MUTEX_DEFAULT + PTHREAD_MUTEX_NORMAL + PTHREAD_MUTEX_ERRORCHECK + PTHREAD_MUTEX_RECURSIVE ) + pthread_mutex_init + pthread_mutex_destroy + pthread_mutex_lock + pthread_mutex_trylock + pthread_mutex_timedlock + pthread_mutex_unlock + + --------------------------- + Condition Variables + --------------------------- + pthread_condattr_init + pthread_condattr_destroy + pthread_condattr_getpshared + pthread_condattr_setpshared + + pthread_cond_init + pthread_cond_destroy + pthread_cond_wait + pthread_cond_timedwait + pthread_cond_signal + pthread_cond_broadcast + + --------------------------- + Read/Write Locks + --------------------------- + pthread_rwlock_init + pthread_rwlock_destroy + pthread_rwlock_tryrdlock + pthread_rwlock_trywrlock + pthread_rwlock_rdlock + pthread_rwlock_timedrdlock + pthread_rwlock_rwlock + pthread_rwlock_timedwrlock + pthread_rwlock_unlock + pthread_rwlockattr_init + pthread_rwlockattr_destroy + pthread_rwlockattr_getpshared + pthread_rwlockattr_setpshared + + --------------------------- + Spin Locks + --------------------------- + pthread_spin_init + pthread_spin_destroy + pthread_spin_lock + pthread_spin_unlock + pthread_spin_trylock + + --------------------------- + Barriers + --------------------------- + pthread_barrier_init + pthread_barrier_destroy + pthread_barrier_wait + pthread_barrierattr_init + pthread_barrierattr_destroy + pthread_barrierattr_getpshared + pthread_barrierattr_setpshared + + --------------------------- + Semaphores + --------------------------- + sem_init + sem_destroy + sem_post + sem_wait + sem_trywait + sem_timedwait + sem_getvalue (# free if +ve, # of waiters if -ve) + sem_open (returns an error ENOSYS) + sem_close (returns an error ENOSYS) + sem_unlink (returns an error ENOSYS) + + --------------------------- + RealTime Scheduling + --------------------------- + pthread_attr_getschedparam + pthread_attr_setschedparam + pthread_attr_getinheritsched + pthread_attr_setinheritsched + pthread_attr_getschedpolicy (only supports SCHED_OTHER) + pthread_attr_setschedpolicy (only supports SCHED_OTHER) + pthread_getschedparam + pthread_setschedparam + pthread_getconcurrency + pthread_setconcurrency + pthread_attr_getscope + pthread_attr_setscope (only supports PTHREAD_SCOPE_SYSTEM) + sched_get_priority_max + sched_get_priority_min + sched_rr_get_interval (returns an error ENOTSUP) + sched_setscheduler (only supports SCHED_OTHER) + sched_getscheduler (only supports SCHED_OTHER) + sched_yield + + --------------------------- + Signals + --------------------------- + pthread_sigmask + pthread_kill (only supports zero sig value, + for thread validity checking) + + --------------------------- + Non-portable routines (see the README.NONPORTABLE file for usage) + --------------------------- + pthread_getw32threadhandle_np + pthread_timechange_handler_np + pthread_delay_np + pthread_mutexattr_getkind_np + pthread_mutexattr_setkind_np (types: PTHREAD_MUTEX_FAST_NP, + PTHREAD_MUTEX_ERRORCHECK_NP, + PTHREAD_MUTEX_RECURSIVE_NP, + PTHREAD_MUTEX_ADAPTIVE_NP, + PTHREAD_MUTEX_TIMED_NP) + pthread_num_processors_np + pthread_win32_process_attach_np (Required when statically linking + the library) + pthread_win32_process_detach_np (Required when statically linking + the library) + pthread_win32_thread_attach_np (Required when statically linking + the library) + pthread_win32_thread_detach_np (Required when statically linking + the library) + + --------------------------- + Static Initializers + --------------------------- + PTHREAD_ONCE_INIT + PTHREAD_MUTEX_INITIALIZER + PTHREAD_RECURSIVE_MUTEX_INITIALIZER + PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP + PTHREAD_ERRORCHECK_MUTEX_INITIALIZER + PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP + PTHREAD_COND_INITIALIZER + PTHREAD_RWLOCK_INITIALIZER + PTHREAD_SPINLOCK_INITIALIZER + + --------------------------- + Thread-Safe C Runtime Library (macros) + --------------------------- + strtok_r + asctime_r + ctime_r + gmtime_r + localtime_r + rand_r + + +The following functions are not implemented: + + --------------------------- + RealTime Scheduling + --------------------------- + pthread_mutex_getprioceiling + pthread_mutex_setprioceiling + pthread_mutex_attr_getprioceiling + pthread_mutex_attr_getprotocol + pthread_mutex_attr_setprioceiling + pthread_mutex_attr_setprotocol + + --------------------------- + Fork Handlers + --------------------------- + pthread_atfork + + --------------------------- + Stdio + --------------------------- + flockfile + ftrylockfile + funlockfile + getc_unlocked + getchar_unlocked + putc_unlocked + putchar_unlocked + + --------------------------- + Thread-Safe C Runtime Library + --------------------------- + readdir_r + getgrgid_r + getgrnam_r + getpwuid_r + getpwnam_r + + --------------------------- + Signals + --------------------------- + sigtimedwait + sigwait + sigwaitinfo + + --------------------------- + General + --------------------------- + sysconf + +The library includes two non-API functions for creating cancellation +points in applications and libraries: + + pthreadCancelableWait + pthreadCancelableTimedWait + + +Availability +------------ + +The prebuilt DLL, export libs (for both MSVC and Mingw32), and the header +files (pthread.h, semaphore.h, sched.h) are available along with the +complete source code. + +The source code can be found at: + + ftp://sources.redhat.com/pub/pthreads-win32 + +and as individual source code files at + + ftp://sources.redhat.com/pub/pthreads-win32/source + +The pre-built DLL, export libraries and include files can be found at: + + ftp://sources.redhat.com/pub/pthreads-win32/dll-latest + + + +Mailing List +------------ + +There is a mailing list for discussing pthreads on Win32. To join, +send email to: + + pthreads-win32-subscribe@sourceware.cygnus.com + + +Application Development Environments +------------------------------------ + +See the README file for more information. + +MSVC: +MSVC using SEH works. Distribute pthreadVSE.dll with your application. +MSVC using C++ EH works. Distribute pthreadVCE.dll with your application. +MSVC using C setjmp/longjmp works. Distribute pthreadVC.dll with your application. + + +Mingw32: +See the FAQ, Questions 6 and 10. + +Mingw using C++ EH works. Distribute pthreadGCE.dll with your application. +Mingw using C setjmp/longjmp works. Distribute pthreadGC.dll with your application. + + +Cygwin: (http://sourceware.cygnus.com/cygwin/) +Developers using Cygwin will not need pthreads-win32 since it has POSIX threads +support. Refer to its documentation for details and extent. + + +UWIN: +UWIN is a complete Unix-like environment for Windows from AT&T. Pthreads-win32 +doesn't currently support UWIN (and vice versa), but that may change in the +future. + +Generally: +For convenience, the following pre-built files are available on the FTP site +(see Availability above): + + pthread.h - for POSIX 1c threads + semaphore.h - for POSIX 1b semaphores + sched.h - for POSIX 1b scheduling + pthreadVCE.dll - built with MSVC++ compiler using C++ EH + pthreadVCE.lib + pthreadVC.dll - built with MSVC compiler using C setjmp/longjmp + pthreadVC.lib + pthreadVSE.dll - built with MSVC compiler using SEH + pthreadVSE.lib + pthreadGCE.dll - built with Mingw32 G++ 2.95.2-1 + pthreadGC.dll - built with Mingw32 GCC 2.95.2-1 using setjmp/longjmp + libpthreadGCE.a - derived from pthreadGCE.dll + libpthreadGC.a - derived from pthreadGC.dll + gcc.dll - needed if distributing applications that use + pthreadGCE.dll (but see the FAQ Q 10 for the latest + related information) + +These are the only files you need in order to build POSIX threads +applications for Win32 using either MSVC or Mingw32. + +See the FAQ file in the source tree for additional information. + + +Documentation +------------- + +For the authoritative reference, see the online POSIX +standard reference at: + + http://www.OpenGroup.org + +For POSIX Thread API programming, several reference books are +available: + + Programming with POSIX Threads + David R. Butenhof + Addison-Wesley (pub) + + Pthreads Programming + By Bradford Nichols, Dick Buttlar & Jacqueline Proulx Farrell + O'Reilly (pub) + +On the web: see the links at the bottom of the pthreads-win32 site: + + http://sources.redhat.com/pthreads-win32/ + + Currently, there is no documentation included in the package apart + from the copious comments in the source code. + + + +Enjoy! + +Ross Johnson diff --git a/3rdparty/w32pthreads/BUGS b/3rdparty/w32pthreads/BUGS index 71451aa540..29cee0033e 100644 --- a/3rdparty/w32pthreads/BUGS +++ b/3rdparty/w32pthreads/BUGS @@ -1,133 +1,133 @@ ----------- -Known bugs ----------- - -1. Not strictly a bug, more of a gotcha. - - Under MS VC++ (only tested with version 6.0), a term_func - set via the standard C++ set_terminate() function causes the - application to abort. - - Notes from the MSVC++ manual: - 1) A term_func() should call exit(), otherwise - abort() will be called on return to the caller. - A call to abort() raises SIGABRT and the default signal handler - for all signals terminates the calling program with - exit code 3. - 2) A term_func() must not throw an exception. Therefore - term_func() should not call pthread_exit(), which - works by throwing an exception (pthreadVCE or pthreadVSE) - or by calling longjmp (pthreadVC). - - Workaround: avoid using pthread_exit() in C++ applications. Exit - threads by dropping through the end of the thread routine. - -2. Cancellation problems in optimised code - - Milan Gardian - - This is suspected to be a compiler bug in VC6.0, and also seen in - VC7.0 and VS .NET 2003. The GNU C++ compiler does not have a problem - with this, and it has been reported that the Intel C++ 8.1 compiler - and Visual C++ 2005 Express Edition Beta2 pass tests\semaphore4.c - (which exposes the bug). - - Workaround [rpj - 2 Feb 2002] - ----------------------------- - [Please note: this workaround did not solve a similar problem in - snapshot-2004-11-03 or later, even though similar symptoms were seen. - tests\semaphore4.c fails in that snapshot for the VCE version of the - DLL.] - - The problem disappears when /Ob0 is used, i.e. /O2 /Ob0 works OK, - but if you want to use inlining optimisation you can be much more - specific about where it's switched off and on by using a pragma. - - So the inlining optimisation is interfering with the way that cleanup - handlers are run. It appears to relate to auto-inlining of class methods - since this is the only auto inlining that is performed at /O1 optimisation - (functions with the "inline" qualifier are also inlined, but the problem - doesn't appear to involve any such functions in the library or testsuite). - - In order to confirm the inlining culprit, the following use of pragmas - eliminate the problem but I don't know how to make it transparent, putting - it in, say, pthread.h where pthread_cleanup_push defined as a macro. - - #pragma inline_depth(0) - pthread_cleanup_push(handlerFunc, (void *) &arg); - - /* ... */ - - pthread_cleanup_pop(0); - #pragma inline_depth() - - Note the empty () pragma value after the pop macro. This resets depth to the - default. Or you can specify a non-zero depth here. - - The pragma is also needed (and now used) within the library itself wherever - cleanup handlers are used (condvar.c and rwlock.c). - - Use of these pragmas allows compiler optimisations /O1 and /O2 to be - used for either or both the library and applications. - - Experimenting further, I found that wrapping the actual cleanup handler - function with #pragma auto_inline(off|on) does NOT work. - - MSVC6.0 doesn't appear to support the C99 standard's _Pragma directive, - however, later versions may. This form is embeddable inside #define - macros, which would be ideal because it would mean that it could be added - to the push/pop macro definitions in pthread.h and hidden from the - application programmer. - - [/rpj] - - Original problem description - ---------------------------- - - The cancellation (actually, cleanup-after-cancel) tests fail when using VC - (professional) optimisation switches (/O1 or /O2) in pthreads library. I - have not investigated which concrete optimisation technique causes this - problem (/Og, /Oi, /Ot, /Oy, /Ob1, /Gs, /Gf, /Gy, etc.), but here is a - summary of builds and corresponding failures: - - * pthreads VSE (optimised tests): OK - * pthreads VCE (optimised tests): Failed "cleanup1" test (runtime) - - * pthreads VSE (DLL in CRT, optimised tests): OK - * pthreads VCE (DLL in CRT, optimised tests): Failed "cleanup1" test - (runtime) - - Please note that while in VSE version of the pthreads library the - optimisation does not really have any impact on the tests (they pass OK), in - VCE version addition of optimisation (/O2 in this case) causes the tests to - fail uniformly - either in "cleanup0" or "cleanup1" test cases. - - Please note that all the tests above use default pthreads DLL (no - optimisations, linked with either static or DLL CRT, based on test type). - Therefore the problem lies not within the pthreads DLL but within the - compiled client code (the application using pthreads -> involvement of - "pthread.h"). - - I think the message of this section is that usage of VCE version of pthreads - in applications relying on cancellation/cleanup AND using optimisations for - creation of production code is highly unreliable for the current version of - the pthreads library. - -3. The Borland Builder 5.5 version of the library produces memory read exceptions -in some tests. - -4. pthread_barrier_wait() can deadlock if the number of potential calling -threads for a particular barrier is greater than the barrier count parameter -given to pthread_barrier_init() for that barrier. - -This is due to the very lightweight implementation of pthread-win32 barriers. -To cope with more than "count" possible waiters, barriers must effectively -implement all the same safeguards as condition variables, making them much -"heavier" than at present. - -The workaround is to ensure that no more than "count" threads attempt to wait -at the barrier. - -5. Canceling a thread blocked on pthread_once appears not to work in the MSVC++ -version of the library "pthreadVCE.dll". The test case "once3.c" hangs. I have no -clues on this at present. All other versions pass this test ok - pthreadsVC.dll, -pthreadsVSE.dll, pthreadsGC.dll and pthreadsGCE.dll. +---------- +Known bugs +---------- + +1. Not strictly a bug, more of a gotcha. + + Under MS VC++ (only tested with version 6.0), a term_func + set via the standard C++ set_terminate() function causes the + application to abort. + + Notes from the MSVC++ manual: + 1) A term_func() should call exit(), otherwise + abort() will be called on return to the caller. + A call to abort() raises SIGABRT and the default signal handler + for all signals terminates the calling program with + exit code 3. + 2) A term_func() must not throw an exception. Therefore + term_func() should not call pthread_exit(), which + works by throwing an exception (pthreadVCE or pthreadVSE) + or by calling longjmp (pthreadVC). + + Workaround: avoid using pthread_exit() in C++ applications. Exit + threads by dropping through the end of the thread routine. + +2. Cancellation problems in optimised code + - Milan Gardian + + This is suspected to be a compiler bug in VC6.0, and also seen in + VC7.0 and VS .NET 2003. The GNU C++ compiler does not have a problem + with this, and it has been reported that the Intel C++ 8.1 compiler + and Visual C++ 2005 Express Edition Beta2 pass tests\semaphore4.c + (which exposes the bug). + + Workaround [rpj - 2 Feb 2002] + ----------------------------- + [Please note: this workaround did not solve a similar problem in + snapshot-2004-11-03 or later, even though similar symptoms were seen. + tests\semaphore4.c fails in that snapshot for the VCE version of the + DLL.] + + The problem disappears when /Ob0 is used, i.e. /O2 /Ob0 works OK, + but if you want to use inlining optimisation you can be much more + specific about where it's switched off and on by using a pragma. + + So the inlining optimisation is interfering with the way that cleanup + handlers are run. It appears to relate to auto-inlining of class methods + since this is the only auto inlining that is performed at /O1 optimisation + (functions with the "inline" qualifier are also inlined, but the problem + doesn't appear to involve any such functions in the library or testsuite). + + In order to confirm the inlining culprit, the following use of pragmas + eliminate the problem but I don't know how to make it transparent, putting + it in, say, pthread.h where pthread_cleanup_push defined as a macro. + + #pragma inline_depth(0) + pthread_cleanup_push(handlerFunc, (void *) &arg); + + /* ... */ + + pthread_cleanup_pop(0); + #pragma inline_depth() + + Note the empty () pragma value after the pop macro. This resets depth to the + default. Or you can specify a non-zero depth here. + + The pragma is also needed (and now used) within the library itself wherever + cleanup handlers are used (condvar.c and rwlock.c). + + Use of these pragmas allows compiler optimisations /O1 and /O2 to be + used for either or both the library and applications. + + Experimenting further, I found that wrapping the actual cleanup handler + function with #pragma auto_inline(off|on) does NOT work. + + MSVC6.0 doesn't appear to support the C99 standard's _Pragma directive, + however, later versions may. This form is embeddable inside #define + macros, which would be ideal because it would mean that it could be added + to the push/pop macro definitions in pthread.h and hidden from the + application programmer. + + [/rpj] + + Original problem description + ---------------------------- + + The cancellation (actually, cleanup-after-cancel) tests fail when using VC + (professional) optimisation switches (/O1 or /O2) in pthreads library. I + have not investigated which concrete optimisation technique causes this + problem (/Og, /Oi, /Ot, /Oy, /Ob1, /Gs, /Gf, /Gy, etc.), but here is a + summary of builds and corresponding failures: + + * pthreads VSE (optimised tests): OK + * pthreads VCE (optimised tests): Failed "cleanup1" test (runtime) + + * pthreads VSE (DLL in CRT, optimised tests): OK + * pthreads VCE (DLL in CRT, optimised tests): Failed "cleanup1" test + (runtime) + + Please note that while in VSE version of the pthreads library the + optimisation does not really have any impact on the tests (they pass OK), in + VCE version addition of optimisation (/O2 in this case) causes the tests to + fail uniformly - either in "cleanup0" or "cleanup1" test cases. + + Please note that all the tests above use default pthreads DLL (no + optimisations, linked with either static or DLL CRT, based on test type). + Therefore the problem lies not within the pthreads DLL but within the + compiled client code (the application using pthreads -> involvement of + "pthread.h"). + + I think the message of this section is that usage of VCE version of pthreads + in applications relying on cancellation/cleanup AND using optimisations for + creation of production code is highly unreliable for the current version of + the pthreads library. + +3. The Borland Builder 5.5 version of the library produces memory read exceptions +in some tests. + +4. pthread_barrier_wait() can deadlock if the number of potential calling +threads for a particular barrier is greater than the barrier count parameter +given to pthread_barrier_init() for that barrier. + +This is due to the very lightweight implementation of pthread-win32 barriers. +To cope with more than "count" possible waiters, barriers must effectively +implement all the same safeguards as condition variables, making them much +"heavier" than at present. + +The workaround is to ensure that no more than "count" threads attempt to wait +at the barrier. + +5. Canceling a thread blocked on pthread_once appears not to work in the MSVC++ +version of the library "pthreadVCE.dll". The test case "once3.c" hangs. I have no +clues on this at present. All other versions pass this test ok - pthreadsVC.dll, +pthreadsVSE.dll, pthreadsGC.dll and pthreadsGCE.dll. diff --git a/3rdparty/w32pthreads/CONTRIBUTORS b/3rdparty/w32pthreads/CONTRIBUTORS index 2f70e385c0..e5b7325d16 100644 --- a/3rdparty/w32pthreads/CONTRIBUTORS +++ b/3rdparty/w32pthreads/CONTRIBUTORS @@ -1,129 +1,129 @@ -Contributors (in approximate order of appearance) - -[See also the ChangeLog file where individuals are -attributed in log entries. Likewise in the FAQ file.] - -Ben Elliston bje at cygnus dot com - Initiated the project; - setup the project infrastructure (CVS, web page, etc.); - early prototype routines. -Ross Johnson rpj at callisto dot canberra dot edu dot au - early prototype routines; - ongoing project coordination/maintenance; - implementation of spin locks and barriers; - various enhancements; - bug fixes; - documentation; - testsuite. -Robert Colquhoun rjc at trump dot net dot au - Early bug fixes. -John E. Bossom John dot Bossom at cognos dot com - Contributed substantial original working implementation; - bug fixes; - ongoing guidance and standards interpretation. -Anders Norlander anorland at hem2 dot passagen dot se - Early enhancements and runtime checking for supported - Win32 routines. -Tor Lillqvist tml at iki dot fi - General enhancements; - early bug fixes to condition variables. -Scott Lightner scott at curriculum dot com - Bug fix. -Kevin Ruland Kevin dot Ruland at anheuser-busch dot com - Various bug fixes. -Mike Russo miker at eai dot com - Bug fix. -Mark E. Armstrong avail at pacbell dot net - Bug fixes. -Lorin Hochstein lmh at xiphos dot ca - general bug fixes; bug fixes to condition variables. -Peter Slacik Peter dot Slacik at tatramed dot sk - Bug fixes. -Mumit Khan khan at xraylith dot wisc dot edu - Fixes to work with Mingw32. -Milan Gardian mg at tatramed dot sk - Bug fixes and reports/analyses of obscure problems. -Aurelio Medina aureliom at crt dot com - First implementation of read-write locks. -Graham Dumpleton Graham dot Dumpleton at ra dot pad dot otc dot telstra dot com dot au - Bug fix in condition variables. -Tristan Savatier tristan at mpegtv dot com - WinCE port. -Erik Hensema erik at hensema dot xs4all dot nl - Bug fixes. -Rich Peters rpeters at micro-magic dot com -Todd Owen towen at lucidcalm dot dropbear dot id dot au - Bug fixes to dll loading. -Jason Nye jnye at nbnet dot nb dot ca - Implementation of async cancelation. -Fred Forester fforest at eticomm dot net -Kevin D. Clark kclark at cabletron dot com -David Baggett dmb at itasoftware dot com - Bug fixes. -Paul Redondo paul at matchvision dot com -Scott McCaskill scott at 3dfx dot com - Bug fixes. -Jef Gearhart jgearhart at tpssys dot com - Bug fix. -Arthur Kantor akantor at bexusa dot com - Mutex enhancements. -Steven Reddie smr at essemer dot com dot au - Bug fix. -Alexander Terekhov TEREKHOV at de dot ibm dot com - Re-implemented and improved read-write locks; - (with Louis Thomas) re-implemented and improved - condition variables; - enhancements to semaphores; - enhancements to mutexes; - new mutex implementation in 'futex' style; - suggested a robust implementation of pthread_once - similar to that implemented by V.Kliathcko; - system clock change handling re CV timeouts; - bug fixes. -Thomas Pfaff tpfaff at gmx dot net - Changes to make C version usable with C++ applications; - re-implemented mutex routines to avoid Win32 mutexes - and TryEnterCriticalSection; - procedure to fix Mingw32 thread-safety issues. -Franco Bez franco dot bez at gmx dot de - procedure to fix Mingw32 thread-safety issues. -Louis Thomas lthomas at arbitrade dot com - (with Alexander Terekhov) re-implemented and improved - condition variables. -David Korn dgk at research dot att dot com - Ported to UWIN. -Phil Frisbie, Jr. phil at hawksoft dot com - Bug fix. -Ralf Brese Ralf dot Brese at pdb4 dot siemens dot de - Bug fix. -prionx at juno dot com prionx at juno dot com - Bug fixes. -Max Woodbury mtew at cds dot duke dot edu - POSIX versioning conditionals; - reduced namespace pollution; - idea to separate routines to reduce statically - linked image sizes. -Rob Fanner rfanner at stonethree dot com - Bug fix. -Michael Johnson michaelj at maine dot rr dot com - Bug fix. -Nicolas Barry boozai at yahoo dot com - Bug fixes. -Piet van Bruggen pietvb at newbridges dot nl - Bug fix. -Makoto Kato raven at oldskool dot jp - AMD64 port. -Panagiotis E. Hadjidoukas peh at hpclab dot ceid dot upatras dot gr - Contributed the QueueUserAPCEx package which - makes preemptive async cancelation possible. -Will Bryant will dot bryant at ecosm dot com - Borland compiler patch and makefile. -Anuj Goyal anuj dot goyal at gmail dot com - Port to Digital Mars compiler. -Gottlob Frege gottlobfrege at gmail dot com - re-implemented pthread_once (version 2) - (pthread_once cancellation added by rpj). -Vladimir Kliatchko vladimir at kliatchko dot com - reimplemented pthread_once with the same form - as described by A.Terekhov (later version 2); - implementation of MCS (Mellor-Crummey/Scott) locks. +Contributors (in approximate order of appearance) + +[See also the ChangeLog file where individuals are +attributed in log entries. Likewise in the FAQ file.] + +Ben Elliston bje at cygnus dot com + Initiated the project; + setup the project infrastructure (CVS, web page, etc.); + early prototype routines. +Ross Johnson rpj at callisto dot canberra dot edu dot au + early prototype routines; + ongoing project coordination/maintenance; + implementation of spin locks and barriers; + various enhancements; + bug fixes; + documentation; + testsuite. +Robert Colquhoun rjc at trump dot net dot au + Early bug fixes. +John E. Bossom John dot Bossom at cognos dot com + Contributed substantial original working implementation; + bug fixes; + ongoing guidance and standards interpretation. +Anders Norlander anorland at hem2 dot passagen dot se + Early enhancements and runtime checking for supported + Win32 routines. +Tor Lillqvist tml at iki dot fi + General enhancements; + early bug fixes to condition variables. +Scott Lightner scott at curriculum dot com + Bug fix. +Kevin Ruland Kevin dot Ruland at anheuser-busch dot com + Various bug fixes. +Mike Russo miker at eai dot com + Bug fix. +Mark E. Armstrong avail at pacbell dot net + Bug fixes. +Lorin Hochstein lmh at xiphos dot ca + general bug fixes; bug fixes to condition variables. +Peter Slacik Peter dot Slacik at tatramed dot sk + Bug fixes. +Mumit Khan khan at xraylith dot wisc dot edu + Fixes to work with Mingw32. +Milan Gardian mg at tatramed dot sk + Bug fixes and reports/analyses of obscure problems. +Aurelio Medina aureliom at crt dot com + First implementation of read-write locks. +Graham Dumpleton Graham dot Dumpleton at ra dot pad dot otc dot telstra dot com dot au + Bug fix in condition variables. +Tristan Savatier tristan at mpegtv dot com + WinCE port. +Erik Hensema erik at hensema dot xs4all dot nl + Bug fixes. +Rich Peters rpeters at micro-magic dot com +Todd Owen towen at lucidcalm dot dropbear dot id dot au + Bug fixes to dll loading. +Jason Nye jnye at nbnet dot nb dot ca + Implementation of async cancelation. +Fred Forester fforest at eticomm dot net +Kevin D. Clark kclark at cabletron dot com +David Baggett dmb at itasoftware dot com + Bug fixes. +Paul Redondo paul at matchvision dot com +Scott McCaskill scott at 3dfx dot com + Bug fixes. +Jef Gearhart jgearhart at tpssys dot com + Bug fix. +Arthur Kantor akantor at bexusa dot com + Mutex enhancements. +Steven Reddie smr at essemer dot com dot au + Bug fix. +Alexander Terekhov TEREKHOV at de dot ibm dot com + Re-implemented and improved read-write locks; + (with Louis Thomas) re-implemented and improved + condition variables; + enhancements to semaphores; + enhancements to mutexes; + new mutex implementation in 'futex' style; + suggested a robust implementation of pthread_once + similar to that implemented by V.Kliathcko; + system clock change handling re CV timeouts; + bug fixes. +Thomas Pfaff tpfaff at gmx dot net + Changes to make C version usable with C++ applications; + re-implemented mutex routines to avoid Win32 mutexes + and TryEnterCriticalSection; + procedure to fix Mingw32 thread-safety issues. +Franco Bez franco dot bez at gmx dot de + procedure to fix Mingw32 thread-safety issues. +Louis Thomas lthomas at arbitrade dot com + (with Alexander Terekhov) re-implemented and improved + condition variables. +David Korn dgk at research dot att dot com + Ported to UWIN. +Phil Frisbie, Jr. phil at hawksoft dot com + Bug fix. +Ralf Brese Ralf dot Brese at pdb4 dot siemens dot de + Bug fix. +prionx at juno dot com prionx at juno dot com + Bug fixes. +Max Woodbury mtew at cds dot duke dot edu + POSIX versioning conditionals; + reduced namespace pollution; + idea to separate routines to reduce statically + linked image sizes. +Rob Fanner rfanner at stonethree dot com + Bug fix. +Michael Johnson michaelj at maine dot rr dot com + Bug fix. +Nicolas Barry boozai at yahoo dot com + Bug fixes. +Piet van Bruggen pietvb at newbridges dot nl + Bug fix. +Makoto Kato raven at oldskool dot jp + AMD64 port. +Panagiotis E. Hadjidoukas peh at hpclab dot ceid dot upatras dot gr + Contributed the QueueUserAPCEx package which + makes preemptive async cancelation possible. +Will Bryant will dot bryant at ecosm dot com + Borland compiler patch and makefile. +Anuj Goyal anuj dot goyal at gmail dot com + Port to Digital Mars compiler. +Gottlob Frege gottlobfrege at gmail dot com + re-implemented pthread_once (version 2) + (pthread_once cancellation added by rpj). +Vladimir Kliatchko vladimir at kliatchko dot com + reimplemented pthread_once with the same form + as described by A.Terekhov (later version 2); + implementation of MCS (Mellor-Crummey/Scott) locks. diff --git a/3rdparty/w32pthreads/COPYING b/3rdparty/w32pthreads/COPYING index af8e3db912..5cfea0d0ed 100644 --- a/3rdparty/w32pthreads/COPYING +++ b/3rdparty/w32pthreads/COPYING @@ -1,150 +1,150 @@ - pthreads-win32 - a POSIX threads library for Microsoft Windows - - -This file is Copyrighted ------------------------- - - This file is covered under the following Copyright: - - Copyright (C) 2001,2006 Ross P. Johnson - All rights reserved. - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -Pthreads-win32 is covered by the GNU Lesser General Public License ------------------------------------------------------------------- - - Pthreads-win32 is open software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation version 2.1 of the - License. - - Pthreads-win32 is several binary link libraries, several modules, - associated interface definition files and scripts used to control - its compilation and installation. - - Pthreads-win32 is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - A copy of the GNU Lesser General Public License is distributed with - pthreads-win32 under the filename: - - COPYING.LIB - - You should have received a copy of the version 2.1 GNU Lesser General - Public License with pthreads-win32; if not, write to: - - Free Software Foundation, Inc. - 59 Temple Place - Suite 330 - Boston, MA 02111-1307 - USA - - The contact addresses for pthreads-win32 is as follows: - - Web: http://sources.redhat.com/pthreads-win32 - Email: Ross Johnson - Please use: Firstname.Lastname@homemail.com.au - - - -Pthreads-win32 copyrights and exception files ---------------------------------------------- - - With the exception of the files listed below, Pthreads-win32 - is covered under the following GNU Lesser General Public License - Copyrights: - - Pthreads-win32 - POSIX Threads Library for Win32 - Copyright(C) 1998 John E. Bossom - Copyright(C) 1999,2006 Pthreads-win32 contributors - - The current list of contributors is contained - in the file CONTRIBUTORS included with the source - code distribution. The current list of CONTRIBUTORS - can also be seen at the following WWW location: - http://sources.redhat.com/pthreads-win32/contributors.html - - Contact Email: Ross Johnson - Please use: Firstname.Lastname@homemail.com.au - - These files are not covered under one of the Copyrights listed above: - - COPYING - COPYING.LIB - tests/rwlock7.c - - This file, COPYING, is distributed under the Copyright found at the - top of this file. It is important to note that you may distribute - verbatim copies of this file but you may not modify this file. - - The file COPYING.LIB, which contains a copy of the version 2.1 - GNU Lesser General Public License, is itself copyrighted by the - Free Software Foundation, Inc. Please note that the Free Software - Foundation, Inc. does NOT have a copyright over Pthreads-win32, - only the COPYING.LIB that is supplied with pthreads-win32. - - The file tests/rwlock7.c is derived from code written by - Dave Butenhof for his book 'Programming With POSIX(R) Threads'. - The original code was obtained by free download from his website - http://home.earthlink.net/~anneart/family/Threads/source.html - and did not contain a copyright or author notice. It is assumed to - be freely distributable. - - In all cases one may use and distribute these exception files freely. - And because one may freely distribute the LGPL covered files, the - entire pthreads-win32 source may be freely used and distributed. - - - -General Copyleft and License info ---------------------------------- - - For general information on Copylefts, see: - - http://www.gnu.org/copyleft/ - - For information on GNU Lesser General Public Licenses, see: - - http://www.gnu.org/copyleft/lesser.html - http://www.gnu.org/copyleft/lesser.txt - - -Why pthreads-win32 did not use the GNU General Public License -------------------------------------------------------------- - - The goal of the pthreads-win32 project has been to - provide a quality and complete implementation of the POSIX - threads API for Microsoft Windows within the limits imposed - by virtue of it being a stand-alone library and not - linked directly to other POSIX compliant libraries. For - example, some functions and features, such as those based - on POSIX signals, are missing. - - Pthreads-win32 is a library, available in several different - versions depending on supported compilers, and may be used - as a dynamically linked module or a statically linked set of - binary modules. It is not an application on it's own. - - It was fully intended that pthreads-win32 be usable with - commercial software not covered by either the GPL or the LGPL - licenses. Pthreads-win32 has many contributors to it's - code base, many of whom have done so because they have - used the library in commercial or proprietry software - projects. - - Releasing pthreads-win32 under the LGPL ensures that the - library can be used widely, while at the same time ensures - that bug fixes and improvements to the pthreads-win32 code - itself is returned to benefit all current and future users - of the library. - - Although pthreads-win32 makes it possible for applications - that use POSIX threads to be ported to Win32 platforms, the - broader goal of the project is to encourage the use of open - standards, and in particular, to make it just a little easier - for developers writing Win32 applications to consider - widening the potential market for their products. + pthreads-win32 - a POSIX threads library for Microsoft Windows + + +This file is Copyrighted +------------------------ + + This file is covered under the following Copyright: + + Copyright (C) 2001,2006 Ross P. Johnson + All rights reserved. + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +Pthreads-win32 is covered by the GNU Lesser General Public License +------------------------------------------------------------------ + + Pthreads-win32 is open software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation version 2.1 of the + License. + + Pthreads-win32 is several binary link libraries, several modules, + associated interface definition files and scripts used to control + its compilation and installation. + + Pthreads-win32 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + A copy of the GNU Lesser General Public License is distributed with + pthreads-win32 under the filename: + + COPYING.LIB + + You should have received a copy of the version 2.1 GNU Lesser General + Public License with pthreads-win32; if not, write to: + + Free Software Foundation, Inc. + 59 Temple Place + Suite 330 + Boston, MA 02111-1307 + USA + + The contact addresses for pthreads-win32 is as follows: + + Web: http://sources.redhat.com/pthreads-win32 + Email: Ross Johnson + Please use: Firstname.Lastname@homemail.com.au + + + +Pthreads-win32 copyrights and exception files +--------------------------------------------- + + With the exception of the files listed below, Pthreads-win32 + is covered under the following GNU Lesser General Public License + Copyrights: + + Pthreads-win32 - POSIX Threads Library for Win32 + Copyright(C) 1998 John E. Bossom + Copyright(C) 1999,2006 Pthreads-win32 contributors + + The current list of contributors is contained + in the file CONTRIBUTORS included with the source + code distribution. The current list of CONTRIBUTORS + can also be seen at the following WWW location: + http://sources.redhat.com/pthreads-win32/contributors.html + + Contact Email: Ross Johnson + Please use: Firstname.Lastname@homemail.com.au + + These files are not covered under one of the Copyrights listed above: + + COPYING + COPYING.LIB + tests/rwlock7.c + + This file, COPYING, is distributed under the Copyright found at the + top of this file. It is important to note that you may distribute + verbatim copies of this file but you may not modify this file. + + The file COPYING.LIB, which contains a copy of the version 2.1 + GNU Lesser General Public License, is itself copyrighted by the + Free Software Foundation, Inc. Please note that the Free Software + Foundation, Inc. does NOT have a copyright over Pthreads-win32, + only the COPYING.LIB that is supplied with pthreads-win32. + + The file tests/rwlock7.c is derived from code written by + Dave Butenhof for his book 'Programming With POSIX(R) Threads'. + The original code was obtained by free download from his website + http://home.earthlink.net/~anneart/family/Threads/source.html + and did not contain a copyright or author notice. It is assumed to + be freely distributable. + + In all cases one may use and distribute these exception files freely. + And because one may freely distribute the LGPL covered files, the + entire pthreads-win32 source may be freely used and distributed. + + + +General Copyleft and License info +--------------------------------- + + For general information on Copylefts, see: + + http://www.gnu.org/copyleft/ + + For information on GNU Lesser General Public Licenses, see: + + http://www.gnu.org/copyleft/lesser.html + http://www.gnu.org/copyleft/lesser.txt + + +Why pthreads-win32 did not use the GNU General Public License +------------------------------------------------------------- + + The goal of the pthreads-win32 project has been to + provide a quality and complete implementation of the POSIX + threads API for Microsoft Windows within the limits imposed + by virtue of it being a stand-alone library and not + linked directly to other POSIX compliant libraries. For + example, some functions and features, such as those based + on POSIX signals, are missing. + + Pthreads-win32 is a library, available in several different + versions depending on supported compilers, and may be used + as a dynamically linked module or a statically linked set of + binary modules. It is not an application on it's own. + + It was fully intended that pthreads-win32 be usable with + commercial software not covered by either the GPL or the LGPL + licenses. Pthreads-win32 has many contributors to it's + code base, many of whom have done so because they have + used the library in commercial or proprietry software + projects. + + Releasing pthreads-win32 under the LGPL ensures that the + library can be used widely, while at the same time ensures + that bug fixes and improvements to the pthreads-win32 code + itself is returned to benefit all current and future users + of the library. + + Although pthreads-win32 makes it possible for applications + that use POSIX threads to be ported to Win32 platforms, the + broader goal of the project is to encourage the use of open + standards, and in particular, to make it just a little easier + for developers writing Win32 applications to consider + widening the potential market for their products. diff --git a/3rdparty/w32pthreads/FAQ b/3rdparty/w32pthreads/FAQ index ee8968ba4c..4f2d449b92 100644 --- a/3rdparty/w32pthreads/FAQ +++ b/3rdparty/w32pthreads/FAQ @@ -1,403 +1,403 @@ - ========================================= - PTHREADS-WIN32 Frequently Asked Questions - ========================================= - -INDEX ------ - -Q 1 What is it? - -Q 2 Which of the several dll versions do I use? - or, - What are all these pthread*.dll and pthread*.lib files? - -Q 3 What is the library naming convention? - -Q 4 Cleanup code default style or: it used to work when I built - the library myself, but now it doesn't - why? - -Q 5 Why is the default library version now less exception-friendly? - -Q 6 Should I use Cygwin or Mingw32 as a development environment? - -Q 7 Now that pthreads-win32 builds under Mingw32, why do I get - memory access violations (segfaults)? - -Q 8 How do I use pthread.dll for Win32 (Visual C++ 5.0) - -Q 9 Cancelation doesn't work for me, why? - -Q 10 How do I generate pthreadGCE.dll and libpthreadw32.a for use - with Mingw32? - -============================================================================= - -Q 1 What is it? ---- - -Pthreads-win32 is an Open Source Software implementation of the -Threads component of the POSIX 1003.1c 1995 Standard for Microsoft's -Win32 environment. Some functions from POSIX 1003.1b are also -supported including semaphores. Other related functions include -the set of read-write lock functions. The library also supports -some of the functionality of the Open Group's Single Unix -specification, version 2, namely mutex types. - -See the file "ANNOUNCE" for more information including standards -conformance details and list of supported routines. - - ------------------------------------------------------------------------------- - -Q 2 Which of the several dll versions do I use? ---- or, - What are all these pthread*.dll and pthread*.lib files? - -Simply, you only use one of them, but you need to choose carefully. - -The most important choice you need to make is whether to use a -version that uses exceptions internally, or not (there are versions -of the library that use exceptions as part of the thread -cancelation and cleanup implementation, and one that uses -setjmp/longjmp instead). - -There is some contension amongst POSIX threads experts as -to how POSIX threads cancelation and exit should work -with languages that include exceptions and handlers, e.g. -C++ and even C (Microsoft's Structured Exceptions). - -The issue is: should cancelation of a thread in, say, -a C++ application cause object destructors and C++ exception -handlers to be invoked as the stack unwinds during thread -exit, or not? - -There seems to be more opinion in favour of using the -standard C version of the library (no EH) with C++ applications -since this appears to be the assumption commercial pthreads -implementations make. Therefore, if you use an EH version -of pthreads-win32 then you may be under the illusion that -your application will be portable, when in fact it is likely to -behave very differently linked with other pthreads libraries. - -Now you may be asking: why have you kept the EH versions of -the library? - -There are a couple of reasons: -- there is division amongst the experts and so the code may - be needed in the future. (Yes, it's in the repository and we - can get it out anytime in the future, but ...) -- pthreads-win32 is one of the few implementations, and possibly - the only freely available one, that has EH versions. It may be - useful to people who want to play with or study application - behaviour under these conditions. - - ------------------------------------------------------------------------------- - -Q 3 What is the library naming convention? ---- - -Because the library is being built using various exception -handling schemes and compilers - and because the library -may not work reliably if these are mixed in an application, -each different version of the library has it's own name. - -Note 1: the incompatibility is really between EH implementations -of the different compilers. It should be possible to use the -standard C version from either compiler with C++ applications -built with a different compiler. If you use an EH version of -the library, then you must use the same compiler for the -application. This is another complication and dependency that -can be avoided by using only the standard C library version. - -Note 2: if you use a standard C pthread*.dll with a C++ -application, then any functions that you define that are -intended to be called via pthread_cleanup_push() must be -__cdecl. - -Note 3: the intention is to also name either the VC or GC -version (it should be arbitrary) as pthread.dll, including -pthread.lib and libpthread.a as appropriate. - -In general: - pthread[VG]{SE,CE,C}.dll - pthread[VG]{SE,CE,C}.lib - -where: - [VG] indicates the compiler - V - MS VC - G - GNU C - - {SE,CE,C} indicates the exception handling scheme - SE - Structured EH - CE - C++ EH - C - no exceptions - uses setjmp/longjmp - -For example: - pthreadVSE.dll (MSVC/SEH) - pthreadGCE.dll (GNUC/C++ EH) - pthreadGC.dll (GNUC/not dependent on exceptions) - -The GNU library archive file names have changed to: - - libpthreadGCE.a - libpthreadGC.a - - ------------------------------------------------------------------------------- - -Q 4 Cleanup code default style or: it used to work when I built ---- the library myself, but now it doesn't - why? - -Up to and including snapshot 2001-07-12, if not defined, the cleanup -style was determined automatically from the compiler used, and one -of the following was defined accordingly: - - __CLEANUP_SEH MSVC only - __CLEANUP_CXX C++, including MSVC++, GNU G++ - __CLEANUP_C C, including GNU GCC, not MSVC - -These defines determine the style of cleanup (see pthread.h) and, -most importantly, the way that cancelation and thread exit (via -pthread_exit) is performed (see the routine ptw32_throw() in private.c). - -In short, the exceptions versions of the library throw an exception -when a thread is canceled or exits (via pthread_exit()), which is -caught by a handler in the thread startup routine, so that the -the correct stack unwinding occurs regardless of where the thread -is when it's canceled or exits via pthread_exit(). - -After snapshot 2001-07-12, unless your build explicitly defines (e.g. -via a compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then -the build now ALWAYS defaults to __CLEANUP_C style cleanup. This style -uses setjmp/longjmp in the cancelation and pthread_exit implementations, -and therefore won't do stack unwinding even when linked to applications -that have it (e.g. C++ apps). This is for consistency with most/all -commercial Unix POSIX threads implementations. - -Although it was not clearly documented before, it is still necessary to -build your application using the same __CLEANUP_* define as was -used for the version of the library that you link with, so that the -correct parts of pthread.h are included. That is, the possible -defines require the following library versions: - - __CLEANUP_SEH pthreadVSE.dll - __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll - __CLEANUP_C pthreadVC.dll or pthreadGC.dll - -THE POINT OF ALL THIS IS: if you have not been defining one of these -explicitly, then the defaults have been set according to the compiler -and language you are using, as described at the top of this -section. - -THIS NOW CHANGES, as has been explained above. For example: - -If you were building your application with MSVC++ i.e. using C++ -exceptions (rather than SEH) and not explicitly defining one of -__CLEANUP_*, then __CLEANUP_C++ was defined for you in pthread.h. -You should have been linking with pthreadVCE.dll, which does -stack unwinding. - -If you now build your application as you had before, pthread.h will now -set __CLEANUP_C as the default style, and you will need to link -with pthreadVC.dll. Stack unwinding will now NOT occur when a -thread is canceled, nor when the thread calls pthread_exit(). - -Your application will now most likely behave differently to previous -versions, and in non-obvious ways. Most likely is that local -objects may not be destroyed or cleaned up after a thread -is canceled. - -If you want the same behaviour as before, then you must now define -__CLEANUP_C++ explicitly using a compiler option and link with -pthreadVCE.dll as you did before. - - ------------------------------------------------------------------------------- - -Q 5 Why is the default library version now less exception-friendly? ---- - -Because most commercial Unix POSIX threads implementations don't allow you to -choose to have stack unwinding. (Compaq's TRU64 Unix is possibly an exception.) - -Therefore, providing it in pthread-win32 as a default could be dangerous -and non-portable. We still provide the choice but you must now consciously -make it. - -WHY NOT REMOVE THE EXCEPTIONS VERSIONS OF THE LIBRARY ALTOGETHER? -There are a few reasons: -- because there are well respected POSIX threads people who believe - that POSIX threads implementations should be exceptions-aware and - do the expected thing in that context. (There are equally respected - people who believe it should not be easily accessible, if it's there - at all.) -- because pthreads-win32 is one of the few implementations that has - the choice, perhaps the only freely available one, and so offers - a laboratory to people who may want to explore the effects; -- although the code will always be around somewhere for anyone who - wants it, once it's removed from the current version it will not be - nearly as visible to people who may have a use for it. - - ------------------------------------------------------------------------------- - -Q 6 Should I use Cygwin or Mingw32 as a development environment? ---- - -Important: see Q7 also. - -Use Mingw32 with the MSVCRT library to build applications that use -the pthreads DLL. - -Cygwin's own internal support for POSIX threads is growing. -Consult that project's documentation for more information. - ------------------------------------------------------------------------------- - -Q 7 Now that pthreads-win32 builds under Mingw32, why do I get ---- memory access violations (segfaults)? - -The latest Mingw32 package has thread-safe exception handling (see Q10). -Also, see Q6 above. - ------------------------------------------------------------------------------- - -Q 8 How do I use pthread.dll for Win32 (Visual C++ 5.0) ---- - -> -> I'm a "rookie" when it comes to your pthread implementation. I'm currently -> desperately trying to install the prebuilt .dll file into my MSVC compiler. -> Could you please provide me with explicit instructions on how to do this (or -> direct me to a resource(s) where I can acquire such information)? -> -> Thank you, -> - -You should have a .dll, .lib, .def, and three .h files. It is recommended -that you use pthreadVC.dll, rather than pthreadVCE.dll or pthreadVSE.dll -(see Q2 above). - -The .dll can go in any directory listed in your PATH environment -variable, so putting it into C:\WINDOWS should work. - -The .lib file can go in any directory listed in your LIB environment -variable. - -The .h files can go in any directory listed in your INCLUDE -environment variable. - -Or you might prefer to put the .lib and .h files into a new directory -and add its path to LIB and INCLUDE. You can probably do this easiest -by editing the file:- - -C:\Program Files\DevStudio\vc\bin\vcvars32.bat - -The .def file isn't used by anything in the pre-compiled version but -is included for information. - -Cheers. -Ross - ------------------------------------------------------------------------------- - -Q 9 Cancelation doesn't work for me, why? ---- - -> I'm investigating a problem regarding thread cancelation. The thread I want -> to cancel has PTHREAD_CANCEL_ASYNCHRONOUS, however, this piece of code -> blocks on the join(): -> -> if ((retv = Pthread_cancel( recvThread )) == 0) -> { -> retv = Pthread_join( recvThread, 0 ); -> } -> -> Pthread_* are just macro's; they call pthread_*. -> -> The thread recvThread seems to block on a select() call. It doesn't get -> cancelled. -> -> Two questions: -> -> 1) is this normal behaviour? -> -> 2) if not, how does the cancel mechanism work? I'm not very familliar to -> win32 programming, so I don't really understand how the *Event() family of -> calls work. - -The answer to your first question is, normal POSIX behaviour would -be to asynchronously cancel the thread. However, even that doesn't -guarantee cancelation as the standard only says it should be -cancelled as soon as possible. - -Snapshot 99-11-02 or earlier only partially supports asynchronous cancellation. -Snapshots since then simulate async cancelation by poking the address of -a cancelation routine into the PC of the threads context. This requires -the thread to be resumed in some way for the cancelation to actually -proceed. This is not true async cancelation, but it is as close as we've -been able to get to it. - -If the thread you're trying to cancel is blocked (for instance, it could be -waiting for data from the network), it will only get cancelled when it unblocks -(when the data arrives). For true pre-emptive cancelation in these cases, -pthreads-win32 from snapshot 2004-05-16 can automatically recognise and use the -QueueUserAPCEx package by Panagiotis E. Hadjidoukas. This package is available -from the pthreads-win32 ftp site and is included in the pthreads-win32 -self-unpacking zip from 2004-05-16 onwards. - -Using deferred cancelation would normally be the way to go, however, -even though the POSIX threads standard lists a number of C library -functions that are defined as deferred cancelation points, there is -no hookup between those which are provided by Windows and the -pthreads-win32 library. - -Incidently, it's worth noting for code portability that the older POSIX -threads standards cancelation point lists didn't include "select" because -(as I read in Butenhof) it wasn't part of POSIX. However, it does appear in -the SUSV3. - -Effectively, the only mandatory cancelation points that pthreads-win32 -recognises are those the library implements itself, ie. - - pthread_testcancel - pthread_cond_wait - pthread_cond_timedwait - pthread_join - sem_wait - sem_timedwait - pthread_delay_np - -The following routines from the non-mandatory list in SUSV3 are -cancelation points in pthreads-win32: - - pthread_rwlock_wrlock - pthread_rwlock_timedwrlock - -The following routines from the non-mandatory list in SUSV3 are not -cancelation points in pthreads-win32: - - pthread_rwlock_rdlock - pthread_rwlock_timedrdlock - -Pthreads-win32 also provides two functions that allow you to create -cancelation points within your application, but only for cases where -a thread is going to block on a Win32 handle. These are: - - pthreadCancelableWait(HANDLE waitHandle) /* Infinite wait */ - - pthreadCancelableTimedWait(HANDLE waitHandle, DWORD timeout) - ------------------------------------------------------------------------------- - - -Q 10 How do I create thread-safe applications using ----- pthreadGCE.dll, libpthreadw32.a and Mingw32? - -This should not be a problem with recent versions of MinGW32. - -For early versions, see Thomas Pfaff's email at: -http://sources.redhat.com/ml/pthreads-win32/2002/msg00000.html ------------------------------------------------------------------------------- - + ========================================= + PTHREADS-WIN32 Frequently Asked Questions + ========================================= + +INDEX +----- + +Q 1 What is it? + +Q 2 Which of the several dll versions do I use? + or, + What are all these pthread*.dll and pthread*.lib files? + +Q 3 What is the library naming convention? + +Q 4 Cleanup code default style or: it used to work when I built + the library myself, but now it doesn't - why? + +Q 5 Why is the default library version now less exception-friendly? + +Q 6 Should I use Cygwin or Mingw32 as a development environment? + +Q 7 Now that pthreads-win32 builds under Mingw32, why do I get + memory access violations (segfaults)? + +Q 8 How do I use pthread.dll for Win32 (Visual C++ 5.0) + +Q 9 Cancelation doesn't work for me, why? + +Q 10 How do I generate pthreadGCE.dll and libpthreadw32.a for use + with Mingw32? + +============================================================================= + +Q 1 What is it? +--- + +Pthreads-win32 is an Open Source Software implementation of the +Threads component of the POSIX 1003.1c 1995 Standard for Microsoft's +Win32 environment. Some functions from POSIX 1003.1b are also +supported including semaphores. Other related functions include +the set of read-write lock functions. The library also supports +some of the functionality of the Open Group's Single Unix +specification, version 2, namely mutex types. + +See the file "ANNOUNCE" for more information including standards +conformance details and list of supported routines. + + +------------------------------------------------------------------------------ + +Q 2 Which of the several dll versions do I use? +--- or, + What are all these pthread*.dll and pthread*.lib files? + +Simply, you only use one of them, but you need to choose carefully. + +The most important choice you need to make is whether to use a +version that uses exceptions internally, or not (there are versions +of the library that use exceptions as part of the thread +cancelation and cleanup implementation, and one that uses +setjmp/longjmp instead). + +There is some contension amongst POSIX threads experts as +to how POSIX threads cancelation and exit should work +with languages that include exceptions and handlers, e.g. +C++ and even C (Microsoft's Structured Exceptions). + +The issue is: should cancelation of a thread in, say, +a C++ application cause object destructors and C++ exception +handlers to be invoked as the stack unwinds during thread +exit, or not? + +There seems to be more opinion in favour of using the +standard C version of the library (no EH) with C++ applications +since this appears to be the assumption commercial pthreads +implementations make. Therefore, if you use an EH version +of pthreads-win32 then you may be under the illusion that +your application will be portable, when in fact it is likely to +behave very differently linked with other pthreads libraries. + +Now you may be asking: why have you kept the EH versions of +the library? + +There are a couple of reasons: +- there is division amongst the experts and so the code may + be needed in the future. (Yes, it's in the repository and we + can get it out anytime in the future, but ...) +- pthreads-win32 is one of the few implementations, and possibly + the only freely available one, that has EH versions. It may be + useful to people who want to play with or study application + behaviour under these conditions. + + +------------------------------------------------------------------------------ + +Q 3 What is the library naming convention? +--- + +Because the library is being built using various exception +handling schemes and compilers - and because the library +may not work reliably if these are mixed in an application, +each different version of the library has it's own name. + +Note 1: the incompatibility is really between EH implementations +of the different compilers. It should be possible to use the +standard C version from either compiler with C++ applications +built with a different compiler. If you use an EH version of +the library, then you must use the same compiler for the +application. This is another complication and dependency that +can be avoided by using only the standard C library version. + +Note 2: if you use a standard C pthread*.dll with a C++ +application, then any functions that you define that are +intended to be called via pthread_cleanup_push() must be +__cdecl. + +Note 3: the intention is to also name either the VC or GC +version (it should be arbitrary) as pthread.dll, including +pthread.lib and libpthread.a as appropriate. + +In general: + pthread[VG]{SE,CE,C}.dll + pthread[VG]{SE,CE,C}.lib + +where: + [VG] indicates the compiler + V - MS VC + G - GNU C + + {SE,CE,C} indicates the exception handling scheme + SE - Structured EH + CE - C++ EH + C - no exceptions - uses setjmp/longjmp + +For example: + pthreadVSE.dll (MSVC/SEH) + pthreadGCE.dll (GNUC/C++ EH) + pthreadGC.dll (GNUC/not dependent on exceptions) + +The GNU library archive file names have changed to: + + libpthreadGCE.a + libpthreadGC.a + + +------------------------------------------------------------------------------ + +Q 4 Cleanup code default style or: it used to work when I built +--- the library myself, but now it doesn't - why? + +Up to and including snapshot 2001-07-12, if not defined, the cleanup +style was determined automatically from the compiler used, and one +of the following was defined accordingly: + + __CLEANUP_SEH MSVC only + __CLEANUP_CXX C++, including MSVC++, GNU G++ + __CLEANUP_C C, including GNU GCC, not MSVC + +These defines determine the style of cleanup (see pthread.h) and, +most importantly, the way that cancelation and thread exit (via +pthread_exit) is performed (see the routine ptw32_throw() in private.c). + +In short, the exceptions versions of the library throw an exception +when a thread is canceled or exits (via pthread_exit()), which is +caught by a handler in the thread startup routine, so that the +the correct stack unwinding occurs regardless of where the thread +is when it's canceled or exits via pthread_exit(). + +After snapshot 2001-07-12, unless your build explicitly defines (e.g. +via a compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then +the build now ALWAYS defaults to __CLEANUP_C style cleanup. This style +uses setjmp/longjmp in the cancelation and pthread_exit implementations, +and therefore won't do stack unwinding even when linked to applications +that have it (e.g. C++ apps). This is for consistency with most/all +commercial Unix POSIX threads implementations. + +Although it was not clearly documented before, it is still necessary to +build your application using the same __CLEANUP_* define as was +used for the version of the library that you link with, so that the +correct parts of pthread.h are included. That is, the possible +defines require the following library versions: + + __CLEANUP_SEH pthreadVSE.dll + __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll + __CLEANUP_C pthreadVC.dll or pthreadGC.dll + +THE POINT OF ALL THIS IS: if you have not been defining one of these +explicitly, then the defaults have been set according to the compiler +and language you are using, as described at the top of this +section. + +THIS NOW CHANGES, as has been explained above. For example: + +If you were building your application with MSVC++ i.e. using C++ +exceptions (rather than SEH) and not explicitly defining one of +__CLEANUP_*, then __CLEANUP_C++ was defined for you in pthread.h. +You should have been linking with pthreadVCE.dll, which does +stack unwinding. + +If you now build your application as you had before, pthread.h will now +set __CLEANUP_C as the default style, and you will need to link +with pthreadVC.dll. Stack unwinding will now NOT occur when a +thread is canceled, nor when the thread calls pthread_exit(). + +Your application will now most likely behave differently to previous +versions, and in non-obvious ways. Most likely is that local +objects may not be destroyed or cleaned up after a thread +is canceled. + +If you want the same behaviour as before, then you must now define +__CLEANUP_C++ explicitly using a compiler option and link with +pthreadVCE.dll as you did before. + + +------------------------------------------------------------------------------ + +Q 5 Why is the default library version now less exception-friendly? +--- + +Because most commercial Unix POSIX threads implementations don't allow you to +choose to have stack unwinding. (Compaq's TRU64 Unix is possibly an exception.) + +Therefore, providing it in pthread-win32 as a default could be dangerous +and non-portable. We still provide the choice but you must now consciously +make it. + +WHY NOT REMOVE THE EXCEPTIONS VERSIONS OF THE LIBRARY ALTOGETHER? +There are a few reasons: +- because there are well respected POSIX threads people who believe + that POSIX threads implementations should be exceptions-aware and + do the expected thing in that context. (There are equally respected + people who believe it should not be easily accessible, if it's there + at all.) +- because pthreads-win32 is one of the few implementations that has + the choice, perhaps the only freely available one, and so offers + a laboratory to people who may want to explore the effects; +- although the code will always be around somewhere for anyone who + wants it, once it's removed from the current version it will not be + nearly as visible to people who may have a use for it. + + +------------------------------------------------------------------------------ + +Q 6 Should I use Cygwin or Mingw32 as a development environment? +--- + +Important: see Q7 also. + +Use Mingw32 with the MSVCRT library to build applications that use +the pthreads DLL. + +Cygwin's own internal support for POSIX threads is growing. +Consult that project's documentation for more information. + +------------------------------------------------------------------------------ + +Q 7 Now that pthreads-win32 builds under Mingw32, why do I get +--- memory access violations (segfaults)? + +The latest Mingw32 package has thread-safe exception handling (see Q10). +Also, see Q6 above. + +------------------------------------------------------------------------------ + +Q 8 How do I use pthread.dll for Win32 (Visual C++ 5.0) +--- + +> +> I'm a "rookie" when it comes to your pthread implementation. I'm currently +> desperately trying to install the prebuilt .dll file into my MSVC compiler. +> Could you please provide me with explicit instructions on how to do this (or +> direct me to a resource(s) where I can acquire such information)? +> +> Thank you, +> + +You should have a .dll, .lib, .def, and three .h files. It is recommended +that you use pthreadVC.dll, rather than pthreadVCE.dll or pthreadVSE.dll +(see Q2 above). + +The .dll can go in any directory listed in your PATH environment +variable, so putting it into C:\WINDOWS should work. + +The .lib file can go in any directory listed in your LIB environment +variable. + +The .h files can go in any directory listed in your INCLUDE +environment variable. + +Or you might prefer to put the .lib and .h files into a new directory +and add its path to LIB and INCLUDE. You can probably do this easiest +by editing the file:- + +C:\Program Files\DevStudio\vc\bin\vcvars32.bat + +The .def file isn't used by anything in the pre-compiled version but +is included for information. + +Cheers. +Ross + +------------------------------------------------------------------------------ + +Q 9 Cancelation doesn't work for me, why? +--- + +> I'm investigating a problem regarding thread cancelation. The thread I want +> to cancel has PTHREAD_CANCEL_ASYNCHRONOUS, however, this piece of code +> blocks on the join(): +> +> if ((retv = Pthread_cancel( recvThread )) == 0) +> { +> retv = Pthread_join( recvThread, 0 ); +> } +> +> Pthread_* are just macro's; they call pthread_*. +> +> The thread recvThread seems to block on a select() call. It doesn't get +> cancelled. +> +> Two questions: +> +> 1) is this normal behaviour? +> +> 2) if not, how does the cancel mechanism work? I'm not very familliar to +> win32 programming, so I don't really understand how the *Event() family of +> calls work. + +The answer to your first question is, normal POSIX behaviour would +be to asynchronously cancel the thread. However, even that doesn't +guarantee cancelation as the standard only says it should be +cancelled as soon as possible. + +Snapshot 99-11-02 or earlier only partially supports asynchronous cancellation. +Snapshots since then simulate async cancelation by poking the address of +a cancelation routine into the PC of the threads context. This requires +the thread to be resumed in some way for the cancelation to actually +proceed. This is not true async cancelation, but it is as close as we've +been able to get to it. + +If the thread you're trying to cancel is blocked (for instance, it could be +waiting for data from the network), it will only get cancelled when it unblocks +(when the data arrives). For true pre-emptive cancelation in these cases, +pthreads-win32 from snapshot 2004-05-16 can automatically recognise and use the +QueueUserAPCEx package by Panagiotis E. Hadjidoukas. This package is available +from the pthreads-win32 ftp site and is included in the pthreads-win32 +self-unpacking zip from 2004-05-16 onwards. + +Using deferred cancelation would normally be the way to go, however, +even though the POSIX threads standard lists a number of C library +functions that are defined as deferred cancelation points, there is +no hookup between those which are provided by Windows and the +pthreads-win32 library. + +Incidently, it's worth noting for code portability that the older POSIX +threads standards cancelation point lists didn't include "select" because +(as I read in Butenhof) it wasn't part of POSIX. However, it does appear in +the SUSV3. + +Effectively, the only mandatory cancelation points that pthreads-win32 +recognises are those the library implements itself, ie. + + pthread_testcancel + pthread_cond_wait + pthread_cond_timedwait + pthread_join + sem_wait + sem_timedwait + pthread_delay_np + +The following routines from the non-mandatory list in SUSV3 are +cancelation points in pthreads-win32: + + pthread_rwlock_wrlock + pthread_rwlock_timedwrlock + +The following routines from the non-mandatory list in SUSV3 are not +cancelation points in pthreads-win32: + + pthread_rwlock_rdlock + pthread_rwlock_timedrdlock + +Pthreads-win32 also provides two functions that allow you to create +cancelation points within your application, but only for cases where +a thread is going to block on a Win32 handle. These are: + + pthreadCancelableWait(HANDLE waitHandle) /* Infinite wait */ + + pthreadCancelableTimedWait(HANDLE waitHandle, DWORD timeout) + +------------------------------------------------------------------------------ + + +Q 10 How do I create thread-safe applications using +---- pthreadGCE.dll, libpthreadw32.a and Mingw32? + +This should not be a problem with recent versions of MinGW32. + +For early versions, see Thomas Pfaff's email at: +http://sources.redhat.com/ml/pthreads-win32/2002/msg00000.html +------------------------------------------------------------------------------ + diff --git a/3rdparty/w32pthreads/MAINTAINERS b/3rdparty/w32pthreads/MAINTAINERS index 5b04e43f88..d253c1f69e 100644 --- a/3rdparty/w32pthreads/MAINTAINERS +++ b/3rdparty/w32pthreads/MAINTAINERS @@ -1,4 +1,4 @@ -CVS Repository maintainers - -Ross Johnson rpj@ise.canberra.edu.au -Ben Elliston bje@cygnus.com +CVS Repository maintainers + +Ross Johnson rpj@ise.canberra.edu.au +Ben Elliston bje@cygnus.com diff --git a/3rdparty/w32pthreads/NEWS b/3rdparty/w32pthreads/NEWS index f44636d5a1..18fe54325d 100644 --- a/3rdparty/w32pthreads/NEWS +++ b/3rdparty/w32pthreads/NEWS @@ -1,1110 +1,1110 @@ -RELEASE 2.8.0 -------------- -(2006-12-22) - -General -------- -New bug fixes in this release since 2.7.0 have not been applied to the -version 1.x.x series. It is probably time to drop version 1. - -Testing and verification ------------------------- -This release has not yet been tested on SMP architechtures. All tests pass -on a uni-processor system. - -Bug fixes ---------- -Sem_destroy could return EBUSY even though no threads were waiting on the -semaphore. Other races around invalidating semaphore structs (internally) -have been removed as well. - -New tests ---------- -semaphore5.c - tests the bug fix referred to above. - - -RELEASE 2.7.0 -------------- -(2005-06-04) - -General -------- -All new features in this release have been back-ported in release 1.11.0, -including the incorporation of MCS locks in pthread_once, however, versions -1 and 2 remain incompatible even though they are now identical in -performance and functionality. - -Testing and verification ------------------------- -This release has been tested (passed the test suite) on both uni-processor -and multi-processor systems. -- Tim Theisen - -Bug fixes ---------- -Pthread_once has been re-implemented to remove priority boosting and other -complexity to improve robustness. Races for Win32 handles that are not -recycle-unique have been removed. The general form of pthread_once is now -the same as that suggested earlier by Alexander Terekhov, but instead of the -'named mutex', a queue-based lock has been implemented which has the required -properties of dynamic self initialisation and destruction. This lock is also -efficient. The ABI is unaffected in as much as the size of pthread_once_t has -not changed and PTHREAD_ONCE_INIT has not changed, however, applications that -peek inside pthread_once_t, which is supposed to be opaque, will break. -- Vladimir Kliatchko - -New features ------------- -* Support for Mingw cross development tools added to GNUmakefile. -Mingw cross tools allow building the libraries on Linux. -- Mikael Magnusson - - -RELEASE 2.6.0 -------------- -(2005-05-19) - -General -------- -All of the bug fixes and new features in this release have been -back-ported in release 1.10.0. - -Testing and verification ------------------------- -This release has been tested (passed the test suite) on both uni-processor -and multi-processor systems. Thanks to Tim Theisen at TomoTherapy for -exhaustively running the MP tests and for providing crutial observations -and data when faults are detected. - -Bugs fixed ----------- - -* pthread_detach() now reclaims remaining thread resources if called after -the target thread has terminated. Previously, this routine did nothing in -this case. - -New tests ---------- - -* detach1.c - tests that pthread_detach properly invalidates the target -thread, which indicates that the thread resources have been reclaimed. - - -RELEASE 2.5.0 -------------- -(2005-05-09) - -General -------- - -The package now includes a reference documentation set consisting of -HTML formatted Unix-style manual pages that have been edited for -consistency with Pthreads-w32. The set can also be read online at: -http://sources.redhat.com/pthreads-win32/manual/index.html - -Thanks again to Tim Theisen for running the test suite pre-release -on an MP system. - -All of the bug fixes and new features in this release have been -back-ported in release 1.9.0. - -Bugs fixed ----------- - -* Thread Specific Data (TSD) key management has been ammended to -eliminate a source of (what was effectively) resource leakage (a HANDLE -plus memory for each key destruct routine/thread association). This was -not a true leak because these resources were eventually reclaimed when -pthread_key_delete was run AND each thread referencing the key had exited. -The problem was that these two conditions are often not met until very -late, and often not until the process is about to exit. - -The ammended implementation avoids the need for the problematic HANDLE -and reclaims the memory as soon as either the key is deleted OR the -thread exits, whichever is first. - -Thanks to Richard Hughes at Aculab for identifying and locating the leak. - -* TSD key destructors are now processed up to PTHREAD_DESTRUCTOR_ITERATIONS -times instead of just once. PTHREAD_DESTRUCTOR_ITERATIONS has been -defined in pthread.h for some time but not used. - -* Fix a semaphore accounting race between sem_post/sem_post_multiple -and sem_wait cancellation. This is the same issue as with -sem_timedwait that was fixed in the last release. - -* sem_init, sem_post, and sem_post_multiple now check that the -semaphore count never exceeds _POSIX_SEM_VALUE_MAX. - -* Although sigwait() is nothing more than a no-op, it should at least -be a cancellation point to be consistent with the standard. - -New tests ---------- - -* stress1.c - attempts to expose problems in condition variable -and semaphore timed wait logic. This test was inspired by Stephan -Mueller's sample test code used to identify the sem_timedwait bug -from the last release. It's not a part of the regular test suite -because it can take awhile to run. To run it: -nmake clean VC-stress - -* tsd2.c - tests that key destructors are re-run if the tsd key value is -not NULL after the destructor routine has run. Also tests that -pthread_setspecific() and pthread_getspecific() are callable from -destructors. - - -RELEASE 2.4.0 -------------- -(2005-04-26) - -General -------- - -There is now no plan to release a version 3.0.0 to fix problems in -pthread_once(). Other possible implementations of pthread_once -will still be investigated for a possible future release in an attempt -to reduce the current implementation's complexity. - -All of the bug fixes and new features in this release have been -back-ported for release 1.8.0. - -Bugs fixed ----------- - -* Fixed pthread_once race (failures on an MP system). Thanks to -Tim Theisen for running exhaustive pre-release testing on his MP system -using a range of compilers: - VC++ 6 - VC++ 7.1 - Intel C++ version 8.0 -All tests passed. -Some minor speed improvements were also done. - -* Fix integer overrun error in pthread_mutex_timedlock() - missed when -sem_timedwait() was fixed in release 2.2.0. This routine no longer returns -ENOTSUP when NEED_SEM is defined - it is supported (NEED_SEM is only -required for WinCE versions prior to 3.0). - -* Fix timeout bug in sem_timedwait(). -- Thanks to Stephan Mueller for reporting, providing diagnostic output -and test code. - -* Fix several problems in the NEED_SEM conditionally included code. -NEED_SEM included code is provided for systems that don't implement W32 -semaphores, such as WinCE prior to version 3.0. An alternate implementation -of POSIX semaphores is built using W32 events for these systems when -NEED_SEM is defined. This code has been completely rewritten in this -release to reuse most of the default POSIX semaphore code, and particularly, -to implement all of the sem_* routines supported by pthreads-win32. Tim -Theisen also run the test suite over the NEED_SEM code on his MP system. All -tests passed. - -* The library now builds without errors for the Borland Builder 5.5 compiler. - -New features ------------- - -* pthread_mutex_timedlock() and all sem_* routines provided by -pthreads-win32 are now implemented for WinCE versions prior to 3.0. Those -versions did not implement W32 semaphores. Define NEED_SEM in config.h when -building the library for these systems. - -Known issues in this release ----------------------------- - -* pthread_once is too complicated - but it works as far as testing can -determine.. - -* The Borland version of the dll fails some of the tests with a memory read -exception. The cause is not yet known but a compiler bug has not been ruled -out. - - -RELEASE 2.3.0 -------------- -(2005-04-12) - -General -------- - -Release 1.7.0 is a backport of features and bug fixes new in -this release. See earlier notes under Release 2.0.0/General. - -Bugs fixed ----------- - -* Fixed pthread_once potential for post once_routine cancellation -hanging due to starvation. See comments in pthread_once.c. -Momentary priority boosting is used to ensure that, after a -once_routine is cancelled, the thread that will run the -once_routine is not starved by higher priority waiting threads at -critical times. Priority boosting occurs only AFTER a once_routine -cancellation, and is applied only to that once_control. The -once_routine is run at the thread's normal base priority. - -New tests ---------- - -* once4.c: Aggressively tests pthread_once() under realtime -conditions using threads with varying priorities. Windows' -random priority boosting does not occur for threads with realtime -priority levels. - - -RELEASE 2.2.0 -------------- -(2005-04-04) - -General -------- - -* Added makefile targets to build static link versions of the library. -Both MinGW and MSVC. Please note that this does not imply any change -to the LGPL licensing, which still imposes psecific conditions on -distributing software that has been statically linked with this library. - -* There is a known bug in pthread_once(). Cancellation of the init_routine -exposes a potential starvation (i.e. deadlock) problem if a waiting thread -has a higher priority than the initting thread. This problem will be fixed -in version 3.0.0 of the library. - -Bugs fixed ----------- - -* Fix integer overrun error in sem_timedwait(). -Kevin Lussier - -* Fix preprocessor directives for static linking. -Dimitar Panayotov - - -RELEASE 2.1.0 -------------- -(2005-03-16) - -Bugs fixed ----------- - -* Reverse change to pthread_setcancelstate() in 2.0.0. - - -RELEASE 2.0.0 -------------- -(2005-03-16) - -General -------- - -This release represents an ABI change and the DLL version naming has -incremented from 1 to 2, e.g. pthreadVC2.dll. - -Version 1.4.0 back-ports the new functionality included in this -release. Please distribute DLLs built from that version with updates -to applications built on pthreads-win32 version 1.x.x. - -The package naming has changed, replacing the snapshot date with -the version number + descriptive information. E.g. this -release is "pthreads-w32-2-0-0-release". - -Bugs fixed ----------- - -* pthread_setcancelstate() no longer checks for a pending -async cancel event if the library is using alertable async -cancel. See the README file (Prerequisites section) for info -on adding alertable async cancelation. - -New features ------------- - -* pthread_once() now supports init_routine cancellability. - -New tests ---------- - -* Agressively test pthread_once() init_routine cancellability. - - -SNAPSHOT 2005-03-08 -------------------- -Version 1.3.0 - -Bug reports (fixed) -------------------- - -* Implicitly created threads leave Win32 handles behind after exiting. -- Dmitrii Semii - -* pthread_once() starvation problem. -- Gottlob Frege - -New tests ---------- - -* More intense testing of pthread_once(). - - -SNAPSHOT 2005-01-25 -------------------- -Version 1.2.0 - -Bug fixes ---------- - -* Attempted acquisition of a recursive mutex could cause waiting threads -to not be woken when the mutex was released. -- Ralf Kubis - -* Various package omissions have been fixed. - - -SNAPSHOT 2005-01-03 -------------------- -Version 1.1.0 - -Bug fixes ---------- - -* Unlocking recursive or errorcheck mutexes would sometimes -unexpectedly return an EPERM error (bug introduced in -snapshot-2004-11-03). -- Konstantin Voronkov - - -SNAPSHOT 2004-11-22 -------------------- -Version 1.0.0 - -This snapshot primarily fixes the condvar bug introduced in -snapshot-2004-11-03. DLL versioning has also been included to allow -applications to runtime check the Microsoft compatible DLL version -information, and to extend the DLL naming system for ABI and major -(non-backward compatible) API changes. See the README file for details. - -Bug fixes ---------- - -* Condition variables no longer deadlock (bug introduced in -snapshot-2004-11-03). -- Alexander Kotliarov and Nicolas at saintmac - -* DLL naming extended to avoid 'DLL hell' in the future, and to -accommodate the ABI change introduced in snapshot-2004-11-03. Snapshot -2004-11-03 will be removed from FTP sites. - -New features ------------- - -* A Microsoft-style version resource has been added to the DLL for -applications that wish to check DLL compatibility at runtime. - -* Pthreads-win32 DLL naming has been extended to allow incompatible DLL -versions to co-exist in the same filesystem. See the README file for details, -but briefly: while the version information inside the DLL will change with -each release from now on, the DLL version names will only change if the new -DLL is not backward compatible with older applications. - -The versioning scheme has been borrowed from GNU Libtool, and the DLL -naming scheme is from Cygwin. Provided the Libtool-style numbering rules are -honoured, the Cygwin DLL naming scheme automatcally ensures that DLL name -changes are minimal and that applications will not load an incompatible -pthreads-win32 DLL. - -Those who use the pre-built DLLs will find that the DLL/LIB names have a new -suffix (1) in this snapshot. E.g. pthreadVC1.dll etc. - -* The POSIX thread ID reuse uniqueness feature introduced in the last snapshot -has been kept as default, but the behaviour can now be controlled when the DLL -is built to effectively switch it off. This makes the library much more -sensitive to applications that assume that POSIX thread IDs are unique, i.e. -are not strictly compliant with POSIX. See the PTW32_THREAD_ID_REUSE_INCREMENT -macro comments in config.h for details. - -Other changes -------------- -Certain POSIX macros have changed. - -These changes are intended to conform to the Single Unix Specification version 3, -which states that, if set to 0 (zero) or not defined, then applications may use -sysconf() to determine their values at runtime. Pthreads-win32 does not -implement sysconf(). - -The following macros are no longer undefined, but defined and set to -1 -(not implemented): - - _POSIX_THREAD_ATTR_STACKADDR - _POSIX_THREAD_PRIO_INHERIT - _POSIX_THREAD_PRIO_PROTECT - _POSIX_THREAD_PROCESS_SHARED - -The following macros are defined and set to 200112L (implemented): - - _POSIX_THREADS - _POSIX_THREAD_SAFE_FUNCTIONS - _POSIX_THREAD_ATTR_STACKSIZE - _POSIX_THREAD_PRIORITY_SCHEDULING - _POSIX_SEMAPHORES - _POSIX_READER_WRITER_LOCKS - _POSIX_SPIN_LOCKS - _POSIX_BARRIERS - -The following macros are defined and set to appropriate values: - - _POSIX_THREAD_THREADS_MAX - _POSIX_SEM_VALUE_MAX - _POSIX_SEM_NSEMS_MAX - PTHREAD_DESTRUCTOR_ITERATIONS - PTHREAD_KEYS_MAX - PTHREAD_STACK_MIN - PTHREAD_THREADS_MAX - - -SNAPSHOT 2004-11-03 -------------------- - -DLLs produced from this snapshot cannot be used with older applications without -recompiling the application, due to a change to pthread_t to provide unique POSIX -thread IDs. - -Although this snapshot passes the extended test suite, many of the changes are -fairly major, and some applications may show different behaviour than previously, -so adopt with care. Hopefully, any changed behaviour will be due to the library -being better at it's job, not worse. - -Bug fixes ---------- - -* pthread_create() no longer accepts NULL as the thread reference arg. -A segfault (memory access fault) will result, and no thread will be -created. - -* pthread_barrier_wait() no longer acts as a cancelation point. - -* Fix potential race condition in pthread_once() -- Tristan Savatier - -* Changes to pthread_cond_destroy() exposed some coding weaknesses in several -test suite mini-apps because pthread_cond_destroy() now returns EBUSY if the CV -is still in use. - -New features ------------- - -* Added for compatibility: -PTHREAD_RECURSIVE_MUTEX_INITIALIZER, -PTHREAD_ERRORCHECK_MUTEX_INITIALIZER, -PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP, -PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP - -* Initial support for Digital Mars compiler -- Anuj Goyal - -* Faster Mutexes. These have been been rewritten following a model provided by -Alexander Terekhov that reduces kernel space checks, and eliminates some additional -critical sections used to manage a race between timedlock expiration and unlock. -Please be aware that the new mutexes do not enforce strict absolute FIFO scheduling -of mutexes, however any out-of-order lock acquisition should be very rare. - -* Faster semaphores. Following a similar model to mutexes above, these have been -rewritten to use preliminary users space checks. - -* sem_getvalue() now returns the number of waiters. - -* The POSIX thread ID now has much stronger uniqueness characteristics. The library -garrantees not to reuse the same thread ID for at least 2^(wordsize) thread -destruction/creation cycles. - -New tests ---------- - -* semaphore4.c: Tests cancelation of the new sem_wait(). - -* semaphore4t.c: Likewise for sem_timedwait(). - -* rwlock8.c: Tests and times the slow execution paths of r/w locks, and the CVs, -mutexes, and semaphores that they're built on. - - -SNAPSHOT 2004-05-16 -------------------- - -Attempt to add Watcom to the list of compilers that can build the library. -This failed in the end due to it's non-thread-aware errno. The library -builds but the test suite fails. See README.Watcom for more details. - -Bug fixes ---------- -* Bug and memory leak in sem_init() -- Alex Blanco - -* ptw32_getprocessors() now returns CPU count of 1 for WinCE. -- James Ewing - -* pthread_cond_wait() could be canceled at a point where it should not -be cancelable. Fixed. -- Alexander Terekhov - -* sem_timedwait() had an incorrect timeout calculation. -- Philippe Di Cristo - -* Fix a memory leak left behind after threads are destroyed. -- P. van Bruggen - -New features ------------- -* Ported to AMD64. -- Makoto Kato - -* True pre-emptive asynchronous cancelation of threads. This is optional -and requires that Panagiotis E. Hadjidoukas's QueueUserAPCEx package be -installed. This package is included in the pthreads-win32 self-unpacking -Zip archive starting from this snapshot. See the README.txt file inside -the package for installation details. - -Note: If you don't use async cancelation in your application, or don't need -to cancel threads that are blocked on system resources such as network I/O, -then the default non-preemptive async cancelation is probably good enough. -However, pthreads-win32 auto-detects the availability of these components -at run-time, so you don't need to rebuild the library from source if you -change your mind later. - -All of the advice available in books and elsewhere on the undesirability -of using async cancelation in any application still stands, but this -feature is a welcome addition with respect to the library's conformance to -the POSIX standard. - -SNAPSHOT 2003-09-18 -------------------- - -Cleanup of thread priority management. In particular, setting of thread -priority now attempts to map invalid Win32 values within the range returned -by sched_get_priority_min/max() to useful values. See README.NONPORTABLE -under "Thread priority". - -Bug fixes ---------- -* pthread_getschedparam() now returns the priority given by the most recent -call to pthread_setschedparam() or established by pthread_create(), as -required by the standard. Previously, pthread_getschedparam() incorrectly -returned the running thread priority at the time of the call, which may have -been adjusted or temporarily promoted/demoted. - -* sched_get_priority_min() and sched_get_priority_max() now return -1 on error -and set errno. Previously, they incorrectly returned the error value directly. - - -SNAPSHOT 2003-09-04 -------------------- - -Bug fixes ---------- -* ptw32_cancelableWait() now allows cancelation of waiting implicit POSIX -threads. - -New test --------- -* cancel8.c tests cancelation of Win32 threads waiting at a POSIX cancelation -point. - - -SNAPSHOT 2003-09-03 -------------------- - -Bug fixes ---------- -* pthread_self() would free the newly created implicit POSIX thread handle if -DuplicateHandle failed instead of recycle it (very unlikely). - -* pthread_exit() was neither freeing nor recycling the POSIX thread struct -for implicit POSIX threads. - -New feature - Cancelation of/by Win32 (non-POSIX) threads ---------------------------------------------------------- -Since John Bossom's original implementation, the library has allowed non-POSIX -initialised threads (Win32 threads) to call pthreads-win32 routines and -therefore interact with POSIX threads. This is done by creating an on-the-fly -POSIX thread ID for the Win32 thread that, once created, allows fully -reciprical interaction. This did not extend to thread cancelation (async or -deferred). Now it does. - -Any thread can be canceled by any other thread (Win32 or POSIX) if the former -thread's POSIX pthread_t value is known. It's TSD destructors and POSIX -cleanup handlers will be run before the thread exits with an exit code of -PTHREAD_CANCELED (retrieved with GetExitCodeThread()). - -This allows a Win32 thread to, for example, call POSIX CV routines in the same way -that POSIX threads would/should, with pthread_cond_wait() cancelability and -cleanup handlers (pthread_cond_wait() is a POSIX cancelation point). - -By adding cancelation, Win32 threads should now be able to call all POSIX -threads routines that make sense including semaphores, mutexes, condition -variables, read/write locks, barriers, spinlocks, tsd, cleanup push/pop, -cancelation, pthread_exit, scheduling, etc. - -Note that these on-the-fly 'implicit' POSIX thread IDs are initialised as detached -(not joinable) with deferred cancelation type. The POSIX thread ID will be created -automatically by any POSIX routines that need a POSIX handle (unless the routine -needs a pthread_t as a parameter of course). A Win32 thread can discover it's own -POSIX thread ID by calling pthread_self(), which will create the handle if -necessary and return the pthread_t value. - -New tests ---------- -Test the above new feature. - - -SNAPSHOT 2003-08-19 -------------------- - -This snapshot fixes some accidental corruption to new test case sources. -There are no changes to the library source code. - - -SNAPSHOT 2003-08-15 -------------------- - -Bug fixes ---------- - -* pthread.dsp now uses correct compile flags (/MD). -- Viv - -* pthread_win32_process_detach_np() fixed memory leak. -- Steven Reddie - -* pthread_mutex_destroy() fixed incorrect return code. -- Nicolas Barry - -* pthread_spin_destroy() fixed memory leak. -- Piet van Bruggen - -* Various changes to tighten arg checking, and to work with later versions of -MinGW32 and MsysDTK. - -* pthread_getschedparam() etc, fixed dangerous thread validity checking. -- Nicolas Barry - -* POSIX thread handles are now reused and their memory is not freed on thread exit. -This allows for stronger thread validity checking. - -New standard routine --------------------- - -* pthread_kill() added to provide thread validity checking to applications. -It does not accept any non zero values for the signal arg. - -New test cases --------------- - -* New test cases to confirm validity checking, pthread_kill(), and thread reuse. - - -SNAPSHOT 2003-05-10 -------------------- - -Bug fixes ---------- - -* pthread_mutex_trylock() now returns correct error values. -pthread_mutex_destroy() will no longer destroy a recursively locked mutex. -pthread_mutex_lock() is no longer inadvertantly behaving as a cancelation point. -- Thomas Pfaff - -* pthread_mutex_timedlock() no longer occasionally sets incorrect mutex -ownership, causing deadlocks in some applications. -- Robert Strycek and Alexander Terekhov - - -SNAPSHOT 2002-11-04 -------------------- - -Bug fixes ---------- - -* sem_getvalue() now returns the correct value under Win NT and WinCE. -- Rob Fanner - -* sem_timedwait() now uses tighter checks for unreasonable -abstime values - that would result in unexpected timeout values. - -* ptw32_cond_wait_cleanup() no longer mysteriously consumes -CV signals but may produce more spurious wakeups. It is believed -that the sem_timedwait() call is consuming a CV signal that it -shouldn't. -- Alexander Terekhov - -* Fixed a memory leak in ptw32_threadDestroy() for implicit threads. - -* Fixed potential for deadlock in pthread_cond_destroy(). -A deadlock could occur for statically declared CVs (PTHREAD_COND_INITIALIZER), -when one thread is attempting to destroy the condition variable while another -is attempting to dynamically initialize it. -- Michael Johnson - - -SNAPSHOT 2002-03-02 -------------------- - -Cleanup code default style. (IMPORTANT) ----------------------------------------------------------------------- -Previously, if not defined, the cleanup style was determined automatically -from the compiler/language, and one of the following was defined accordingly: - - __CLEANUP_SEH MSVC only - __CLEANUP_CXX C++, including MSVC++, GNU G++ - __CLEANUP_C C, including GNU GCC, not MSVC - -These defines determine the style of cleanup (see pthread.h) and, -most importantly, the way that cancelation and thread exit (via -pthread_exit) is performed (see the routine ptw32_throw() in private.c). - -In short, the exceptions versions of the library throw an exception -when a thread is canceled or exits (via pthread_exit()), which is -caught by a handler in the thread startup routine, so that the -the correct stack unwinding occurs regardless of where the thread -is when it's canceled or exits via pthread_exit(). - -In this and future snapshots, unless the build explicitly defines (e.g. -via a compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then -the build NOW always defaults to __CLEANUP_C style cleanup. This style -uses setjmp/longjmp in the cancelation and pthread_exit implementations, -and therefore won't do stack unwinding even when linked to applications -that have it (e.g. C++ apps). This is for consistency with most -current commercial Unix POSIX threads implementations. Compaq's TRU64 -may be an exception (no pun intended) and possible future trend. - -Although it was not clearly documented before, it is still necessary to -build your application using the same __CLEANUP_* define as was -used for the version of the library that you link with, so that the -correct parts of pthread.h are included. That is, the possible -defines require the following library versions: - - __CLEANUP_SEH pthreadVSE.dll - __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll - __CLEANUP_C pthreadVC.dll or pthreadGC.dll - -E.g. regardless of whether your app is C or C++, if you link with -pthreadVC.lib or libpthreadGC.a, then you must define __CLEANUP_C. - - -THE POINT OF ALL THIS IS: if you have not been defining one of these -explicitly, then the defaults as described at the top of this -section were being used. - -THIS NOW CHANGES, as has been explained above, but to try to make this -clearer here's an example: - -If you were building your application with MSVC++ i.e. using C++ -exceptions and not explicitly defining one of __CLEANUP_*, then -__CLEANUP_C++ was automatically defined for you in pthread.h. -You should have been linking with pthreadVCE.dll, which does -stack unwinding. - -If you now build your application as you had before, pthread.h will now -automatically set __CLEANUP_C as the default style, and you will need to -link with pthreadVC.dll. Stack unwinding will now NOT occur when a thread -is canceled, or the thread calls pthread_exit(). - -Your application will now most likely behave differently to previous -versions, and in non-obvious ways. Most likely is that locally -instantiated objects may not be destroyed or cleaned up after a thread -is canceled. - -If you want the same behaviour as before, then you must now define -__CLEANUP_C++ explicitly using a compiler option and link with -pthreadVCE.dll as you did before. - - -WHY ARE WE MAKING THE DEFAULT STYLE LESS EXCEPTION-FRIENDLY? -Because no commercial Unix POSIX threads implementation allows you to -choose to have stack unwinding. Therefore, providing it in pthread-win32 -as a default is dangerous. We still provide the choice but unless -you consciously choose to do otherwise, your pthreads applications will -now run or crash in similar ways irrespective of the threads platform -you use. Or at least this is the hope. - - -WHY NOT REMOVE THE EXCEPTIONS VERSIONS OF THE LIBRARY ALTOGETHER? -There are a few reasons: -- because there are well respected POSIX threads people who believe - that POSIX threads implementations should be exceptions aware and - do the expected thing in that context. (There are equally respected - people who believe it should not be easily accessible, if it's there - at all, for unconditional conformity to other implementations.) -- because pthreads-win32 is one of the few implementations that has - the choice, perhaps the only freely available one, and so offers - a laboratory to people who may want to explore the effects; -- although the code will always be around somewhere for anyone who - wants it, once it's removed from the current version it will not be - nearly as visible to people who may have a use for it. - - -Source module splitting ------------------------ -In order to enable smaller image sizes to be generated -for applications that link statically with the library, -most routines have been separated out into individual -source code files. - -This is being done in such a way as to be backward compatible. -The old source files are reused to congregate the individual -routine files into larger translation units (via a bunch of -# includes) so that the compiler can still optimise wherever -possible, e.g. through inlining, which can only be done -within the same translation unit. - -It is also possible to build the entire library by compiling -the single file named "pthread.c", which just #includes all -the secondary congregation source files. The compiler -may be able to use this to do more inlining of routines. - -Although the GNU compiler is able to produce libraries with -the necessary separation (the -ffunction-segments switch), -AFAIK, the MSVC and other compilers don't have this feature. - -Finally, since I use makefiles and command-line compilation, -I don't know what havoc this reorganisation may wreak amongst -IDE project file users. You should be able to continue -using your existing project files without modification. - - -New non-portable functions --------------------------- -pthread_num_processors_np(): - Returns the number of processors in the system that are - available to the process, as determined from the processor - affinity mask. - -pthread_timechange_handler_np(): - To improve tolerance against operator or time service initiated - system clock changes. - - This routine can be called by an application when it - receives a WM_TIMECHANGE message from the system. At present - it broadcasts all condition variables so that waiting threads - can wake up and re-evaluate their conditions and restart - their timed waits if required. - - Suggested by Alexander Terekhov - - -Platform dependence -------------------- -As Win95 doesn't provide one, the library now contains -it's own InterlockedCompareExchange() routine, which is used -whenever Windows doesn't provide it. InterlockedCompareExchange() -is used to implement spinlocks and barriers, and also in mutexes. -This routine relies on the CMPXCHG machine instruction which -is not available on i386 CPUs. This library (from snapshot -20010712 onwards) is therefore no longer supported on i386 -processor platforms. - - -New standard routines ---------------------- -For source code portability only - rwlocks cannot be process shared yet. - - pthread_rwlockattr_init() - pthread_rwlockattr_destroy() - pthread_rwlockattr_setpshared() - pthread_rwlockattr_getpshared() - -As defined in the new POSIX standard, and the Single Unix Spec version 3: - - sem_timedwait() - pthread_mutex_timedlock() - Alexander Terekhov and Thomas Pfaff - pthread_rwlock_timedrdlock() - adapted from pthread_rwlock_rdlock() - pthread_rwlock_timedwrlock() - adapted from pthread_rwlock_wrlock() - - -pthread.h no longer includes windows.h --------------------------------------- -[Not yet for G++] - -This was done to prevent conflicts. - -HANDLE, DWORD, and NULL are temporarily defined within pthread.h if -they are not already. - - -pthread.h, sched.h and semaphore.h now use dllexport/dllimport --------------------------------------------------------------- -Not only to avoid the need for the pthread.def file, but to -improve performance. Apparently, declaring functions with dllimport -generates a direct call to the function and avoids the overhead -of a stub function call. - -Bug fixes ---------- -* Fixed potential NULL pointer dereferences in pthread_mutexattr_init, -pthread_mutexattr_getpshared, pthread_barrierattr_init, -pthread_barrierattr_getpshared, and pthread_condattr_getpshared. -- Scott McCaskill - -* Removed potential race condition in pthread_mutex_trylock and -pthread_mutex_lock; -- Alexander Terekhov - -* The behaviour of pthread_mutex_trylock in relation to -recursive mutexes was inconsistent with commercial implementations. -Trylock would return EBUSY if the lock was owned already by the -calling thread regardless of mutex type. Trylock now increments the -recursion count and returns 0 for RECURSIVE mutexes, and will -return EDEADLK rather than EBUSY for ERRORCHECK mutexes. This is -consistent with Solaris. -- Thomas Pfaff - -* Found a fix for the library and workaround for applications for -the known bug #2, i.e. where __CLEANUP_CXX or __CLEANUP_SEH is defined. -See the "Known Bugs in this snapshot" section below. - -This could be made transparent to applications by replacing the macros that -define the current C++ and SEH versions of pthread_cleanup_push/pop -with the C version, but AFAIK cleanup handlers would not then run in the -correct sequence with destructors and exception cleanup handlers when -an exception occurs. - -* Cancelation once started in a thread cannot now be inadvertantly -double canceled. That is, once a thread begins it's cancelation run, -cancelation is disabled and a subsequent cancel request will -return an error (ESRCH). - -* errno: An incorrect compiler directive caused a local version -of errno to be used instead of the Win32 errno. Both instances are -thread-safe but applications checking errno after a pthreads-win32 -call would be wrong. Fixing this also fixed a bad compiler -option in the testsuite (/MT should have been /MD) which is -needed to link with the correct library MSVCRT.LIB. - - -SNAPSHOT 2001-07-12 -------------------- - -To be added - - -SNAPSHOT 2001-07-03 -------------------- - -To be added - - -SNAPSHOT 2000-08-13 -------------------- - -New: -- Renamed DLL and LIB files: - pthreadVSE.dll (MS VC++/Structured EH) - pthreadVSE.lib - pthreadVCE.dll (MS VC++/C++ EH) - pthreadVCE.lib - pthreadGCE.dll (GNU G++/C++ EH) - libpthreadw32.a - - Both your application and the pthread dll should use the - same exception handling scheme. - -Bugs fixed: -- MSVC++ C++ exception handling. - -Some new tests have been added. - - -SNAPSHOT 2000-08-10 -------------------- - -New: -- asynchronous cancelation on X86 (Jason Nye) -- Makefile compatible with MS nmake to replace - buildlib.bat -- GNUmakefile for Mingw32 -- tests/Makefile for MS nmake replaces runall.bat -- tests/GNUmakefile for Mingw32 - -Bugs fixed: -- kernel32 load/free problem -- attempt to hide internel exceptions from application - exception handlers (__try/__except and try/catch blocks) -- Win32 thread handle leakage bug - (David Baggett/Paul Redondo/Eyal Lebedinsky) - -Some new tests have been added. - - -SNAPSHOT 1999-11-02 -------------------- - -Bugs fixed: -- ctime_r macro had an incorrect argument (Erik Hensema), -- threads were not being created - PTHREAD_CANCEL_DEFERRED. This should have - had little effect as deferred is the only - supported type. (Ross Johnson). - -Some compatibility improvements added, eg. -- pthread_setcancelstate accepts NULL pointer - for the previous value argument. Ditto for - pthread_setcanceltype. This is compatible - with Solaris but should not affect - standard applications (Erik Hensema) - -Some new tests have been added. - - -SNAPSHOT 1999-10-17 -------------------- - -Bug fix - Cancelation of threads waiting on condition variables -now works properly (Lorin Hochstein and Peter Slacik) - - -SNAPSHOT 1999-08-12 -------------------- - -Fixed exception stack cleanup if calling pthread_exit() -- (Lorin Hochstein and John Bossom). - -Fixed bugs in condition variables - (Peter Slacik): - - additional contention checks - - properly adjust number of waiting threads after timed - condvar timeout. - - -SNAPSHOT 1999-05-30 -------------------- - -Some minor bugs have been fixed. See the ChangeLog file for details. - -Some more POSIX 1b functions are now included but ony return an -error (ENOSYS) if called. They are: - - sem_open - sem_close - sem_unlink - sem_getvalue - - -SNAPSHOT 1999-04-07 -------------------- - -Some POSIX 1b functions which were internally supported are now -available as exported functions: - - sem_init - sem_destroy - sem_wait - sem_trywait - sem_post - sched_yield - sched_get_priority_min - sched_get_priority_max - -Some minor bugs have been fixed. See the ChangeLog file for details. - - -SNAPSHOT 1999-03-16 -------------------- - -Initial release. - +RELEASE 2.8.0 +------------- +(2006-12-22) + +General +------- +New bug fixes in this release since 2.7.0 have not been applied to the +version 1.x.x series. It is probably time to drop version 1. + +Testing and verification +------------------------ +This release has not yet been tested on SMP architechtures. All tests pass +on a uni-processor system. + +Bug fixes +--------- +Sem_destroy could return EBUSY even though no threads were waiting on the +semaphore. Other races around invalidating semaphore structs (internally) +have been removed as well. + +New tests +--------- +semaphore5.c - tests the bug fix referred to above. + + +RELEASE 2.7.0 +------------- +(2005-06-04) + +General +------- +All new features in this release have been back-ported in release 1.11.0, +including the incorporation of MCS locks in pthread_once, however, versions +1 and 2 remain incompatible even though they are now identical in +performance and functionality. + +Testing and verification +------------------------ +This release has been tested (passed the test suite) on both uni-processor +and multi-processor systems. +- Tim Theisen + +Bug fixes +--------- +Pthread_once has been re-implemented to remove priority boosting and other +complexity to improve robustness. Races for Win32 handles that are not +recycle-unique have been removed. The general form of pthread_once is now +the same as that suggested earlier by Alexander Terekhov, but instead of the +'named mutex', a queue-based lock has been implemented which has the required +properties of dynamic self initialisation and destruction. This lock is also +efficient. The ABI is unaffected in as much as the size of pthread_once_t has +not changed and PTHREAD_ONCE_INIT has not changed, however, applications that +peek inside pthread_once_t, which is supposed to be opaque, will break. +- Vladimir Kliatchko + +New features +------------ +* Support for Mingw cross development tools added to GNUmakefile. +Mingw cross tools allow building the libraries on Linux. +- Mikael Magnusson + + +RELEASE 2.6.0 +------------- +(2005-05-19) + +General +------- +All of the bug fixes and new features in this release have been +back-ported in release 1.10.0. + +Testing and verification +------------------------ +This release has been tested (passed the test suite) on both uni-processor +and multi-processor systems. Thanks to Tim Theisen at TomoTherapy for +exhaustively running the MP tests and for providing crutial observations +and data when faults are detected. + +Bugs fixed +---------- + +* pthread_detach() now reclaims remaining thread resources if called after +the target thread has terminated. Previously, this routine did nothing in +this case. + +New tests +--------- + +* detach1.c - tests that pthread_detach properly invalidates the target +thread, which indicates that the thread resources have been reclaimed. + + +RELEASE 2.5.0 +------------- +(2005-05-09) + +General +------- + +The package now includes a reference documentation set consisting of +HTML formatted Unix-style manual pages that have been edited for +consistency with Pthreads-w32. The set can also be read online at: +http://sources.redhat.com/pthreads-win32/manual/index.html + +Thanks again to Tim Theisen for running the test suite pre-release +on an MP system. + +All of the bug fixes and new features in this release have been +back-ported in release 1.9.0. + +Bugs fixed +---------- + +* Thread Specific Data (TSD) key management has been ammended to +eliminate a source of (what was effectively) resource leakage (a HANDLE +plus memory for each key destruct routine/thread association). This was +not a true leak because these resources were eventually reclaimed when +pthread_key_delete was run AND each thread referencing the key had exited. +The problem was that these two conditions are often not met until very +late, and often not until the process is about to exit. + +The ammended implementation avoids the need for the problematic HANDLE +and reclaims the memory as soon as either the key is deleted OR the +thread exits, whichever is first. + +Thanks to Richard Hughes at Aculab for identifying and locating the leak. + +* TSD key destructors are now processed up to PTHREAD_DESTRUCTOR_ITERATIONS +times instead of just once. PTHREAD_DESTRUCTOR_ITERATIONS has been +defined in pthread.h for some time but not used. + +* Fix a semaphore accounting race between sem_post/sem_post_multiple +and sem_wait cancellation. This is the same issue as with +sem_timedwait that was fixed in the last release. + +* sem_init, sem_post, and sem_post_multiple now check that the +semaphore count never exceeds _POSIX_SEM_VALUE_MAX. + +* Although sigwait() is nothing more than a no-op, it should at least +be a cancellation point to be consistent with the standard. + +New tests +--------- + +* stress1.c - attempts to expose problems in condition variable +and semaphore timed wait logic. This test was inspired by Stephan +Mueller's sample test code used to identify the sem_timedwait bug +from the last release. It's not a part of the regular test suite +because it can take awhile to run. To run it: +nmake clean VC-stress + +* tsd2.c - tests that key destructors are re-run if the tsd key value is +not NULL after the destructor routine has run. Also tests that +pthread_setspecific() and pthread_getspecific() are callable from +destructors. + + +RELEASE 2.4.0 +------------- +(2005-04-26) + +General +------- + +There is now no plan to release a version 3.0.0 to fix problems in +pthread_once(). Other possible implementations of pthread_once +will still be investigated for a possible future release in an attempt +to reduce the current implementation's complexity. + +All of the bug fixes and new features in this release have been +back-ported for release 1.8.0. + +Bugs fixed +---------- + +* Fixed pthread_once race (failures on an MP system). Thanks to +Tim Theisen for running exhaustive pre-release testing on his MP system +using a range of compilers: + VC++ 6 + VC++ 7.1 + Intel C++ version 8.0 +All tests passed. +Some minor speed improvements were also done. + +* Fix integer overrun error in pthread_mutex_timedlock() - missed when +sem_timedwait() was fixed in release 2.2.0. This routine no longer returns +ENOTSUP when NEED_SEM is defined - it is supported (NEED_SEM is only +required for WinCE versions prior to 3.0). + +* Fix timeout bug in sem_timedwait(). +- Thanks to Stephan Mueller for reporting, providing diagnostic output +and test code. + +* Fix several problems in the NEED_SEM conditionally included code. +NEED_SEM included code is provided for systems that don't implement W32 +semaphores, such as WinCE prior to version 3.0. An alternate implementation +of POSIX semaphores is built using W32 events for these systems when +NEED_SEM is defined. This code has been completely rewritten in this +release to reuse most of the default POSIX semaphore code, and particularly, +to implement all of the sem_* routines supported by pthreads-win32. Tim +Theisen also run the test suite over the NEED_SEM code on his MP system. All +tests passed. + +* The library now builds without errors for the Borland Builder 5.5 compiler. + +New features +------------ + +* pthread_mutex_timedlock() and all sem_* routines provided by +pthreads-win32 are now implemented for WinCE versions prior to 3.0. Those +versions did not implement W32 semaphores. Define NEED_SEM in config.h when +building the library for these systems. + +Known issues in this release +---------------------------- + +* pthread_once is too complicated - but it works as far as testing can +determine.. + +* The Borland version of the dll fails some of the tests with a memory read +exception. The cause is not yet known but a compiler bug has not been ruled +out. + + +RELEASE 2.3.0 +------------- +(2005-04-12) + +General +------- + +Release 1.7.0 is a backport of features and bug fixes new in +this release. See earlier notes under Release 2.0.0/General. + +Bugs fixed +---------- + +* Fixed pthread_once potential for post once_routine cancellation +hanging due to starvation. See comments in pthread_once.c. +Momentary priority boosting is used to ensure that, after a +once_routine is cancelled, the thread that will run the +once_routine is not starved by higher priority waiting threads at +critical times. Priority boosting occurs only AFTER a once_routine +cancellation, and is applied only to that once_control. The +once_routine is run at the thread's normal base priority. + +New tests +--------- + +* once4.c: Aggressively tests pthread_once() under realtime +conditions using threads with varying priorities. Windows' +random priority boosting does not occur for threads with realtime +priority levels. + + +RELEASE 2.2.0 +------------- +(2005-04-04) + +General +------- + +* Added makefile targets to build static link versions of the library. +Both MinGW and MSVC. Please note that this does not imply any change +to the LGPL licensing, which still imposes psecific conditions on +distributing software that has been statically linked with this library. + +* There is a known bug in pthread_once(). Cancellation of the init_routine +exposes a potential starvation (i.e. deadlock) problem if a waiting thread +has a higher priority than the initting thread. This problem will be fixed +in version 3.0.0 of the library. + +Bugs fixed +---------- + +* Fix integer overrun error in sem_timedwait(). +Kevin Lussier + +* Fix preprocessor directives for static linking. +Dimitar Panayotov + + +RELEASE 2.1.0 +------------- +(2005-03-16) + +Bugs fixed +---------- + +* Reverse change to pthread_setcancelstate() in 2.0.0. + + +RELEASE 2.0.0 +------------- +(2005-03-16) + +General +------- + +This release represents an ABI change and the DLL version naming has +incremented from 1 to 2, e.g. pthreadVC2.dll. + +Version 1.4.0 back-ports the new functionality included in this +release. Please distribute DLLs built from that version with updates +to applications built on pthreads-win32 version 1.x.x. + +The package naming has changed, replacing the snapshot date with +the version number + descriptive information. E.g. this +release is "pthreads-w32-2-0-0-release". + +Bugs fixed +---------- + +* pthread_setcancelstate() no longer checks for a pending +async cancel event if the library is using alertable async +cancel. See the README file (Prerequisites section) for info +on adding alertable async cancelation. + +New features +------------ + +* pthread_once() now supports init_routine cancellability. + +New tests +--------- + +* Agressively test pthread_once() init_routine cancellability. + + +SNAPSHOT 2005-03-08 +------------------- +Version 1.3.0 + +Bug reports (fixed) +------------------- + +* Implicitly created threads leave Win32 handles behind after exiting. +- Dmitrii Semii + +* pthread_once() starvation problem. +- Gottlob Frege + +New tests +--------- + +* More intense testing of pthread_once(). + + +SNAPSHOT 2005-01-25 +------------------- +Version 1.2.0 + +Bug fixes +--------- + +* Attempted acquisition of a recursive mutex could cause waiting threads +to not be woken when the mutex was released. +- Ralf Kubis + +* Various package omissions have been fixed. + + +SNAPSHOT 2005-01-03 +------------------- +Version 1.1.0 + +Bug fixes +--------- + +* Unlocking recursive or errorcheck mutexes would sometimes +unexpectedly return an EPERM error (bug introduced in +snapshot-2004-11-03). +- Konstantin Voronkov + + +SNAPSHOT 2004-11-22 +------------------- +Version 1.0.0 + +This snapshot primarily fixes the condvar bug introduced in +snapshot-2004-11-03. DLL versioning has also been included to allow +applications to runtime check the Microsoft compatible DLL version +information, and to extend the DLL naming system for ABI and major +(non-backward compatible) API changes. See the README file for details. + +Bug fixes +--------- + +* Condition variables no longer deadlock (bug introduced in +snapshot-2004-11-03). +- Alexander Kotliarov and Nicolas at saintmac + +* DLL naming extended to avoid 'DLL hell' in the future, and to +accommodate the ABI change introduced in snapshot-2004-11-03. Snapshot +2004-11-03 will be removed from FTP sites. + +New features +------------ + +* A Microsoft-style version resource has been added to the DLL for +applications that wish to check DLL compatibility at runtime. + +* Pthreads-win32 DLL naming has been extended to allow incompatible DLL +versions to co-exist in the same filesystem. See the README file for details, +but briefly: while the version information inside the DLL will change with +each release from now on, the DLL version names will only change if the new +DLL is not backward compatible with older applications. + +The versioning scheme has been borrowed from GNU Libtool, and the DLL +naming scheme is from Cygwin. Provided the Libtool-style numbering rules are +honoured, the Cygwin DLL naming scheme automatcally ensures that DLL name +changes are minimal and that applications will not load an incompatible +pthreads-win32 DLL. + +Those who use the pre-built DLLs will find that the DLL/LIB names have a new +suffix (1) in this snapshot. E.g. pthreadVC1.dll etc. + +* The POSIX thread ID reuse uniqueness feature introduced in the last snapshot +has been kept as default, but the behaviour can now be controlled when the DLL +is built to effectively switch it off. This makes the library much more +sensitive to applications that assume that POSIX thread IDs are unique, i.e. +are not strictly compliant with POSIX. See the PTW32_THREAD_ID_REUSE_INCREMENT +macro comments in config.h for details. + +Other changes +------------- +Certain POSIX macros have changed. + +These changes are intended to conform to the Single Unix Specification version 3, +which states that, if set to 0 (zero) or not defined, then applications may use +sysconf() to determine their values at runtime. Pthreads-win32 does not +implement sysconf(). + +The following macros are no longer undefined, but defined and set to -1 +(not implemented): + + _POSIX_THREAD_ATTR_STACKADDR + _POSIX_THREAD_PRIO_INHERIT + _POSIX_THREAD_PRIO_PROTECT + _POSIX_THREAD_PROCESS_SHARED + +The following macros are defined and set to 200112L (implemented): + + _POSIX_THREADS + _POSIX_THREAD_SAFE_FUNCTIONS + _POSIX_THREAD_ATTR_STACKSIZE + _POSIX_THREAD_PRIORITY_SCHEDULING + _POSIX_SEMAPHORES + _POSIX_READER_WRITER_LOCKS + _POSIX_SPIN_LOCKS + _POSIX_BARRIERS + +The following macros are defined and set to appropriate values: + + _POSIX_THREAD_THREADS_MAX + _POSIX_SEM_VALUE_MAX + _POSIX_SEM_NSEMS_MAX + PTHREAD_DESTRUCTOR_ITERATIONS + PTHREAD_KEYS_MAX + PTHREAD_STACK_MIN + PTHREAD_THREADS_MAX + + +SNAPSHOT 2004-11-03 +------------------- + +DLLs produced from this snapshot cannot be used with older applications without +recompiling the application, due to a change to pthread_t to provide unique POSIX +thread IDs. + +Although this snapshot passes the extended test suite, many of the changes are +fairly major, and some applications may show different behaviour than previously, +so adopt with care. Hopefully, any changed behaviour will be due to the library +being better at it's job, not worse. + +Bug fixes +--------- + +* pthread_create() no longer accepts NULL as the thread reference arg. +A segfault (memory access fault) will result, and no thread will be +created. + +* pthread_barrier_wait() no longer acts as a cancelation point. + +* Fix potential race condition in pthread_once() +- Tristan Savatier + +* Changes to pthread_cond_destroy() exposed some coding weaknesses in several +test suite mini-apps because pthread_cond_destroy() now returns EBUSY if the CV +is still in use. + +New features +------------ + +* Added for compatibility: +PTHREAD_RECURSIVE_MUTEX_INITIALIZER, +PTHREAD_ERRORCHECK_MUTEX_INITIALIZER, +PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP, +PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP + +* Initial support for Digital Mars compiler +- Anuj Goyal + +* Faster Mutexes. These have been been rewritten following a model provided by +Alexander Terekhov that reduces kernel space checks, and eliminates some additional +critical sections used to manage a race between timedlock expiration and unlock. +Please be aware that the new mutexes do not enforce strict absolute FIFO scheduling +of mutexes, however any out-of-order lock acquisition should be very rare. + +* Faster semaphores. Following a similar model to mutexes above, these have been +rewritten to use preliminary users space checks. + +* sem_getvalue() now returns the number of waiters. + +* The POSIX thread ID now has much stronger uniqueness characteristics. The library +garrantees not to reuse the same thread ID for at least 2^(wordsize) thread +destruction/creation cycles. + +New tests +--------- + +* semaphore4.c: Tests cancelation of the new sem_wait(). + +* semaphore4t.c: Likewise for sem_timedwait(). + +* rwlock8.c: Tests and times the slow execution paths of r/w locks, and the CVs, +mutexes, and semaphores that they're built on. + + +SNAPSHOT 2004-05-16 +------------------- + +Attempt to add Watcom to the list of compilers that can build the library. +This failed in the end due to it's non-thread-aware errno. The library +builds but the test suite fails. See README.Watcom for more details. + +Bug fixes +--------- +* Bug and memory leak in sem_init() +- Alex Blanco + +* ptw32_getprocessors() now returns CPU count of 1 for WinCE. +- James Ewing + +* pthread_cond_wait() could be canceled at a point where it should not +be cancelable. Fixed. +- Alexander Terekhov + +* sem_timedwait() had an incorrect timeout calculation. +- Philippe Di Cristo + +* Fix a memory leak left behind after threads are destroyed. +- P. van Bruggen + +New features +------------ +* Ported to AMD64. +- Makoto Kato + +* True pre-emptive asynchronous cancelation of threads. This is optional +and requires that Panagiotis E. Hadjidoukas's QueueUserAPCEx package be +installed. This package is included in the pthreads-win32 self-unpacking +Zip archive starting from this snapshot. See the README.txt file inside +the package for installation details. + +Note: If you don't use async cancelation in your application, or don't need +to cancel threads that are blocked on system resources such as network I/O, +then the default non-preemptive async cancelation is probably good enough. +However, pthreads-win32 auto-detects the availability of these components +at run-time, so you don't need to rebuild the library from source if you +change your mind later. + +All of the advice available in books and elsewhere on the undesirability +of using async cancelation in any application still stands, but this +feature is a welcome addition with respect to the library's conformance to +the POSIX standard. + +SNAPSHOT 2003-09-18 +------------------- + +Cleanup of thread priority management. In particular, setting of thread +priority now attempts to map invalid Win32 values within the range returned +by sched_get_priority_min/max() to useful values. See README.NONPORTABLE +under "Thread priority". + +Bug fixes +--------- +* pthread_getschedparam() now returns the priority given by the most recent +call to pthread_setschedparam() or established by pthread_create(), as +required by the standard. Previously, pthread_getschedparam() incorrectly +returned the running thread priority at the time of the call, which may have +been adjusted or temporarily promoted/demoted. + +* sched_get_priority_min() and sched_get_priority_max() now return -1 on error +and set errno. Previously, they incorrectly returned the error value directly. + + +SNAPSHOT 2003-09-04 +------------------- + +Bug fixes +--------- +* ptw32_cancelableWait() now allows cancelation of waiting implicit POSIX +threads. + +New test +-------- +* cancel8.c tests cancelation of Win32 threads waiting at a POSIX cancelation +point. + + +SNAPSHOT 2003-09-03 +------------------- + +Bug fixes +--------- +* pthread_self() would free the newly created implicit POSIX thread handle if +DuplicateHandle failed instead of recycle it (very unlikely). + +* pthread_exit() was neither freeing nor recycling the POSIX thread struct +for implicit POSIX threads. + +New feature - Cancelation of/by Win32 (non-POSIX) threads +--------------------------------------------------------- +Since John Bossom's original implementation, the library has allowed non-POSIX +initialised threads (Win32 threads) to call pthreads-win32 routines and +therefore interact with POSIX threads. This is done by creating an on-the-fly +POSIX thread ID for the Win32 thread that, once created, allows fully +reciprical interaction. This did not extend to thread cancelation (async or +deferred). Now it does. + +Any thread can be canceled by any other thread (Win32 or POSIX) if the former +thread's POSIX pthread_t value is known. It's TSD destructors and POSIX +cleanup handlers will be run before the thread exits with an exit code of +PTHREAD_CANCELED (retrieved with GetExitCodeThread()). + +This allows a Win32 thread to, for example, call POSIX CV routines in the same way +that POSIX threads would/should, with pthread_cond_wait() cancelability and +cleanup handlers (pthread_cond_wait() is a POSIX cancelation point). + +By adding cancelation, Win32 threads should now be able to call all POSIX +threads routines that make sense including semaphores, mutexes, condition +variables, read/write locks, barriers, spinlocks, tsd, cleanup push/pop, +cancelation, pthread_exit, scheduling, etc. + +Note that these on-the-fly 'implicit' POSIX thread IDs are initialised as detached +(not joinable) with deferred cancelation type. The POSIX thread ID will be created +automatically by any POSIX routines that need a POSIX handle (unless the routine +needs a pthread_t as a parameter of course). A Win32 thread can discover it's own +POSIX thread ID by calling pthread_self(), which will create the handle if +necessary and return the pthread_t value. + +New tests +--------- +Test the above new feature. + + +SNAPSHOT 2003-08-19 +------------------- + +This snapshot fixes some accidental corruption to new test case sources. +There are no changes to the library source code. + + +SNAPSHOT 2003-08-15 +------------------- + +Bug fixes +--------- + +* pthread.dsp now uses correct compile flags (/MD). +- Viv + +* pthread_win32_process_detach_np() fixed memory leak. +- Steven Reddie + +* pthread_mutex_destroy() fixed incorrect return code. +- Nicolas Barry + +* pthread_spin_destroy() fixed memory leak. +- Piet van Bruggen + +* Various changes to tighten arg checking, and to work with later versions of +MinGW32 and MsysDTK. + +* pthread_getschedparam() etc, fixed dangerous thread validity checking. +- Nicolas Barry + +* POSIX thread handles are now reused and their memory is not freed on thread exit. +This allows for stronger thread validity checking. + +New standard routine +-------------------- + +* pthread_kill() added to provide thread validity checking to applications. +It does not accept any non zero values for the signal arg. + +New test cases +-------------- + +* New test cases to confirm validity checking, pthread_kill(), and thread reuse. + + +SNAPSHOT 2003-05-10 +------------------- + +Bug fixes +--------- + +* pthread_mutex_trylock() now returns correct error values. +pthread_mutex_destroy() will no longer destroy a recursively locked mutex. +pthread_mutex_lock() is no longer inadvertantly behaving as a cancelation point. +- Thomas Pfaff + +* pthread_mutex_timedlock() no longer occasionally sets incorrect mutex +ownership, causing deadlocks in some applications. +- Robert Strycek and Alexander Terekhov + + +SNAPSHOT 2002-11-04 +------------------- + +Bug fixes +--------- + +* sem_getvalue() now returns the correct value under Win NT and WinCE. +- Rob Fanner + +* sem_timedwait() now uses tighter checks for unreasonable +abstime values - that would result in unexpected timeout values. + +* ptw32_cond_wait_cleanup() no longer mysteriously consumes +CV signals but may produce more spurious wakeups. It is believed +that the sem_timedwait() call is consuming a CV signal that it +shouldn't. +- Alexander Terekhov + +* Fixed a memory leak in ptw32_threadDestroy() for implicit threads. + +* Fixed potential for deadlock in pthread_cond_destroy(). +A deadlock could occur for statically declared CVs (PTHREAD_COND_INITIALIZER), +when one thread is attempting to destroy the condition variable while another +is attempting to dynamically initialize it. +- Michael Johnson + + +SNAPSHOT 2002-03-02 +------------------- + +Cleanup code default style. (IMPORTANT) +---------------------------------------------------------------------- +Previously, if not defined, the cleanup style was determined automatically +from the compiler/language, and one of the following was defined accordingly: + + __CLEANUP_SEH MSVC only + __CLEANUP_CXX C++, including MSVC++, GNU G++ + __CLEANUP_C C, including GNU GCC, not MSVC + +These defines determine the style of cleanup (see pthread.h) and, +most importantly, the way that cancelation and thread exit (via +pthread_exit) is performed (see the routine ptw32_throw() in private.c). + +In short, the exceptions versions of the library throw an exception +when a thread is canceled or exits (via pthread_exit()), which is +caught by a handler in the thread startup routine, so that the +the correct stack unwinding occurs regardless of where the thread +is when it's canceled or exits via pthread_exit(). + +In this and future snapshots, unless the build explicitly defines (e.g. +via a compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then +the build NOW always defaults to __CLEANUP_C style cleanup. This style +uses setjmp/longjmp in the cancelation and pthread_exit implementations, +and therefore won't do stack unwinding even when linked to applications +that have it (e.g. C++ apps). This is for consistency with most +current commercial Unix POSIX threads implementations. Compaq's TRU64 +may be an exception (no pun intended) and possible future trend. + +Although it was not clearly documented before, it is still necessary to +build your application using the same __CLEANUP_* define as was +used for the version of the library that you link with, so that the +correct parts of pthread.h are included. That is, the possible +defines require the following library versions: + + __CLEANUP_SEH pthreadVSE.dll + __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll + __CLEANUP_C pthreadVC.dll or pthreadGC.dll + +E.g. regardless of whether your app is C or C++, if you link with +pthreadVC.lib or libpthreadGC.a, then you must define __CLEANUP_C. + + +THE POINT OF ALL THIS IS: if you have not been defining one of these +explicitly, then the defaults as described at the top of this +section were being used. + +THIS NOW CHANGES, as has been explained above, but to try to make this +clearer here's an example: + +If you were building your application with MSVC++ i.e. using C++ +exceptions and not explicitly defining one of __CLEANUP_*, then +__CLEANUP_C++ was automatically defined for you in pthread.h. +You should have been linking with pthreadVCE.dll, which does +stack unwinding. + +If you now build your application as you had before, pthread.h will now +automatically set __CLEANUP_C as the default style, and you will need to +link with pthreadVC.dll. Stack unwinding will now NOT occur when a thread +is canceled, or the thread calls pthread_exit(). + +Your application will now most likely behave differently to previous +versions, and in non-obvious ways. Most likely is that locally +instantiated objects may not be destroyed or cleaned up after a thread +is canceled. + +If you want the same behaviour as before, then you must now define +__CLEANUP_C++ explicitly using a compiler option and link with +pthreadVCE.dll as you did before. + + +WHY ARE WE MAKING THE DEFAULT STYLE LESS EXCEPTION-FRIENDLY? +Because no commercial Unix POSIX threads implementation allows you to +choose to have stack unwinding. Therefore, providing it in pthread-win32 +as a default is dangerous. We still provide the choice but unless +you consciously choose to do otherwise, your pthreads applications will +now run or crash in similar ways irrespective of the threads platform +you use. Or at least this is the hope. + + +WHY NOT REMOVE THE EXCEPTIONS VERSIONS OF THE LIBRARY ALTOGETHER? +There are a few reasons: +- because there are well respected POSIX threads people who believe + that POSIX threads implementations should be exceptions aware and + do the expected thing in that context. (There are equally respected + people who believe it should not be easily accessible, if it's there + at all, for unconditional conformity to other implementations.) +- because pthreads-win32 is one of the few implementations that has + the choice, perhaps the only freely available one, and so offers + a laboratory to people who may want to explore the effects; +- although the code will always be around somewhere for anyone who + wants it, once it's removed from the current version it will not be + nearly as visible to people who may have a use for it. + + +Source module splitting +----------------------- +In order to enable smaller image sizes to be generated +for applications that link statically with the library, +most routines have been separated out into individual +source code files. + +This is being done in such a way as to be backward compatible. +The old source files are reused to congregate the individual +routine files into larger translation units (via a bunch of +# includes) so that the compiler can still optimise wherever +possible, e.g. through inlining, which can only be done +within the same translation unit. + +It is also possible to build the entire library by compiling +the single file named "pthread.c", which just #includes all +the secondary congregation source files. The compiler +may be able to use this to do more inlining of routines. + +Although the GNU compiler is able to produce libraries with +the necessary separation (the -ffunction-segments switch), +AFAIK, the MSVC and other compilers don't have this feature. + +Finally, since I use makefiles and command-line compilation, +I don't know what havoc this reorganisation may wreak amongst +IDE project file users. You should be able to continue +using your existing project files without modification. + + +New non-portable functions +-------------------------- +pthread_num_processors_np(): + Returns the number of processors in the system that are + available to the process, as determined from the processor + affinity mask. + +pthread_timechange_handler_np(): + To improve tolerance against operator or time service initiated + system clock changes. + + This routine can be called by an application when it + receives a WM_TIMECHANGE message from the system. At present + it broadcasts all condition variables so that waiting threads + can wake up and re-evaluate their conditions and restart + their timed waits if required. + - Suggested by Alexander Terekhov + + +Platform dependence +------------------- +As Win95 doesn't provide one, the library now contains +it's own InterlockedCompareExchange() routine, which is used +whenever Windows doesn't provide it. InterlockedCompareExchange() +is used to implement spinlocks and barriers, and also in mutexes. +This routine relies on the CMPXCHG machine instruction which +is not available on i386 CPUs. This library (from snapshot +20010712 onwards) is therefore no longer supported on i386 +processor platforms. + + +New standard routines +--------------------- +For source code portability only - rwlocks cannot be process shared yet. + + pthread_rwlockattr_init() + pthread_rwlockattr_destroy() + pthread_rwlockattr_setpshared() + pthread_rwlockattr_getpshared() + +As defined in the new POSIX standard, and the Single Unix Spec version 3: + + sem_timedwait() + pthread_mutex_timedlock() - Alexander Terekhov and Thomas Pfaff + pthread_rwlock_timedrdlock() - adapted from pthread_rwlock_rdlock() + pthread_rwlock_timedwrlock() - adapted from pthread_rwlock_wrlock() + + +pthread.h no longer includes windows.h +-------------------------------------- +[Not yet for G++] + +This was done to prevent conflicts. + +HANDLE, DWORD, and NULL are temporarily defined within pthread.h if +they are not already. + + +pthread.h, sched.h and semaphore.h now use dllexport/dllimport +-------------------------------------------------------------- +Not only to avoid the need for the pthread.def file, but to +improve performance. Apparently, declaring functions with dllimport +generates a direct call to the function and avoids the overhead +of a stub function call. + +Bug fixes +--------- +* Fixed potential NULL pointer dereferences in pthread_mutexattr_init, +pthread_mutexattr_getpshared, pthread_barrierattr_init, +pthread_barrierattr_getpshared, and pthread_condattr_getpshared. +- Scott McCaskill + +* Removed potential race condition in pthread_mutex_trylock and +pthread_mutex_lock; +- Alexander Terekhov + +* The behaviour of pthread_mutex_trylock in relation to +recursive mutexes was inconsistent with commercial implementations. +Trylock would return EBUSY if the lock was owned already by the +calling thread regardless of mutex type. Trylock now increments the +recursion count and returns 0 for RECURSIVE mutexes, and will +return EDEADLK rather than EBUSY for ERRORCHECK mutexes. This is +consistent with Solaris. +- Thomas Pfaff + +* Found a fix for the library and workaround for applications for +the known bug #2, i.e. where __CLEANUP_CXX or __CLEANUP_SEH is defined. +See the "Known Bugs in this snapshot" section below. + +This could be made transparent to applications by replacing the macros that +define the current C++ and SEH versions of pthread_cleanup_push/pop +with the C version, but AFAIK cleanup handlers would not then run in the +correct sequence with destructors and exception cleanup handlers when +an exception occurs. + +* Cancelation once started in a thread cannot now be inadvertantly +double canceled. That is, once a thread begins it's cancelation run, +cancelation is disabled and a subsequent cancel request will +return an error (ESRCH). + +* errno: An incorrect compiler directive caused a local version +of errno to be used instead of the Win32 errno. Both instances are +thread-safe but applications checking errno after a pthreads-win32 +call would be wrong. Fixing this also fixed a bad compiler +option in the testsuite (/MT should have been /MD) which is +needed to link with the correct library MSVCRT.LIB. + + +SNAPSHOT 2001-07-12 +------------------- + +To be added + + +SNAPSHOT 2001-07-03 +------------------- + +To be added + + +SNAPSHOT 2000-08-13 +------------------- + +New: +- Renamed DLL and LIB files: + pthreadVSE.dll (MS VC++/Structured EH) + pthreadVSE.lib + pthreadVCE.dll (MS VC++/C++ EH) + pthreadVCE.lib + pthreadGCE.dll (GNU G++/C++ EH) + libpthreadw32.a + + Both your application and the pthread dll should use the + same exception handling scheme. + +Bugs fixed: +- MSVC++ C++ exception handling. + +Some new tests have been added. + + +SNAPSHOT 2000-08-10 +------------------- + +New: +- asynchronous cancelation on X86 (Jason Nye) +- Makefile compatible with MS nmake to replace + buildlib.bat +- GNUmakefile for Mingw32 +- tests/Makefile for MS nmake replaces runall.bat +- tests/GNUmakefile for Mingw32 + +Bugs fixed: +- kernel32 load/free problem +- attempt to hide internel exceptions from application + exception handlers (__try/__except and try/catch blocks) +- Win32 thread handle leakage bug + (David Baggett/Paul Redondo/Eyal Lebedinsky) + +Some new tests have been added. + + +SNAPSHOT 1999-11-02 +------------------- + +Bugs fixed: +- ctime_r macro had an incorrect argument (Erik Hensema), +- threads were not being created + PTHREAD_CANCEL_DEFERRED. This should have + had little effect as deferred is the only + supported type. (Ross Johnson). + +Some compatibility improvements added, eg. +- pthread_setcancelstate accepts NULL pointer + for the previous value argument. Ditto for + pthread_setcanceltype. This is compatible + with Solaris but should not affect + standard applications (Erik Hensema) + +Some new tests have been added. + + +SNAPSHOT 1999-10-17 +------------------- + +Bug fix - Cancelation of threads waiting on condition variables +now works properly (Lorin Hochstein and Peter Slacik) + + +SNAPSHOT 1999-08-12 +------------------- + +Fixed exception stack cleanup if calling pthread_exit() +- (Lorin Hochstein and John Bossom). + +Fixed bugs in condition variables - (Peter Slacik): + - additional contention checks + - properly adjust number of waiting threads after timed + condvar timeout. + + +SNAPSHOT 1999-05-30 +------------------- + +Some minor bugs have been fixed. See the ChangeLog file for details. + +Some more POSIX 1b functions are now included but ony return an +error (ENOSYS) if called. They are: + + sem_open + sem_close + sem_unlink + sem_getvalue + + +SNAPSHOT 1999-04-07 +------------------- + +Some POSIX 1b functions which were internally supported are now +available as exported functions: + + sem_init + sem_destroy + sem_wait + sem_trywait + sem_post + sched_yield + sched_get_priority_min + sched_get_priority_max + +Some minor bugs have been fixed. See the ChangeLog file for details. + + +SNAPSHOT 1999-03-16 +------------------- + +Initial release. + diff --git a/3rdparty/w32pthreads/PCSX2.txt b/3rdparty/w32pthreads/PCSX2.txt index 8d5967bf4f..51dc998b6e 100644 --- a/3rdparty/w32pthreads/PCSX2.txt +++ b/3rdparty/w32pthreads/PCSX2.txt @@ -1,20 +1,20 @@ ------------------------------------ --- Air's Notes on Using PThreads -- ------------------------------------ - -The official name of the DLL is "w32pthreads.dll" -- I use the prefix to indicate with -some vaugeness that the pthreads dll is a modified non-standard implementation (see below -for details); just in case pthreads-win32 dlls in another universe were to be conflicting -interests. - -I created a subfolder for pthreads' publically exposed header files, since "config.h" was -rather brutal include file namespace pollution. >_< - -Important: pthread_cond is an inherently flawed concept, and is quite incredibly slow -on top of it. It's primarily meant for inter-process thread regulation, of which we -do none. Therefore it has been excluded from the library builds. Don't use it! - -I've also disabled rwlocks, since they use pthread_cond internally. Again, there should -be little or no reason to have to use those within the context of a high performance app -like Pcsx2. - +----------------------------------- +-- Air's Notes on Using PThreads -- +----------------------------------- + +The official name of the DLL is "w32pthreads.dll" -- I use the prefix to indicate with +some vaugeness that the pthreads dll is a modified non-standard implementation (see below +for details); just in case pthreads-win32 dlls in another universe were to be conflicting +interests. + +I created a subfolder for pthreads' publically exposed header files, since "config.h" was +rather brutal include file namespace pollution. >_< + +Important: pthread_cond is an inherently flawed concept, and is quite incredibly slow +on top of it. It's primarily meant for inter-process thread regulation, of which we +do none. Therefore it has been excluded from the library builds. Don't use it! + +I've also disabled rwlocks, since they use pthread_cond internally. Again, there should +be little or no reason to have to use those within the context of a high performance app +like Pcsx2. + diff --git a/3rdparty/w32pthreads/README b/3rdparty/w32pthreads/README index 8c3af6097b..5649333025 100644 --- a/3rdparty/w32pthreads/README +++ b/3rdparty/w32pthreads/README @@ -1,593 +1,593 @@ -PTHREADS-WIN32 -============== - -Pthreads-win32 is free software, distributed under the GNU Lesser -General Public License (LGPL). See the file 'COPYING.LIB' for terms -and conditions. Also see the file 'COPYING' for information -specific to pthreads-win32, copyrights and the LGPL. - - -What is it? ------------ - -Pthreads-win32 is an Open Source Software implementation of the -Threads component of the POSIX 1003.1c 1995 Standard (or later) -for Microsoft's Win32 environment. Some functions from POSIX -1003.1b are also supported including semaphores. Other related -functions include the set of read-write lock functions. The -library also supports some of the functionality of the Open -Group's Single Unix specification, version 2, namely mutex types, -plus some common and pthreads-win32 specific non-portable -routines (see README.NONPORTABLE). - -See the file "ANNOUNCE" for more information including standards -conformance details and the list of supported and unsupported -routines. - - -Prerequisites -------------- -MSVC or GNU C (MinGW32 MSys development kit) - To build from source. - -QueueUserAPCEx by Panagiotis E. Hadjidoukas - For true async cancelation of threads (including blocked threads). - This is a DLL and Windows driver that provides pre-emptive APC - by forcing threads into an alertable state when the APC is queued. - Both the DLL and driver are provided with the pthreads-win32.exe - self-unpacking ZIP, and on the pthreads-win32 FTP site (in source - and pre-built forms). Currently this is a separate LGPL package to - pthreads-win32. See the README in the QueueUserAPCEx folder for - installation instructions. - - Pthreads-win32 will automatically detect if the QueueUserAPCEx DLL - QuserEx.DLL is available and whether the driver AlertDrv.sys is - loaded. If it is not available, pthreads-win32 will simulate async - cancelation, which means that it can async cancel only threads that - are runnable. The simulated async cancellation cannot cancel blocked - threads. - - -Library naming --------------- - -Because the library is being built using various exception -handling schemes and compilers - and because the library -may not work reliably if these are mixed in an application, -each different version of the library has it's own name. - -Note 1: the incompatibility is really between EH implementations -of the different compilers. It should be possible to use the -standard C version from either compiler with C++ applications -built with a different compiler. If you use an EH version of -the library, then you must use the same compiler for the -application. This is another complication and dependency that -can be avoided by using only the standard C library version. - -Note 2: if you use a standard C pthread*.dll with a C++ -application, then any functions that you define that are -intended to be called via pthread_cleanup_push() must be -__cdecl. - -Note 3: the intention was to also name either the VC or GC -version (it should be arbitrary) as pthread.dll, including -pthread.lib and libpthread.a as appropriate. This is no longer -likely to happen. - -Note 4: the compatibility number was added so that applications -can differentiate between binary incompatible versions of the -libs and dlls. - -In general: - pthread[VG]{SE,CE,C}c.dll - pthread[VG]{SE,CE,C}c.lib - -where: - [VG] indicates the compiler - V - MS VC, or - G - GNU C - - {SE,CE,C} indicates the exception handling scheme - SE - Structured EH, or - CE - C++ EH, or - C - no exceptions - uses setjmp/longjmp - - c - DLL compatibility number indicating ABI and API - compatibility with applications built against - any snapshot with the same compatibility number. - See 'Version numbering' below. - -The name may also be suffixed by a 'd' to indicate a debugging version -of the library. E.g. pthreadVC2d.lib. Debugging versions contain -additional information for debugging (symbols etc) and are often not -optimised in any way (compiled with optimisation turned off). - -For example: - pthreadVSE.dll (MSVC/SEH) - pthreadGCE.dll (GNUC/C++ EH) - pthreadGC.dll (GNUC/not dependent on exceptions) - pthreadVC1.dll (MSVC/not dependent on exceptions - not binary - compatible with pthreadVC.dll) - pthreadVC2.dll (MSVC/not dependent on exceptions - not binary - compatible with pthreadVC1.dll or pthreadVC.dll) - -The GNU library archive file names have correspondingly changed to: - - libpthreadGCEc.a - libpthreadGCc.a - - -Versioning numbering --------------------- - -Version numbering is separate from the snapshot dating system, and -is the canonical version identification system embedded within the -DLL using the Microsoft version resource system. The versioning -system chosen follows the GNU Libtool system. See -http://www.gnu.org/software/libtool/manual.html section 6.2. - -See the resource file 'version.rc'. - -Microsoft version numbers use 4 integers: - - 0.0.0.0 - -Pthreads-win32 uses the first 3 following the Libtool convention. -The fourth is commonly used for the build number, but will be reserved -for future use. - - current.revision.age.0 - -The numbers are changed as follows: - -1. If the library source code has changed at all since the last update, - then increment revision (`c:r:a' becomes `c:r+1:a'). -2. If any interfaces have been added, removed, or changed since the last - update, increment current, and set revision to 0. -3. If any interfaces have been added since the last public release, then - increment age. -4. If any interfaces have been removed or changed since the last public - release, then set age to 0. - - -DLL compatibility numbering is an attempt to ensure that applications -always load a compatible pthreads-win32 DLL by using a DLL naming system -that is consistent with the version numbering system. It also allows -older and newer DLLs to coexist in the same filesystem so that older -applications can continue to be used. For pre .NET Windows systems, -this inevitably requires incompatible versions of the same DLLs to have -different names. - -Pthreads-win32 has adopted the Cygwin convention of appending a single -integer number to the DLL name. The number used is based on the library -version number and is computed as 'current' - 'age'. - -(See http://home.att.net/~perlspinr/libversioning.html for a nicely -detailed explanation.) - -Using this method, DLL name/s will only change when the DLL's -backwards compatibility changes. Note that the addition of new -'interfaces' will not of itself change the DLL's compatibility for older -applications. - - -Which of the several dll versions to use? ------------------------------------------ -or, ---- -What are all these pthread*.dll and pthread*.lib files? -------------------------------------------------------- - -Simple, use either pthreadGCv.* if you use GCC, or pthreadVCv.* if you -use MSVC - where 'v' is the DLL versioning (compatibility) number. - -Otherwise, you need to choose carefully and know WHY. - -The most important choice you need to make is whether to use a -version that uses exceptions internally, or not. There are versions -of the library that use exceptions as part of the thread -cancelation and exit implementation. The default version uses -setjmp/longjmp. - -There is some contension amongst POSIX threads experts as -to how POSIX threads cancelation and exit should work -with languages that use exceptions, e.g. C++ and even C -(Microsoft's Structured Exceptions). - -The issue is: should cancelation of a thread in, say, -a C++ application cause object destructors and C++ exception -handlers to be invoked as the stack unwinds during thread -exit, or not? - -There seems to be more opinion in favour of using the -standard C version of the library (no EH) with C++ applications -for the reason that this appears to be the assumption commercial -pthreads implementations make. Therefore, if you use an EH version -of pthreads-win32 then you may be under the illusion that -your application will be portable, when in fact it is likely to -behave differently when linked with other pthreads libraries. - -Now you may be asking: then why have you kept the EH versions of -the library? - -There are a couple of reasons: -- there is division amongst the experts and so the code may - be needed in the future. Yes, it's in the repository and we - can get it out anytime in the future, but it would be difficult - to find. -- pthreads-win32 is one of the few implementations, and possibly - the only freely available one, that has EH versions. It may be - useful to people who want to play with or study application - behaviour under these conditions. - -Notes: - -[If you use either pthreadVCE or pthreadGCE] - -1. [See also the discussion in the FAQ file - Q2, Q4, and Q5] - -If your application contains catch(...) blocks in your POSIX -threads then you will need to replace the "catch(...)" with the macro -"PtW32Catch", eg. - - #ifdef PtW32Catch - PtW32Catch { - ... - } - #else - catch(...) { - ... - } - #endif - -Otherwise neither pthreads cancelation nor pthread_exit() will work -reliably when using versions of the library that use C++ exceptions -for cancelation and thread exit. - -This is due to what is believed to be a C++ compliance error in VC++ -whereby you may not have multiple handlers for the same exception in -the same try/catch block. GNU G++ doesn't have this restriction. - - -Other name changes ------------------- - -All snapshots prior to and including snapshot 2000-08-13 -used "_pthread_" as the prefix to library internal -functions, and "_PTHREAD_" to many library internal -macros. These have now been changed to "ptw32_" and "PTW32_" -respectively so as to not conflict with the ANSI standard's -reservation of identifiers beginning with "_" and "__" for -use by compiler implementations only. - -If you have written any applications and you are linking -statically with the pthreads-win32 library then you may have -included a call to _pthread_processInitialize. You will -now have to change that to ptw32_processInitialize. - - -Cleanup code default style --------------------------- - -Previously, if not defined, the cleanup style was determined automatically -from the compiler used, and one of the following was defined accordingly: - - __CLEANUP_SEH MSVC only - __CLEANUP_CXX C++, including MSVC++, GNU G++ - __CLEANUP_C C, including GNU GCC, not MSVC - -These defines determine the style of cleanup (see pthread.h) and, -most importantly, the way that cancelation and thread exit (via -pthread_exit) is performed (see the routine ptw32_throw()). - -In short, the exceptions versions of the library throw an exception -when a thread is canceled, or exits via pthread_exit(). This exception is -caught by a handler in the thread startup routine, so that the -the correct stack unwinding occurs regardless of where the thread -is when it's canceled or exits via pthread_exit(). - -In this snapshot, unless the build explicitly defines (e.g. via a -compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then -the build NOW always defaults to __CLEANUP_C style cleanup. This style -uses setjmp/longjmp in the cancelation and pthread_exit implementations, -and therefore won't do stack unwinding even when linked to applications -that have it (e.g. C++ apps). This is for consistency with most/all -commercial Unix POSIX threads implementations. - -Although it was not clearly documented before, it is still necessary to -build your application using the same __CLEANUP_* define as was -used for the version of the library that you link with, so that the -correct parts of pthread.h are included. That is, the possible -defines require the following library versions: - - __CLEANUP_SEH pthreadVSE.dll - __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll - __CLEANUP_C pthreadVC.dll or pthreadGC.dll - -It is recommended that you let pthread.h use it's default __CLEANUP_C -for both library and application builds. That is, don't define any of -the above, and then link with pthreadVC.lib (MSVC or MSVC++) and -libpthreadGC.a (MinGW GCC or G++). The reason is explained below, but -another reason is that the prebuilt pthreadVCE.dll is currently broken. -Versions built with MSVC++ later than version 6 may not be broken, but I -can't verify this yet. - -WHY ARE WE MAKING THE DEFAULT STYLE LESS EXCEPTION-FRIENDLY? -Because no commercial Unix POSIX threads implementation allows you to -choose to have stack unwinding. Therefore, providing it in pthread-win32 -as a default is dangerous. We still provide the choice but unless -you consciously choose to do otherwise, your pthreads applications will -now run or crash in similar ways irrespective of the pthreads platform -you use. Or at least this is the hope. - - -Building under VC++ using C++ EH, Structured EH, or just C ----------------------------------------------------------- - -From the source directory run nmake without any arguments to list -help information. E.g. - -$ nmake - -Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 -Copyright (C) Microsoft Corp 1988-1998. All rights reserved. - -Run one of the following command lines: -nmake clean VCE (to build the MSVC dll with C++ exception handling) -nmake clean VSE (to build the MSVC dll with structured exception handling) -nmake clean VC (to build the MSVC dll with C cleanup code) -nmake clean VCE-inlined (to build the MSVC inlined dll with C++ exception handling) -nmake clean VSE-inlined (to build the MSVC inlined dll with structured exception handling) -nmake clean VC-inlined (to build the MSVC inlined dll with C cleanup code) -nmake clean VC-static (to build the MSVC static lib with C cleanup code) -nmake clean VCE-debug (to build the debug MSVC dll with C++ exception handling) -nmake clean VSE-debug (to build the debug MSVC dll with structured exception handling) -nmake clean VC-debug (to build the debug MSVC dll with C cleanup code) -nmake clean VCE-inlined-debug (to build the debug MSVC inlined dll with C++ exception handling) -nmake clean VSE-inlined-debug (to build the debug MSVC inlined dll with structured exception handling) -nmake clean VC-inlined-debug (to build the debug MSVC inlined dll with C cleanup code) -nmake clean VC-static-debug (to build the debug MSVC static lib with C cleanup code) - - -The pre-built dlls are normally built using the *-inlined targets. - -You can run the testsuite by changing to the "tests" directory and -running nmake. E.g.: - -$ cd tests -$ nmake - -Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 -Copyright (C) Microsoft Corp 1988-1998. All rights reserved. - -Run one of the following command lines: -nmake clean VC (to test using VC dll with VC (no EH) applications) -nmake clean VCX (to test using VC dll with VC++ (EH) applications) -nmake clean VCE (to test using the VCE dll with VC++ EH applications) -nmake clean VSE (to test using VSE dll with VC (SEH) applications) -nmake clean VC-bench (to benchtest using VC dll with C bench app) -nmake clean VCX-bench (to benchtest using VC dll with C++ bench app) -nmake clean VCE-bench (to benchtest using VCE dll with C++ bench app) -nmake clean VSE-bench (to benchtest using VSE dll with SEH bench app) -nmake clean VC-static (to test using VC static lib with VC (no EH) applications) - - -Building under Mingw32 ----------------------- - -The dll can be built easily with recent versions of Mingw32. -(The distributed versions are built using Mingw32 and MsysDTK -from www.mingw32.org.) - -From the source directory, run make for help information. E.g.: - -$ make -Run one of the following command lines: -make clean GC (to build the GNU C dll with C cleanup code) -make clean GCE (to build the GNU C dll with C++ exception handling) -make clean GC-inlined (to build the GNU C inlined dll with C cleanup code) -make clean GCE-inlined (to build the GNU C inlined dll with C++ exception handling) -make clean GC-static (to build the GNU C inlined static lib with C cleanup code) -make clean GC-debug (to build the GNU C debug dll with C cleanup code) -make clean GCE-debug (to build the GNU C debug dll with C++ exception handling) -make clean GC-inlined-debug (to build the GNU C inlined debug dll with C cleanup code) -make clean GCE-inlined-debug (to build the GNU C inlined debug dll with C++ exception handling) -make clean GC-static-debug (to build the GNU C inlined static debug lib with C cleanup code) - - -The pre-built dlls are normally built using the *-inlined targets. - -You can run the testsuite by changing to the "tests" directory and -running make for help information. E.g.: - -$ cd tests -$ make -Run one of the following command lines: -make clean GC (to test using GC dll with C (no EH) applications) -make clean GCX (to test using GC dll with C++ (EH) applications) -make clean GCE (to test using GCE dll with C++ (EH) applications) -make clean GC-bench (to benchtest using GNU C dll with C cleanup code) -make clean GCE-bench (to benchtest using GNU C dll with C++ exception handling) -make clean GC-static (to test using GC static lib with C (no EH) applications) - - -Building under Linux using the Mingw32 cross development tools --------------------------------------------------------------- - -You can build the library without leaving Linux by using the Mingw32 cross -development toolchain. See http://www.libsdl.org/extras/win32/cross/ for -tools and info. The GNUmakefile contains some support for this, for example: - -make CROSS=i386-mingw32msvc- clean GC-inlined - -will build pthreadGCn.dll and libpthreadGCn.a (n=version#), provided your -cross-tools/bin directory is in your PATH (or use the cross-make.sh script -at the URL above). - - -Building the library as a statically linkable library ------------------------------------------------------ - -General: PTW32_STATIC_LIB must be defined for both the library build and the -application build. The makefiles supplied and used by the following 'make' -command lines will define this for you. - -MSVC (creates pthreadVCn.lib as a static link lib): - -nmake clean VC-static - - -MinGW32 (creates libpthreadGCn.a as a static link lib): - -make clean GC-static - - -Define PTW32_STATIC_LIB when building your application. Also, your -application must call a two non-portable routines to initialise the -some state on startup and cleanup before exit. One other routine needs -to be called to cleanup after any Win32 threads have called POSIX API -routines. See README.NONPORTABLE or the html reference manual pages for -details on these routines: - -BOOL pthread_win32_process_attach_np (void); -BOOL pthread_win32_process_detach_np (void); -BOOL pthread_win32_thread_attach_np (void); // Currently a no-op -BOOL pthread_win32_thread_detach_np (void); - - -The tests makefiles have the same targets but only check that the -static library is statically linkable. They don't run the full -testsuite. To run the full testsuite, build the dlls and run the -dll test targets. - - -Building the library under Cygwin ---------------------------------- - -Cygwin is implementing it's own POSIX threads routines and these -will be the ones to use if you develop using Cygwin. - - -Ready to run binaries ---------------------- - -For convenience, the following ready-to-run files can be downloaded -from the FTP site (see under "Availability" below): - - pthread.h - semaphore.h - sched.h - pthreadVC.dll - built with MSVC compiler using C setjmp/longjmp - pthreadVC.lib - pthreadVCE.dll - built with MSVC++ compiler using C++ EH - pthreadVCE.lib - pthreadVSE.dll - built with MSVC compiler using SEH - pthreadVSE.lib - pthreadGC.dll - built with Mingw32 GCC - libpthreadGC.a - derived from pthreadGC.dll - pthreadGCE.dll - built with Mingw32 G++ - libpthreadGCE.a - derived from pthreadGCE.dll - -As of August 2003 pthreads-win32 pthreadG* versions are built and tested -using the MinGW + MsysDTK environment current as of that date or later. -The following file MAY be needed for older MinGW environments. - - gcc.dll - needed to build and run applications that use - pthreadGCE.dll. - - -Building applications with GNU compilers ----------------------------------------- - -If you're using pthreadGC.dll: - -With the three header files, pthreadGC.dll and libpthreadGC.a in the -same directory as your application myapp.c, you could compile, link -and run myapp.c under Mingw32 as follows: - - gcc -o myapp.exe myapp.c -I. -L. -lpthreadGC - myapp - -Or put pthreadGC.dll in an appropriate directory in your PATH, -put libpthreadGC.a in your system lib directory, and -put the three header files in your system include directory, -then use: - - gcc -o myapp.exe myapp.c -lpthreadGC - myapp - - -If you're using pthreadGCE.dll: - -With the three header files, pthreadGCE.dll, gcc.dll and libpthreadGCE.a -in the same directory as your application myapp.c, you could compile, -link and run myapp.c under Mingw32 as follows: - - gcc -x c++ -o myapp.exe myapp.c -I. -L. -lpthreadGCE - myapp - -Or put pthreadGCE.dll and gcc.dll in an appropriate directory in -your PATH, put libpthreadGCE.a in your system lib directory, and -put the three header files in your system include directory, -then use: - - gcc -x c++ -o myapp.exe myapp.c -lpthreadGCE - myapp - - -Availability ------------- - -The complete source code in either unbundled, self-extracting -Zip file, or tar/gzipped format can be found at: - - ftp://sources.redhat.com/pub/pthreads-win32 - -The pre-built DLL, export libraries and matching pthread.h can -be found at: - - ftp://sources.redhat.com/pub/pthreads-win32/dll-latest - -Home page: - - http://sources.redhat.com/pthreads-win32/ - - -Mailing list ------------- - -There is a mailing list for discussing pthreads on Win32. -To join, send email to: - - pthreads-win32-subscribe@sources.redhat.com - -Unsubscribe by sending mail to: - - pthreads-win32-unsubscribe@sources.redhat.com - - -Acknowledgements ----------------- - -See the ANNOUNCE file for acknowledgements. -See the 'CONTRIBUTORS' file for the list of contributors. - -As much as possible, the ChangeLog file attributes -contributions and patches that have been incorporated -in the library to the individuals responsible. - -Finally, thanks to all those who work on and contribute to the -POSIX and Single Unix Specification standards. The maturity of an -industry can be measured by it's open standards. - ----- -Ross Johnson - - - - - - - - - +PTHREADS-WIN32 +============== + +Pthreads-win32 is free software, distributed under the GNU Lesser +General Public License (LGPL). See the file 'COPYING.LIB' for terms +and conditions. Also see the file 'COPYING' for information +specific to pthreads-win32, copyrights and the LGPL. + + +What is it? +----------- + +Pthreads-win32 is an Open Source Software implementation of the +Threads component of the POSIX 1003.1c 1995 Standard (or later) +for Microsoft's Win32 environment. Some functions from POSIX +1003.1b are also supported including semaphores. Other related +functions include the set of read-write lock functions. The +library also supports some of the functionality of the Open +Group's Single Unix specification, version 2, namely mutex types, +plus some common and pthreads-win32 specific non-portable +routines (see README.NONPORTABLE). + +See the file "ANNOUNCE" for more information including standards +conformance details and the list of supported and unsupported +routines. + + +Prerequisites +------------- +MSVC or GNU C (MinGW32 MSys development kit) + To build from source. + +QueueUserAPCEx by Panagiotis E. Hadjidoukas + For true async cancelation of threads (including blocked threads). + This is a DLL and Windows driver that provides pre-emptive APC + by forcing threads into an alertable state when the APC is queued. + Both the DLL and driver are provided with the pthreads-win32.exe + self-unpacking ZIP, and on the pthreads-win32 FTP site (in source + and pre-built forms). Currently this is a separate LGPL package to + pthreads-win32. See the README in the QueueUserAPCEx folder for + installation instructions. + + Pthreads-win32 will automatically detect if the QueueUserAPCEx DLL + QuserEx.DLL is available and whether the driver AlertDrv.sys is + loaded. If it is not available, pthreads-win32 will simulate async + cancelation, which means that it can async cancel only threads that + are runnable. The simulated async cancellation cannot cancel blocked + threads. + + +Library naming +-------------- + +Because the library is being built using various exception +handling schemes and compilers - and because the library +may not work reliably if these are mixed in an application, +each different version of the library has it's own name. + +Note 1: the incompatibility is really between EH implementations +of the different compilers. It should be possible to use the +standard C version from either compiler with C++ applications +built with a different compiler. If you use an EH version of +the library, then you must use the same compiler for the +application. This is another complication and dependency that +can be avoided by using only the standard C library version. + +Note 2: if you use a standard C pthread*.dll with a C++ +application, then any functions that you define that are +intended to be called via pthread_cleanup_push() must be +__cdecl. + +Note 3: the intention was to also name either the VC or GC +version (it should be arbitrary) as pthread.dll, including +pthread.lib and libpthread.a as appropriate. This is no longer +likely to happen. + +Note 4: the compatibility number was added so that applications +can differentiate between binary incompatible versions of the +libs and dlls. + +In general: + pthread[VG]{SE,CE,C}c.dll + pthread[VG]{SE,CE,C}c.lib + +where: + [VG] indicates the compiler + V - MS VC, or + G - GNU C + + {SE,CE,C} indicates the exception handling scheme + SE - Structured EH, or + CE - C++ EH, or + C - no exceptions - uses setjmp/longjmp + + c - DLL compatibility number indicating ABI and API + compatibility with applications built against + any snapshot with the same compatibility number. + See 'Version numbering' below. + +The name may also be suffixed by a 'd' to indicate a debugging version +of the library. E.g. pthreadVC2d.lib. Debugging versions contain +additional information for debugging (symbols etc) and are often not +optimised in any way (compiled with optimisation turned off). + +For example: + pthreadVSE.dll (MSVC/SEH) + pthreadGCE.dll (GNUC/C++ EH) + pthreadGC.dll (GNUC/not dependent on exceptions) + pthreadVC1.dll (MSVC/not dependent on exceptions - not binary + compatible with pthreadVC.dll) + pthreadVC2.dll (MSVC/not dependent on exceptions - not binary + compatible with pthreadVC1.dll or pthreadVC.dll) + +The GNU library archive file names have correspondingly changed to: + + libpthreadGCEc.a + libpthreadGCc.a + + +Versioning numbering +-------------------- + +Version numbering is separate from the snapshot dating system, and +is the canonical version identification system embedded within the +DLL using the Microsoft version resource system. The versioning +system chosen follows the GNU Libtool system. See +http://www.gnu.org/software/libtool/manual.html section 6.2. + +See the resource file 'version.rc'. + +Microsoft version numbers use 4 integers: + + 0.0.0.0 + +Pthreads-win32 uses the first 3 following the Libtool convention. +The fourth is commonly used for the build number, but will be reserved +for future use. + + current.revision.age.0 + +The numbers are changed as follows: + +1. If the library source code has changed at all since the last update, + then increment revision (`c:r:a' becomes `c:r+1:a'). +2. If any interfaces have been added, removed, or changed since the last + update, increment current, and set revision to 0. +3. If any interfaces have been added since the last public release, then + increment age. +4. If any interfaces have been removed or changed since the last public + release, then set age to 0. + + +DLL compatibility numbering is an attempt to ensure that applications +always load a compatible pthreads-win32 DLL by using a DLL naming system +that is consistent with the version numbering system. It also allows +older and newer DLLs to coexist in the same filesystem so that older +applications can continue to be used. For pre .NET Windows systems, +this inevitably requires incompatible versions of the same DLLs to have +different names. + +Pthreads-win32 has adopted the Cygwin convention of appending a single +integer number to the DLL name. The number used is based on the library +version number and is computed as 'current' - 'age'. + +(See http://home.att.net/~perlspinr/libversioning.html for a nicely +detailed explanation.) + +Using this method, DLL name/s will only change when the DLL's +backwards compatibility changes. Note that the addition of new +'interfaces' will not of itself change the DLL's compatibility for older +applications. + + +Which of the several dll versions to use? +----------------------------------------- +or, +--- +What are all these pthread*.dll and pthread*.lib files? +------------------------------------------------------- + +Simple, use either pthreadGCv.* if you use GCC, or pthreadVCv.* if you +use MSVC - where 'v' is the DLL versioning (compatibility) number. + +Otherwise, you need to choose carefully and know WHY. + +The most important choice you need to make is whether to use a +version that uses exceptions internally, or not. There are versions +of the library that use exceptions as part of the thread +cancelation and exit implementation. The default version uses +setjmp/longjmp. + +There is some contension amongst POSIX threads experts as +to how POSIX threads cancelation and exit should work +with languages that use exceptions, e.g. C++ and even C +(Microsoft's Structured Exceptions). + +The issue is: should cancelation of a thread in, say, +a C++ application cause object destructors and C++ exception +handlers to be invoked as the stack unwinds during thread +exit, or not? + +There seems to be more opinion in favour of using the +standard C version of the library (no EH) with C++ applications +for the reason that this appears to be the assumption commercial +pthreads implementations make. Therefore, if you use an EH version +of pthreads-win32 then you may be under the illusion that +your application will be portable, when in fact it is likely to +behave differently when linked with other pthreads libraries. + +Now you may be asking: then why have you kept the EH versions of +the library? + +There are a couple of reasons: +- there is division amongst the experts and so the code may + be needed in the future. Yes, it's in the repository and we + can get it out anytime in the future, but it would be difficult + to find. +- pthreads-win32 is one of the few implementations, and possibly + the only freely available one, that has EH versions. It may be + useful to people who want to play with or study application + behaviour under these conditions. + +Notes: + +[If you use either pthreadVCE or pthreadGCE] + +1. [See also the discussion in the FAQ file - Q2, Q4, and Q5] + +If your application contains catch(...) blocks in your POSIX +threads then you will need to replace the "catch(...)" with the macro +"PtW32Catch", eg. + + #ifdef PtW32Catch + PtW32Catch { + ... + } + #else + catch(...) { + ... + } + #endif + +Otherwise neither pthreads cancelation nor pthread_exit() will work +reliably when using versions of the library that use C++ exceptions +for cancelation and thread exit. + +This is due to what is believed to be a C++ compliance error in VC++ +whereby you may not have multiple handlers for the same exception in +the same try/catch block. GNU G++ doesn't have this restriction. + + +Other name changes +------------------ + +All snapshots prior to and including snapshot 2000-08-13 +used "_pthread_" as the prefix to library internal +functions, and "_PTHREAD_" to many library internal +macros. These have now been changed to "ptw32_" and "PTW32_" +respectively so as to not conflict with the ANSI standard's +reservation of identifiers beginning with "_" and "__" for +use by compiler implementations only. + +If you have written any applications and you are linking +statically with the pthreads-win32 library then you may have +included a call to _pthread_processInitialize. You will +now have to change that to ptw32_processInitialize. + + +Cleanup code default style +-------------------------- + +Previously, if not defined, the cleanup style was determined automatically +from the compiler used, and one of the following was defined accordingly: + + __CLEANUP_SEH MSVC only + __CLEANUP_CXX C++, including MSVC++, GNU G++ + __CLEANUP_C C, including GNU GCC, not MSVC + +These defines determine the style of cleanup (see pthread.h) and, +most importantly, the way that cancelation and thread exit (via +pthread_exit) is performed (see the routine ptw32_throw()). + +In short, the exceptions versions of the library throw an exception +when a thread is canceled, or exits via pthread_exit(). This exception is +caught by a handler in the thread startup routine, so that the +the correct stack unwinding occurs regardless of where the thread +is when it's canceled or exits via pthread_exit(). + +In this snapshot, unless the build explicitly defines (e.g. via a +compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then +the build NOW always defaults to __CLEANUP_C style cleanup. This style +uses setjmp/longjmp in the cancelation and pthread_exit implementations, +and therefore won't do stack unwinding even when linked to applications +that have it (e.g. C++ apps). This is for consistency with most/all +commercial Unix POSIX threads implementations. + +Although it was not clearly documented before, it is still necessary to +build your application using the same __CLEANUP_* define as was +used for the version of the library that you link with, so that the +correct parts of pthread.h are included. That is, the possible +defines require the following library versions: + + __CLEANUP_SEH pthreadVSE.dll + __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll + __CLEANUP_C pthreadVC.dll or pthreadGC.dll + +It is recommended that you let pthread.h use it's default __CLEANUP_C +for both library and application builds. That is, don't define any of +the above, and then link with pthreadVC.lib (MSVC or MSVC++) and +libpthreadGC.a (MinGW GCC or G++). The reason is explained below, but +another reason is that the prebuilt pthreadVCE.dll is currently broken. +Versions built with MSVC++ later than version 6 may not be broken, but I +can't verify this yet. + +WHY ARE WE MAKING THE DEFAULT STYLE LESS EXCEPTION-FRIENDLY? +Because no commercial Unix POSIX threads implementation allows you to +choose to have stack unwinding. Therefore, providing it in pthread-win32 +as a default is dangerous. We still provide the choice but unless +you consciously choose to do otherwise, your pthreads applications will +now run or crash in similar ways irrespective of the pthreads platform +you use. Or at least this is the hope. + + +Building under VC++ using C++ EH, Structured EH, or just C +---------------------------------------------------------- + +From the source directory run nmake without any arguments to list +help information. E.g. + +$ nmake + +Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 +Copyright (C) Microsoft Corp 1988-1998. All rights reserved. + +Run one of the following command lines: +nmake clean VCE (to build the MSVC dll with C++ exception handling) +nmake clean VSE (to build the MSVC dll with structured exception handling) +nmake clean VC (to build the MSVC dll with C cleanup code) +nmake clean VCE-inlined (to build the MSVC inlined dll with C++ exception handling) +nmake clean VSE-inlined (to build the MSVC inlined dll with structured exception handling) +nmake clean VC-inlined (to build the MSVC inlined dll with C cleanup code) +nmake clean VC-static (to build the MSVC static lib with C cleanup code) +nmake clean VCE-debug (to build the debug MSVC dll with C++ exception handling) +nmake clean VSE-debug (to build the debug MSVC dll with structured exception handling) +nmake clean VC-debug (to build the debug MSVC dll with C cleanup code) +nmake clean VCE-inlined-debug (to build the debug MSVC inlined dll with C++ exception handling) +nmake clean VSE-inlined-debug (to build the debug MSVC inlined dll with structured exception handling) +nmake clean VC-inlined-debug (to build the debug MSVC inlined dll with C cleanup code) +nmake clean VC-static-debug (to build the debug MSVC static lib with C cleanup code) + + +The pre-built dlls are normally built using the *-inlined targets. + +You can run the testsuite by changing to the "tests" directory and +running nmake. E.g.: + +$ cd tests +$ nmake + +Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 +Copyright (C) Microsoft Corp 1988-1998. All rights reserved. + +Run one of the following command lines: +nmake clean VC (to test using VC dll with VC (no EH) applications) +nmake clean VCX (to test using VC dll with VC++ (EH) applications) +nmake clean VCE (to test using the VCE dll with VC++ EH applications) +nmake clean VSE (to test using VSE dll with VC (SEH) applications) +nmake clean VC-bench (to benchtest using VC dll with C bench app) +nmake clean VCX-bench (to benchtest using VC dll with C++ bench app) +nmake clean VCE-bench (to benchtest using VCE dll with C++ bench app) +nmake clean VSE-bench (to benchtest using VSE dll with SEH bench app) +nmake clean VC-static (to test using VC static lib with VC (no EH) applications) + + +Building under Mingw32 +---------------------- + +The dll can be built easily with recent versions of Mingw32. +(The distributed versions are built using Mingw32 and MsysDTK +from www.mingw32.org.) + +From the source directory, run make for help information. E.g.: + +$ make +Run one of the following command lines: +make clean GC (to build the GNU C dll with C cleanup code) +make clean GCE (to build the GNU C dll with C++ exception handling) +make clean GC-inlined (to build the GNU C inlined dll with C cleanup code) +make clean GCE-inlined (to build the GNU C inlined dll with C++ exception handling) +make clean GC-static (to build the GNU C inlined static lib with C cleanup code) +make clean GC-debug (to build the GNU C debug dll with C cleanup code) +make clean GCE-debug (to build the GNU C debug dll with C++ exception handling) +make clean GC-inlined-debug (to build the GNU C inlined debug dll with C cleanup code) +make clean GCE-inlined-debug (to build the GNU C inlined debug dll with C++ exception handling) +make clean GC-static-debug (to build the GNU C inlined static debug lib with C cleanup code) + + +The pre-built dlls are normally built using the *-inlined targets. + +You can run the testsuite by changing to the "tests" directory and +running make for help information. E.g.: + +$ cd tests +$ make +Run one of the following command lines: +make clean GC (to test using GC dll with C (no EH) applications) +make clean GCX (to test using GC dll with C++ (EH) applications) +make clean GCE (to test using GCE dll with C++ (EH) applications) +make clean GC-bench (to benchtest using GNU C dll with C cleanup code) +make clean GCE-bench (to benchtest using GNU C dll with C++ exception handling) +make clean GC-static (to test using GC static lib with C (no EH) applications) + + +Building under Linux using the Mingw32 cross development tools +-------------------------------------------------------------- + +You can build the library without leaving Linux by using the Mingw32 cross +development toolchain. See http://www.libsdl.org/extras/win32/cross/ for +tools and info. The GNUmakefile contains some support for this, for example: + +make CROSS=i386-mingw32msvc- clean GC-inlined + +will build pthreadGCn.dll and libpthreadGCn.a (n=version#), provided your +cross-tools/bin directory is in your PATH (or use the cross-make.sh script +at the URL above). + + +Building the library as a statically linkable library +----------------------------------------------------- + +General: PTW32_STATIC_LIB must be defined for both the library build and the +application build. The makefiles supplied and used by the following 'make' +command lines will define this for you. + +MSVC (creates pthreadVCn.lib as a static link lib): + +nmake clean VC-static + + +MinGW32 (creates libpthreadGCn.a as a static link lib): + +make clean GC-static + + +Define PTW32_STATIC_LIB when building your application. Also, your +application must call a two non-portable routines to initialise the +some state on startup and cleanup before exit. One other routine needs +to be called to cleanup after any Win32 threads have called POSIX API +routines. See README.NONPORTABLE or the html reference manual pages for +details on these routines: + +BOOL pthread_win32_process_attach_np (void); +BOOL pthread_win32_process_detach_np (void); +BOOL pthread_win32_thread_attach_np (void); // Currently a no-op +BOOL pthread_win32_thread_detach_np (void); + + +The tests makefiles have the same targets but only check that the +static library is statically linkable. They don't run the full +testsuite. To run the full testsuite, build the dlls and run the +dll test targets. + + +Building the library under Cygwin +--------------------------------- + +Cygwin is implementing it's own POSIX threads routines and these +will be the ones to use if you develop using Cygwin. + + +Ready to run binaries +--------------------- + +For convenience, the following ready-to-run files can be downloaded +from the FTP site (see under "Availability" below): + + pthread.h + semaphore.h + sched.h + pthreadVC.dll - built with MSVC compiler using C setjmp/longjmp + pthreadVC.lib + pthreadVCE.dll - built with MSVC++ compiler using C++ EH + pthreadVCE.lib + pthreadVSE.dll - built with MSVC compiler using SEH + pthreadVSE.lib + pthreadGC.dll - built with Mingw32 GCC + libpthreadGC.a - derived from pthreadGC.dll + pthreadGCE.dll - built with Mingw32 G++ + libpthreadGCE.a - derived from pthreadGCE.dll + +As of August 2003 pthreads-win32 pthreadG* versions are built and tested +using the MinGW + MsysDTK environment current as of that date or later. +The following file MAY be needed for older MinGW environments. + + gcc.dll - needed to build and run applications that use + pthreadGCE.dll. + + +Building applications with GNU compilers +---------------------------------------- + +If you're using pthreadGC.dll: + +With the three header files, pthreadGC.dll and libpthreadGC.a in the +same directory as your application myapp.c, you could compile, link +and run myapp.c under Mingw32 as follows: + + gcc -o myapp.exe myapp.c -I. -L. -lpthreadGC + myapp + +Or put pthreadGC.dll in an appropriate directory in your PATH, +put libpthreadGC.a in your system lib directory, and +put the three header files in your system include directory, +then use: + + gcc -o myapp.exe myapp.c -lpthreadGC + myapp + + +If you're using pthreadGCE.dll: + +With the three header files, pthreadGCE.dll, gcc.dll and libpthreadGCE.a +in the same directory as your application myapp.c, you could compile, +link and run myapp.c under Mingw32 as follows: + + gcc -x c++ -o myapp.exe myapp.c -I. -L. -lpthreadGCE + myapp + +Or put pthreadGCE.dll and gcc.dll in an appropriate directory in +your PATH, put libpthreadGCE.a in your system lib directory, and +put the three header files in your system include directory, +then use: + + gcc -x c++ -o myapp.exe myapp.c -lpthreadGCE + myapp + + +Availability +------------ + +The complete source code in either unbundled, self-extracting +Zip file, or tar/gzipped format can be found at: + + ftp://sources.redhat.com/pub/pthreads-win32 + +The pre-built DLL, export libraries and matching pthread.h can +be found at: + + ftp://sources.redhat.com/pub/pthreads-win32/dll-latest + +Home page: + + http://sources.redhat.com/pthreads-win32/ + + +Mailing list +------------ + +There is a mailing list for discussing pthreads on Win32. +To join, send email to: + + pthreads-win32-subscribe@sources.redhat.com + +Unsubscribe by sending mail to: + + pthreads-win32-unsubscribe@sources.redhat.com + + +Acknowledgements +---------------- + +See the ANNOUNCE file for acknowledgements. +See the 'CONTRIBUTORS' file for the list of contributors. + +As much as possible, the ChangeLog file attributes +contributions and patches that have been incorporated +in the library to the individuals responsible. + +Finally, thanks to all those who work on and contribute to the +POSIX and Single Unix Specification standards. The maturity of an +industry can be measured by it's open standards. + +---- +Ross Johnson + + + + + + + + + diff --git a/3rdparty/w32pthreads/TODO b/3rdparty/w32pthreads/TODO index f798e769e5..fa9efc46e7 100644 --- a/3rdparty/w32pthreads/TODO +++ b/3rdparty/w32pthreads/TODO @@ -1,7 +1,7 @@ - Things that aren't done yet - --------------------------- - -1. Implement PTHREAD_PROCESS_SHARED for semaphores, mutexes, - condition variables, read/write locks, barriers. - - + Things that aren't done yet + --------------------------- + +1. Implement PTHREAD_PROCESS_SHARED for semaphores, mutexes, + condition variables, read/write locks, barriers. + + diff --git a/3rdparty/w32pthreads/pthreads.props b/3rdparty/w32pthreads/pthreads.props index 2ca1fda306..d921e73498 100644 --- a/3rdparty/w32pthreads/pthreads.props +++ b/3rdparty/w32pthreads/pthreads.props @@ -1,21 +1,21 @@ - - - - - <_PropertySheetDisplayName>pthreads - - - - ws2_32.lib;%(AdditionalDependencies) - - - .\include;%(AdditionalIncludeDirectories) - PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) - Use - ptw32pch.h - Async - - - - + + + + + <_PropertySheetDisplayName>pthreads + + + + ws2_32.lib;%(AdditionalDependencies) + + + .\include;%(AdditionalIncludeDirectories) + PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) + Use + ptw32pch.h + Async + + + + \ No newline at end of file diff --git a/3rdparty/w32pthreads/pthreads_lib_vs2012.vcxproj b/3rdparty/w32pthreads/pthreads_lib_vs2012.vcxproj index 750aca7b6a..0b7f9c502d 100644 --- a/3rdparty/w32pthreads/pthreads_lib_vs2012.vcxproj +++ b/3rdparty/w32pthreads/pthreads_lib_vs2012.vcxproj @@ -1,652 +1,652 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - w32pthreads_lib - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86} - pthreads - Win32Proj - - - - StaticLibrary - MultiByte - false - v110_xp - - - StaticLibrary - MultiByte - true - v110_xp - - - StaticLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName)-dbg - $(ProjectName)-dev - - - - $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) - __CLEANUP_SEH;_DEBUG;%(PreprocessorDefinitions) - Async - Use - ptw32pch.h - Level3 - CompileAsCpp - - - - - $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) - __CLEANUP_SEH;NDEBUG;%(PreprocessorDefinitions) - Async - Use - ptw32pch.h - Level3 - - - - - $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) - __CLEANUP_SEH;NDEBUG;%(PreprocessorDefinitions) - Async - Use - ptw32pch.h - Level3 - CompileAsCpp - - - $(OutDir)$(TargetName)$(TargetExt) - - - - - - - - - - Create - ptw32pch.h - Create - ptw32pch.h - Create - ptw32pch.h - - - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - {26511268-2902-4997-8421-ecd7055f9e28} - false - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + w32pthreads_lib + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86} + pthreads + Win32Proj + + + + StaticLibrary + MultiByte + false + v110_xp + + + StaticLibrary + MultiByte + true + v110_xp + + + StaticLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)-dbg + $(ProjectName)-dev + + + + $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) + __CLEANUP_SEH;_DEBUG;%(PreprocessorDefinitions) + Async + Use + ptw32pch.h + Level3 + CompileAsCpp + + + + + $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) + __CLEANUP_SEH;NDEBUG;%(PreprocessorDefinitions) + Async + Use + ptw32pch.h + Level3 + + + + + $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) + __CLEANUP_SEH;NDEBUG;%(PreprocessorDefinitions) + Async + Use + ptw32pch.h + Level3 + CompileAsCpp + + + $(OutDir)$(TargetName)$(TargetExt) + + + + + + + + + + Create + ptw32pch.h + Create + ptw32pch.h + Create + ptw32pch.h + + + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + {26511268-2902-4997-8421-ecd7055f9e28} + false + + + + + \ No newline at end of file diff --git a/3rdparty/w32pthreads/pthreads_lib_vs2012.vcxproj.filters b/3rdparty/w32pthreads/pthreads_lib_vs2012.vcxproj.filters index 4850da5f79..0c9b0b2ef5 100644 --- a/3rdparty/w32pthreads/pthreads_lib_vs2012.vcxproj.filters +++ b/3rdparty/w32pthreads/pthreads_lib_vs2012.vcxproj.filters @@ -1,389 +1,389 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {72eda860-6ad5-4e65-831a-6f9fc4136bec} - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - - - Source Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Docs - - - Docs - - - Docs - - - Docs - - - Docs - - - Docs - - - Docs - - - Docs - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {72eda860-6ad5-4e65-831a-6f9fc4136bec} + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + + + Source Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Docs + + + Docs + + + Docs + + + Docs + + + Docs + + + Docs + + + Docs + + + Docs + + \ No newline at end of file diff --git a/3rdparty/w32pthreads/pthreads_vs2012.vcxproj b/3rdparty/w32pthreads/pthreads_vs2012.vcxproj index 19bf94e679..5f206c92a8 100644 --- a/3rdparty/w32pthreads/pthreads_vs2012.vcxproj +++ b/3rdparty/w32pthreads/pthreads_vs2012.vcxproj @@ -1,317 +1,317 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - w32pthreads.v4 - {26511268-2902-4997-8421-ECD7055F9E28} - pthreads - Win32Proj - - - - DynamicLibrary - MultiByte - false - v110_xp - - - DynamicLibrary - MultiByte - true - v110_xp - - - DynamicLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName)-dev - $(SolutionDir)bin\ - $(SolutionDir)bin\ - $(SolutionDir)bin\ - - - - $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) - _DEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) - Async - Use - ptw32pch.h - Level3 - - - ws2_32.lib;%(AdditionalDependencies) - $(SolutionDir)bin\$(TargetName)$(TargetExt) - $(OutDir)$(ProjectName).lib - - - - - $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) - NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) - Async - Use - ptw32pch.h - Level3 - - - ws2_32.lib;%(AdditionalDependencies) - $(SolutionDir)bin\$(TargetName)$(TargetExt) - - - - - $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) - NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) - Async - Use - ptw32pch.h - Level3 - - - ws2_32.lib;%(AdditionalDependencies) - $(SolutionDir)bin\$(TargetName)$(TargetExt) - - - - - - - - - - - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + w32pthreads.v4 + {26511268-2902-4997-8421-ECD7055F9E28} + pthreads + Win32Proj + + + + DynamicLibrary + MultiByte + false + v110_xp + + + DynamicLibrary + MultiByte + true + v110_xp + + + DynamicLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)-dev + $(SolutionDir)bin\ + $(SolutionDir)bin\ + $(SolutionDir)bin\ + + + + $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) + _DEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) + Async + Use + ptw32pch.h + Level3 + + + ws2_32.lib;%(AdditionalDependencies) + $(SolutionDir)bin\$(TargetName)$(TargetExt) + $(OutDir)$(ProjectName).lib + + + + + $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) + NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) + Async + Use + ptw32pch.h + Level3 + + + ws2_32.lib;%(AdditionalDependencies) + $(SolutionDir)bin\$(TargetName)$(TargetExt) + + + + + $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) + NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) + Async + Use + ptw32pch.h + Level3 + + + ws2_32.lib;%(AdditionalDependencies) + $(SolutionDir)bin\$(TargetName)$(TargetExt) + + + + + + + + + + + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/3rdparty/w32pthreads/pthreads_vs2012.vcxproj.filters b/3rdparty/w32pthreads/pthreads_vs2012.vcxproj.filters index 9e38b5dcf8..643a4d3bae 100644 --- a/3rdparty/w32pthreads/pthreads_vs2012.vcxproj.filters +++ b/3rdparty/w32pthreads/pthreads_vs2012.vcxproj.filters @@ -1,436 +1,436 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {ae009302-94c7-467a-b26b-43840fa3e460} - - - {37ecf3aa-bd9a-4735-86c2-63bbe4b3f038} - - - {1116e265-921b-4084-8577-f93db3396cf4} - - - {480f878f-fdc5-4011-a3fe-ec96c6a7df0f} - - - {44610aac-9831-4cc3-bc5e-2221ec190b96} - - - {dae54675-56e0-41c3-9c1b-894156ab6794} - - - {6f9cc070-859d-42a9-a96b-77c80d2ccd5e} - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\piecesparts - - - Source Files\rwlock - - - Source Files\rwlock - - - Source Files\cond - - - Source Files\cond - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\attr - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\mutex - - - Source Files\semaphore - - - Source Files\semaphore - - - Source Files\semaphore - - - Source Files\semaphore - - - Source Files\semaphore - - - Source Files\semaphore - - - Source Files\semaphore - - - Source Files\semaphore - - - Source Files\semaphore - - - Source Files\semaphore - - - Source Files\semaphore - - - Source Files\spin - - - Source Files\spin - - - Source Files\spin - - - Source Files\spin - - - Source Files\spin - - - Source Files\spin - - - - - Source Files - - - Source Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Docs - - - Docs - - - Docs - - - Docs - - - Docs - - - Docs - - - Docs - - - Docs - - - - - Docs - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {ae009302-94c7-467a-b26b-43840fa3e460} + + + {37ecf3aa-bd9a-4735-86c2-63bbe4b3f038} + + + {1116e265-921b-4084-8577-f93db3396cf4} + + + {480f878f-fdc5-4011-a3fe-ec96c6a7df0f} + + + {44610aac-9831-4cc3-bc5e-2221ec190b96} + + + {dae54675-56e0-41c3-9c1b-894156ab6794} + + + {6f9cc070-859d-42a9-a96b-77c80d2ccd5e} + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\piecesparts + + + Source Files\rwlock + + + Source Files\rwlock + + + Source Files\cond + + + Source Files\cond + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\attr + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\mutex + + + Source Files\semaphore + + + Source Files\semaphore + + + Source Files\semaphore + + + Source Files\semaphore + + + Source Files\semaphore + + + Source Files\semaphore + + + Source Files\semaphore + + + Source Files\semaphore + + + Source Files\semaphore + + + Source Files\semaphore + + + Source Files\semaphore + + + Source Files\spin + + + Source Files\spin + + + Source Files\spin + + + Source Files\spin + + + Source Files\spin + + + Source Files\spin + + + + + Source Files + + + Source Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Docs + + + Docs + + + Docs + + + Docs + + + Docs + + + Docs + + + Docs + + + Docs + + + + + Docs + + \ No newline at end of file diff --git a/3rdparty/w32pthreads/pthreads_vs2012_vs2012.vcxproj b/3rdparty/w32pthreads/pthreads_vs2012_vs2012.vcxproj index 9742b1eda8..0b25586edb 100644 --- a/3rdparty/w32pthreads/pthreads_vs2012_vs2012.vcxproj +++ b/3rdparty/w32pthreads/pthreads_vs2012_vs2012.vcxproj @@ -1,314 +1,314 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - w32pthreads.v4 - {26511268-2902-4997-8421-ECD7055F9E28} - pthreads - Win32Proj - - - - DynamicLibrary - MultiByte - false - - - DynamicLibrary - MultiByte - true - - - DynamicLibrary - MultiByte - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName)-dev - $(SolutionDir)bin\ - $(SolutionDir)bin\ - $(SolutionDir)bin\ - - - - $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) - _DEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) - Async - Use - ptw32pch.h - Level3 - - - ws2_32.lib;%(AdditionalDependencies) - $(SolutionDir)bin\$(TargetName)$(TargetExt) - $(OutDir)$(ProjectName).lib - - - - - $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) - NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) - Async - Use - ptw32pch.h - Level3 - - - ws2_32.lib;%(AdditionalDependencies) - $(SolutionDir)bin\$(TargetName)$(TargetExt) - - - - - $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) - NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) - Async - Use - ptw32pch.h - Level3 - - - ws2_32.lib;%(AdditionalDependencies) - $(SolutionDir)bin\$(TargetName)$(TargetExt) - - - - - - - - - - - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + w32pthreads.v4 + {26511268-2902-4997-8421-ECD7055F9E28} + pthreads + Win32Proj + + + + DynamicLibrary + MultiByte + false + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)-dev + $(SolutionDir)bin\ + $(SolutionDir)bin\ + $(SolutionDir)bin\ + + + + $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) + _DEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) + Async + Use + ptw32pch.h + Level3 + + + ws2_32.lib;%(AdditionalDependencies) + $(SolutionDir)bin\$(TargetName)$(TargetExt) + $(OutDir)$(ProjectName).lib + + + + + $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) + NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) + Async + Use + ptw32pch.h + Level3 + + + ws2_32.lib;%(AdditionalDependencies) + $(SolutionDir)bin\$(TargetName)$(TargetExt) + + + + + $(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories) + NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions) + Async + Use + ptw32pch.h + Level3 + + + ws2_32.lib;%(AdditionalDependencies) + $(SolutionDir)bin\$(TargetName)$(TargetExt) + + + + + + + + + + + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/3rdparty/w32pthreads/w32pthreads.rc b/3rdparty/w32pthreads/w32pthreads.rc index d442c9d941..3acee4c053 100644 --- a/3rdparty/w32pthreads/w32pthreads.rc +++ b/3rdparty/w32pthreads/w32pthreads.rc @@ -1,100 +1,100 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxresmw.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxresmw.h""\r\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,8,4,0 - PRODUCTVERSION 2,8,0,0 - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "Built for PCSX2 (SEH, CDECL, Align16)" - VALUE "FileDescription", "POSIX Threads for Win32" - VALUE "FileVersion", "2.8.pxr4" - VALUE "InternalName", "w32pthreads" - VALUE "LegalCopyright", "Copyright (C) 2009" - VALUE "OriginalFilename", "w32pthreads.v4" - VALUE "ProductName", "w32pthreads" - VALUE "ProductVersion", "2.8" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxresmw.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxresmw.h""\r\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 2,8,4,0 + PRODUCTVERSION 2,8,0,0 + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "Built for PCSX2 (SEH, CDECL, Align16)" + VALUE "FileDescription", "POSIX Threads for Win32" + VALUE "FileVersion", "2.8.pxr4" + VALUE "InternalName", "w32pthreads" + VALUE "LegalCopyright", "Copyright (C) 2009" + VALUE "OriginalFilename", "w32pthreads.v4" + VALUE "ProductName", "w32pthreads" + VALUE "ProductVersion", "2.8" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/3rdparty/winpcap/include/Packet32.h b/3rdparty/winpcap/include/Packet32.h index 1e0eacd77d..64be055d96 100644 --- a/3rdparty/winpcap/include/Packet32.h +++ b/3rdparty/winpcap/include/Packet32.h @@ -1,359 +1,359 @@ -/* - * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy) - * Copyright (c) 2005 - 2007 CACE Technologies, Davis (California) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Politecnico di Torino, CACE Technologies - * nor the names of its contributors may be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -/** @ingroup packetapi - * @{ - */ - -/** @defgroup packet32h Packet.dll definitions and data structures - * Packet32.h contains the data structures and the definitions used by packet.dll. - * The file is used both by the Win9x and the WinNTx versions of packet.dll, and can be included - * by the applications that use the functions of this library - * @{ - */ - -#ifndef __PACKET32 -#define __PACKET32 - -#include - -#ifdef HAVE_AIRPCAP_API -#include -#else -#if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_) -#define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ -typedef struct _AirpcapHandle *PAirpcapHandle; -#endif /* AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ */ -#endif /* HAVE_AIRPCAP_API */ - -#ifdef HAVE_DAG_API -#include -#endif /* HAVE_DAG_API */ - -// Working modes -#define PACKET_MODE_CAPT 0x0 ///< Capture mode -#define PACKET_MODE_STAT 0x1 ///< Statistical mode -#define PACKET_MODE_MON 0x2 ///< Monitoring mode -#define PACKET_MODE_DUMP 0x10 ///< Dump mode -#define PACKET_MODE_STAT_DUMP MODE_DUMP | MODE_STAT ///< Statistical dump Mode - - -/// Alignment macro. Defines the alignment size. -#define Packet_ALIGNMENT sizeof(int) -/// Alignment macro. Rounds up to the next even multiple of Packet_ALIGNMENT. -#define Packet_WORDALIGN(x) (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1)) - -#define NdisMediumNull -1 ///< Custom linktype: NDIS doesn't provide an equivalent -#define NdisMediumCHDLC -2 ///< Custom linktype: NDIS doesn't provide an equivalent -#define NdisMediumPPPSerial -3 ///< Custom linktype: NDIS doesn't provide an equivalent -#define NdisMediumBare80211 -4 ///< Custom linktype: NDIS doesn't provide an equivalent -#define NdisMediumRadio80211 -5 ///< Custom linktype: NDIS doesn't provide an equivalent -#define NdisMediumPpi -6 ///< Custom linktype: NDIS doesn't provide an equivalent - -// Loopback behaviour definitions -#define NPF_DISABLE_LOOPBACK 1 ///< Drop the packets sent by the NPF driver -#define NPF_ENABLE_LOOPBACK 2 ///< Capture the packets sent by the NPF driver - -/*! - \brief Network type structure. - - This structure is used by the PacketGetNetType() function to return information on the current adapter's type and speed. -*/ -typedef struct NetType -{ - UINT LinkType; ///< The MAC of the current network adapter (see function PacketGetNetType() for more information) - ULONGLONG LinkSpeed; ///< The speed of the network in bits per second -}NetType; - - -//some definitions stolen from libpcap - -#ifndef BPF_MAJOR_VERSION - -/*! - \brief A BPF pseudo-assembly program. - - The program will be injected in the kernel by the PacketSetBPF() function and applied to every incoming packet. -*/ -struct bpf_program -{ - UINT bf_len; ///< Indicates the number of instructions of the program, i.e. the number of struct bpf_insn that will follow. - struct bpf_insn *bf_insns; ///< A pointer to the first instruction of the program. -}; - -/*! - \brief A single BPF pseudo-instruction. - - bpf_insn contains a single instruction for the BPF register-machine. It is used to send a filter program to the driver. -*/ -struct bpf_insn -{ - USHORT code; ///< Instruction type and addressing mode. - UCHAR jt; ///< Jump if true - UCHAR jf; ///< Jump if false - int k; ///< Generic field used for various purposes. -}; - -/*! - \brief Structure that contains a couple of statistics values on the current capture. - - It is used by packet.dll to return statistics about a capture session. -*/ -struct bpf_stat -{ - UINT bs_recv; ///< Number of packets that the driver received from the network adapter - ///< from the beginning of the current capture. This value includes the packets - ///< lost by the driver. - UINT bs_drop; ///< number of packets that the driver lost from the beginning of a capture. - ///< Basically, a packet is lost when the the buffer of the driver is full. - ///< In this situation the packet cannot be stored and the driver rejects it. - UINT ps_ifdrop; ///< drops by interface. XXX not yet supported - UINT bs_capt; ///< number of packets that pass the filter, find place in the kernel buffer and - ///< thus reach the application. -}; - -/*! - \brief Packet header. - - This structure defines the header associated with every packet delivered to the application. -*/ -struct bpf_hdr -{ - struct timeval bh_tstamp; ///< The timestamp associated with the captured packet. - ///< It is stored in a TimeVal structure. - UINT bh_caplen; ///< Length of captured portion. The captured portion can be different - ///< from the original packet, because it is possible (with a proper filter) - ///< to instruct the driver to capture only a portion of the packets. - UINT bh_datalen; ///< Original length of packet - USHORT bh_hdrlen; ///< Length of bpf header (this struct plus alignment padding). In some cases, - ///< a padding could be added between the end of this structure and the packet - ///< data for performance reasons. This filed can be used to retrieve the actual data - ///< of the packet. -}; - -/*! - \brief Dump packet header. - - This structure defines the header associated with the packets in a buffer to be used with PacketSendPackets(). - It is simpler than the bpf_hdr, because it corresponds to the header associated by WinPcap and libpcap to a - packet in a dump file. This makes straightforward sending WinPcap dump files to the network. -*/ -struct dump_bpf_hdr{ - struct timeval ts; ///< Time stamp of the packet - UINT caplen; ///< Length of captured portion. The captured portion can smaller than the - ///< the original packet, because it is possible (with a proper filter) to - ///< instruct the driver to capture only a portion of the packets. - UINT len; ///< Length of the original packet (off wire). -}; - - -#endif - -struct bpf_stat; - -#define DOSNAMEPREFIX TEXT("Packet_") ///< Prefix added to the adapters device names to create the WinPcap devices -#define MAX_LINK_NAME_LENGTH 64 //< Maximum length of the devices symbolic links -#define NMAX_PACKET 65535 - -/*! - \brief Addresses of a network adapter. - - This structure is used by the PacketGetNetInfoEx() function to return the IP addresses associated with - an adapter. -*/ -typedef struct npf_if_addr { - struct sockaddr_storage IPAddress; ///< IP address. - struct sockaddr_storage SubnetMask; ///< Netmask for that address. - struct sockaddr_storage Broadcast; ///< Broadcast address. -}npf_if_addr; - - -#define ADAPTER_NAME_LENGTH 256 + 12 ///< Maximum length for the name of an adapter. The value is the same used by the IP Helper API. -#define ADAPTER_DESC_LENGTH 128 ///< Maximum length for the description of an adapter. The value is the same used by the IP Helper API. -#define MAX_MAC_ADDR_LENGTH 8 ///< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. -#define MAX_NETWORK_ADDRESSES 16 ///< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. - - -typedef struct WAN_ADAPTER_INT WAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API -typedef WAN_ADAPTER *PWAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API - -#define INFO_FLAG_NDIS_ADAPTER 0 ///< Flag for ADAPTER_INFO: this is a traditional ndis adapter -#define INFO_FLAG_NDISWAN_ADAPTER 1 ///< Flag for ADAPTER_INFO: this is a NdisWan adapter, and it's managed by WANPACKET -#define INFO_FLAG_DAG_CARD 2 ///< Flag for ADAPTER_INFO: this is a DAG card -#define INFO_FLAG_DAG_FILE 6 ///< Flag for ADAPTER_INFO: this is a DAG file -#define INFO_FLAG_DONT_EXPORT 8 ///< Flag for ADAPTER_INFO: when this flag is set, the adapter will not be listed or openend by winpcap. This allows to prevent exporting broken network adapters, like for example FireWire ones. -#define INFO_FLAG_AIRPCAP_CARD 16 ///< Flag for ADAPTER_INFO: this is an airpcap card -#define INFO_FLAG_NPFIM_DEVICE 32 - -/*! - \brief Describes an opened network adapter. - - This structure is the most important for the functioning of packet.dll, but the great part of its fields - should be ignored by the user, since the library offers functions that avoid to cope with low-level parameters -*/ -typedef struct _ADAPTER { - HANDLE hFile; ///< \internal Handle to an open instance of the NPF driver. - CHAR SymbolicLink[MAX_LINK_NAME_LENGTH]; ///< \internal A string containing the name of the network adapter currently opened. - int NumWrites; ///< \internal Number of times a packets written on this adapter will be repeated - ///< on the wire. - HANDLE ReadEvent; ///< A notification event associated with the read calls on the adapter. - ///< It can be passed to standard Win32 functions (like WaitForSingleObject - ///< or WaitForMultipleObjects) to wait until the driver's buffer contains some - ///< data. It is particularly useful in GUI applications that need to wait - ///< concurrently on several events. In Windows NT/2000 the PacketSetMinToCopy() - ///< function can be used to define the minimum amount of data in the kernel buffer - ///< that will cause the event to be signalled. - - UINT ReadTimeOut; ///< \internal The amount of time after which a read on the driver will be released and - ///< ReadEvent will be signaled, also if no packets were captured - CHAR Name[ADAPTER_NAME_LENGTH]; - PWAN_ADAPTER pWanAdapter; - UINT Flags; ///< Adapter's flags. Tell if this adapter must be treated in a different way, using the Netmon API or the dagc API. - -#ifdef HAVE_AIRPCAP_API - PAirpcapHandle AirpcapAd; -#endif // HAVE_AIRPCAP_API - -#ifdef HAVE_NPFIM_API - void* NpfImHandle; -#endif // HAVE_NPFIM_API - -#ifdef HAVE_DAG_API - dagc_t *pDagCard; ///< Pointer to the dagc API adapter descriptor for this adapter - PCHAR DagBuffer; ///< Pointer to the buffer with the packets that is received from the DAG card - struct timeval DagReadTimeout; ///< Read timeout. The dagc API requires a timeval structure - unsigned DagFcsLen; ///< Length of the frame check sequence attached to any packet by the card. Obtained from the registry - DWORD DagFastProcess; ///< True if the user requests fast capture processing on this card. Higher level applications can use this value to provide a faster but possibly unprecise capture (for example, libpcap doesn't convert the timestamps). -#endif // HAVE_DAG_API -} ADAPTER, *LPADAPTER; - -/*! - \brief Structure that contains a group of packets coming from the driver. - - This structure defines the header associated with every packet delivered to the application. -*/ -typedef struct _PACKET { - HANDLE hEvent; ///< \deprecated Still present for compatibility with old applications. - OVERLAPPED OverLapped; ///< \deprecated Still present for compatibility with old applications. - PVOID Buffer; ///< Buffer with containing the packets. See the PacketReceivePacket() for - ///< details about the organization of the data in this buffer - UINT Length; ///< Length of the buffer - DWORD ulBytesReceived; ///< Number of valid bytes present in the buffer, i.e. amount of data - ///< received by the last call to PacketReceivePacket() - BOOLEAN bIoComplete; ///< \deprecated Still present for compatibility with old applications. -} PACKET, *LPPACKET; - -/*! - \brief Structure containing an OID request. - - It is used by the PacketRequest() function to send an OID to the interface card driver. - It can be used, for example, to retrieve the status of the error counters on the adapter, its MAC address, - the list of the multicast groups defined on it, and so on. -*/ -struct _PACKET_OID_DATA { - ULONG Oid; ///< OID code. See the Microsoft DDK documentation or the file ntddndis.h - ///< for a complete list of valid codes. - ULONG Length; ///< Length of the data field - UCHAR Data[1]; ///< variable-lenght field that contains the information passed to or received - ///< from the adapter. -}; -typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA; - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @} - */ - -/* -BOOLEAN QueryWinPcapRegistryStringA(CHAR *SubKeyName, - CHAR *Value, - UINT *pValueLen, - CHAR *DefaultVal); - -BOOLEAN QueryWinPcapRegistryStringW(WCHAR *SubKeyName, - WCHAR *Value, - UINT *pValueLen, - WCHAR *DefaultVal); -*/ - -//--------------------------------------------------------------------------- -// EXPORTED FUNCTIONS -//--------------------------------------------------------------------------- - -PCHAR PacketGetVersion(); -PCHAR PacketGetDriverVersion(); -BOOLEAN PacketSetMinToCopy(LPADAPTER AdapterObject,int nbytes); -BOOLEAN PacketSetNumWrites(LPADAPTER AdapterObject,int nwrites); -BOOLEAN PacketSetMode(LPADAPTER AdapterObject,int mode); -BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout); -BOOLEAN PacketSetBpf(LPADAPTER AdapterObject,struct bpf_program *fp); -BOOLEAN PacketSetLoopbackBehavior(LPADAPTER AdapterObject, UINT LoopbackBehavior); -INT PacketSetSnapLen(LPADAPTER AdapterObject,int snaplen); -BOOLEAN PacketGetStats(LPADAPTER AdapterObject,struct bpf_stat *s); -BOOLEAN PacketGetStatsEx(LPADAPTER AdapterObject,struct bpf_stat *s); -BOOLEAN PacketSetBuff(LPADAPTER AdapterObject,int dim); -BOOLEAN PacketGetNetType (LPADAPTER AdapterObject,NetType *type); -LPADAPTER PacketOpenAdapter(PCHAR AdapterName); -BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET pPacket,BOOLEAN Sync); -INT PacketSendPackets(LPADAPTER AdapterObject,PVOID PacketBuff,ULONG Size, BOOLEAN Sync); -LPPACKET PacketAllocatePacket(void); -VOID PacketInitPacket(LPPACKET lpPacket,PVOID Buffer,UINT Length); -VOID PacketFreePacket(LPPACKET lpPacket); -BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync); -BOOLEAN PacketSetHwFilter(LPADAPTER AdapterObject,ULONG Filter); -BOOLEAN PacketGetAdapterNames(PTSTR pStr,PULONG BufferSize); -BOOLEAN PacketGetNetInfoEx(PCHAR AdapterName, npf_if_addr* buffer, PLONG NEntries); -BOOLEAN PacketRequest(LPADAPTER AdapterObject,BOOLEAN Set,PPACKET_OID_DATA OidData); -HANDLE PacketGetReadEvent(LPADAPTER AdapterObject); -BOOLEAN PacketSetDumpName(LPADAPTER AdapterObject, void *name, int len); -BOOLEAN PacketSetDumpLimits(LPADAPTER AdapterObject, UINT maxfilesize, UINT maxnpacks); -BOOLEAN PacketIsDumpEnded(LPADAPTER AdapterObject, BOOLEAN sync); -BOOL PacketStopDriver(); -VOID PacketCloseAdapter(LPADAPTER lpAdapter); -BOOLEAN PacketStartOem(PCHAR errorString, UINT errorStringLength); -BOOLEAN PacketStartOemEx(PCHAR errorString, UINT errorStringLength, ULONG flags); -PAirpcapHandle PacketGetAirPcapHandle(LPADAPTER AdapterObject); - -// -// Used by PacketStartOemEx -// -#define PACKET_START_OEM_NO_NETMON 0x00000001 - -#ifdef __cplusplus -} -#endif - -#endif //__PACKET32 +/* + * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy) + * Copyright (c) 2005 - 2007 CACE Technologies, Davis (California) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Politecnico di Torino, CACE Technologies + * nor the names of its contributors may be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** @ingroup packetapi + * @{ + */ + +/** @defgroup packet32h Packet.dll definitions and data structures + * Packet32.h contains the data structures and the definitions used by packet.dll. + * The file is used both by the Win9x and the WinNTx versions of packet.dll, and can be included + * by the applications that use the functions of this library + * @{ + */ + +#ifndef __PACKET32 +#define __PACKET32 + +#include + +#ifdef HAVE_AIRPCAP_API +#include +#else +#if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_) +#define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ +typedef struct _AirpcapHandle *PAirpcapHandle; +#endif /* AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ */ +#endif /* HAVE_AIRPCAP_API */ + +#ifdef HAVE_DAG_API +#include +#endif /* HAVE_DAG_API */ + +// Working modes +#define PACKET_MODE_CAPT 0x0 ///< Capture mode +#define PACKET_MODE_STAT 0x1 ///< Statistical mode +#define PACKET_MODE_MON 0x2 ///< Monitoring mode +#define PACKET_MODE_DUMP 0x10 ///< Dump mode +#define PACKET_MODE_STAT_DUMP MODE_DUMP | MODE_STAT ///< Statistical dump Mode + + +/// Alignment macro. Defines the alignment size. +#define Packet_ALIGNMENT sizeof(int) +/// Alignment macro. Rounds up to the next even multiple of Packet_ALIGNMENT. +#define Packet_WORDALIGN(x) (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1)) + +#define NdisMediumNull -1 ///< Custom linktype: NDIS doesn't provide an equivalent +#define NdisMediumCHDLC -2 ///< Custom linktype: NDIS doesn't provide an equivalent +#define NdisMediumPPPSerial -3 ///< Custom linktype: NDIS doesn't provide an equivalent +#define NdisMediumBare80211 -4 ///< Custom linktype: NDIS doesn't provide an equivalent +#define NdisMediumRadio80211 -5 ///< Custom linktype: NDIS doesn't provide an equivalent +#define NdisMediumPpi -6 ///< Custom linktype: NDIS doesn't provide an equivalent + +// Loopback behaviour definitions +#define NPF_DISABLE_LOOPBACK 1 ///< Drop the packets sent by the NPF driver +#define NPF_ENABLE_LOOPBACK 2 ///< Capture the packets sent by the NPF driver + +/*! + \brief Network type structure. + + This structure is used by the PacketGetNetType() function to return information on the current adapter's type and speed. +*/ +typedef struct NetType +{ + UINT LinkType; ///< The MAC of the current network adapter (see function PacketGetNetType() for more information) + ULONGLONG LinkSpeed; ///< The speed of the network in bits per second +}NetType; + + +//some definitions stolen from libpcap + +#ifndef BPF_MAJOR_VERSION + +/*! + \brief A BPF pseudo-assembly program. + + The program will be injected in the kernel by the PacketSetBPF() function and applied to every incoming packet. +*/ +struct bpf_program +{ + UINT bf_len; ///< Indicates the number of instructions of the program, i.e. the number of struct bpf_insn that will follow. + struct bpf_insn *bf_insns; ///< A pointer to the first instruction of the program. +}; + +/*! + \brief A single BPF pseudo-instruction. + + bpf_insn contains a single instruction for the BPF register-machine. It is used to send a filter program to the driver. +*/ +struct bpf_insn +{ + USHORT code; ///< Instruction type and addressing mode. + UCHAR jt; ///< Jump if true + UCHAR jf; ///< Jump if false + int k; ///< Generic field used for various purposes. +}; + +/*! + \brief Structure that contains a couple of statistics values on the current capture. + + It is used by packet.dll to return statistics about a capture session. +*/ +struct bpf_stat +{ + UINT bs_recv; ///< Number of packets that the driver received from the network adapter + ///< from the beginning of the current capture. This value includes the packets + ///< lost by the driver. + UINT bs_drop; ///< number of packets that the driver lost from the beginning of a capture. + ///< Basically, a packet is lost when the the buffer of the driver is full. + ///< In this situation the packet cannot be stored and the driver rejects it. + UINT ps_ifdrop; ///< drops by interface. XXX not yet supported + UINT bs_capt; ///< number of packets that pass the filter, find place in the kernel buffer and + ///< thus reach the application. +}; + +/*! + \brief Packet header. + + This structure defines the header associated with every packet delivered to the application. +*/ +struct bpf_hdr +{ + struct timeval bh_tstamp; ///< The timestamp associated with the captured packet. + ///< It is stored in a TimeVal structure. + UINT bh_caplen; ///< Length of captured portion. The captured portion can be different + ///< from the original packet, because it is possible (with a proper filter) + ///< to instruct the driver to capture only a portion of the packets. + UINT bh_datalen; ///< Original length of packet + USHORT bh_hdrlen; ///< Length of bpf header (this struct plus alignment padding). In some cases, + ///< a padding could be added between the end of this structure and the packet + ///< data for performance reasons. This filed can be used to retrieve the actual data + ///< of the packet. +}; + +/*! + \brief Dump packet header. + + This structure defines the header associated with the packets in a buffer to be used with PacketSendPackets(). + It is simpler than the bpf_hdr, because it corresponds to the header associated by WinPcap and libpcap to a + packet in a dump file. This makes straightforward sending WinPcap dump files to the network. +*/ +struct dump_bpf_hdr{ + struct timeval ts; ///< Time stamp of the packet + UINT caplen; ///< Length of captured portion. The captured portion can smaller than the + ///< the original packet, because it is possible (with a proper filter) to + ///< instruct the driver to capture only a portion of the packets. + UINT len; ///< Length of the original packet (off wire). +}; + + +#endif + +struct bpf_stat; + +#define DOSNAMEPREFIX TEXT("Packet_") ///< Prefix added to the adapters device names to create the WinPcap devices +#define MAX_LINK_NAME_LENGTH 64 //< Maximum length of the devices symbolic links +#define NMAX_PACKET 65535 + +/*! + \brief Addresses of a network adapter. + + This structure is used by the PacketGetNetInfoEx() function to return the IP addresses associated with + an adapter. +*/ +typedef struct npf_if_addr { + struct sockaddr_storage IPAddress; ///< IP address. + struct sockaddr_storage SubnetMask; ///< Netmask for that address. + struct sockaddr_storage Broadcast; ///< Broadcast address. +}npf_if_addr; + + +#define ADAPTER_NAME_LENGTH 256 + 12 ///< Maximum length for the name of an adapter. The value is the same used by the IP Helper API. +#define ADAPTER_DESC_LENGTH 128 ///< Maximum length for the description of an adapter. The value is the same used by the IP Helper API. +#define MAX_MAC_ADDR_LENGTH 8 ///< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. +#define MAX_NETWORK_ADDRESSES 16 ///< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. + + +typedef struct WAN_ADAPTER_INT WAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API +typedef WAN_ADAPTER *PWAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API + +#define INFO_FLAG_NDIS_ADAPTER 0 ///< Flag for ADAPTER_INFO: this is a traditional ndis adapter +#define INFO_FLAG_NDISWAN_ADAPTER 1 ///< Flag for ADAPTER_INFO: this is a NdisWan adapter, and it's managed by WANPACKET +#define INFO_FLAG_DAG_CARD 2 ///< Flag for ADAPTER_INFO: this is a DAG card +#define INFO_FLAG_DAG_FILE 6 ///< Flag for ADAPTER_INFO: this is a DAG file +#define INFO_FLAG_DONT_EXPORT 8 ///< Flag for ADAPTER_INFO: when this flag is set, the adapter will not be listed or openend by winpcap. This allows to prevent exporting broken network adapters, like for example FireWire ones. +#define INFO_FLAG_AIRPCAP_CARD 16 ///< Flag for ADAPTER_INFO: this is an airpcap card +#define INFO_FLAG_NPFIM_DEVICE 32 + +/*! + \brief Describes an opened network adapter. + + This structure is the most important for the functioning of packet.dll, but the great part of its fields + should be ignored by the user, since the library offers functions that avoid to cope with low-level parameters +*/ +typedef struct _ADAPTER { + HANDLE hFile; ///< \internal Handle to an open instance of the NPF driver. + CHAR SymbolicLink[MAX_LINK_NAME_LENGTH]; ///< \internal A string containing the name of the network adapter currently opened. + int NumWrites; ///< \internal Number of times a packets written on this adapter will be repeated + ///< on the wire. + HANDLE ReadEvent; ///< A notification event associated with the read calls on the adapter. + ///< It can be passed to standard Win32 functions (like WaitForSingleObject + ///< or WaitForMultipleObjects) to wait until the driver's buffer contains some + ///< data. It is particularly useful in GUI applications that need to wait + ///< concurrently on several events. In Windows NT/2000 the PacketSetMinToCopy() + ///< function can be used to define the minimum amount of data in the kernel buffer + ///< that will cause the event to be signalled. + + UINT ReadTimeOut; ///< \internal The amount of time after which a read on the driver will be released and + ///< ReadEvent will be signaled, also if no packets were captured + CHAR Name[ADAPTER_NAME_LENGTH]; + PWAN_ADAPTER pWanAdapter; + UINT Flags; ///< Adapter's flags. Tell if this adapter must be treated in a different way, using the Netmon API or the dagc API. + +#ifdef HAVE_AIRPCAP_API + PAirpcapHandle AirpcapAd; +#endif // HAVE_AIRPCAP_API + +#ifdef HAVE_NPFIM_API + void* NpfImHandle; +#endif // HAVE_NPFIM_API + +#ifdef HAVE_DAG_API + dagc_t *pDagCard; ///< Pointer to the dagc API adapter descriptor for this adapter + PCHAR DagBuffer; ///< Pointer to the buffer with the packets that is received from the DAG card + struct timeval DagReadTimeout; ///< Read timeout. The dagc API requires a timeval structure + unsigned DagFcsLen; ///< Length of the frame check sequence attached to any packet by the card. Obtained from the registry + DWORD DagFastProcess; ///< True if the user requests fast capture processing on this card. Higher level applications can use this value to provide a faster but possibly unprecise capture (for example, libpcap doesn't convert the timestamps). +#endif // HAVE_DAG_API +} ADAPTER, *LPADAPTER; + +/*! + \brief Structure that contains a group of packets coming from the driver. + + This structure defines the header associated with every packet delivered to the application. +*/ +typedef struct _PACKET { + HANDLE hEvent; ///< \deprecated Still present for compatibility with old applications. + OVERLAPPED OverLapped; ///< \deprecated Still present for compatibility with old applications. + PVOID Buffer; ///< Buffer with containing the packets. See the PacketReceivePacket() for + ///< details about the organization of the data in this buffer + UINT Length; ///< Length of the buffer + DWORD ulBytesReceived; ///< Number of valid bytes present in the buffer, i.e. amount of data + ///< received by the last call to PacketReceivePacket() + BOOLEAN bIoComplete; ///< \deprecated Still present for compatibility with old applications. +} PACKET, *LPPACKET; + +/*! + \brief Structure containing an OID request. + + It is used by the PacketRequest() function to send an OID to the interface card driver. + It can be used, for example, to retrieve the status of the error counters on the adapter, its MAC address, + the list of the multicast groups defined on it, and so on. +*/ +struct _PACKET_OID_DATA { + ULONG Oid; ///< OID code. See the Microsoft DDK documentation or the file ntddndis.h + ///< for a complete list of valid codes. + ULONG Length; ///< Length of the data field + UCHAR Data[1]; ///< variable-lenght field that contains the information passed to or received + ///< from the adapter. +}; +typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA; + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @} + */ + +/* +BOOLEAN QueryWinPcapRegistryStringA(CHAR *SubKeyName, + CHAR *Value, + UINT *pValueLen, + CHAR *DefaultVal); + +BOOLEAN QueryWinPcapRegistryStringW(WCHAR *SubKeyName, + WCHAR *Value, + UINT *pValueLen, + WCHAR *DefaultVal); +*/ + +//--------------------------------------------------------------------------- +// EXPORTED FUNCTIONS +//--------------------------------------------------------------------------- + +PCHAR PacketGetVersion(); +PCHAR PacketGetDriverVersion(); +BOOLEAN PacketSetMinToCopy(LPADAPTER AdapterObject,int nbytes); +BOOLEAN PacketSetNumWrites(LPADAPTER AdapterObject,int nwrites); +BOOLEAN PacketSetMode(LPADAPTER AdapterObject,int mode); +BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout); +BOOLEAN PacketSetBpf(LPADAPTER AdapterObject,struct bpf_program *fp); +BOOLEAN PacketSetLoopbackBehavior(LPADAPTER AdapterObject, UINT LoopbackBehavior); +INT PacketSetSnapLen(LPADAPTER AdapterObject,int snaplen); +BOOLEAN PacketGetStats(LPADAPTER AdapterObject,struct bpf_stat *s); +BOOLEAN PacketGetStatsEx(LPADAPTER AdapterObject,struct bpf_stat *s); +BOOLEAN PacketSetBuff(LPADAPTER AdapterObject,int dim); +BOOLEAN PacketGetNetType (LPADAPTER AdapterObject,NetType *type); +LPADAPTER PacketOpenAdapter(PCHAR AdapterName); +BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET pPacket,BOOLEAN Sync); +INT PacketSendPackets(LPADAPTER AdapterObject,PVOID PacketBuff,ULONG Size, BOOLEAN Sync); +LPPACKET PacketAllocatePacket(void); +VOID PacketInitPacket(LPPACKET lpPacket,PVOID Buffer,UINT Length); +VOID PacketFreePacket(LPPACKET lpPacket); +BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync); +BOOLEAN PacketSetHwFilter(LPADAPTER AdapterObject,ULONG Filter); +BOOLEAN PacketGetAdapterNames(PTSTR pStr,PULONG BufferSize); +BOOLEAN PacketGetNetInfoEx(PCHAR AdapterName, npf_if_addr* buffer, PLONG NEntries); +BOOLEAN PacketRequest(LPADAPTER AdapterObject,BOOLEAN Set,PPACKET_OID_DATA OidData); +HANDLE PacketGetReadEvent(LPADAPTER AdapterObject); +BOOLEAN PacketSetDumpName(LPADAPTER AdapterObject, void *name, int len); +BOOLEAN PacketSetDumpLimits(LPADAPTER AdapterObject, UINT maxfilesize, UINT maxnpacks); +BOOLEAN PacketIsDumpEnded(LPADAPTER AdapterObject, BOOLEAN sync); +BOOL PacketStopDriver(); +VOID PacketCloseAdapter(LPADAPTER lpAdapter); +BOOLEAN PacketStartOem(PCHAR errorString, UINT errorStringLength); +BOOLEAN PacketStartOemEx(PCHAR errorString, UINT errorStringLength, ULONG flags); +PAirpcapHandle PacketGetAirPcapHandle(LPADAPTER AdapterObject); + +// +// Used by PacketStartOemEx +// +#define PACKET_START_OEM_NO_NETMON 0x00000001 + +#ifdef __cplusplus +} +#endif + +#endif //__PACKET32 diff --git a/3rdparty/winpcap/include/Win32-Extensions.h b/3rdparty/winpcap/include/Win32-Extensions.h index d3b063b0fd..ad3be25cfa 100644 --- a/3rdparty/winpcap/include/Win32-Extensions.h +++ b/3rdparty/winpcap/include/Win32-Extensions.h @@ -1,113 +1,113 @@ -/* - * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy) - * Copyright (c) 2005 - 2006 CACE Technologies, Davis (California) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Politecnico di Torino, CACE Technologies - * nor the names of its contributors may be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -#ifndef __WIN32_EXTENSIONS_H__ -#define __WIN32_EXTENSIONS_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Definitions */ - -/*! - \brief A queue of raw packets that will be sent to the network with pcap_sendqueue_transmit(). -*/ -struct pcap_send_queue -{ - u_int maxlen; ///< Maximum size of the the queue, in bytes. This variable contains the size of the buffer field. - u_int len; ///< Current size of the queue, in bytes. - char *buffer; ///< Buffer containing the packets to be sent. -}; - -typedef struct pcap_send_queue pcap_send_queue; - -/*! - \brief This typedef is a support for the pcap_get_airpcap_handle() function -*/ -#if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_) -#define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ -typedef struct _AirpcapHandle *PAirpcapHandle; -#endif - -#define BPF_MEM_EX_IMM 0xc0 -#define BPF_MEM_EX_IND 0xe0 - -/*used for ST*/ -#define BPF_MEM_EX 0xc0 -#define BPF_TME 0x08 - -#define BPF_LOOKUP 0x90 -#define BPF_EXECUTE 0xa0 -#define BPF_INIT 0xb0 -#define BPF_VALIDATE 0xc0 -#define BPF_SET_ACTIVE 0xd0 -#define BPF_RESET 0xe0 -#define BPF_SET_MEMORY 0x80 -#define BPF_GET_REGISTER_VALUE 0x70 -#define BPF_SET_REGISTER_VALUE 0x60 -#define BPF_SET_WORKING 0x50 -#define BPF_SET_ACTIVE_READ 0x40 -#define BPF_SET_AUTODELETION 0x30 -#define BPF_SEPARATION 0xff - -/* Prototypes */ -pcap_send_queue* pcap_sendqueue_alloc(u_int memsize); - -void pcap_sendqueue_destroy(pcap_send_queue* queue); - -int pcap_sendqueue_queue(pcap_send_queue* queue, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data); - -u_int pcap_sendqueue_transmit(pcap_t *p, pcap_send_queue* queue, int sync); - -HANDLE pcap_getevent(pcap_t *p); - -struct pcap_stat *pcap_stats_ex(pcap_t *p, int *pcap_stat_size); - -int pcap_setuserbuffer(pcap_t *p, int size); - -int pcap_live_dump(pcap_t *p, char *filename, int maxsize, int maxpacks); - -int pcap_live_dump_ended(pcap_t *p, int sync); - -int pcap_offline_filter(struct bpf_program *prog, const struct pcap_pkthdr *header, const u_char *pkt_data); - -int pcap_start_oem(char* err_str, int flags); - -PAirpcapHandle pcap_get_airpcap_handle(pcap_t *p); - -#ifdef __cplusplus -} -#endif - -#endif //__WIN32_EXTENSIONS_H__ +/* + * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy) + * Copyright (c) 2005 - 2006 CACE Technologies, Davis (California) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Politecnico di Torino, CACE Technologies + * nor the names of its contributors may be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef __WIN32_EXTENSIONS_H__ +#define __WIN32_EXTENSIONS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Definitions */ + +/*! + \brief A queue of raw packets that will be sent to the network with pcap_sendqueue_transmit(). +*/ +struct pcap_send_queue +{ + u_int maxlen; ///< Maximum size of the the queue, in bytes. This variable contains the size of the buffer field. + u_int len; ///< Current size of the queue, in bytes. + char *buffer; ///< Buffer containing the packets to be sent. +}; + +typedef struct pcap_send_queue pcap_send_queue; + +/*! + \brief This typedef is a support for the pcap_get_airpcap_handle() function +*/ +#if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_) +#define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ +typedef struct _AirpcapHandle *PAirpcapHandle; +#endif + +#define BPF_MEM_EX_IMM 0xc0 +#define BPF_MEM_EX_IND 0xe0 + +/*used for ST*/ +#define BPF_MEM_EX 0xc0 +#define BPF_TME 0x08 + +#define BPF_LOOKUP 0x90 +#define BPF_EXECUTE 0xa0 +#define BPF_INIT 0xb0 +#define BPF_VALIDATE 0xc0 +#define BPF_SET_ACTIVE 0xd0 +#define BPF_RESET 0xe0 +#define BPF_SET_MEMORY 0x80 +#define BPF_GET_REGISTER_VALUE 0x70 +#define BPF_SET_REGISTER_VALUE 0x60 +#define BPF_SET_WORKING 0x50 +#define BPF_SET_ACTIVE_READ 0x40 +#define BPF_SET_AUTODELETION 0x30 +#define BPF_SEPARATION 0xff + +/* Prototypes */ +pcap_send_queue* pcap_sendqueue_alloc(u_int memsize); + +void pcap_sendqueue_destroy(pcap_send_queue* queue); + +int pcap_sendqueue_queue(pcap_send_queue* queue, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data); + +u_int pcap_sendqueue_transmit(pcap_t *p, pcap_send_queue* queue, int sync); + +HANDLE pcap_getevent(pcap_t *p); + +struct pcap_stat *pcap_stats_ex(pcap_t *p, int *pcap_stat_size); + +int pcap_setuserbuffer(pcap_t *p, int size); + +int pcap_live_dump(pcap_t *p, char *filename, int maxsize, int maxpacks); + +int pcap_live_dump_ended(pcap_t *p, int sync); + +int pcap_offline_filter(struct bpf_program *prog, const struct pcap_pkthdr *header, const u_char *pkt_data); + +int pcap_start_oem(char* err_str, int flags); + +PAirpcapHandle pcap_get_airpcap_handle(pcap_t *p); + +#ifdef __cplusplus +} +#endif + +#endif //__WIN32_EXTENSIONS_H__ diff --git a/3rdparty/winpcap/include/remote-ext.h b/3rdparty/winpcap/include/remote-ext.h index 9f54d6974c..35a2fff6c2 100644 --- a/3rdparty/winpcap/include/remote-ext.h +++ b/3rdparty/winpcap/include/remote-ext.h @@ -1,444 +1,444 @@ -/* - * Copyright (c) 2002 - 2003 - * NetGroup, Politecnico di Torino (Italy) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Politecnico di Torino nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - - -#ifndef __REMOTE_EXT_H__ -#define __REMOTE_EXT_H__ - - -#ifndef HAVE_REMOTE -#error Please do not include this file directly. Just define HAVE_REMOTE and then include pcap.h -#endif - -// Definition for Microsoft Visual Studio -#if _MSC_VER > 1000 -#pragma once -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/*! - \file remote-ext.h - - The goal of this file it to include most of the new definitions that should be - placed into the pcap.h file. - - It includes all new definitions (structures and functions like pcap_open(). - Some of the functions are not really a remote feature, but, right now, - they are placed here. -*/ - - - -// All this stuff is public -/*! \addtogroup remote_struct - \{ -*/ - - - - -/*! - \brief Defines the maximum buffer size in which address, port, interface names are kept. - - In case the adapter name or such is larger than this value, it is truncated. - This is not used by the user; however it must be aware that an hostname / interface - name longer than this value will be truncated. -*/ -#define PCAP_BUF_SIZE 1024 - - -/*! \addtogroup remote_source_ID - \{ -*/ - - -/*! - \brief Internal representation of the type of source in use (file, - remote/local interface). - - This indicates a file, i.e. the user want to open a capture from a local file. -*/ -#define PCAP_SRC_FILE 2 -/*! - \brief Internal representation of the type of source in use (file, - remote/local interface). - - This indicates a local interface, i.e. the user want to open a capture from - a local interface. This does not involve the RPCAP protocol. -*/ -#define PCAP_SRC_IFLOCAL 3 -/*! - \brief Internal representation of the type of source in use (file, - remote/local interface). - - This indicates a remote interface, i.e. the user want to open a capture from - an interface on a remote host. This does involve the RPCAP protocol. -*/ -#define PCAP_SRC_IFREMOTE 4 - -/*! - \} -*/ - - - -/*! \addtogroup remote_source_string - - The formats allowed by the pcap_open() are the following: - - file://path_and_filename [opens a local file] - - rpcap://devicename [opens the selected device devices available on the local host, without using the RPCAP protocol] - - rpcap://host/devicename [opens the selected device available on a remote host] - - rpcap://host:port/devicename [opens the selected device available on a remote host, using a non-standard port for RPCAP] - - adaptername [to open a local adapter; kept for compability, but it is strongly discouraged] - - (NULL) [to open the first local adapter; kept for compability, but it is strongly discouraged] - - The formats allowed by the pcap_findalldevs_ex() are the following: - - file://folder/ [lists all the files in the given folder] - - rpcap:// [lists all local adapters] - - rpcap://host:port/ [lists the devices available on a remote host] - - Referring to the 'host' and 'port' paramters, they can be either numeric or literal. Since - IPv6 is fully supported, these are the allowed formats: - - - host (literal): e.g. host.foo.bar - - host (numeric IPv4): e.g. 10.11.12.13 - - host (numeric IPv4, IPv6 style): e.g. [10.11.12.13] - - host (numeric IPv6): e.g. [1:2:3::4] - - port: can be either numeric (e.g. '80') or literal (e.g. 'http') - - Here you find some allowed examples: - - rpcap://host.foo.bar/devicename [everything literal, no port number] - - rpcap://host.foo.bar:1234/devicename [everything literal, with port number] - - rpcap://10.11.12.13/devicename [IPv4 numeric, no port number] - - rpcap://10.11.12.13:1234/devicename [IPv4 numeric, with port number] - - rpcap://[10.11.12.13]:1234/devicename [IPv4 numeric with IPv6 format, with port number] - - rpcap://[1:2:3::4]/devicename [IPv6 numeric, no port number] - - rpcap://[1:2:3::4]:1234/devicename [IPv6 numeric, with port number] - - rpcap://[1:2:3::4]:http/devicename [IPv6 numeric, with literal port number] - - \{ -*/ - - -/*! - \brief String that will be used to determine the type of source in use (file, - remote/local interface). - - This string will be prepended to the interface name in order to create a string - that contains all the information required to open the source. - - This string indicates that the user wants to open a capture from a local file. -*/ -#define PCAP_SRC_FILE_STRING "file://" -/*! - \brief String that will be used to determine the type of source in use (file, - remote/local interface). - - This string will be prepended to the interface name in order to create a string - that contains all the information required to open the source. - - This string indicates that the user wants to open a capture from a network interface. - This string does not necessarily involve the use of the RPCAP protocol. If the - interface required resides on the local host, the RPCAP protocol is not involved - and the local functions are used. -*/ -#define PCAP_SRC_IF_STRING "rpcap://" - -/*! - \} -*/ - - - - - -/*! - \addtogroup remote_open_flags - \{ -*/ - -/*! - \brief Defines if the adapter has to go in promiscuous mode. - - It is '1' if you have to open the adapter in promiscuous mode, '0' otherwise. - Note that even if this parameter is false, the interface could well be in promiscuous - mode for some other reason (for example because another capture process with - promiscuous mode enabled is currently using that interface). - On on Linux systems with 2.2 or later kernels (that have the "any" device), this - flag does not work on the "any" device; if an argument of "any" is supplied, - the 'promisc' flag is ignored. -*/ -#define PCAP_OPENFLAG_PROMISCUOUS 1 - -/*! - \brief Defines if the data trasfer (in case of a remote - capture) has to be done with UDP protocol. - - If it is '1' if you want a UDP data connection, '0' if you want - a TCP data connection; control connection is always TCP-based. - A UDP connection is much lighter, but it does not guarantee that all - the captured packets arrive to the client workstation. Moreover, - it could be harmful in case of network congestion. - This flag is meaningless if the source is not a remote interface. - In that case, it is simply ignored. -*/ -#define PCAP_OPENFLAG_DATATX_UDP 2 - - -/*! - \brief Defines if the remote probe will capture its own generated traffic. - - In case the remote probe uses the same interface to capture traffic and to send - data back to the caller, the captured traffic includes the RPCAP traffic as well. - If this flag is turned on, the RPCAP traffic is excluded from the capture, so that - the trace returned back to the collector is does not include this traffic. -*/ -#define PCAP_OPENFLAG_NOCAPTURE_RPCAP 4 - -/*! - \brief Defines if the local adapter will capture its own generated traffic. - - This flag tells the underlying capture driver to drop the packets that were sent by itself. - This is usefult when building applications like bridges, that should ignore the traffic - they just sent. -*/ -#define PCAP_OPENFLAG_NOCAPTURE_LOCAL 8 - -/*! - \brief This flag configures the adapter for maximum responsiveness. - - In presence of a large value for nbytes, WinPcap waits for the arrival of several packets before - copying the data to the user. This guarantees a low number of system calls, i.e. lower processor usage, - i.e. better performance, which is good for applications like sniffers. If the user sets the - PCAP_OPENFLAG_MAX_RESPONSIVENESS flag, the capture driver will copy the packets as soon as the application - is ready to receive them. This is suggested for real time applications (like, for example, a bridge) - that need the best responsiveness.*/ -#define PCAP_OPENFLAG_MAX_RESPONSIVENESS 16 - -/*! - \} -*/ - - -/*! - \addtogroup remote_samp_methods - \{ -*/ - -/*! - \brief No sampling has to be done on the current capture. - - In this case, no sampling algorithms are applied to the current capture. -*/ -#define PCAP_SAMP_NOSAMP 0 - -/*! - \brief It defines that only 1 out of N packets must be returned to the user. - - In this case, the 'value' field of the 'pcap_samp' structure indicates the - number of packets (minus 1) that must be discarded before one packet got accepted. - In other words, if 'value = 10', the first packet is returned to the caller, while - the following 9 are discarded. -*/ -#define PCAP_SAMP_1_EVERY_N 1 - -/*! - \brief It defines that we have to return 1 packet every N milliseconds. - - In this case, the 'value' field of the 'pcap_samp' structure indicates the 'waiting - time' in milliseconds before one packet got accepted. - In other words, if 'value = 10', the first packet is returned to the caller; the next - returned one will be the first packet that arrives when 10ms have elapsed. -*/ -#define PCAP_SAMP_FIRST_AFTER_N_MS 2 - -/*! - \} -*/ - - -/*! - \addtogroup remote_auth_methods - \{ -*/ - -/*! - \brief It defines the NULL authentication. - - This value has to be used within the 'type' member of the pcap_rmtauth structure. - The 'NULL' authentication has to be equal to 'zero', so that old applications - can just put every field of struct pcap_rmtauth to zero, and it does work. -*/ -#define RPCAP_RMTAUTH_NULL 0 -/*! - \brief It defines the username/password authentication. - - With this type of authentication, the RPCAP protocol will use the username/ - password provided to authenticate the user on the remote machine. If the - authentication is successful (and the user has the right to open network devices) - the RPCAP connection will continue; otherwise it will be dropped. - - This value has to be used within the 'type' member of the pcap_rmtauth structure. -*/ -#define RPCAP_RMTAUTH_PWD 1 - -/*! - \} -*/ - - - - -/*! - - \brief This structure keeps the information needed to autheticate - the user on a remote machine. - - The remote machine can either grant or refuse the access according - to the information provided. - In case the NULL authentication is required, both 'username' and - 'password' can be NULL pointers. - - This structure is meaningless if the source is not a remote interface; - in that case, the functions which requires such a structure can accept - a NULL pointer as well. -*/ -struct pcap_rmtauth -{ - /*! - \brief Type of the authentication required. - - In order to provide maximum flexibility, we can support different types - of authentication based on the value of this 'type' variable. The currently - supported authentication methods are defined into the - \link remote_auth_methods Remote Authentication Methods Section\endlink. - - */ - int type; - /*! - \brief Zero-terminated string containing the username that has to be - used on the remote machine for authentication. - - This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication - and it can be NULL. - */ - char *username; - /*! - \brief Zero-terminated string containing the password that has to be - used on the remote machine for authentication. - - This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication - and it can be NULL. - */ - char *password; -}; - - -/*! - \brief This structure defines the information related to sampling. - - In case the sampling is requested, the capturing device should read - only a subset of the packets coming from the source. The returned packets depend - on the sampling parameters. - - \warning The sampling process is applied after the filtering process. - In other words, packets are filtered first, then the sampling process selects a - subset of the 'filtered' packets and it returns them to the caller. -*/ -struct pcap_samp -{ - /*! - Method used for sampling. Currently, the supported methods are listed in the - \link remote_samp_methods Sampling Methods Section\endlink. - */ - int method; - - /*! - This value depends on the sampling method defined. For its meaning, please check - at the \link remote_samp_methods Sampling Methods Section\endlink. - */ - int value; -}; - - - - -//! Maximum lenght of an host name (needed for the RPCAP active mode) -#define RPCAP_HOSTLIST_SIZE 1024 - - -/*! - \} -*/ // end of public documentation - - -// Exported functions - - - -/** \name New WinPcap functions - - This section lists the new functions that are able to help considerably in writing - WinPcap programs because of their easiness of use. - */ -//\{ -pcap_t *pcap_open(const char *source, int snaplen, int flags, int read_timeout, struct pcap_rmtauth *auth, char *errbuf); -int pcap_createsrcstr(char *source, int type, const char *host, const char *port, const char *name, char *errbuf); -int pcap_parsesrcstr(const char *source, int *type, char *host, char *port, char *name, char *errbuf); -int pcap_findalldevs_ex(char *source, struct pcap_rmtauth *auth, pcap_if_t **alldevs, char *errbuf); -struct pcap_samp *pcap_setsampling(pcap_t *p); - -//\} -// End of new winpcap functions - - - -/** \name Remote Capture functions - */ -//\{ -SOCKET pcap_remoteact_accept(const char *address, const char *port, const char *hostlist, char *connectinghost, struct pcap_rmtauth *auth, char *errbuf); -int pcap_remoteact_list(char *hostlist, char sep, int size, char *errbuf); -int pcap_remoteact_close(const char *host, char *errbuf); -void pcap_remoteact_cleanup(); -//\} -// End of remote capture functions - -#ifdef __cplusplus -} -#endif - - -#endif - +/* + * Copyright (c) 2002 - 2003 + * NetGroup, Politecnico di Torino (Italy) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Politecnico di Torino nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +#ifndef __REMOTE_EXT_H__ +#define __REMOTE_EXT_H__ + + +#ifndef HAVE_REMOTE +#error Please do not include this file directly. Just define HAVE_REMOTE and then include pcap.h +#endif + +// Definition for Microsoft Visual Studio +#if _MSC_VER > 1000 +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + \file remote-ext.h + + The goal of this file it to include most of the new definitions that should be + placed into the pcap.h file. + + It includes all new definitions (structures and functions like pcap_open(). + Some of the functions are not really a remote feature, but, right now, + they are placed here. +*/ + + + +// All this stuff is public +/*! \addtogroup remote_struct + \{ +*/ + + + + +/*! + \brief Defines the maximum buffer size in which address, port, interface names are kept. + + In case the adapter name or such is larger than this value, it is truncated. + This is not used by the user; however it must be aware that an hostname / interface + name longer than this value will be truncated. +*/ +#define PCAP_BUF_SIZE 1024 + + +/*! \addtogroup remote_source_ID + \{ +*/ + + +/*! + \brief Internal representation of the type of source in use (file, + remote/local interface). + + This indicates a file, i.e. the user want to open a capture from a local file. +*/ +#define PCAP_SRC_FILE 2 +/*! + \brief Internal representation of the type of source in use (file, + remote/local interface). + + This indicates a local interface, i.e. the user want to open a capture from + a local interface. This does not involve the RPCAP protocol. +*/ +#define PCAP_SRC_IFLOCAL 3 +/*! + \brief Internal representation of the type of source in use (file, + remote/local interface). + + This indicates a remote interface, i.e. the user want to open a capture from + an interface on a remote host. This does involve the RPCAP protocol. +*/ +#define PCAP_SRC_IFREMOTE 4 + +/*! + \} +*/ + + + +/*! \addtogroup remote_source_string + + The formats allowed by the pcap_open() are the following: + - file://path_and_filename [opens a local file] + - rpcap://devicename [opens the selected device devices available on the local host, without using the RPCAP protocol] + - rpcap://host/devicename [opens the selected device available on a remote host] + - rpcap://host:port/devicename [opens the selected device available on a remote host, using a non-standard port for RPCAP] + - adaptername [to open a local adapter; kept for compability, but it is strongly discouraged] + - (NULL) [to open the first local adapter; kept for compability, but it is strongly discouraged] + + The formats allowed by the pcap_findalldevs_ex() are the following: + - file://folder/ [lists all the files in the given folder] + - rpcap:// [lists all local adapters] + - rpcap://host:port/ [lists the devices available on a remote host] + + Referring to the 'host' and 'port' paramters, they can be either numeric or literal. Since + IPv6 is fully supported, these are the allowed formats: + + - host (literal): e.g. host.foo.bar + - host (numeric IPv4): e.g. 10.11.12.13 + - host (numeric IPv4, IPv6 style): e.g. [10.11.12.13] + - host (numeric IPv6): e.g. [1:2:3::4] + - port: can be either numeric (e.g. '80') or literal (e.g. 'http') + + Here you find some allowed examples: + - rpcap://host.foo.bar/devicename [everything literal, no port number] + - rpcap://host.foo.bar:1234/devicename [everything literal, with port number] + - rpcap://10.11.12.13/devicename [IPv4 numeric, no port number] + - rpcap://10.11.12.13:1234/devicename [IPv4 numeric, with port number] + - rpcap://[10.11.12.13]:1234/devicename [IPv4 numeric with IPv6 format, with port number] + - rpcap://[1:2:3::4]/devicename [IPv6 numeric, no port number] + - rpcap://[1:2:3::4]:1234/devicename [IPv6 numeric, with port number] + - rpcap://[1:2:3::4]:http/devicename [IPv6 numeric, with literal port number] + + \{ +*/ + + +/*! + \brief String that will be used to determine the type of source in use (file, + remote/local interface). + + This string will be prepended to the interface name in order to create a string + that contains all the information required to open the source. + + This string indicates that the user wants to open a capture from a local file. +*/ +#define PCAP_SRC_FILE_STRING "file://" +/*! + \brief String that will be used to determine the type of source in use (file, + remote/local interface). + + This string will be prepended to the interface name in order to create a string + that contains all the information required to open the source. + + This string indicates that the user wants to open a capture from a network interface. + This string does not necessarily involve the use of the RPCAP protocol. If the + interface required resides on the local host, the RPCAP protocol is not involved + and the local functions are used. +*/ +#define PCAP_SRC_IF_STRING "rpcap://" + +/*! + \} +*/ + + + + + +/*! + \addtogroup remote_open_flags + \{ +*/ + +/*! + \brief Defines if the adapter has to go in promiscuous mode. + + It is '1' if you have to open the adapter in promiscuous mode, '0' otherwise. + Note that even if this parameter is false, the interface could well be in promiscuous + mode for some other reason (for example because another capture process with + promiscuous mode enabled is currently using that interface). + On on Linux systems with 2.2 or later kernels (that have the "any" device), this + flag does not work on the "any" device; if an argument of "any" is supplied, + the 'promisc' flag is ignored. +*/ +#define PCAP_OPENFLAG_PROMISCUOUS 1 + +/*! + \brief Defines if the data trasfer (in case of a remote + capture) has to be done with UDP protocol. + + If it is '1' if you want a UDP data connection, '0' if you want + a TCP data connection; control connection is always TCP-based. + A UDP connection is much lighter, but it does not guarantee that all + the captured packets arrive to the client workstation. Moreover, + it could be harmful in case of network congestion. + This flag is meaningless if the source is not a remote interface. + In that case, it is simply ignored. +*/ +#define PCAP_OPENFLAG_DATATX_UDP 2 + + +/*! + \brief Defines if the remote probe will capture its own generated traffic. + + In case the remote probe uses the same interface to capture traffic and to send + data back to the caller, the captured traffic includes the RPCAP traffic as well. + If this flag is turned on, the RPCAP traffic is excluded from the capture, so that + the trace returned back to the collector is does not include this traffic. +*/ +#define PCAP_OPENFLAG_NOCAPTURE_RPCAP 4 + +/*! + \brief Defines if the local adapter will capture its own generated traffic. + + This flag tells the underlying capture driver to drop the packets that were sent by itself. + This is usefult when building applications like bridges, that should ignore the traffic + they just sent. +*/ +#define PCAP_OPENFLAG_NOCAPTURE_LOCAL 8 + +/*! + \brief This flag configures the adapter for maximum responsiveness. + + In presence of a large value for nbytes, WinPcap waits for the arrival of several packets before + copying the data to the user. This guarantees a low number of system calls, i.e. lower processor usage, + i.e. better performance, which is good for applications like sniffers. If the user sets the + PCAP_OPENFLAG_MAX_RESPONSIVENESS flag, the capture driver will copy the packets as soon as the application + is ready to receive them. This is suggested for real time applications (like, for example, a bridge) + that need the best responsiveness.*/ +#define PCAP_OPENFLAG_MAX_RESPONSIVENESS 16 + +/*! + \} +*/ + + +/*! + \addtogroup remote_samp_methods + \{ +*/ + +/*! + \brief No sampling has to be done on the current capture. + + In this case, no sampling algorithms are applied to the current capture. +*/ +#define PCAP_SAMP_NOSAMP 0 + +/*! + \brief It defines that only 1 out of N packets must be returned to the user. + + In this case, the 'value' field of the 'pcap_samp' structure indicates the + number of packets (minus 1) that must be discarded before one packet got accepted. + In other words, if 'value = 10', the first packet is returned to the caller, while + the following 9 are discarded. +*/ +#define PCAP_SAMP_1_EVERY_N 1 + +/*! + \brief It defines that we have to return 1 packet every N milliseconds. + + In this case, the 'value' field of the 'pcap_samp' structure indicates the 'waiting + time' in milliseconds before one packet got accepted. + In other words, if 'value = 10', the first packet is returned to the caller; the next + returned one will be the first packet that arrives when 10ms have elapsed. +*/ +#define PCAP_SAMP_FIRST_AFTER_N_MS 2 + +/*! + \} +*/ + + +/*! + \addtogroup remote_auth_methods + \{ +*/ + +/*! + \brief It defines the NULL authentication. + + This value has to be used within the 'type' member of the pcap_rmtauth structure. + The 'NULL' authentication has to be equal to 'zero', so that old applications + can just put every field of struct pcap_rmtauth to zero, and it does work. +*/ +#define RPCAP_RMTAUTH_NULL 0 +/*! + \brief It defines the username/password authentication. + + With this type of authentication, the RPCAP protocol will use the username/ + password provided to authenticate the user on the remote machine. If the + authentication is successful (and the user has the right to open network devices) + the RPCAP connection will continue; otherwise it will be dropped. + + This value has to be used within the 'type' member of the pcap_rmtauth structure. +*/ +#define RPCAP_RMTAUTH_PWD 1 + +/*! + \} +*/ + + + + +/*! + + \brief This structure keeps the information needed to autheticate + the user on a remote machine. + + The remote machine can either grant or refuse the access according + to the information provided. + In case the NULL authentication is required, both 'username' and + 'password' can be NULL pointers. + + This structure is meaningless if the source is not a remote interface; + in that case, the functions which requires such a structure can accept + a NULL pointer as well. +*/ +struct pcap_rmtauth +{ + /*! + \brief Type of the authentication required. + + In order to provide maximum flexibility, we can support different types + of authentication based on the value of this 'type' variable. The currently + supported authentication methods are defined into the + \link remote_auth_methods Remote Authentication Methods Section\endlink. + + */ + int type; + /*! + \brief Zero-terminated string containing the username that has to be + used on the remote machine for authentication. + + This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication + and it can be NULL. + */ + char *username; + /*! + \brief Zero-terminated string containing the password that has to be + used on the remote machine for authentication. + + This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication + and it can be NULL. + */ + char *password; +}; + + +/*! + \brief This structure defines the information related to sampling. + + In case the sampling is requested, the capturing device should read + only a subset of the packets coming from the source. The returned packets depend + on the sampling parameters. + + \warning The sampling process is applied after the filtering process. + In other words, packets are filtered first, then the sampling process selects a + subset of the 'filtered' packets and it returns them to the caller. +*/ +struct pcap_samp +{ + /*! + Method used for sampling. Currently, the supported methods are listed in the + \link remote_samp_methods Sampling Methods Section\endlink. + */ + int method; + + /*! + This value depends on the sampling method defined. For its meaning, please check + at the \link remote_samp_methods Sampling Methods Section\endlink. + */ + int value; +}; + + + + +//! Maximum lenght of an host name (needed for the RPCAP active mode) +#define RPCAP_HOSTLIST_SIZE 1024 + + +/*! + \} +*/ // end of public documentation + + +// Exported functions + + + +/** \name New WinPcap functions + + This section lists the new functions that are able to help considerably in writing + WinPcap programs because of their easiness of use. + */ +//\{ +pcap_t *pcap_open(const char *source, int snaplen, int flags, int read_timeout, struct pcap_rmtauth *auth, char *errbuf); +int pcap_createsrcstr(char *source, int type, const char *host, const char *port, const char *name, char *errbuf); +int pcap_parsesrcstr(const char *source, int *type, char *host, char *port, char *name, char *errbuf); +int pcap_findalldevs_ex(char *source, struct pcap_rmtauth *auth, pcap_if_t **alldevs, char *errbuf); +struct pcap_samp *pcap_setsampling(pcap_t *p); + +//\} +// End of new winpcap functions + + + +/** \name Remote Capture functions + */ +//\{ +SOCKET pcap_remoteact_accept(const char *address, const char *port, const char *hostlist, char *connectinghost, struct pcap_rmtauth *auth, char *errbuf); +int pcap_remoteact_list(char *hostlist, char sep, int size, char *errbuf); +int pcap_remoteact_close(const char *host, char *errbuf); +void pcap_remoteact_cleanup(); +//\} +// End of remote capture functions + +#ifdef __cplusplus +} +#endif + + +#endif + diff --git a/3rdparty/winpcap/readme.txt b/3rdparty/winpcap/readme.txt index 6239cecd1e..dc11e783ab 100644 --- a/3rdparty/winpcap/readme.txt +++ b/3rdparty/winpcap/readme.txt @@ -1,3 +1,3 @@ -Winpcap is version 4.1.2 downloaded from -https://www.winpcap.org/install/bin/WpdPack_4_1_2.zip +Winpcap is version 4.1.2 downloaded from +https://www.winpcap.org/install/bin/WpdPack_4_1_2.zip Just the /include and /lib directories are included to keep the size small. \ No newline at end of file diff --git a/3rdparty/wxWidgets/art/addbookm.xpm b/3rdparty/wxWidgets/art/addbookm.xpm index 5d5b1c5669..7d5f69900e 100644 --- a/3rdparty/wxWidgets/art/addbookm.xpm +++ b/3rdparty/wxWidgets/art/addbookm.xpm @@ -1,24 +1,24 @@ -/* XPM */ -static const char * addbookm_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -". c Black", -"X c #00C000", -" c None", -/* pixels */ -" ....... ", -" .XXXXX. ", -" .. .XXXXX. ", -" .. .XXXXX. ", -" ...... .XXXXX. ", -" ...... .XXXXX. ", -" .. .XXXXX. ", -" .. .XXXXX. ", -" .XXXXX. ", -" .XXXXX. ", -" .XXXXX. ", -" .XXXXX. ", -" .XX.XX. ", -" .X. .X. ", -" .. .. " -}; +/* XPM */ +static const char * addbookm_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 3 1", +". c Black", +"X c #00C000", +" c None", +/* pixels */ +" ....... ", +" .XXXXX. ", +" .. .XXXXX. ", +" .. .XXXXX. ", +" ...... .XXXXX. ", +" ...... .XXXXX. ", +" .. .XXXXX. ", +" .. .XXXXX. ", +" .XXXXX. ", +" .XXXXX. ", +" .XXXXX. ", +" .XXXXX. ", +" .XX.XX. ", +" .X. .X. ", +" .. .. " +}; diff --git a/3rdparty/wxWidgets/art/back.xpm b/3rdparty/wxWidgets/art/back.xpm index 553643a365..b48af706cc 100644 --- a/3rdparty/wxWidgets/art/back.xpm +++ b/3rdparty/wxWidgets/art/back.xpm @@ -1,21 +1,21 @@ -/* XPM */ -static const char * back_xpm[] = { -"16 15 3 1", -" c None", -". c Black", -"X c Gray100", -" ", -" ", -" . ", -" .. ", -" .X. ", -" .XX........ ", -" .XXXXXXXXXX. ", -" .XXXXXXXXXXX. ", -" .XXXXXXXXXXX. ", -" .XXXXXXXXXX. ", -" .XX........ ", -" .X. ", -" .. ", -" . ", -" "}; +/* XPM */ +static const char * back_xpm[] = { +"16 15 3 1", +" c None", +". c Black", +"X c Gray100", +" ", +" ", +" . ", +" .. ", +" .X. ", +" .XX........ ", +" .XXXXXXXXXX. ", +" .XXXXXXXXXXX. ", +" .XXXXXXXXXXX. ", +" .XXXXXXXXXX. ", +" .XX........ ", +" .X. ", +" .. ", +" . ", +" "}; diff --git a/3rdparty/wxWidgets/art/cdrom.xpm b/3rdparty/wxWidgets/art/cdrom.xpm index d1468ae2a2..b72d529e1c 100644 --- a/3rdparty/wxWidgets/art/cdrom.xpm +++ b/3rdparty/wxWidgets/art/cdrom.xpm @@ -1,57 +1,57 @@ -/* XPM */ -static const char * cdrom_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 36 1", -"= c #9BACC2", -"y c #547B99", -"$ c #FFFFFF", -"@ c #839CB5", -"o c #547897", -"4 c #4D7492", -"% c #F1F4F7", -"X c #5A809C", -"< c #8497A5", -"0 c #7898AD", -"+ c #CAD2DC", -"r c #ACAEB2", -"2 c #BECAD9", -"* c #65839D", -"e c #DCE2EA", -"- c #ADBED2", -"t c #597B9A", -" c None", -"1 c #467291", -"9 c #D6DFE7", -"O c #7393AB", -"u c #49708B", -"5 c #A0BACB", -"& c #AABFCD", -"8 c #B9CBD5", -"; c #B4C4D3", -": c #6F90A6", -"3 c #A8B6CA", -"# c #ADBACE", -"w c #E4E9ED", -". c #8EA9BC", -"> c #B3BFD1", -", c #C2CBDB", -"6 c #C0D1DC", -"7 c #A2B3C5", -"q c #5D7C93", -/* pixels */ -" .XooOo+ ", -" X@#$$$%o& ", -" *=-;$$$$$o+ ", -" +O#;-$$$$$$: ", -" o=>,-<1<$2-o ", -" o3>--1$122-* ", -" o=--$<4<22-X ", -" o5$$$$$26;7* ", -" X%$$$$2;-X8 ", -" 90*9$$$-7Xqo ", -" wXwe@O44X422222<<*4", -" ttyyyoo4441uuuo", -" t>$$$$$$$$$$$>o", -" XXXtyyyoo44411u" -}; +/* XPM */ +static const char * cdrom_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 36 1", +"= c #9BACC2", +"y c #547B99", +"$ c #FFFFFF", +"@ c #839CB5", +"o c #547897", +"4 c #4D7492", +"% c #F1F4F7", +"X c #5A809C", +"< c #8497A5", +"0 c #7898AD", +"+ c #CAD2DC", +"r c #ACAEB2", +"2 c #BECAD9", +"* c #65839D", +"e c #DCE2EA", +"- c #ADBED2", +"t c #597B9A", +" c None", +"1 c #467291", +"9 c #D6DFE7", +"O c #7393AB", +"u c #49708B", +"5 c #A0BACB", +"& c #AABFCD", +"8 c #B9CBD5", +"; c #B4C4D3", +": c #6F90A6", +"3 c #A8B6CA", +"# c #ADBACE", +"w c #E4E9ED", +". c #8EA9BC", +"> c #B3BFD1", +", c #C2CBDB", +"6 c #C0D1DC", +"7 c #A2B3C5", +"q c #5D7C93", +/* pixels */ +" .XooOo+ ", +" X@#$$$%o& ", +" *=-;$$$$$o+ ", +" +O#;-$$$$$$: ", +" o=>,-<1<$2-o ", +" o3>--1$122-* ", +" o=--$<4<22-X ", +" o5$$$$$26;7* ", +" X%$$$$2;-X8 ", +" 90*9$$$-7Xqo ", +" wXwe@O44X422222<<*4", +" ttyyyoo4441uuuo", +" t>$$$$$$$$$$$>o", +" XXXtyyyoo44411u" +}; diff --git a/3rdparty/wxWidgets/art/copy.xpm b/3rdparty/wxWidgets/art/copy.xpm index c6d542fdd2..aa6094f00f 100644 --- a/3rdparty/wxWidgets/art/copy.xpm +++ b/3rdparty/wxWidgets/art/copy.xpm @@ -1,44 +1,44 @@ -/* XPM */ -static const char * copy_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 23 1", -"o c #97C4E7", -"* c #FFFFFF", -"@ c #60A9DA", -"= c #D1E5F5", -"& c #C3DDF1", -". c #7EA6C0", -" c None", -"X c #2F93CD", -"O c #85BBE2", -", c #EFF6FC", -"; c #DEEDF8", -"+ c #72B2DD", -"3 c #F7FBFD", -"4 c #FAFCFE", -": c #DAEAF7", -"< c #E9F3FA", -"1 c #E2EFF8", -"- c #FDFDFE", -"% c #B6D5EE", -"$ c #A5CCEA", -"> c #E5F0F9", -"# c #AFD1EC", -"2 c #F4F9FD", -/* pixels */ -" .....XX ", -" .oO+@X#X ", -" .$oO+X##X ", -" .%$o........ ", -" .&%$.*=&#o.-. ", -" .=&%.*;=&#.--. ", -" .:=&.*>;=&.... ", -" .>:=.*,>;=&#o. ", -" .<1:.*2,>:=&#. ", -" .2<1.*32,>:=&. ", -" .32<.*432,>:=. ", -" .32<.*-432,>:. ", -" .....**-432,>. ", -" .***-432,. ", -" .......... " -}; +/* XPM */ +static const char * copy_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 23 1", +"o c #97C4E7", +"* c #FFFFFF", +"@ c #60A9DA", +"= c #D1E5F5", +"& c #C3DDF1", +". c #7EA6C0", +" c None", +"X c #2F93CD", +"O c #85BBE2", +", c #EFF6FC", +"; c #DEEDF8", +"+ c #72B2DD", +"3 c #F7FBFD", +"4 c #FAFCFE", +": c #DAEAF7", +"< c #E9F3FA", +"1 c #E2EFF8", +"- c #FDFDFE", +"% c #B6D5EE", +"$ c #A5CCEA", +"> c #E5F0F9", +"# c #AFD1EC", +"2 c #F4F9FD", +/* pixels */ +" .....XX ", +" .oO+@X#X ", +" .$oO+X##X ", +" .%$o........ ", +" .&%$.*=&#o.-. ", +" .=&%.*;=&#.--. ", +" .:=&.*>;=&.... ", +" .>:=.*,>;=&#o. ", +" .<1:.*2,>:=&#. ", +" .2<1.*32,>:=&. ", +" .32<.*432,>:=. ", +" .32<.*-432,>:. ", +" .....**-432,>. ", +" .***-432,. ", +" .......... " +}; diff --git a/3rdparty/wxWidgets/art/cross.xpm b/3rdparty/wxWidgets/art/cross.xpm index 649b004ce8..5fe844ab75 100644 --- a/3rdparty/wxWidgets/art/cross.xpm +++ b/3rdparty/wxWidgets/art/cross.xpm @@ -1,17 +1,17 @@ -/* XPM */ -static const char * cross_xpm[] = { -/* columns rows colors chars-per-pixel */ -"10 10 2 1", -" c Gray0", -"# c None", -/* pixels */ -" ######## ", -" #### ", -"# ## #", -"## ##", -"### ###", -"### ###", -"## ##", -"# ## #", -" #### ", -" ###### "}; +/* XPM */ +static const char * cross_xpm[] = { +/* columns rows colors chars-per-pixel */ +"10 10 2 1", +" c Gray0", +"# c None", +/* pixels */ +" ######## ", +" #### ", +"# ## #", +"## ##", +"### ###", +"### ###", +"## ##", +"# ## #", +" #### ", +" ###### "}; diff --git a/3rdparty/wxWidgets/art/cut.xpm b/3rdparty/wxWidgets/art/cut.xpm index bbbd7a3b04..83ff3bb955 100644 --- a/3rdparty/wxWidgets/art/cut.xpm +++ b/3rdparty/wxWidgets/art/cut.xpm @@ -1,46 +1,46 @@ -/* XPM */ -static const char * cut_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 25 1", -"6 c #D8BDC0", -": c #C3C3C4", -"- c #FFFFFF", -". c #6C6D70", -"2 c #AD3A45", -"o c #DBDBDB", -"# c #939495", -"< c #E42234", -"& c #C3C5C8", -"; c #C6CCD3", -"% c #B7B7B8", -" c None", -"* c #DFE0E2", -"5 c #B69596", -"3 c #9C2A35", -"1 c #CFCFD0", -", c #AB5C64", -"+ c #D2D3D4", -"$ c #BCBDBE", -"@ c #C6C8CA", -"> c #CDC0C1", -"O c #826F72", -"X c #979BA0", -"4 c #9B8687", -"= c #9FA0A0", -/* pixels */ -" .X .o ", -" O.+ @. ", -" O. .. ", -" O#$ %.& ", -" O.*.. ", -" #%#.. ", -" O=-.. ", -" #%#;. ", -" OO:=O ", -" >,,<, ,<,,1 ", -" ><23<1 1<32<1 ", -" ,2 4< <5 2, ", -" <, ,2 2, ,< ", -" 23,<5 5<,32 ", -" 6225 522> " -}; +/* XPM */ +static const char * cut_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 25 1", +"6 c #D8BDC0", +": c #C3C3C4", +"- c #FFFFFF", +". c #6C6D70", +"2 c #AD3A45", +"o c #DBDBDB", +"# c #939495", +"< c #E42234", +"& c #C3C5C8", +"; c #C6CCD3", +"% c #B7B7B8", +" c None", +"* c #DFE0E2", +"5 c #B69596", +"3 c #9C2A35", +"1 c #CFCFD0", +", c #AB5C64", +"+ c #D2D3D4", +"$ c #BCBDBE", +"@ c #C6C8CA", +"> c #CDC0C1", +"O c #826F72", +"X c #979BA0", +"4 c #9B8687", +"= c #9FA0A0", +/* pixels */ +" .X .o ", +" O.+ @. ", +" O. .. ", +" O#$ %.& ", +" O.*.. ", +" #%#.. ", +" O=-.. ", +" #%#;. ", +" OO:=O ", +" >,,<, ,<,,1 ", +" ><23<1 1<32<1 ", +" ,2 4< <5 2, ", +" <, ,2 2, ,< ", +" 23,<5 5<,32 ", +" 6225 522> " +}; diff --git a/3rdparty/wxWidgets/art/deffile.xpm b/3rdparty/wxWidgets/art/deffile.xpm index 45e5a48a1c..f08974b32c 100644 --- a/3rdparty/wxWidgets/art/deffile.xpm +++ b/3rdparty/wxWidgets/art/deffile.xpm @@ -1,54 +1,54 @@ -/* XPM */ -static const char * deffile_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 16 32 1", -"= c #97C4E7", -": c #72A8D2", -"1 c #FFFFFF", -"w c #839CB5", -"X c #6B98B8", -". c #5A89A6", -"@ c #3A749C", -", c #D1E5F5", -"< c #67A1CF", -"> c #F1F4F7", -"e c #85A7BC", -"% c #C3DDF1", -"0 c #749BB4", -"2 c #7EA6C0", -"; c #5F9BC8", -" c None", -"O c #538DB3", -"- c #85BBE2", -"$ c #D6DFE7", -"9 c #EFF6FC", -"o c #6591AE", -"4 c #F7FBFD", -"8 c #FAFCFE", -"6 c #DAEAF7", -"7 c #E9F3FA", -"q c #FDFDFE", -"3 c #E2EFF8", -"# c #8EA9BC", -"& c #B6D5EE", -"* c #A5CCEA", -"5 c #F4F9FD", -"+ c #4581AA", -/* pixels */ -" ..XooO+@#$ ", -" .%%&*=-;:;> ", -" .,,%&*=<1=X> ", -" #%%%%&*211=X ", -" #3----- c #F1F4F7", +"e c #85A7BC", +"% c #C3DDF1", +"0 c #749BB4", +"2 c #7EA6C0", +"; c #5F9BC8", +" c None", +"O c #538DB3", +"- c #85BBE2", +"$ c #D6DFE7", +"9 c #EFF6FC", +"o c #6591AE", +"4 c #F7FBFD", +"8 c #FAFCFE", +"6 c #DAEAF7", +"7 c #E9F3FA", +"q c #FDFDFE", +"3 c #E2EFF8", +"# c #8EA9BC", +"& c #B6D5EE", +"* c #A5CCEA", +"5 c #F4F9FD", +"+ c #4581AA", +/* pixels */ +" ..XooO+@#$ ", +" .%%&*=-;:;> ", +" .,,%&*=<1=X> ", +" #%%%%&*211=X ", +" #3----- c #5A7BB4", -"% c #5F7FB5", -/* pixels */ -" ", -" .Xo OO ", -" +@#. $@% ", -" &@@X .*@*o ", -" =@= .*@*. ", -" -@@X*@*. ", -" .#@@@$. ", -" ;@@: ", -" ;@@@+ ", -" .>@#%@@. ", -" o*@*oO@@, ", -" <#@*. .@@= ", -"&@@$ :@@1 ", -";#& 2#>. ", -" " -}; +/* XPM */ +static const char * delete_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 21 1", +"2 c #A5AEBD", +"* c #5478B4", +"< c #95A3BB", +"O c #9AA7BC", +"; c #758EB7", +"$ c #6986B6", +"# c #4971B2", +"& c #8A9CBA", +"X c #8598B9", +" c None", +"o c #ABB2BE", +"- c #7F95B9", +"= c #4E74B3", +"1 c #A0ABBC", +"+ c #6F8AB7", +". c #B5B9BF", +"@ c #3E69B1", +", c #90A0BA", +": c #6483B5", +"> c #5A7BB4", +"% c #5F7FB5", +/* pixels */ +" ", +" .Xo OO ", +" +@#. $@% ", +" &@@X .*@*o ", +" =@= .*@*. ", +" -@@X*@*. ", +" .#@@@$. ", +" ;@@: ", +" ;@@@+ ", +" .>@#%@@. ", +" o*@*oO@@, ", +" <#@*. .@@= ", +"&@@$ :@@1 ", +";#& 2#>. ", +" " +}; diff --git a/3rdparty/wxWidgets/art/dir_up.xpm b/3rdparty/wxWidgets/art/dir_up.xpm index 536d244830..0c2f71d092 100644 --- a/3rdparty/wxWidgets/art/dir_up.xpm +++ b/3rdparty/wxWidgets/art/dir_up.xpm @@ -1,52 +1,52 @@ -/* XPM */ -static const char * dir_up_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 31 1", -"6 c #9BACC2", -"o c #9AEA53", -"7 c #94A5BD", -"8 c #547897", -"5 c #839CB5", -"@ c #376485", -"$ c #5A809C", -"# c #7F99B4", -": c #D1D9E5", -"< c #EAEDF3", -"& c #446A8C", -"q c #65839D", -"> c #DCE2EA", -", c #E1E6EE", -"2 c #F5F6F7", -"O c #8DA0B9", -" c None", -"% c #467291", -". c #305F81", -"X c #7393AB", -"+ c #6A89A2", -"4 c #A8B6CA", -"1 c #EEF1F3", -"3 c #F8F9FA", -"0 c #215579", -"9 c #7F97B0", -"* c #B3BFD1", -"w c #7A90AC", -"- c #C2CBDB", -"; c #CAD6E1", -"= c #BBC4D6", -/* pixels */ -" .. ", -" X.o. ", -".... X.ooo. ", -".OO+....ooooo. ", -".OOOOOO@@ooo.. ", -".OOOO#OO@ooo.$ ", -".OOOOOOO@ooo.$ ", -".O%............&", -".O&*=-;:>,<1231.", -".+.4*=-;:>,<12$.", -"..564*=-;:>,<1. ", -".@O764*=-;:>,<. ", -".89O764*=-;:>$$ ", -"0qw9O764*=-;:. ", -"0............. " -}; +/* XPM */ +static const char * dir_up_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 31 1", +"6 c #9BACC2", +"o c #9AEA53", +"7 c #94A5BD", +"8 c #547897", +"5 c #839CB5", +"@ c #376485", +"$ c #5A809C", +"# c #7F99B4", +": c #D1D9E5", +"< c #EAEDF3", +"& c #446A8C", +"q c #65839D", +"> c #DCE2EA", +", c #E1E6EE", +"2 c #F5F6F7", +"O c #8DA0B9", +" c None", +"% c #467291", +". c #305F81", +"X c #7393AB", +"+ c #6A89A2", +"4 c #A8B6CA", +"1 c #EEF1F3", +"3 c #F8F9FA", +"0 c #215579", +"9 c #7F97B0", +"* c #B3BFD1", +"w c #7A90AC", +"- c #C2CBDB", +"; c #CAD6E1", +"= c #BBC4D6", +/* pixels */ +" .. ", +" X.o. ", +".... X.ooo. ", +".OO+....ooooo. ", +".OOOOOO@@ooo.. ", +".OOOO#OO@ooo.$ ", +".OOOOOOO@ooo.$ ", +".O%............&", +".O&*=-;:>,<1231.", +".+.4*=-;:>,<12$.", +"..564*=-;:>,<1. ", +".@O764*=-;:>,<. ", +".89O764*=-;:>$$ ", +"0qw9O764*=-;:. ", +"0............. " +}; diff --git a/3rdparty/wxWidgets/art/down.xpm b/3rdparty/wxWidgets/art/down.xpm index a3a9f1cf2b..1f9cf29373 100644 --- a/3rdparty/wxWidgets/art/down.xpm +++ b/3rdparty/wxWidgets/art/down.xpm @@ -1,21 +1,21 @@ -/* XPM */ -static const char * down_xpm[] = { -"16 15 3 1", -" c None", -". c Black", -"X c Gray100", -" ", -" ...... ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" ....XXXX.... ", -" .XXXXXXXX. ", -" .XXXXXX. ", -" .XXXX. ", -" .XX. ", -" .. ", -" "}; +/* XPM */ +static const char * down_xpm[] = { +"16 15 3 1", +" c None", +". c Black", +"X c Gray100", +" ", +" ...... ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" ....XXXX.... ", +" .XXXXXXXX. ", +" .XXXXXX. ", +" .XXXX. ", +" .XX. ", +" .. ", +" "}; diff --git a/3rdparty/wxWidgets/art/exefile.xpm b/3rdparty/wxWidgets/art/exefile.xpm index 50db9a10c7..7ecdec3e7b 100644 --- a/3rdparty/wxWidgets/art/exefile.xpm +++ b/3rdparty/wxWidgets/art/exefile.xpm @@ -1,73 +1,73 @@ -/* XPM */ -static const char * exefile_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 16 51 1", -"% c #E8E8EC", -"= c #E8E8ED", -"z c #CACAD4", -"8 c #D9D9E1", -"p c #D2D2DA", -"u c #E1E1E7", -"a c #D2D2DB", -"< c #E9E9ED", -"q c #DADAE1", -"+ c #F1F1F4", -"g c #D3D3DB", -"1 c #E2E2E8", -"x c #D3D3DC", -"5 c #00A5FF", -"$ c #EAEAEE", -"4 c #DBDBE2", -"h c #CCCCD6", -"y c #D4D4DC", -"r c #E3E3E9", -"d c #D4D4DD", -"7 c #DCDCE2", -": c #EBEBEF", -"0 c #DCDCE3", -" c None", -"O c #F3F3F5", -"> c #E4E4E9", -"& c #F3F3F6", -"j c #D5D5DD", -"6 c #E4E4EA", -". c #C6C6D5", -"# c #ECECF0", -"f c #CECED7", -"l c #CECED8", -"e c #D6D6DE", -"; c #EDEDF0", -"3 c #DEDEE4", -", c #EDEDF1", -"c c #CFCFD8", -"o c #F5F5F7", -"- c #E6E6EB", -"w c #D7D7DF", -"v c #C8C8D3", -"i c #DFDFE5", -"@ c #EEEEF2", -"s c #D0D0D9", -"X c #9494AD", -"9 c #D8D8DF", -"t c #D8D8E0", -"* c #EFEFF2", -"2 c #E0E0E6", -"k c #D1D1DA", -/* pixels */ -" ........X ", -" .oO+@#$%XX ", -" .&+*#$=-XXX ", -" .+*;:=->XXXX ", -" .*,:<->1234X ", -" .,5:5612378X ", -" 5,5559530qwX ", -" 55555550q9eX ", -" 5555r5555teyX ", -" 55rui559eypX ", -" 5555i5555yasX ", -" 5555555dasfX ", -" 5355595gsfhX ", -" .3595jgklhzX ", -" .0qwjxkchzvX ", -" XXXXXXXXXXXX " -}; +/* XPM */ +static const char * exefile_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 16 51 1", +"% c #E8E8EC", +"= c #E8E8ED", +"z c #CACAD4", +"8 c #D9D9E1", +"p c #D2D2DA", +"u c #E1E1E7", +"a c #D2D2DB", +"< c #E9E9ED", +"q c #DADAE1", +"+ c #F1F1F4", +"g c #D3D3DB", +"1 c #E2E2E8", +"x c #D3D3DC", +"5 c #00A5FF", +"$ c #EAEAEE", +"4 c #DBDBE2", +"h c #CCCCD6", +"y c #D4D4DC", +"r c #E3E3E9", +"d c #D4D4DD", +"7 c #DCDCE2", +": c #EBEBEF", +"0 c #DCDCE3", +" c None", +"O c #F3F3F5", +"> c #E4E4E9", +"& c #F3F3F6", +"j c #D5D5DD", +"6 c #E4E4EA", +". c #C6C6D5", +"# c #ECECF0", +"f c #CECED7", +"l c #CECED8", +"e c #D6D6DE", +"; c #EDEDF0", +"3 c #DEDEE4", +", c #EDEDF1", +"c c #CFCFD8", +"o c #F5F5F7", +"- c #E6E6EB", +"w c #D7D7DF", +"v c #C8C8D3", +"i c #DFDFE5", +"@ c #EEEEF2", +"s c #D0D0D9", +"X c #9494AD", +"9 c #D8D8DF", +"t c #D8D8E0", +"* c #EFEFF2", +"2 c #E0E0E6", +"k c #D1D1DA", +/* pixels */ +" ........X ", +" .oO+@#$%XX ", +" .&+*#$=-XXX ", +" .+*;:=->XXXX ", +" .*,:<->1234X ", +" .,5:5612378X ", +" 5,5559530qwX ", +" 55555550q9eX ", +" 5555r5555teyX ", +" 55rui559eypX ", +" 5555i5555yasX ", +" 5555555dasfX ", +" 5355595gsfhX ", +" .3595jgklhzX ", +" .0qwjxkchzvX ", +" XXXXXXXXXXXX " +}; diff --git a/3rdparty/wxWidgets/art/fileopen.xpm b/3rdparty/wxWidgets/art/fileopen.xpm index 59a95618d3..9cf25ccc5b 100644 --- a/3rdparty/wxWidgets/art/fileopen.xpm +++ b/3rdparty/wxWidgets/art/fileopen.xpm @@ -1,57 +1,57 @@ -/* XPM */ -static const char * fileopen_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 36 1", -"6 c #9BACC2", -"< c #9AEA53", -"9 c #94A5BD", -"5 c #839CB5", -"; c #4D7492", -". c #376485", -"$ c #7F99B4", -"r c #D1D9E5", -"7 c #EAEDF3", -"@ c #CAD2DC", -"% c #718BA7", -"t c #BECAD9", -"& c #65839D", -"0 c #DCE2EA", -"4 c #F5F6F7", -"w c #597B9A", -"O c #8DA0B9", -" c None", -"+ c #467291", -"u c #305F81", -"= c #B4C4D3", -"# c #CAE2AA", -"1 c #FAFCFE", -"3 c #A8B6CA", -"q c #E4E9ED", -"8 c #EEF1F3", -"X c #215579", -"2 c #7F97B0", -": c #B3BFD1", -"y c #7A90AC", -", c #C2CBDB", -"- c #ADD668", -"* c #B6D791", -"e c #CAD6E1", -"o c #DFF0D0", -"> c #BBC4D6", -/* pixels */ -" ", -" .... ", -"XXXXX .oo. ", -"XOOOO+@.#o. ", -"XOOOO$%&.*oXXX ", -"XOOOOOOO.*oX=X ", -"XOXXXX...-oXXXX;", -"XOX:>,.<<<<,.<<>.>.X0q7; ", -"Xw2O963:>>er0t; ", -"X&y2O963:>,er; ", -"uXXXXXXXXXXXX; ", -" " -}; +/* XPM */ +static const char * fileopen_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 36 1", +"6 c #9BACC2", +"< c #9AEA53", +"9 c #94A5BD", +"5 c #839CB5", +"; c #4D7492", +". c #376485", +"$ c #7F99B4", +"r c #D1D9E5", +"7 c #EAEDF3", +"@ c #CAD2DC", +"% c #718BA7", +"t c #BECAD9", +"& c #65839D", +"0 c #DCE2EA", +"4 c #F5F6F7", +"w c #597B9A", +"O c #8DA0B9", +" c None", +"+ c #467291", +"u c #305F81", +"= c #B4C4D3", +"# c #CAE2AA", +"1 c #FAFCFE", +"3 c #A8B6CA", +"q c #E4E9ED", +"8 c #EEF1F3", +"X c #215579", +"2 c #7F97B0", +": c #B3BFD1", +"y c #7A90AC", +", c #C2CBDB", +"- c #ADD668", +"* c #B6D791", +"e c #CAD6E1", +"o c #DFF0D0", +"> c #BBC4D6", +/* pixels */ +" ", +" .... ", +"XXXXX .oo. ", +"XOOOO+@.#o. ", +"XOOOO$%&.*oXXX ", +"XOOOOOOO.*oX=X ", +"XOXXXX...-oXXXX;", +"XOX:>,.<<<<,.<<>.>.X0q7; ", +"Xw2O963:>>er0t; ", +"X&y2O963:>,er; ", +"uXXXXXXXXXXXX; ", +" " +}; diff --git a/3rdparty/wxWidgets/art/filesave.xpm b/3rdparty/wxWidgets/art/filesave.xpm index 2e20ee2938..04b7539e28 100644 --- a/3rdparty/wxWidgets/art/filesave.xpm +++ b/3rdparty/wxWidgets/art/filesave.xpm @@ -1,42 +1,42 @@ -/* XPM */ -static const char * filesave_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 21 1", -"O c #FFFFFF", -"> c #D5D6D8", -"; c #446A8C", -"1 c #CAD2DC", -": c #C0C7D1", -" c #5F666D", -"% c #A5B0BA", -"o c #65839D", -", c #DCE2EA", -"< c #C3C5C8", -"- c #E1E6EE", -"* c #C6CCD3", -". c None", -"$ c #305F81", -"2 c #D6DFE7", -"= c #D2D9E0", -"& c #B7BFC7", -"X c #1B4467", -"# c #BCBDBE", -"@ c #7A90AC", -"+ c #5D7C93", -/* pixels */ -" .", -" XoOOOOOOOOO+X .", -" @oO#######O+@ .", -" @oOOOOOOOOO+@ .", -" @oO#######O+@ .", -" @oOOOOOOOOO+@ .", -" @@+++++++++@@ .", -" @@@@@@@@@@@@@ .", -" @@@$$$$$$$$@@ .", -" @@$%%%&*=-O$@ .", -" @@$%X;;*=-O$@ .", -" @@$%X;;:>,O$@ .", -" @@$%X;;<12O$@ .", -" @@$<<2OOOOO$@ .", -". .." -}; +/* XPM */ +static const char * filesave_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 21 1", +"O c #FFFFFF", +"> c #D5D6D8", +"; c #446A8C", +"1 c #CAD2DC", +": c #C0C7D1", +" c #5F666D", +"% c #A5B0BA", +"o c #65839D", +", c #DCE2EA", +"< c #C3C5C8", +"- c #E1E6EE", +"* c #C6CCD3", +". c None", +"$ c #305F81", +"2 c #D6DFE7", +"= c #D2D9E0", +"& c #B7BFC7", +"X c #1B4467", +"# c #BCBDBE", +"@ c #7A90AC", +"+ c #5D7C93", +/* pixels */ +" .", +" XoOOOOOOOOO+X .", +" @oO#######O+@ .", +" @oOOOOOOOOO+@ .", +" @oO#######O+@ .", +" @oOOOOOOOOO+@ .", +" @@+++++++++@@ .", +" @@@@@@@@@@@@@ .", +" @@@$$$$$$$$@@ .", +" @@$%%%&*=-O$@ .", +" @@$%X;;*=-O$@ .", +" @@$%X;;:>,O$@ .", +" @@$%X;;<12O$@ .", +" @@$<<2OOOOO$@ .", +". .." +}; diff --git a/3rdparty/wxWidgets/art/filesaveas.xpm b/3rdparty/wxWidgets/art/filesaveas.xpm index d4e90bc3d2..3c45bc808d 100644 --- a/3rdparty/wxWidgets/art/filesaveas.xpm +++ b/3rdparty/wxWidgets/art/filesaveas.xpm @@ -1,44 +1,44 @@ -/* XPM */ -static const char * filesaveas_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 23 1", -"X c Black", -"+ c #FFFFFF", -"< c #D5D6D8", -"> c #446A8C", -"3 c #CAD2DC", -", c #C0C7D1", -" c #5F666D", -"* c #A5B0BA", -"O c #65839D", -"1 c #DCE2EA", -"2 c #C3C5C8", -": c #E1E6EE", -". c #FFFF00", -"- c #C6CCD3", -"@ c None", -"& c #305F81", -"4 c #D6DFE7", -"; c #D2D9E0", -"= c #B7BFC7", -"o c #1B4467", -"$ c #BCBDBE", -"# c #7A90AC", -"% c #5D7C93", -/* pixels */ -" .X .XX.", -" oO+++++++.X.X.@", -" #O+$$$$$XX...XX", -" #O++++++.......", -" #O+$$$$$XX...XX", -" #O+++++++.X.X.@", -" ##%%%%%%.X%.X .", -" ############# @", -" ###&&&&&&&&## @", -" ##&***=-;:+&# @", -" ##&*o>>-;:+&# @", -" ##&*o>>,<1+&# @", -" ##&*o>>234+&# @", -" ##&224+++++&# @", -"@ @@" -}; +/* XPM */ +static const char * filesaveas_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 23 1", +"X c Black", +"+ c #FFFFFF", +"< c #D5D6D8", +"> c #446A8C", +"3 c #CAD2DC", +", c #C0C7D1", +" c #5F666D", +"* c #A5B0BA", +"O c #65839D", +"1 c #DCE2EA", +"2 c #C3C5C8", +": c #E1E6EE", +". c #FFFF00", +"- c #C6CCD3", +"@ c None", +"& c #305F81", +"4 c #D6DFE7", +"; c #D2D9E0", +"= c #B7BFC7", +"o c #1B4467", +"$ c #BCBDBE", +"# c #7A90AC", +"% c #5D7C93", +/* pixels */ +" .X .XX.", +" oO+++++++.X.X.@", +" #O+$$$$$XX...XX", +" #O++++++.......", +" #O+$$$$$XX...XX", +" #O+++++++.X.X.@", +" ##%%%%%%.X%.X .", +" ############# @", +" ###&&&&&&&&## @", +" ##&***=-;:+&# @", +" ##&*o>>-;:+&# @", +" ##&*o>>,<1+&# @", +" ##&*o>>234+&# @", +" ##&224+++++&# @", +"@ @@" +}; diff --git a/3rdparty/wxWidgets/art/find.xpm b/3rdparty/wxWidgets/art/find.xpm index c4530b24e9..51544e98b8 100644 --- a/3rdparty/wxWidgets/art/find.xpm +++ b/3rdparty/wxWidgets/art/find.xpm @@ -1,62 +1,62 @@ -/* XPM */ -static const char * find_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 41 1", -"y c #A06959", -"9 c #A7DAF2", -"$ c #B5CAD7", -"> c #35B4E1", -"t c #6B98B8", -"w c #B6E0F4", -"q c #AEC9D7", -"1 c #5A89A6", -"+ c #98B3C6", -"4 c #EAF6FC", -"3 c #DEF1FA", -"= c #4CBCE3", -"d c #DB916B", -"X c #85A7BC", -"s c #D8BCA4", -"o c #749BB4", -"e c #BCD9EF", -"* c #62B4DD", -"< c #91D2EF", -"a c #E6DED2", -"0 c #E9F4FB", -" c None", -"@ c #A0BACB", -"O c #AABFCD", -"i c #6591AE", -": c #B9CBD5", -"- c #71C5E7", -"5 c #D3ECF8", -"% c #81A3B9", -"6 c #8AD0EE", -"8 c #FDFDFE", -"p c #8EA9BC", -"r c #B6D5EE", -", c #81CCEB", -". c #ACC4D3", -"; c #AFD1DE", -"7 c #EFF8FC", -"u c #C2CBDB", -"# c #C0D1DC", -"2 c #CAD6E1", -"& c #8FB0C3", -/* pixels */ -" .XooXO ", -" +@###$+% ", -" .&#*==-;@@ ", -" o:*>,<--:X ", -" 12>-345-#% ", -" 12>678392% ", -" %$*,3059q& ", -" @Oq,wwer@@ ", -" t@q22q&+ ", -" yyui+%o%p ", -" yasy ", -" yasdy ", -" yasdy ", -" ysdy ", -" yy " -}; +/* XPM */ +static const char * find_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 41 1", +"y c #A06959", +"9 c #A7DAF2", +"$ c #B5CAD7", +"> c #35B4E1", +"t c #6B98B8", +"w c #B6E0F4", +"q c #AEC9D7", +"1 c #5A89A6", +"+ c #98B3C6", +"4 c #EAF6FC", +"3 c #DEF1FA", +"= c #4CBCE3", +"d c #DB916B", +"X c #85A7BC", +"s c #D8BCA4", +"o c #749BB4", +"e c #BCD9EF", +"* c #62B4DD", +"< c #91D2EF", +"a c #E6DED2", +"0 c #E9F4FB", +" c None", +"@ c #A0BACB", +"O c #AABFCD", +"i c #6591AE", +": c #B9CBD5", +"- c #71C5E7", +"5 c #D3ECF8", +"% c #81A3B9", +"6 c #8AD0EE", +"8 c #FDFDFE", +"p c #8EA9BC", +"r c #B6D5EE", +", c #81CCEB", +". c #ACC4D3", +"; c #AFD1DE", +"7 c #EFF8FC", +"u c #C2CBDB", +"# c #C0D1DC", +"2 c #CAD6E1", +"& c #8FB0C3", +/* pixels */ +" .XooXO ", +" +@###$+% ", +" .&#*==-;@@ ", +" o:*>,<--:X ", +" 12>-345-#% ", +" 12>678392% ", +" %$*,3059q& ", +" @Oq,wwer@@ ", +" t@q22q&+ ", +" yyui+%o%p ", +" yasy ", +" yasdy ", +" yasdy ", +" ysdy ", +" yy " +}; diff --git a/3rdparty/wxWidgets/art/findrepl.xpm b/3rdparty/wxWidgets/art/findrepl.xpm index a1f5eda8e0..33b083b5fd 100644 --- a/3rdparty/wxWidgets/art/findrepl.xpm +++ b/3rdparty/wxWidgets/art/findrepl.xpm @@ -1,63 +1,63 @@ -/* XPM */ -static const char * findrepl_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 42 1", -"y c #A06959", -"9 c #A7DAF2", -"$ c #B5CAD7", -"> c #35B4E1", -"t c #6B98B8", -"w c #B6E0F4", -"q c #AEC9D7", -"1 c #5A89A6", -"+ c #98B3C6", -"4 c #EAF6FC", -"d c #008000", -"3 c #DEF1FA", -"= c #4CBCE3", -"f c #DB916B", -"X c #85A7BC", -"s c #D8BCA4", -"o c #749BB4", -"e c #BCD9EF", -"* c #62B4DD", -"< c #91D2EF", -"a c #E6DED2", -"0 c #E9F4FB", -" c None", -"@ c #A0BACB", -"O c #AABFCD", -"i c #6591AE", -": c #B9CBD5", -"- c #71C5E7", -"5 c #D3ECF8", -"% c #81A3B9", -"6 c #8AD0EE", -"8 c #FDFDFE", -"p c #8EA9BC", -"r c #B6D5EE", -", c #81CCEB", -". c #ACC4D3", -"; c #AFD1DE", -"7 c #EFF8FC", -"u c #C2CBDB", -"# c #C0D1DC", -"2 c #CAD6E1", -"& c #8FB0C3", -/* pixels */ -" .XooXO ", -" +@###$+% ", -" .&#*==-;@@ ", -" o:*>,<--:X ", -" 12>-345-#% ", -" 12>678392% ", -" %$*,3059q& ", -" @Oq,wwer@@ ", -" t@q22q&+ ", -" yyui+%o%p ", -" yasy d d ", -" yasfy dd dd ", -"yasfy ddddddddd", -"ysfy dd dd ", -" yy d d " -}; +/* XPM */ +static const char * findrepl_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 42 1", +"y c #A06959", +"9 c #A7DAF2", +"$ c #B5CAD7", +"> c #35B4E1", +"t c #6B98B8", +"w c #B6E0F4", +"q c #AEC9D7", +"1 c #5A89A6", +"+ c #98B3C6", +"4 c #EAF6FC", +"d c #008000", +"3 c #DEF1FA", +"= c #4CBCE3", +"f c #DB916B", +"X c #85A7BC", +"s c #D8BCA4", +"o c #749BB4", +"e c #BCD9EF", +"* c #62B4DD", +"< c #91D2EF", +"a c #E6DED2", +"0 c #E9F4FB", +" c None", +"@ c #A0BACB", +"O c #AABFCD", +"i c #6591AE", +": c #B9CBD5", +"- c #71C5E7", +"5 c #D3ECF8", +"% c #81A3B9", +"6 c #8AD0EE", +"8 c #FDFDFE", +"p c #8EA9BC", +"r c #B6D5EE", +", c #81CCEB", +". c #ACC4D3", +"; c #AFD1DE", +"7 c #EFF8FC", +"u c #C2CBDB", +"# c #C0D1DC", +"2 c #CAD6E1", +"& c #8FB0C3", +/* pixels */ +" .XooXO ", +" +@###$+% ", +" .&#*==-;@@ ", +" o:*>,<--:X ", +" 12>-345-#% ", +" 12>678392% ", +" %$*,3059q& ", +" @Oq,wwer@@ ", +" t@q22q&+ ", +" yyui+%o%p ", +" yasy d d ", +" yasfy dd dd ", +"yasfy ddddddddd", +"ysfy dd dd ", +" yy d d " +}; diff --git a/3rdparty/wxWidgets/art/floppy.xpm b/3rdparty/wxWidgets/art/floppy.xpm index 949d5a9070..4d6b7d8fe3 100644 --- a/3rdparty/wxWidgets/art/floppy.xpm +++ b/3rdparty/wxWidgets/art/floppy.xpm @@ -1,39 +1,39 @@ -/* XPM */ -static const char * floppy_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 18 1", -"& c #E3E4E6", -"+ c #FFFFFF", -". c #446A8C", -"o c #697787", -"> c #5F666D", -"* c #B2B3B3", -" c None", -", c #4B4C4D", -"= c #DCDBDA", -"$ c #1B4467", -": c #E4E9ED", -"@ c #979BA0", -"X c #203646", -"O c #215579", -"- c #545B63", -"; c #636465", -"# c #CAD6E1", -"% c #7F8286", -/* pixels */ -" .XoooooooXO ", -" .o+++++++.O ", -" .o+OOOOO+.O ", -" .o+++++++.O ", -" .o@@@@@@@.O ", -" ..........O ", -" ..#+++++#.O ", -" ..+$O+++#.O ", -" ..+$O+++#.O ", -" %&.........*% ", -"%=+++++++++++&% ", -"--------------; ", -"-:::::::::::::- ", -"-:X:XXXXXXXXX:> ", -"-*************, " -}; +/* XPM */ +static const char * floppy_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 18 1", +"& c #E3E4E6", +"+ c #FFFFFF", +". c #446A8C", +"o c #697787", +"> c #5F666D", +"* c #B2B3B3", +" c None", +", c #4B4C4D", +"= c #DCDBDA", +"$ c #1B4467", +": c #E4E9ED", +"@ c #979BA0", +"X c #203646", +"O c #215579", +"- c #545B63", +"; c #636465", +"# c #CAD6E1", +"% c #7F8286", +/* pixels */ +" .XoooooooXO ", +" .o+++++++.O ", +" .o+OOOOO+.O ", +" .o+++++++.O ", +" .o@@@@@@@.O ", +" ..........O ", +" ..#+++++#.O ", +" ..+$O+++#.O ", +" ..+$O+++#.O ", +" %&.........*% ", +"%=+++++++++++&% ", +"--------------; ", +"-:::::::::::::- ", +"-:X:XXXXXXXXX:> ", +"-*************, " +}; diff --git a/3rdparty/wxWidgets/art/folder.xpm b/3rdparty/wxWidgets/art/folder.xpm index 57fa2ae633..60a4207884 100644 --- a/3rdparty/wxWidgets/art/folder.xpm +++ b/3rdparty/wxWidgets/art/folder.xpm @@ -1,43 +1,43 @@ -/* XPM */ -static const char * folder_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 22 1", -"> c #9BACC2", -". c #547897", -"1 c #7F99B4", -"X c #D1D9E5", -"< c #EAEDF3", -"+ c #CAD2DC", -"3 c #718BA7", -"O c #BECAD9", -"$ c #E1E6EE", -"* c #F5F6F7", -", c #8DA0B9", -" c None", -"# c #D6DFE7", -"@ c #D2D9E0", -"- c #FAFCFE", -"; c #ADBACE", -"& c #EEF1F3", -"= c #F8F9FA", -"o c #B3BFD1", -"2 c #7A90AC", -": c #A2B3C5", -"% c #E5EAF1", -/* pixels */ -" ", -" ..... ", -" .XXXX. ", -" ............. ", -" .oO+@#$%&*=-. ", -" .oO+@#$%&*=-. ", -" .;oO+X#$%&*=. ", -" .:;oO+X#$%&*. ", -" .>:;oO+X#$%&. ", -" .,>:;oO+X#$<. ", -" .1,>:;oO+X#$. ", -" .21,>:;oO+X#. ", -" .321,>:;oO+X. ", -" ............. ", -" " -}; +/* XPM */ +static const char * folder_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 22 1", +"> c #9BACC2", +". c #547897", +"1 c #7F99B4", +"X c #D1D9E5", +"< c #EAEDF3", +"+ c #CAD2DC", +"3 c #718BA7", +"O c #BECAD9", +"$ c #E1E6EE", +"* c #F5F6F7", +", c #8DA0B9", +" c None", +"# c #D6DFE7", +"@ c #D2D9E0", +"- c #FAFCFE", +"; c #ADBACE", +"& c #EEF1F3", +"= c #F8F9FA", +"o c #B3BFD1", +"2 c #7A90AC", +": c #A2B3C5", +"% c #E5EAF1", +/* pixels */ +" ", +" ..... ", +" .XXXX. ", +" ............. ", +" .oO+@#$%&*=-. ", +" .oO+@#$%&*=-. ", +" .;oO+X#$%&*=. ", +" .:;oO+X#$%&*. ", +" .>:;oO+X#$%&. ", +" .,>:;oO+X#$<. ", +" .1,>:;oO+X#$. ", +" .21,>:;oO+X#. ", +" .321,>:;oO+X. ", +" ............. ", +" " +}; diff --git a/3rdparty/wxWidgets/art/folder_open.xpm b/3rdparty/wxWidgets/art/folder_open.xpm index a27756f970..60b1e65add 100644 --- a/3rdparty/wxWidgets/art/folder_open.xpm +++ b/3rdparty/wxWidgets/art/folder_open.xpm @@ -1,52 +1,52 @@ -/* XPM */ -static const char * folder_open_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 31 1", -"6 c #9BACC2", -"w c #547B99", -"5 c #94A5BD", -". c #376485", -"; c #F1F4F7", -"o c #7F99B4", -"2 c #D1D9E5", -"- c #EAEDF3", -"O c #718BA7", -"0 c #65839D", -"* c #DCE2EA", -": c #F5F6F7", -"7 c #597B9A", -"X c #8DA0B9", -" c None", -"+ c #467291", -"q c #305F81", -"& c #D6DFE7", -"3 c #6A89A2", -"1 c #A8B6CA", -"= c #E4E9ED", -"> c #F8F9FA", -", c #FDFDFE", -"9 c #215579", -"8 c #7F97B0", -"@ c #B3BFD1", -"< c #7A90AC", -"$ c #C2CBDB", -"4 c #A2B3C5", -"% c #CAD6E1", -"# c #BBC4D6", -/* pixels */ -" ", -"..... ", -".XXXo. ", -".XXXXO........ ", -".XXXXXXXXXXXX. ", -".XXXXXXXXXXXX. ", -".X++++++++++++++", -".X+@#$%&*=-;:>,+", -".<.1@#$%2*=-;:23", -"..X41@#$%2*=-;3 ", -"..X561@#$%2*=-3 ", -".78X561@#$%2*%3 ", -"90<8X561@#$%23 ", -"q++++++++++++w ", -" " -}; +/* XPM */ +static const char * folder_open_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 31 1", +"6 c #9BACC2", +"w c #547B99", +"5 c #94A5BD", +". c #376485", +"; c #F1F4F7", +"o c #7F99B4", +"2 c #D1D9E5", +"- c #EAEDF3", +"O c #718BA7", +"0 c #65839D", +"* c #DCE2EA", +": c #F5F6F7", +"7 c #597B9A", +"X c #8DA0B9", +" c None", +"+ c #467291", +"q c #305F81", +"& c #D6DFE7", +"3 c #6A89A2", +"1 c #A8B6CA", +"= c #E4E9ED", +"> c #F8F9FA", +", c #FDFDFE", +"9 c #215579", +"8 c #7F97B0", +"@ c #B3BFD1", +"< c #7A90AC", +"$ c #C2CBDB", +"4 c #A2B3C5", +"% c #CAD6E1", +"# c #BBC4D6", +/* pixels */ +" ", +"..... ", +".XXXo. ", +".XXXXO........ ", +".XXXXXXXXXXXX. ", +".XXXXXXXXXXXX. ", +".X++++++++++++++", +".X+@#$%&*=-;:>,+", +".<.1@#$%2*=-;:23", +"..X41@#$%2*=-;3 ", +"..X561@#$%2*=-3 ", +".78X561@#$%2*%3 ", +"90<8X561@#$%23 ", +"q++++++++++++w ", +" " +}; diff --git a/3rdparty/wxWidgets/art/forward.xpm b/3rdparty/wxWidgets/art/forward.xpm index 493c44876c..56df17bccf 100644 --- a/3rdparty/wxWidgets/art/forward.xpm +++ b/3rdparty/wxWidgets/art/forward.xpm @@ -1,21 +1,21 @@ -/* XPM */ -static const char * forward_xpm[] = { -"16 15 3 1", -" c None", -". c Black", -"X c Gray100", -" ", -" ", -" . ", -" .. ", -" .X. ", -" ........XX. ", -" .XXXXXXXXXX. ", -" .XXXXXXXXXXX. ", -" .XXXXXXXXXXX. ", -" .XXXXXXXXXX. ", -" ........XX. ", -" .X. ", -" .. ", -" . ", -" "}; +/* XPM */ +static const char * forward_xpm[] = { +"16 15 3 1", +" c None", +". c Black", +"X c Gray100", +" ", +" ", +" . ", +" .. ", +" .X. ", +" ........XX. ", +" .XXXXXXXXXX. ", +" .XXXXXXXXXXX. ", +" .XXXXXXXXXXX. ", +" .XXXXXXXXXX. ", +" ........XX. ", +" .X. ", +" .. ", +" . ", +" "}; diff --git a/3rdparty/wxWidgets/art/gtk/error.xpm b/3rdparty/wxWidgets/art/gtk/error.xpm index 37b2aac857..956e3549e9 100644 --- a/3rdparty/wxWidgets/art/gtk/error.xpm +++ b/3rdparty/wxWidgets/art/gtk/error.xpm @@ -1,58 +1,58 @@ -/* XPM */ -static const char * error_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 4 1", -" c None", -"X c #242424", -"o c #DCDF00", -". c #C00000", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ..... ", -" ............. ", -" ................. ", -" ................... ", -" ....................... ", -" ......................... ", -" ........................... ", -" ...........................X ", -" .............................X ", -" ............................... ", -" ...............................X ", -" .................................X ", -" .................................X ", -" .................................XX ", -" ...ooooooooooooooooooooooooooo...XX ", -" ....ooooooooooooooooooooooooooo....X ", -" ....ooooooooooooooooooooooooooo....X ", -" ....ooooooooooooooooooooooooooo....XX ", -" ....ooooooooooooooooooooooooooo....XX ", -" ....ooooooooooooooooooooooooooo....XX ", -" ...ooooooooooooooooooooooooooo...XXX ", -" ...ooooooooooooooooooooooooooo...XXX ", -" .................................XX ", -" .................................XX ", -" ...............................XXX ", -" ...............................XXX ", -" .............................XXX ", -" ...........................XXXX ", -" ...........................XXX ", -" .........................XXX ", -" .......................XXXX ", -" X...................XXXXX ", -" X.................XXXXX ", -" X.............XXXXX ", -" XXXX.....XXXXXXXX ", -" XXXXXXXXXXXXX ", -" XXXXX ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char * error_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 4 1", +" c None", +"X c #242424", +"o c #DCDF00", +". c #C00000", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ..... ", +" ............. ", +" ................. ", +" ................... ", +" ....................... ", +" ......................... ", +" ........................... ", +" ...........................X ", +" .............................X ", +" ............................... ", +" ...............................X ", +" .................................X ", +" .................................X ", +" .................................XX ", +" ...ooooooooooooooooooooooooooo...XX ", +" ....ooooooooooooooooooooooooooo....X ", +" ....ooooooooooooooooooooooooooo....X ", +" ....ooooooooooooooooooooooooooo....XX ", +" ....ooooooooooooooooooooooooooo....XX ", +" ....ooooooooooooooooooooooooooo....XX ", +" ...ooooooooooooooooooooooooooo...XXX ", +" ...ooooooooooooooooooooooooooo...XXX ", +" .................................XX ", +" .................................XX ", +" ...............................XXX ", +" ...............................XXX ", +" .............................XXX ", +" ...........................XXXX ", +" ...........................XXX ", +" .........................XXX ", +" .......................XXXX ", +" X...................XXXXX ", +" X.................XXXXX ", +" X.............XXXXX ", +" XXXX.....XXXXXXXX ", +" XXXXXXXXXXXXX ", +" XXXXX ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxWidgets/art/gtk/info.xpm b/3rdparty/wxWidgets/art/gtk/info.xpm index 73dd0fc30a..930b639cc3 100644 --- a/3rdparty/wxWidgets/art/gtk/info.xpm +++ b/3rdparty/wxWidgets/art/gtk/info.xpm @@ -1,63 +1,63 @@ -/* XPM */ -static const char * info_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 9 1", -"$ c Black", -"O c #FFFFFF", -"@ c #808080", -"+ c #000080", -"o c #E8EB01", -" c None", -"X c #FFFF40", -"# c #C0C0C0", -". c #ABAD01", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ..... ", -" ..XXXXX.. ", -" ..XXXXXXXXo.. ", -" .XXXOXXXXXXXoo. ", -" .XOOXXX+XXXXXo. ", -" .XOOOXX+++XXXXoo. ", -" .XOOXXX+++XXXXXo. ", -" .XOOOXXX+++XXXXXXo. ", -" .XOOXXXX+++XXXXXXo. ", -" .XXXXXXX+++XXXXXXX. ", -" .XXXXXXX+++XXXXXXo. ", -" .XXXXXXX+++XXXXXoo. ", -" .XXXXXX+++XXXXXo. ", -" .XXXXXXX+XXXXXXo. ", -" .XXXXXXXXXXXXo. ", -" .XXXXX+++XXXoo. ", -" .XXXX+++XXoo. ", -" .XXXXXXXXo. ", -" ..XXXXXXo.. ", -" .XXXXXo.. ", -" @#######@ ", -" @@@@@@@@@ ", -" @#######@ ", -" @@@@@@@@@ ", -" @#######@ ", -" @@@@@@@ ", -" ### ", -" $$$ ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char * info_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 9 1", +"$ c Black", +"O c #FFFFFF", +"@ c #808080", +"+ c #000080", +"o c #E8EB01", +" c None", +"X c #FFFF40", +"# c #C0C0C0", +". c #ABAD01", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ..... ", +" ..XXXXX.. ", +" ..XXXXXXXXo.. ", +" .XXXOXXXXXXXoo. ", +" .XOOXXX+XXXXXo. ", +" .XOOOXX+++XXXXoo. ", +" .XOOXXX+++XXXXXo. ", +" .XOOOXXX+++XXXXXXo. ", +" .XOOXXXX+++XXXXXXo. ", +" .XXXXXXX+++XXXXXXX. ", +" .XXXXXXX+++XXXXXXo. ", +" .XXXXXXX+++XXXXXoo. ", +" .XXXXXX+++XXXXXo. ", +" .XXXXXXX+XXXXXXo. ", +" .XXXXXXXXXXXXo. ", +" .XXXXX+++XXXoo. ", +" .XXXX+++XXoo. ", +" .XXXXXXXXo. ", +" ..XXXXXXo.. ", +" .XXXXXo.. ", +" @#######@ ", +" @@@@@@@@@ ", +" @#######@ ", +" @@@@@@@@@ ", +" @#######@ ", +" @@@@@@@ ", +" ### ", +" $$$ ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxWidgets/art/gtk/question.xpm b/3rdparty/wxWidgets/art/gtk/question.xpm index cdcc10f393..3ea9434c2f 100644 --- a/3rdparty/wxWidgets/art/gtk/question.xpm +++ b/3rdparty/wxWidgets/art/gtk/question.xpm @@ -1,75 +1,75 @@ -/* XPM */ -static const char * question_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 21 1", -". c Black", -"> c #696969", -"O c #1F1F00", -"+ c #181818", -"o c #F6F900", -"; c #3F3F00", -"$ c #111111", -" c None", -"& c #202020", -"X c #AAAA00", -"@ c #949400", -": c #303030", -"1 c #383838", -"% c #2A2A00", -", c #404040", -"= c #B4B400", -"- c #484848", -"# c #151500", -"< c #9F9F00", -"2 c #6A6A00", -"* c #353500", -/* pixels */ -" ", -" ", -" ", -" ", -" ......... ", -" ...XXXXXXX.. ", -" ..XXXXoooooXXXO+ ", -" ..XXooooooooooooX@.. ", -" ..XoooooooooooooooXX#. ", -" $%XoooooooooooooooooXX#. ", -" &.XoooooooXXXXXXooooooXX.. ", -" .XooooooXX.$...$XXoooooX*. ", -" $.XoooooX%.$ .*oooooo=.. ", -" .XooooooX.. -.XoooooX.. ", -" .XoooooX..+ .XoooooX;. ", -" ...XXXX..: .XoooooX;. ", -" ........ >.XoooooX;. ", -" +.XoooooX.. ", -" ,.Xoooooo<.. ", -" 1#XooooooXO.. ", -" &#XooooooX2.. ", -" $%XooooooXX.. ", -" $%XooooooXX.. ", -" $%XooooooXX.. ", -" &.XooooooXX.. ", -" .XooooooXX.. ", -" &.XoooooXX.. ", -" ..XooooXX.. ", -" ..XooooX... ", -" ..XXooXX..& ", -" ...XXXXX.. ", -" ........ ", -" ", -" ", -" ....... ", -" ..XXXXX.. ", -" ..XXoooXX.. ", -" ..XoooooX.. ", -" ..XoooooX.. ", -" ..XXoooXX.. ", -" ..XXXXX.. ", -" ....... ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char * question_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 21 1", +". c Black", +"> c #696969", +"O c #1F1F00", +"+ c #181818", +"o c #F6F900", +"; c #3F3F00", +"$ c #111111", +" c None", +"& c #202020", +"X c #AAAA00", +"@ c #949400", +": c #303030", +"1 c #383838", +"% c #2A2A00", +", c #404040", +"= c #B4B400", +"- c #484848", +"# c #151500", +"< c #9F9F00", +"2 c #6A6A00", +"* c #353500", +/* pixels */ +" ", +" ", +" ", +" ", +" ......... ", +" ...XXXXXXX.. ", +" ..XXXXoooooXXXO+ ", +" ..XXooooooooooooX@.. ", +" ..XoooooooooooooooXX#. ", +" $%XoooooooooooooooooXX#. ", +" &.XoooooooXXXXXXooooooXX.. ", +" .XooooooXX.$...$XXoooooX*. ", +" $.XoooooX%.$ .*oooooo=.. ", +" .XooooooX.. -.XoooooX.. ", +" .XoooooX..+ .XoooooX;. ", +" ...XXXX..: .XoooooX;. ", +" ........ >.XoooooX;. ", +" +.XoooooX.. ", +" ,.Xoooooo<.. ", +" 1#XooooooXO.. ", +" &#XooooooX2.. ", +" $%XooooooXX.. ", +" $%XooooooXX.. ", +" $%XooooooXX.. ", +" &.XooooooXX.. ", +" .XooooooXX.. ", +" &.XoooooXX.. ", +" ..XooooXX.. ", +" ..XooooX... ", +" ..XXooXX..& ", +" ...XXXXX.. ", +" ........ ", +" ", +" ", +" ....... ", +" ..XXXXX.. ", +" ..XXoooXX.. ", +" ..XoooooX.. ", +" ..XoooooX.. ", +" ..XXoooXX.. ", +" ..XXXXX.. ", +" ....... ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxWidgets/art/gtk/warning.xpm b/3rdparty/wxWidgets/art/gtk/warning.xpm index f3682a60c0..18135c81cb 100644 --- a/3rdparty/wxWidgets/art/gtk/warning.xpm +++ b/3rdparty/wxWidgets/art/gtk/warning.xpm @@ -1,63 +1,63 @@ -/* XPM */ -static const char * warning_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 9 1", -"@ c Black", -"o c #A6A800", -"+ c #8A8C00", -"$ c #B8BA00", -" c None", -"O c #6E7000", -"X c #DCDF00", -". c #C00000", -"# c #373800", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" . ", -" ... ", -" ... ", -" ..... ", -" ...X.. ", -" ..XXX.. ", -" ...XXX... ", -" ..XXXXX.. ", -" ..XXXXXX... ", -" ...XXoO+XX.. ", -" ..XXXO@#XXX.. ", -" ..XXXXO@#XXX... ", -" ...XXXXO@#XXXX.. ", -" ..XXXXXO@#XXXX... ", -" ...XXXXXo@OXXXXX.. ", -" ...XXXXXXo@OXXXXXX.. ", -" ..XXXXXXX$@OXXXXXX... ", -" ...XXXXXXXX@XXXXXXXX.. ", -" ...XXXXXXXXXXXXXXXXXX... ", -" ..XXXXXXXXXXOXXXXXXXXX.. ", -" ...XXXXXXXXXO@#XXXXXXXXX.. ", -" ..XXXXXXXXXXX#XXXXXXXXXX... ", -" ...XXXXXXXXXXXXXXXXXXXXXXX.. ", -" ...XXXXXXXXXXXXXXXXXXXXXXXX... ", -" .............................. ", -" .............................. ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char * warning_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 9 1", +"@ c Black", +"o c #A6A800", +"+ c #8A8C00", +"$ c #B8BA00", +" c None", +"O c #6E7000", +"X c #DCDF00", +". c #C00000", +"# c #373800", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . ", +" ... ", +" ... ", +" ..... ", +" ...X.. ", +" ..XXX.. ", +" ...XXX... ", +" ..XXXXX.. ", +" ..XXXXXX... ", +" ...XXoO+XX.. ", +" ..XXXO@#XXX.. ", +" ..XXXXO@#XXX... ", +" ...XXXXO@#XXXX.. ", +" ..XXXXXO@#XXXX... ", +" ...XXXXXo@OXXXXX.. ", +" ...XXXXXXo@OXXXXXX.. ", +" ..XXXXXXX$@OXXXXXX... ", +" ...XXXXXXXX@XXXXXXXX.. ", +" ...XXXXXXXXXXXXXXXXXX... ", +" ..XXXXXXXXXXOXXXXXXXXX.. ", +" ...XXXXXXXXXO@#XXXXXXXXX.. ", +" ..XXXXXXXXXXX#XXXXXXXXXX... ", +" ...XXXXXXXXXXXXXXXXXXXXXXX.. ", +" ...XXXXXXXXXXXXXXXXXXXXXXXX... ", +" .............................. ", +" .............................. ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxWidgets/art/harddisk.xpm b/3rdparty/wxWidgets/art/harddisk.xpm index 6c802e6be2..bdff0763a1 100644 --- a/3rdparty/wxWidgets/art/harddisk.xpm +++ b/3rdparty/wxWidgets/art/harddisk.xpm @@ -1,60 +1,60 @@ -/* XPM */ -static const char * harddisk_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 39 1", -"7 c #E3E4E6", -"4 c #FFFFFF", -"5 c #839CB5", -". c #547897", -"1 c #4D7492", -"@ c #376485", -"o c #7A92A3", -"u c #D1D9E5", -"y c #446A8C", -"i c #51B03D", -"> c #CAD2DC", -"O c #718BA7", -"2 c #65839D", -"6 c #DCE2EA", -"0 c #C3C5C8", -"9 c #F5F6F7", -": c #EBEBEC", -"< c #597B9A", -"t c #C6CCD3", -" c None", -"* c #DFE0E2", -"e c #467291", -"a c #526E8B", -", c #7393AB", -"p c #130A0B", -"# c #AABFCD", -"r c #B4C4D3", -"; c #CFCFD0", -"X c #6F90A6", -"+ c #6A89A2", -"- c #D2D3D4", -"= c #DCDBDA", -"w c #E4E9ED", -"q c #C6C8CA", -"% c #215579", -"$ c #E7E7E7", -"3 c #7F97B0", -"8 c #C0D1DC", -"& c #5D7C93", -/* pixels */ -" ", -" .XoooXO+@ ", -" #$$%%%%$$$X ", -" &$*==-;$$$& ", -" &:>+,<1234o5 ", -" ###+67;;78242 ", -" &4,49*0q*9we4. ", -" &4+49*,,*9wo4. ", -"&4%r,67;;782t%4.", -"&44468rrrr84444,", -"y11111111111111e", -"1uu1:::::::::::1", -"1uu1::::::::ip:1", -"auu&:::::::::::1", -"1111111111111111" -}; +/* XPM */ +static const char * harddisk_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 39 1", +"7 c #E3E4E6", +"4 c #FFFFFF", +"5 c #839CB5", +". c #547897", +"1 c #4D7492", +"@ c #376485", +"o c #7A92A3", +"u c #D1D9E5", +"y c #446A8C", +"i c #51B03D", +"> c #CAD2DC", +"O c #718BA7", +"2 c #65839D", +"6 c #DCE2EA", +"0 c #C3C5C8", +"9 c #F5F6F7", +": c #EBEBEC", +"< c #597B9A", +"t c #C6CCD3", +" c None", +"* c #DFE0E2", +"e c #467291", +"a c #526E8B", +", c #7393AB", +"p c #130A0B", +"# c #AABFCD", +"r c #B4C4D3", +"; c #CFCFD0", +"X c #6F90A6", +"+ c #6A89A2", +"- c #D2D3D4", +"= c #DCDBDA", +"w c #E4E9ED", +"q c #C6C8CA", +"% c #215579", +"$ c #E7E7E7", +"3 c #7F97B0", +"8 c #C0D1DC", +"& c #5D7C93", +/* pixels */ +" ", +" .XoooXO+@ ", +" #$$%%%%$$$X ", +" &$*==-;$$$& ", +" &:>+,<1234o5 ", +" ###+67;;78242 ", +" &4,49*0q*9we4. ", +" &4+49*,,*9wo4. ", +"&4%r,67;;782t%4.", +"&44468rrrr84444,", +"y11111111111111e", +"1uu1:::::::::::1", +"1uu1::::::::ip:1", +"auu&:::::::::::1", +"1111111111111111" +}; diff --git a/3rdparty/wxWidgets/art/helpicon.xpm b/3rdparty/wxWidgets/art/helpicon.xpm index 799ac894d3..6abce2c0dd 100644 --- a/3rdparty/wxWidgets/art/helpicon.xpm +++ b/3rdparty/wxWidgets/art/helpicon.xpm @@ -1,44 +1,44 @@ -/* XPM */ -static const char * helpicon_xpm[] = { -/* columns rows colors chars-per-pixel */ -"32 32 6 1", -" c Gray0", -". c Blue", -"X c #808080808080", -"o c #c0c0c0c0c0c0", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++XXXXXXXX+++++++++++++", -"++++++++XXXoOOOOOOoXXX++++++++++", -"++++++XXoOOOOOOOOOOOOoXX++++++++", -"+++++XoOOOOOOOOOOOOOOOOoX+++++++", -"++++XOOOOOOOOOOOOOOOOOOOO ++++++", -"+++XOOOOOOOo......oOOOOOOO +++++", -"++XOOOOOOOo.oOO....oOOOOOOO ++++", -"+XoOOOOOOO..OOOO....OOOOOOOo +++", -"+XOOOOOOOO....OO....OOOOOOOO X++", -"XoOOOOOOOO....Oo....OOOOOOOOo X+", -"XOOOOOOOOOo..oO....OOOOOOOOOO X+", -"XOOOOOOOOOOOOOo...OOOOOOOOOOO XX", -"XOOOOOOOOOOOOO...OOOOOOOOOOOO XX", -"XOOOOOOOOOOOOO..oOOOOOOOOOOOO XX", -"XOOOOOOOOOOOOO..OOOOOOOOOOOOO XX", -"XoOOOOOOOOOOOOOOOOOOOOOOOOOOo XX", -"+XOOOOOOOOOOOo..oOOOOOOOOOOO XXX", -"+XoOOOOOOOOOO....OOOOOOOOOOo XXX", -"++XOOOOOOOOOO....OOOOOOOOOO XXX+", -"+++ OOOOOOOOOo..oOOOOOOOOO XXXX+", -"++++ OOOOOOOOOOOOOOOOOOOO XXXX++", -"+++++ oOOOOOOOOOOOOOOOOo XXXX+++", -"++++++ oOOOOOOOOOOOOo XXXX++++", -"+++++++X oOOOOOOo XXXXX+++++", -"++++++++XXX oOOO XXXXXXX++++++", -"++++++++++XXXX OOO XXXXX++++++++", -"+++++++++++++X OOO XX+++++++++++", -"+++++++++++++++ OO XX+++++++++++", -"++++++++++++++++ O XX+++++++++++", -"+++++++++++++++++ XX+++++++++++", -"++++++++++++++++++XXX+++++++++++", -"+++++++++++++++++++XX+++++++++++" -}; +/* XPM */ +static const char * helpicon_xpm[] = { +/* columns rows colors chars-per-pixel */ +"32 32 6 1", +" c Gray0", +". c Blue", +"X c #808080808080", +"o c #c0c0c0c0c0c0", +"O c Gray100", +"+ c None", +/* pixels */ +"+++++++++++XXXXXXXX+++++++++++++", +"++++++++XXXoOOOOOOoXXX++++++++++", +"++++++XXoOOOOOOOOOOOOoXX++++++++", +"+++++XoOOOOOOOOOOOOOOOOoX+++++++", +"++++XOOOOOOOOOOOOOOOOOOOO ++++++", +"+++XOOOOOOOo......oOOOOOOO +++++", +"++XOOOOOOOo.oOO....oOOOOOOO ++++", +"+XoOOOOOOO..OOOO....OOOOOOOo +++", +"+XOOOOOOOO....OO....OOOOOOOO X++", +"XoOOOOOOOO....Oo....OOOOOOOOo X+", +"XOOOOOOOOOo..oO....OOOOOOOOOO X+", +"XOOOOOOOOOOOOOo...OOOOOOOOOOO XX", +"XOOOOOOOOOOOOO...OOOOOOOOOOOO XX", +"XOOOOOOOOOOOOO..oOOOOOOOOOOOO XX", +"XOOOOOOOOOOOOO..OOOOOOOOOOOOO XX", +"XoOOOOOOOOOOOOOOOOOOOOOOOOOOo XX", +"+XOOOOOOOOOOOo..oOOOOOOOOOOO XXX", +"+XoOOOOOOOOOO....OOOOOOOOOOo XXX", +"++XOOOOOOOOOO....OOOOOOOOOO XXX+", +"+++ OOOOOOOOOo..oOOOOOOOOO XXXX+", +"++++ OOOOOOOOOOOOOOOOOOOO XXXX++", +"+++++ oOOOOOOOOOOOOOOOOo XXXX+++", +"++++++ oOOOOOOOOOOOOo XXXX++++", +"+++++++X oOOOOOOo XXXXX+++++", +"++++++++XXX oOOO XXXXXXX++++++", +"++++++++++XXXX OOO XXXXX++++++++", +"+++++++++++++X OOO XX+++++++++++", +"+++++++++++++++ OO XX+++++++++++", +"++++++++++++++++ O XX+++++++++++", +"+++++++++++++++++ XX+++++++++++", +"++++++++++++++++++XXX+++++++++++", +"+++++++++++++++++++XX+++++++++++" +}; diff --git a/3rdparty/wxWidgets/art/home.xpm b/3rdparty/wxWidgets/art/home.xpm index 010de974f8..078e7d6c65 100644 --- a/3rdparty/wxWidgets/art/home.xpm +++ b/3rdparty/wxWidgets/art/home.xpm @@ -1,24 +1,24 @@ -/* XPM */ -static const char * home_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -". c Black", -"X c #FFFFFF", -" c None", -/* pixels */ -" .... ", -" .XXXX. ", -" .XXXXXX. ", -" .XXXXXXXX. ", -" .XXXXXXXXXX. ", -" .............. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .X.....X....X. ", -" .X. .X. .X. ", -" .X. .X. .X. ", -" .X.....X. .X. ", -" .XXXXXXX. .X. ", -" ......... ... " -}; +/* XPM */ +static const char * home_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 3 1", +". c Black", +"X c #FFFFFF", +" c None", +/* pixels */ +" .... ", +" .XXXX. ", +" .XXXXXX. ", +" .XXXXXXXX. ", +" .XXXXXXXXXX. ", +" .............. ", +" .XXXXXXXXXXXX. ", +" .XXXXXXXXXXXX. ", +" .XXXXXXXXXXXX. ", +" .X.....X....X. ", +" .X. .X. .X. ", +" .X. .X. .X. ", +" .X.....X. .X. ", +" .XXXXXXX. .X. ", +" ......... ... " +}; diff --git a/3rdparty/wxWidgets/art/htmbook.xpm b/3rdparty/wxWidgets/art/htmbook.xpm index 84a157eb56..eb343cbe3b 100644 --- a/3rdparty/wxWidgets/art/htmbook.xpm +++ b/3rdparty/wxWidgets/art/htmbook.xpm @@ -1,25 +1,25 @@ -/* XPM */ -static const char * htmbook_xpm[] = { -"16 16 6 1", -" c None", -". c Black", -"X c #000080", -"o c #c0c0c0", -"O c #808080", -"+ c Gray100", -" ", -" .. ", -" ..XX. ", -" ..XXXXX. ", -" ..XXXXXXXX. ", -".oXXXXXXXXXX. ", -".XoXXXXXXXXXX. ", -".XXoXXXXXXXXXX. ", -".XXXoXXXXXXXXX..", -".XXXXoXXXXXX..O ", -" .XXXXoXXX..O+O ", -" .XXXXo..O++o..", -" .XXX.O+++o.. ", -" .XX.o+o.. ", -" .X.o.. ", -" ... "}; +/* XPM */ +static const char * htmbook_xpm[] = { +"16 16 6 1", +" c None", +". c Black", +"X c #000080", +"o c #c0c0c0", +"O c #808080", +"+ c Gray100", +" ", +" .. ", +" ..XX. ", +" ..XXXXX. ", +" ..XXXXXXXX. ", +".oXXXXXXXXXX. ", +".XoXXXXXXXXXX. ", +".XXoXXXXXXXXXX. ", +".XXXoXXXXXXXXX..", +".XXXXoXXXXXX..O ", +" .XXXXoXXX..O+O ", +" .XXXXo..O++o..", +" .XXX.O+++o.. ", +" .XX.o+o.. ", +" .X.o.. ", +" ... "}; diff --git a/3rdparty/wxWidgets/art/htmfoldr.xpm b/3rdparty/wxWidgets/art/htmfoldr.xpm index ec313c3a9f..fc14e60cc7 100644 --- a/3rdparty/wxWidgets/art/htmfoldr.xpm +++ b/3rdparty/wxWidgets/art/htmfoldr.xpm @@ -1,25 +1,25 @@ -/* XPM */ -static const char * htmfoldr_xpm[] = { -"16 16 6 1", -" c None", -". c Black", -"X c #000080", -"o c #c0c0c0", -"O c #808080", -"+ c Gray100", -" ", -" .. ", -" ..XX. ", -" ..XXXXX. ", -" ..XXXXXXXX. ", -".oXXXXXXXXXX. ", -".XoXXXXXXXXXX. ", -".XXoXXXXXXXXXX. ", -".XXXoXXXXXXXXX..", -".XXXXoXXXXXX..O ", -" .XXXXoXXX..O+O ", -" .XXXXo..O++o..", -" .XXX.O+++o.. ", -" .XX.o+o.. ", -" .X.o.. ", -" ... "}; +/* XPM */ +static const char * htmfoldr_xpm[] = { +"16 16 6 1", +" c None", +". c Black", +"X c #000080", +"o c #c0c0c0", +"O c #808080", +"+ c Gray100", +" ", +" .. ", +" ..XX. ", +" ..XXXXX. ", +" ..XXXXXXXX. ", +".oXXXXXXXXXX. ", +".XoXXXXXXXXXX. ", +".XXoXXXXXXXXXX. ", +".XXXoXXXXXXXXX..", +".XXXXoXXXXXX..O ", +" .XXXXoXXX..O+O ", +" .XXXXo..O++o..", +" .XXX.O+++o.. ", +" .XX.o+o.. ", +" .X.o.. ", +" ... "}; diff --git a/3rdparty/wxWidgets/art/htmoptns.xpm b/3rdparty/wxWidgets/art/htmoptns.xpm index b47a436168..8649f79398 100644 --- a/3rdparty/wxWidgets/art/htmoptns.xpm +++ b/3rdparty/wxWidgets/art/htmoptns.xpm @@ -1,20 +1,20 @@ -/* XPM */ -static const char * htmoptns_xpm[] = { -"16 15 2 1", -" c None", -". c #000000", -" ", -" .. ", -" ... ", -" .... ", -" . ... ", -" .. ... ", -" . .. ", -" .. ... ", -" . .. ", -" ......... ", -" .. ... ", -" . ... ", -" .. ... ", -" .... ....... ", -" "}; +/* XPM */ +static const char * htmoptns_xpm[] = { +"16 15 2 1", +" c None", +". c #000000", +" ", +" .. ", +" ... ", +" .... ", +" . ... ", +" .. ... ", +" . .. ", +" .. ... ", +" . .. ", +" ......... ", +" .. ... ", +" . ... ", +" .. ... ", +" .... ....... ", +" "}; diff --git a/3rdparty/wxWidgets/art/htmpage.xpm b/3rdparty/wxWidgets/art/htmpage.xpm index f7ca0219bb..bf934b981b 100644 --- a/3rdparty/wxWidgets/art/htmpage.xpm +++ b/3rdparty/wxWidgets/art/htmpage.xpm @@ -1,23 +1,23 @@ -/* XPM */ -static const char * htmpage_xpm[] = { -"16 16 4 1", -" c None", -". c #808080", -"X c Gray100", -"o c Black", -" ", -" .......... ", -" .XXXXXXXX.. ", -" .XXXXXXXXooo ", -" .X......XXXo ", -" .XXXXXXXXXXo ", -" .X........Xo ", -" .XXXXXXXXXXo ", -" .X........Xo ", -" .XXXXXXXXXXo ", -" .X........Xo ", -" .XXXXXXXXXXo ", -" .X........Xo ", -" .XXXXXXXXXXo ", -" .XXXXXXXXXXo ", -" oooooooooooo "}; +/* XPM */ +static const char * htmpage_xpm[] = { +"16 16 4 1", +" c None", +". c #808080", +"X c Gray100", +"o c Black", +" ", +" .......... ", +" .XXXXXXXX.. ", +" .XXXXXXXXooo ", +" .X......XXXo ", +" .XXXXXXXXXXo ", +" .X........Xo ", +" .XXXXXXXXXXo ", +" .X........Xo ", +" .XXXXXXXXXXo ", +" .X........Xo ", +" .XXXXXXXXXXo ", +" .X........Xo ", +" .XXXXXXXXXXo ", +" .XXXXXXXXXXo ", +" oooooooooooo "}; diff --git a/3rdparty/wxWidgets/art/htmsidep.xpm b/3rdparty/wxWidgets/art/htmsidep.xpm index f0d6c5e509..514d7de0bb 100644 --- a/3rdparty/wxWidgets/art/htmsidep.xpm +++ b/3rdparty/wxWidgets/art/htmsidep.xpm @@ -1,27 +1,27 @@ -/* XPM */ -static const char * htmsidep_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 6 1", -". c Black", -"X c #FFFFFF", -"+ c #808080", -" c None", -"O c #0000C0", -"o c #C0C0C0", -/* pixels */ -" ", -" .............. ", -" .XXXX.ooooooo. ", -" .XOXX.oo...oo. ", -" .XXOX.ooooooo. ", -" .OOOO.o...+.o. ", -" .XXOX.ooooooo. ", -" .XOXX.ooooooo. ", -" .XXXX.o..+ooo. ", -" .XXOX.ooooooo. ", -" .XOXX.o...+.o. ", -" .OOOO.ooooooo. ", -" .XOXX.o.+...o. ", -" .XXOX.ooooooo. ", -" .............. " -}; +/* XPM */ +static const char * htmsidep_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 6 1", +". c Black", +"X c #FFFFFF", +"+ c #808080", +" c None", +"O c #0000C0", +"o c #C0C0C0", +/* pixels */ +" ", +" .............. ", +" .XXXX.ooooooo. ", +" .XOXX.oo...oo. ", +" .XXOX.ooooooo. ", +" .OOOO.o...+.o. ", +" .XXOX.ooooooo. ", +" .XOXX.ooooooo. ", +" .XXXX.o..+ooo. ", +" .XXOX.ooooooo. ", +" .XOXX.o...+.o. ", +" .OOOO.ooooooo. ", +" .XOXX.o.+...o. ", +" .XXOX.ooooooo. ", +" .............. " +}; diff --git a/3rdparty/wxWidgets/art/listview.xpm b/3rdparty/wxWidgets/art/listview.xpm index 516e8e3a3c..e17781e2f0 100644 --- a/3rdparty/wxWidgets/art/listview.xpm +++ b/3rdparty/wxWidgets/art/listview.xpm @@ -1,25 +1,25 @@ -/* XPM */ -static const char * listview_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 4 1", -" c Black", -". c #FFFFFF", -"X c #000084", -"o c #848484", -/* pixels */ -" ", -" .............. ", -" .XXX.......... ", -" .XXX. o o . ", -" .XXX.......... ", -" .............. ", -" .XXX.......... ", -" .XXX. o . ", -" .XXX.......... ", -" .............. ", -" .XXX.......... ", -" .XXX. o o . ", -" .XXX.......... ", -" .............. ", -" " -}; +/* XPM */ +static const char * listview_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 4 1", +" c Black", +". c #FFFFFF", +"X c #000084", +"o c #848484", +/* pixels */ +" ", +" .............. ", +" .XXX.......... ", +" .XXX. o o . ", +" .XXX.......... ", +" .............. ", +" .XXX.......... ", +" .XXX. o . ", +" .XXX.......... ", +" .............. ", +" .XXX.......... ", +" .XXX. o o . ", +" .XXX.......... ", +" .............. ", +" " +}; diff --git a/3rdparty/wxWidgets/art/missimg.xpm b/3rdparty/wxWidgets/art/missimg.xpm index d9719429ab..ca96c3a2ef 100644 --- a/3rdparty/wxWidgets/art/missimg.xpm +++ b/3rdparty/wxWidgets/art/missimg.xpm @@ -1,43 +1,43 @@ -/* XPM */ -static const char * missimg_xpm[] = { -/* columns rows colors chars-per-pixel */ -"32 32 5 1", -"X c Black", -"o c #FFFFFF", -" c None", -". c #C0C0C0", -"O c #E0E0E0", -/* pixels */ -" .............................X ", -" .ooooooooooooooooooooooooooooX ", -" .ooooooooooooooooooooooooooooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOXOOOOOOOOOOOOOOOOooX ", -" XXXOOOOOXX XOOOOOOOOOOOOOOOooX ", -" XXXXX XOOOOOOOOOOOOOOooX ", -" XOOOXXXOOOOOOOooX ", -" XXX XXOOOOOooX ", -" XOOOOooX ", -" . XOOOooX ", -" .. XXOooX ", -" .o.. XooX ", -" .ooO... XXX ", -" .ooOOOO.......... ", -" .ooOOOOOOOOOOOOOO.. ", -" .ooOOOOOOOOOOOOOOOO.. ", -" .ooOOOOOOOOOOOOOOOOOO......... ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooooooooooooooooooooooooooooX ", -" .ooooooooooooooooooooooooooooX ", -" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " -}; +/* XPM */ +static const char * missimg_xpm[] = { +/* columns rows colors chars-per-pixel */ +"32 32 5 1", +"X c Black", +"o c #FFFFFF", +" c None", +". c #C0C0C0", +"O c #E0E0E0", +/* pixels */ +" .............................X ", +" .ooooooooooooooooooooooooooooX ", +" .ooooooooooooooooooooooooooooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOXOOOOOOOOOOOOOOOOooX ", +" XXXOOOOOXX XOOOOOOOOOOOOOOOooX ", +" XXXXX XOOOOOOOOOOOOOOooX ", +" XOOOXXXOOOOOOOooX ", +" XXX XXOOOOOooX ", +" XOOOOooX ", +" . XOOOooX ", +" .. XXOooX ", +" .o.. XooX ", +" .ooO... XXX ", +" .ooOOOO.......... ", +" .ooOOOOOOOOOOOOOO.. ", +" .ooOOOOOOOOOOOOOOOO.. ", +" .ooOOOOOOOOOOOOOOOOOO......... ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooooooooooooooooooooooooooooX ", +" .ooooooooooooooooooooooooooooX ", +" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " +}; diff --git a/3rdparty/wxWidgets/art/motif/error.xpm b/3rdparty/wxWidgets/art/motif/error.xpm index 37b2aac857..956e3549e9 100644 --- a/3rdparty/wxWidgets/art/motif/error.xpm +++ b/3rdparty/wxWidgets/art/motif/error.xpm @@ -1,58 +1,58 @@ -/* XPM */ -static const char * error_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 4 1", -" c None", -"X c #242424", -"o c #DCDF00", -". c #C00000", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ..... ", -" ............. ", -" ................. ", -" ................... ", -" ....................... ", -" ......................... ", -" ........................... ", -" ...........................X ", -" .............................X ", -" ............................... ", -" ...............................X ", -" .................................X ", -" .................................X ", -" .................................XX ", -" ...ooooooooooooooooooooooooooo...XX ", -" ....ooooooooooooooooooooooooooo....X ", -" ....ooooooooooooooooooooooooooo....X ", -" ....ooooooooooooooooooooooooooo....XX ", -" ....ooooooooooooooooooooooooooo....XX ", -" ....ooooooooooooooooooooooooooo....XX ", -" ...ooooooooooooooooooooooooooo...XXX ", -" ...ooooooooooooooooooooooooooo...XXX ", -" .................................XX ", -" .................................XX ", -" ...............................XXX ", -" ...............................XXX ", -" .............................XXX ", -" ...........................XXXX ", -" ...........................XXX ", -" .........................XXX ", -" .......................XXXX ", -" X...................XXXXX ", -" X.................XXXXX ", -" X.............XXXXX ", -" XXXX.....XXXXXXXX ", -" XXXXXXXXXXXXX ", -" XXXXX ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char * error_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 4 1", +" c None", +"X c #242424", +"o c #DCDF00", +". c #C00000", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ..... ", +" ............. ", +" ................. ", +" ................... ", +" ....................... ", +" ......................... ", +" ........................... ", +" ...........................X ", +" .............................X ", +" ............................... ", +" ...............................X ", +" .................................X ", +" .................................X ", +" .................................XX ", +" ...ooooooooooooooooooooooooooo...XX ", +" ....ooooooooooooooooooooooooooo....X ", +" ....ooooooooooooooooooooooooooo....X ", +" ....ooooooooooooooooooooooooooo....XX ", +" ....ooooooooooooooooooooooooooo....XX ", +" ....ooooooooooooooooooooooooooo....XX ", +" ...ooooooooooooooooooooooooooo...XXX ", +" ...ooooooooooooooooooooooooooo...XXX ", +" .................................XX ", +" .................................XX ", +" ...............................XXX ", +" ...............................XXX ", +" .............................XXX ", +" ...........................XXXX ", +" ...........................XXX ", +" .........................XXX ", +" .......................XXXX ", +" X...................XXXXX ", +" X.................XXXXX ", +" X.............XXXXX ", +" XXXX.....XXXXXXXX ", +" XXXXXXXXXXXXX ", +" XXXXX ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxWidgets/art/motif/info.xpm b/3rdparty/wxWidgets/art/motif/info.xpm index 73dd0fc30a..930b639cc3 100644 --- a/3rdparty/wxWidgets/art/motif/info.xpm +++ b/3rdparty/wxWidgets/art/motif/info.xpm @@ -1,63 +1,63 @@ -/* XPM */ -static const char * info_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 9 1", -"$ c Black", -"O c #FFFFFF", -"@ c #808080", -"+ c #000080", -"o c #E8EB01", -" c None", -"X c #FFFF40", -"# c #C0C0C0", -". c #ABAD01", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ..... ", -" ..XXXXX.. ", -" ..XXXXXXXXo.. ", -" .XXXOXXXXXXXoo. ", -" .XOOXXX+XXXXXo. ", -" .XOOOXX+++XXXXoo. ", -" .XOOXXX+++XXXXXo. ", -" .XOOOXXX+++XXXXXXo. ", -" .XOOXXXX+++XXXXXXo. ", -" .XXXXXXX+++XXXXXXX. ", -" .XXXXXXX+++XXXXXXo. ", -" .XXXXXXX+++XXXXXoo. ", -" .XXXXXX+++XXXXXo. ", -" .XXXXXXX+XXXXXXo. ", -" .XXXXXXXXXXXXo. ", -" .XXXXX+++XXXoo. ", -" .XXXX+++XXoo. ", -" .XXXXXXXXo. ", -" ..XXXXXXo.. ", -" .XXXXXo.. ", -" @#######@ ", -" @@@@@@@@@ ", -" @#######@ ", -" @@@@@@@@@ ", -" @#######@ ", -" @@@@@@@ ", -" ### ", -" $$$ ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char * info_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 9 1", +"$ c Black", +"O c #FFFFFF", +"@ c #808080", +"+ c #000080", +"o c #E8EB01", +" c None", +"X c #FFFF40", +"# c #C0C0C0", +". c #ABAD01", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ..... ", +" ..XXXXX.. ", +" ..XXXXXXXXo.. ", +" .XXXOXXXXXXXoo. ", +" .XOOXXX+XXXXXo. ", +" .XOOOXX+++XXXXoo. ", +" .XOOXXX+++XXXXXo. ", +" .XOOOXXX+++XXXXXXo. ", +" .XOOXXXX+++XXXXXXo. ", +" .XXXXXXX+++XXXXXXX. ", +" .XXXXXXX+++XXXXXXo. ", +" .XXXXXXX+++XXXXXoo. ", +" .XXXXXX+++XXXXXo. ", +" .XXXXXXX+XXXXXXo. ", +" .XXXXXXXXXXXXo. ", +" .XXXXX+++XXXoo. ", +" .XXXX+++XXoo. ", +" .XXXXXXXXo. ", +" ..XXXXXXo.. ", +" .XXXXXo.. ", +" @#######@ ", +" @@@@@@@@@ ", +" @#######@ ", +" @@@@@@@@@ ", +" @#######@ ", +" @@@@@@@ ", +" ### ", +" $$$ ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxWidgets/art/motif/question.xpm b/3rdparty/wxWidgets/art/motif/question.xpm index cdcc10f393..3ea9434c2f 100644 --- a/3rdparty/wxWidgets/art/motif/question.xpm +++ b/3rdparty/wxWidgets/art/motif/question.xpm @@ -1,75 +1,75 @@ -/* XPM */ -static const char * question_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 21 1", -". c Black", -"> c #696969", -"O c #1F1F00", -"+ c #181818", -"o c #F6F900", -"; c #3F3F00", -"$ c #111111", -" c None", -"& c #202020", -"X c #AAAA00", -"@ c #949400", -": c #303030", -"1 c #383838", -"% c #2A2A00", -", c #404040", -"= c #B4B400", -"- c #484848", -"# c #151500", -"< c #9F9F00", -"2 c #6A6A00", -"* c #353500", -/* pixels */ -" ", -" ", -" ", -" ", -" ......... ", -" ...XXXXXXX.. ", -" ..XXXXoooooXXXO+ ", -" ..XXooooooooooooX@.. ", -" ..XoooooooooooooooXX#. ", -" $%XoooooooooooooooooXX#. ", -" &.XoooooooXXXXXXooooooXX.. ", -" .XooooooXX.$...$XXoooooX*. ", -" $.XoooooX%.$ .*oooooo=.. ", -" .XooooooX.. -.XoooooX.. ", -" .XoooooX..+ .XoooooX;. ", -" ...XXXX..: .XoooooX;. ", -" ........ >.XoooooX;. ", -" +.XoooooX.. ", -" ,.Xoooooo<.. ", -" 1#XooooooXO.. ", -" &#XooooooX2.. ", -" $%XooooooXX.. ", -" $%XooooooXX.. ", -" $%XooooooXX.. ", -" &.XooooooXX.. ", -" .XooooooXX.. ", -" &.XoooooXX.. ", -" ..XooooXX.. ", -" ..XooooX... ", -" ..XXooXX..& ", -" ...XXXXX.. ", -" ........ ", -" ", -" ", -" ....... ", -" ..XXXXX.. ", -" ..XXoooXX.. ", -" ..XoooooX.. ", -" ..XoooooX.. ", -" ..XXoooXX.. ", -" ..XXXXX.. ", -" ....... ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char * question_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 21 1", +". c Black", +"> c #696969", +"O c #1F1F00", +"+ c #181818", +"o c #F6F900", +"; c #3F3F00", +"$ c #111111", +" c None", +"& c #202020", +"X c #AAAA00", +"@ c #949400", +": c #303030", +"1 c #383838", +"% c #2A2A00", +", c #404040", +"= c #B4B400", +"- c #484848", +"# c #151500", +"< c #9F9F00", +"2 c #6A6A00", +"* c #353500", +/* pixels */ +" ", +" ", +" ", +" ", +" ......... ", +" ...XXXXXXX.. ", +" ..XXXXoooooXXXO+ ", +" ..XXooooooooooooX@.. ", +" ..XoooooooooooooooXX#. ", +" $%XoooooooooooooooooXX#. ", +" &.XoooooooXXXXXXooooooXX.. ", +" .XooooooXX.$...$XXoooooX*. ", +" $.XoooooX%.$ .*oooooo=.. ", +" .XooooooX.. -.XoooooX.. ", +" .XoooooX..+ .XoooooX;. ", +" ...XXXX..: .XoooooX;. ", +" ........ >.XoooooX;. ", +" +.XoooooX.. ", +" ,.Xoooooo<.. ", +" 1#XooooooXO.. ", +" &#XooooooX2.. ", +" $%XooooooXX.. ", +" $%XooooooXX.. ", +" $%XooooooXX.. ", +" &.XooooooXX.. ", +" .XooooooXX.. ", +" &.XoooooXX.. ", +" ..XooooXX.. ", +" ..XooooX... ", +" ..XXooXX..& ", +" ...XXXXX.. ", +" ........ ", +" ", +" ", +" ....... ", +" ..XXXXX.. ", +" ..XXoooXX.. ", +" ..XoooooX.. ", +" ..XoooooX.. ", +" ..XXoooXX.. ", +" ..XXXXX.. ", +" ....... ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxWidgets/art/motif/warning.xpm b/3rdparty/wxWidgets/art/motif/warning.xpm index f3682a60c0..18135c81cb 100644 --- a/3rdparty/wxWidgets/art/motif/warning.xpm +++ b/3rdparty/wxWidgets/art/motif/warning.xpm @@ -1,63 +1,63 @@ -/* XPM */ -static const char * warning_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 9 1", -"@ c Black", -"o c #A6A800", -"+ c #8A8C00", -"$ c #B8BA00", -" c None", -"O c #6E7000", -"X c #DCDF00", -". c #C00000", -"# c #373800", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" . ", -" ... ", -" ... ", -" ..... ", -" ...X.. ", -" ..XXX.. ", -" ...XXX... ", -" ..XXXXX.. ", -" ..XXXXXX... ", -" ...XXoO+XX.. ", -" ..XXXO@#XXX.. ", -" ..XXXXO@#XXX... ", -" ...XXXXO@#XXXX.. ", -" ..XXXXXO@#XXXX... ", -" ...XXXXXo@OXXXXX.. ", -" ...XXXXXXo@OXXXXXX.. ", -" ..XXXXXXX$@OXXXXXX... ", -" ...XXXXXXXX@XXXXXXXX.. ", -" ...XXXXXXXXXXXXXXXXXX... ", -" ..XXXXXXXXXXOXXXXXXXXX.. ", -" ...XXXXXXXXXO@#XXXXXXXXX.. ", -" ..XXXXXXXXXXX#XXXXXXXXXX... ", -" ...XXXXXXXXXXXXXXXXXXXXXXX.. ", -" ...XXXXXXXXXXXXXXXXXXXXXXXX... ", -" .............................. ", -" .............................. ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char * warning_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 9 1", +"@ c Black", +"o c #A6A800", +"+ c #8A8C00", +"$ c #B8BA00", +" c None", +"O c #6E7000", +"X c #DCDF00", +". c #C00000", +"# c #373800", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . ", +" ... ", +" ... ", +" ..... ", +" ...X.. ", +" ..XXX.. ", +" ...XXX... ", +" ..XXXXX.. ", +" ..XXXXXX... ", +" ...XXoO+XX.. ", +" ..XXXO@#XXX.. ", +" ..XXXXO@#XXX... ", +" ...XXXXO@#XXXX.. ", +" ..XXXXXO@#XXXX... ", +" ...XXXXXo@OXXXXX.. ", +" ...XXXXXXo@OXXXXXX.. ", +" ..XXXXXXX$@OXXXXXX... ", +" ...XXXXXXXX@XXXXXXXX.. ", +" ...XXXXXXXXXXXXXXXXXX... ", +" ..XXXXXXXXXXOXXXXXXXXX.. ", +" ...XXXXXXXXXO@#XXXXXXXXX.. ", +" ..XXXXXXXXXXX#XXXXXXXXXX... ", +" ...XXXXXXXXXXXXXXXXXXXXXXX.. ", +" ...XXXXXXXXXXXXXXXXXXXXXXXX... ", +" .............................. ", +" .............................. ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxWidgets/art/new.xpm b/3rdparty/wxWidgets/art/new.xpm index a776e111eb..7b6143098e 100644 --- a/3rdparty/wxWidgets/art/new.xpm +++ b/3rdparty/wxWidgets/art/new.xpm @@ -1,50 +1,50 @@ -/* XPM */ -static const char * new_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 29 1", -"* c #97C4E7", -"- c #72A8D2", -": c #FFFFFF", -"9 c #839CB5", -"o c #6B98B8", -"X c #5A89A6", -"# c #3A749C", -", c #D1E5F5", -"0 c #85A7BC", -"$ c #C3DDF1", -"8 c #749BB4", -"; c #5F9BC8", -" c None", -"+ c #538DB3", -"= c #85BBE2", -"3 c #EFF6FC", -"O c #6591AE", -"5 c #F7FBFD", -"7 c #FAFCFE", -"< c #DAEAF7", -"4 c #E9F3FA", -"6 c #FDFDFE", -"1 c #E2EFF8", -". c #8EA9BC", -"% c #B6D5EE", -"& c #A5CCEA", -"> c #ACE95B", -"2 c #F4F9FD", -"@ c #4581AA", -/* pixels */ -" .XoOO+@#. ", -" .$$%&*=O-; ", -" @@@@$%&*O:*o ", -" @>>@$$%&O::*o ", -"@@@>>@@@$%OOoO+ ", -"@>>>>>>@,$%&*=+ ", -"@>>>>>>@<,$%&*+ ", -"@@@>>@@@1<,$%&O ", -" @>>@2341<,$%O ", -" @@@@52341<,$o ", -" .:6752341<,8 ", -" .::6752341<8 ", -" .:::67523419 ", -" .::::6752340 ", -" ............ " -}; +/* XPM */ +static const char * new_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 29 1", +"* c #97C4E7", +"- c #72A8D2", +": c #FFFFFF", +"9 c #839CB5", +"o c #6B98B8", +"X c #5A89A6", +"# c #3A749C", +", c #D1E5F5", +"0 c #85A7BC", +"$ c #C3DDF1", +"8 c #749BB4", +"; c #5F9BC8", +" c None", +"+ c #538DB3", +"= c #85BBE2", +"3 c #EFF6FC", +"O c #6591AE", +"5 c #F7FBFD", +"7 c #FAFCFE", +"< c #DAEAF7", +"4 c #E9F3FA", +"6 c #FDFDFE", +"1 c #E2EFF8", +". c #8EA9BC", +"% c #B6D5EE", +"& c #A5CCEA", +"> c #ACE95B", +"2 c #F4F9FD", +"@ c #4581AA", +/* pixels */ +" .XoOO+@#. ", +" .$$%&*=O-; ", +" @@@@$%&*O:*o ", +" @>>@$$%&O::*o ", +"@@@>>@@@$%OOoO+ ", +"@>>>>>>@,$%&*=+ ", +"@>>>>>>@<,$%&*+ ", +"@@@>>@@@1<,$%&O ", +" @>>@2341<,$%O ", +" @@@@52341<,$o ", +" .:6752341<,8 ", +" .::6752341<8 ", +" .:::67523419 ", +" .::::6752340 ", +" ............ " +}; diff --git a/3rdparty/wxWidgets/art/new_dir.xpm b/3rdparty/wxWidgets/art/new_dir.xpm index ced559b3d7..9eebabfa05 100644 --- a/3rdparty/wxWidgets/art/new_dir.xpm +++ b/3rdparty/wxWidgets/art/new_dir.xpm @@ -1,43 +1,43 @@ -/* XPM */ -static const char * new_dir_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 22 1", -"X c Black", -"> c #9BACC2", -"o c #547897", -"1 c #7F99B4", -"O c #D1D9E5", -"< c #EAEDF3", -"# c #CAD2DC", -"3 c #718BA7", -"@ c #BECAD9", -"& c #E1E6EE", -"; c #F5F6F7", -". c #FFFF00", -", c #8DA0B9", -" c None", -"% c #D6DFE7", -"$ c #D2D9E0", -"- c #ADBACE", -"= c #EEF1F3", -"+ c #B3BFD1", -"2 c #7A90AC", -": c #A2B3C5", -"* c #E5EAF1", -/* pixels */ -" .X .XX.", -" ooooo .X.X. ", -" oOOOOo XX...XX", -" oooooooo.......", -" o+@#$%&*XX...XX", -" o+@#$%&*=.X.X. ", -" o-+@#O%&.X;.X .", -" o:-+@#O%&*=;o ", -" o>:-+@#O%&*=o ", -" o,>:-+@#O%&:-+@#O%&o ", -" o21,>:-+@#O%o ", -" o321,>:-+@#Oo ", -" ooooooooooooo ", -" " -}; +/* XPM */ +static const char * new_dir_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 22 1", +"X c Black", +"> c #9BACC2", +"o c #547897", +"1 c #7F99B4", +"O c #D1D9E5", +"< c #EAEDF3", +"# c #CAD2DC", +"3 c #718BA7", +"@ c #BECAD9", +"& c #E1E6EE", +"; c #F5F6F7", +". c #FFFF00", +", c #8DA0B9", +" c None", +"% c #D6DFE7", +"$ c #D2D9E0", +"- c #ADBACE", +"= c #EEF1F3", +"+ c #B3BFD1", +"2 c #7A90AC", +": c #A2B3C5", +"* c #E5EAF1", +/* pixels */ +" .X .XX.", +" ooooo .X.X. ", +" oOOOOo XX...XX", +" oooooooo.......", +" o+@#$%&*XX...XX", +" o+@#$%&*=.X.X. ", +" o-+@#O%&.X;.X .", +" o:-+@#O%&*=;o ", +" o>:-+@#O%&*=o ", +" o,>:-+@#O%&:-+@#O%&o ", +" o21,>:-+@#O%o ", +" o321,>:-+@#Oo ", +" ooooooooooooo ", +" " +}; diff --git a/3rdparty/wxWidgets/art/paste.xpm b/3rdparty/wxWidgets/art/paste.xpm index ec5db2795d..028fa485b7 100644 --- a/3rdparty/wxWidgets/art/paste.xpm +++ b/3rdparty/wxWidgets/art/paste.xpm @@ -1,46 +1,46 @@ -/* XPM */ -static const char * paste_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 25 1", -"< c #FEECE4", -"> c #FEE3D7", -"O c #FFFFFF", -"o c #7B767D", -"% c #F79586", -"& c #CAE1F3", -"@ c #F08B62", -"# c #FCCBB8", -"- c #FDD8C9", -"4 c #FFF8F4", -"5 c #FFF5F0", -" c None", -"$ c #F8AA8F", -", c #EFF6FC", -"1 c #F7FBFD", -"2 c #FAFCFE", -"; c #DAEAF7", -": c #E9F3FA", -"6 c #FFFAF8", -". c #3C78A6", -"3 c #FFF1ED", -"X c #9B8687", -"+ c #FBBCA4", -"* c #B6D5EE", -"= c #F4F9FD", -/* pixels */ -" ...... ", -" .XoOOOOoo. ", -".+XOOOOOOX@. ", -".+XXXXXXXX@. ", -".#++$$%@..... ", -".##++$$%.&*.=. ", -".-##++$$.;&.==. ", -".--##++$.:;.... ", -".>--##++.,:;&*. ", -".<>--##+.1,:;&. ", -".<<>--##.21,:;. ", -".3<<>--#.O21=:. ", -".45<<>--....... ", -".6453<>----. ", -"............ " -}; +/* XPM */ +static const char * paste_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 25 1", +"< c #FEECE4", +"> c #FEE3D7", +"O c #FFFFFF", +"o c #7B767D", +"% c #F79586", +"& c #CAE1F3", +"@ c #F08B62", +"# c #FCCBB8", +"- c #FDD8C9", +"4 c #FFF8F4", +"5 c #FFF5F0", +" c None", +"$ c #F8AA8F", +", c #EFF6FC", +"1 c #F7FBFD", +"2 c #FAFCFE", +"; c #DAEAF7", +": c #E9F3FA", +"6 c #FFFAF8", +". c #3C78A6", +"3 c #FFF1ED", +"X c #9B8687", +"+ c #FBBCA4", +"* c #B6D5EE", +"= c #F4F9FD", +/* pixels */ +" ...... ", +" .XoOOOOoo. ", +".+XOOOOOOX@. ", +".+XXXXXXXX@. ", +".#++$$%@..... ", +".##++$$%.&*.=. ", +".-##++$$.;&.==. ", +".--##++$.:;.... ", +".>--##++.,:;&*. ", +".<>--##+.1,:;&. ", +".<<>--##.21,:;. ", +".3<<>--#.O21=:. ", +".45<<>--....... ", +".6453<>----. ", +"............ " +}; diff --git a/3rdparty/wxWidgets/art/print.xpm b/3rdparty/wxWidgets/art/print.xpm index d330268c71..e91d170a20 100644 --- a/3rdparty/wxWidgets/art/print.xpm +++ b/3rdparty/wxWidgets/art/print.xpm @@ -1,60 +1,60 @@ -/* XPM */ -static const char * print_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 39 1", -"< c #E3E4E6", -"+ c #C3C3C4", -"i c #FFFFFF", -": c #74879B", -"# c #5A89A6", -"a c #F1F4F7", -"r c #5A809C", -"@ c #BDCCD9", -"e c #7A92A4", -"% c #3F6F93", -"t c #9FA2A6", -"3 c #939495", -"w c #5F666D", -"9 c #65839E", -"5 c #4A7291", -"$ c #4B7F9E", -" c None", -"O c #DFE0E2", -"o c #F3F3F3", -"; c #84A5BB", -"& c #467291", -". c #7897AD", -"* c #407598", -"4 c #CFCFD0", -"7 c #6F90A6", -"y c #6A89A2", -"0 c #AAADB2", -"1 c #D2D3D4", -"u c #4F7592", -", c #BCBDBE", -"p c #57778E", -"q c #979BA0", -"2 c #ABABAC", -"- c #E7E7E7", -"= c #D6DEE6", -"> c #9FA0A0", -"8 c #829EB5", -"X c #8FB0C3", -"6 c #5D7C93", -/* pixels */ -" .XXXXXXXX ", -" .oooooooX ", -" .OOOOOOOX ", -" .+++++++X ", -"@##$%&&&&&%*##@ ", -"$=-;:>,<123$-=$ ", -".44.5678.96$44. ", -"7,,,,,,,,,,,,,7 ", -"900qwwwwwwwe009 ", -"rtt9ryyyyyyuttr ", -"6qq6iiiiiii%qq6 ", -"633paiiiiii%336 ", -"XXX*iiiiiii%XXX ", -" 6iiiiiii% ", -" $XXXXXXX# " -}; +/* XPM */ +static const char * print_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 39 1", +"< c #E3E4E6", +"+ c #C3C3C4", +"i c #FFFFFF", +": c #74879B", +"# c #5A89A6", +"a c #F1F4F7", +"r c #5A809C", +"@ c #BDCCD9", +"e c #7A92A4", +"% c #3F6F93", +"t c #9FA2A6", +"3 c #939495", +"w c #5F666D", +"9 c #65839E", +"5 c #4A7291", +"$ c #4B7F9E", +" c None", +"O c #DFE0E2", +"o c #F3F3F3", +"; c #84A5BB", +"& c #467291", +". c #7897AD", +"* c #407598", +"4 c #CFCFD0", +"7 c #6F90A6", +"y c #6A89A2", +"0 c #AAADB2", +"1 c #D2D3D4", +"u c #4F7592", +", c #BCBDBE", +"p c #57778E", +"q c #979BA0", +"2 c #ABABAC", +"- c #E7E7E7", +"= c #D6DEE6", +"> c #9FA0A0", +"8 c #829EB5", +"X c #8FB0C3", +"6 c #5D7C93", +/* pixels */ +" .XXXXXXXX ", +" .oooooooX ", +" .OOOOOOOX ", +" .+++++++X ", +"@##$%&&&&&%*##@ ", +"$=-;:>,<123$-=$ ", +".44.5678.96$44. ", +"7,,,,,,,,,,,,,7 ", +"900qwwwwwwwe009 ", +"rtt9ryyyyyyuttr ", +"6qq6iiiiiii%qq6 ", +"633paiiiiii%336 ", +"XXX*iiiiiii%XXX ", +" 6iiiiiii% ", +" $XXXXXXX# " +}; diff --git a/3rdparty/wxWidgets/art/quit.xpm b/3rdparty/wxWidgets/art/quit.xpm index 7633e8be5d..659093233f 100644 --- a/3rdparty/wxWidgets/art/quit.xpm +++ b/3rdparty/wxWidgets/art/quit.xpm @@ -1,90 +1,90 @@ -/* XPM */ -static const char * quit_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 69 1", -"@ c Black", -"i c #9AEA53", -"D c #7E9BB1", -"H c #839FB4", -", c #B7C7D3", -"8 c #BCCBD6", -"7 c #C1CFDA", -"v c #92ABBD", -"- c #D0DBE2", -"O c #547897", -"+ c #376485", -"L c #7090A8", -"t c #AEC0CE", -"g c #B3C4D1", -"S c #84A0B4", -"G c #89A4B8", -"> c #BDCCD7", -"F c #5A809C", -"2 c #C2D0DA", -"k c #93ACBE", -"= c #D6E0E6", -"* c #446A8C", -"z c #A5B9C8", -"# c #DEE5EB", -"0 c #AFC1CE", -"r c #B4C5D2", -"p c #B9C9D5", -"A c #8AA5B8", -"M c #92AABD", -"j c #A6BAC9", -"K c #7796AC", -"l c #ABBECC", -"o c #E4EAEF", -"9 c #B5C6D2", -" c None", -"; c #C9D6DF", -"X c #305F81", -"m c #98AFC0", -"V c #9DB3C3", -"% c #D1DBE3", -"u c #A2B7C6", -"y c #A7BBCA", -"h c #ACBFCD", -"4 c #B6C7D3", -"w c #C0CFD9", -"d c #982106", -"B c #85A0B5", -"6 c #C8D4DE", -"c c #99B0C1", -"x c #9EB4C4", -"$ c #D7E0E7", -"q c #A8BCCA", -"s c #ADC0CD", -"3 c #BCCCD7", -"N c #8BA5B9", -": c #C4D1DB", -"1 c #C9D5DE", -"f c #9AB1C2", -"n c #A4B9C8", -"a c #B3C5D1", -". c #215579", -"J c #7D9AB0", -"& c #829EB5", -"e c #BBCAD6", -"b c #8CA6B9", -"Z c #91AABC", -"C c #96AEC0", -"< c #CFDAE2", -"5 c #AFC2CF", -/* pixels */ -" ..XXXXXXXXXX ", -" XoO+X@@@@@@X ", -" X#$%&X*@@@@X ", -" X=-;:>,X@@@X ", -" X<12345X@@@X ", -" X67890qX@XXX ", -" XwertyuX@XiX ", -" XpasddfX++iiX ", -" XghjddkXiiiiiX ", -" XlzxcvbXiiiiiiX", -" XnxmMNBXiiiiiX ", -" XVCZASDXXXiiX ", -" XXFGHJKX XiX ", -" FXXFLX XX ", -" XX* " -}; +/* XPM */ +static const char * quit_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 69 1", +"@ c Black", +"i c #9AEA53", +"D c #7E9BB1", +"H c #839FB4", +", c #B7C7D3", +"8 c #BCCBD6", +"7 c #C1CFDA", +"v c #92ABBD", +"- c #D0DBE2", +"O c #547897", +"+ c #376485", +"L c #7090A8", +"t c #AEC0CE", +"g c #B3C4D1", +"S c #84A0B4", +"G c #89A4B8", +"> c #BDCCD7", +"F c #5A809C", +"2 c #C2D0DA", +"k c #93ACBE", +"= c #D6E0E6", +"* c #446A8C", +"z c #A5B9C8", +"# c #DEE5EB", +"0 c #AFC1CE", +"r c #B4C5D2", +"p c #B9C9D5", +"A c #8AA5B8", +"M c #92AABD", +"j c #A6BAC9", +"K c #7796AC", +"l c #ABBECC", +"o c #E4EAEF", +"9 c #B5C6D2", +" c None", +"; c #C9D6DF", +"X c #305F81", +"m c #98AFC0", +"V c #9DB3C3", +"% c #D1DBE3", +"u c #A2B7C6", +"y c #A7BBCA", +"h c #ACBFCD", +"4 c #B6C7D3", +"w c #C0CFD9", +"d c #982106", +"B c #85A0B5", +"6 c #C8D4DE", +"c c #99B0C1", +"x c #9EB4C4", +"$ c #D7E0E7", +"q c #A8BCCA", +"s c #ADC0CD", +"3 c #BCCCD7", +"N c #8BA5B9", +": c #C4D1DB", +"1 c #C9D5DE", +"f c #9AB1C2", +"n c #A4B9C8", +"a c #B3C5D1", +". c #215579", +"J c #7D9AB0", +"& c #829EB5", +"e c #BBCAD6", +"b c #8CA6B9", +"Z c #91AABC", +"C c #96AEC0", +"< c #CFDAE2", +"5 c #AFC2CF", +/* pixels */ +" ..XXXXXXXXXX ", +" XoO+X@@@@@@X ", +" X#$%&X*@@@@X ", +" X=-;:>,X@@@X ", +" X<12345X@@@X ", +" X67890qX@XXX ", +" XwertyuX@XiX ", +" XpasddfX++iiX ", +" XghjddkXiiiiiX ", +" XlzxcvbXiiiiiiX", +" XnxmMNBXiiiiiX ", +" XVCZASDXXXiiX ", +" XXFGHJKX XiX ", +" FXXFLX XX ", +" XX* " +}; diff --git a/3rdparty/wxWidgets/art/redo.xpm b/3rdparty/wxWidgets/art/redo.xpm index 1d9e192479..844403e791 100644 --- a/3rdparty/wxWidgets/art/redo.xpm +++ b/3rdparty/wxWidgets/art/redo.xpm @@ -1,58 +1,58 @@ -/* XPM */ -static const char * redo_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 37 1", -"4 c #9BACC2", -"; c #4C7398", -"3 c #547B99", -"* c #547897", -"# c #5A89A6", -"8 c #3A749C", -"5 c #5A809C", -", c #7F99B4", -"& c #3F6F93", -"9 c #85A7BC", -"+ c #749BB4", -"> c #718BA7", -"e c #A5B3C8", -"w c #BECAD9", -": c #65839D", -"u c #E1E6EE", -"o c #236289", -"r c #ADBED2", -"= c #597B9A", -"2 c #8DA0B9", -" c None", -"% c #467291", -"1 c #7393AB", -"i c #4C809F", -"- c #A0BACB", -"O c #6591AE", -"X c #407598", -"6 c #6F90A6", -"t c #D2D9E0", -"7 c #ADBACE", -"@ c #326A8F", -"0 c #467A9C", -". c #ACC4D3", -"< c #7F97B0", -"y c #B3BFD1", -"q c #A2B3C5", -"$ c #8FB0C3", -/* pixels */ -" .XoooO ", -" +o@@@@@o# +", -" $@%%&@&%%&@ +o", -" X*=@+-+@*=;@#&@", -" @:=+ @=:=*:@", -" &>:$ @:>>>@", -" &,,,,&", -" +123 @<2222&", -" X44X #@56<44X", -" O1748 .9#&o", -" 0qwe8 ", -" 8rty8 ", -" 8wu+ ", -" i## ", -" " -}; +/* XPM */ +static const char * redo_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 37 1", +"4 c #9BACC2", +"; c #4C7398", +"3 c #547B99", +"* c #547897", +"# c #5A89A6", +"8 c #3A749C", +"5 c #5A809C", +", c #7F99B4", +"& c #3F6F93", +"9 c #85A7BC", +"+ c #749BB4", +"> c #718BA7", +"e c #A5B3C8", +"w c #BECAD9", +": c #65839D", +"u c #E1E6EE", +"o c #236289", +"r c #ADBED2", +"= c #597B9A", +"2 c #8DA0B9", +" c None", +"% c #467291", +"1 c #7393AB", +"i c #4C809F", +"- c #A0BACB", +"O c #6591AE", +"X c #407598", +"6 c #6F90A6", +"t c #D2D9E0", +"7 c #ADBACE", +"@ c #326A8F", +"0 c #467A9C", +". c #ACC4D3", +"< c #7F97B0", +"y c #B3BFD1", +"q c #A2B3C5", +"$ c #8FB0C3", +/* pixels */ +" .XoooO ", +" +o@@@@@o# +", +" $@%%&@&%%&@ +o", +" X*=@+-+@*=;@#&@", +" @:=+ @=:=*:@", +" &>:$ @:>>>@", +" &,,,,&", +" +123 @<2222&", +" X44X #@56<44X", +" O1748 .9#&o", +" 0qwe8 ", +" 8rty8 ", +" 8wu+ ", +" i## ", +" " +}; diff --git a/3rdparty/wxWidgets/art/removable.xpm b/3rdparty/wxWidgets/art/removable.xpm index 91efe6300e..fcc52ff810 100644 --- a/3rdparty/wxWidgets/art/removable.xpm +++ b/3rdparty/wxWidgets/art/removable.xpm @@ -1,44 +1,44 @@ -/* XPM */ -static const char * removable_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 23 1", -"@ c #C3C3C4", -"4 c #FFFFFF", -"o c #D5D6D8", -"> c #7A92A3", -". c #8497A5", -"% c #ACAEB2", -"2 c #4A7898", -": c #DCE2EA", -", c #F5F6F7", -"= c #EBEBEC", -"$ c #B7B7B8", -" c None", -"X c #DFE0E2", -"* c #A6A8AD", -"1 c #4C809F", -"3 c #407598", -"O c #CFCFD0", -"; c #9EA2A8", -"# c #BCBDBE", -"+ c #C6C8CA", -"- c #979BA0", -"& c #E7E7E7", -"< c #8FB0C3", -/* pixels */ -" ......... ", -" .XoO+@#$%. ", -" .XoO+@#$%. ", -" .&XoO+@#$%*. ", -" .&XoO+@#$%*. ", -" .=&XoO+@#$%*-. ", -" .=&XoO+@#$%*;. ", -".:=&XoO+@#$%*;>.", -".,=&XoO+@#$%*;-.", -"<..............<", -"<,=&XoO+@#$%%%%.", -" c #7A92A3", +". c #8497A5", +"% c #ACAEB2", +"2 c #4A7898", +": c #DCE2EA", +", c #F5F6F7", +"= c #EBEBEC", +"$ c #B7B7B8", +" c None", +"X c #DFE0E2", +"* c #A6A8AD", +"1 c #4C809F", +"3 c #407598", +"O c #CFCFD0", +"; c #9EA2A8", +"# c #BCBDBE", +"+ c #C6C8CA", +"- c #979BA0", +"& c #E7E7E7", +"< c #8FB0C3", +/* pixels */ +" ......... ", +" .XoO+@#$%. ", +" .XoO+@#$%. ", +" .&XoO+@#$%*. ", +" .&XoO+@#$%*. ", +" .=&XoO+@#$%*-. ", +" .=&XoO+@#$%*;. ", +".:=&XoO+@#$%*;>.", +".,=&XoO+@#$%*;-.", +"<..............<", +"<,=&XoO+@#$%%%%.", +" c #718BA7", -"0 c #A5B3C8", -"q c #BECAD9", -": c #65839D", -"u c #E1E6EE", -"X c #236289", -"y c #ADBED2", -"= c #597B9A", -"1 c #8DA0B9", -" c None", -"% c #467291", -"3 c #7393AB", -"i c #4C809F", -"; c #A0BACB", -". c #6591AE", -"o c #407598", -"5 c #6F90A6", -"t c #D2D9E0", -"9 c #ADBACE", -"# c #326A8F", -"e c #467A9C", -"O c #ACC4D3", -"< c #7F97B0", -"r c #B3BFD1", -"w c #A2B3C5", -"& c #8FB0C3", -/* pixels */ -" .XXXoO ", -"+ @X#####X+ ", -"X+ #$%%$#$%%#& ", -"#$@#*=-#+;+#=-o ", -"#:-=:=# +=:# ", -"#>>>:# &:>$ ", -"$,,,>o o<,$ ", -"$1111<# 213+ ", -"o44<56#@ o44o ", -"X$@7O 8493. ", -" 80qwe ", -" 8rty8 ", -" +uq8 ", -" @@i ", -" " -}; +/* XPM */ +static const char * undo_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 37 1", +"4 c #9BACC2", +"* c #4C7398", +"2 c #547B99", +"- c #547897", +"@ c #5A89A6", +"8 c #3A749C", +"6 c #5A809C", +", c #7F99B4", +"$ c #3F6F93", +"7 c #85A7BC", +"+ c #749BB4", +"> c #718BA7", +"0 c #A5B3C8", +"q c #BECAD9", +": c #65839D", +"u c #E1E6EE", +"X c #236289", +"y c #ADBED2", +"= c #597B9A", +"1 c #8DA0B9", +" c None", +"% c #467291", +"3 c #7393AB", +"i c #4C809F", +"; c #A0BACB", +". c #6591AE", +"o c #407598", +"5 c #6F90A6", +"t c #D2D9E0", +"9 c #ADBACE", +"# c #326A8F", +"e c #467A9C", +"O c #ACC4D3", +"< c #7F97B0", +"r c #B3BFD1", +"w c #A2B3C5", +"& c #8FB0C3", +/* pixels */ +" .XXXoO ", +"+ @X#####X+ ", +"X+ #$%%$#$%%#& ", +"#$@#*=-#+;+#=-o ", +"#:-=:=# +=:# ", +"#>>>:# &:>$ ", +"$,,,>o o<,$ ", +"$1111<# 213+ ", +"o44<56#@ o44o ", +"X$@7O 8493. ", +" 80qwe ", +" 8rty8 ", +" +uq8 ", +" @@i ", +" " +}; diff --git a/3rdparty/wxWidgets/art/up.xpm b/3rdparty/wxWidgets/art/up.xpm index 4347cf6ef7..922eb6483a 100644 --- a/3rdparty/wxWidgets/art/up.xpm +++ b/3rdparty/wxWidgets/art/up.xpm @@ -1,21 +1,21 @@ -/* XPM */ -static const char * up_xpm[] = { -"16 15 3 1", -" c None", -". c Black", -"X c Gray100", -" ", -" .. ", -" .XX. ", -" .XXXX. ", -" .XXXXXX. ", -" .XXXXXXXX. ", -" ....XXXX.... ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" ...... ", -" "}; +/* XPM */ +static const char * up_xpm[] = { +"16 15 3 1", +" c None", +". c Black", +"X c Gray100", +" ", +" .. ", +" .XX. ", +" .XXXX. ", +" .XXXXXX. ", +" .XXXXXXXX. ", +" ....XXXX.... ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" ...... ", +" "}; diff --git a/3rdparty/wxWidgets/art/wxwin16x16.xpm b/3rdparty/wxWidgets/art/wxwin16x16.xpm index 3abfef3c9e..81b85169d2 100644 --- a/3rdparty/wxWidgets/art/wxwin16x16.xpm +++ b/3rdparty/wxWidgets/art/wxwin16x16.xpm @@ -1,25 +1,25 @@ -/* XPM */ -static const char * wxwin16x16_xpm[] = { -"16 16 6 1", -" c None", -". c #000000", -"X c #000084", -"o c #FFFFFF", -"O c #FFFF00", -"+ c #FF0000", -" ", -" ", -" ....... ", -" .XXXXX. ", -" .oXXXX. ", -" .oXXX.......", -".....oXXX.OOOOO.", -".+++.XXXX.oOOOO.", -".o++......oOOOO.", -".o++++. .oOOOO.", -".o++++. .OOOOO.", -".+++++. .......", -"....... ", -" ", -" ", -" "}; +/* XPM */ +static const char * wxwin16x16_xpm[] = { +"16 16 6 1", +" c None", +". c #000000", +"X c #000084", +"o c #FFFFFF", +"O c #FFFF00", +"+ c #FF0000", +" ", +" ", +" ....... ", +" .XXXXX. ", +" .oXXXX. ", +" .oXXX.......", +".....oXXX.OOOOO.", +".+++.XXXX.oOOOO.", +".o++......oOOOO.", +".o++++. .oOOOO.", +".o++++. .OOOOO.", +".+++++. .......", +"....... ", +" ", +" ", +" "}; diff --git a/3rdparty/wxWidgets/art/wxwin32x32.xpm b/3rdparty/wxWidgets/art/wxwin32x32.xpm index 013676c859..92829ffd12 100644 --- a/3rdparty/wxWidgets/art/wxwin32x32.xpm +++ b/3rdparty/wxWidgets/art/wxwin32x32.xpm @@ -1,41 +1,41 @@ -/* XPM */ -static const char * wxwin32x32_xpm[] = { -"32 32 6 1", -" c None", -". c #000000", -"X c #000084", -"o c #FFFFFF", -"O c #FFFF00", -"+ c #FF0000", -" ", -" ", -" ", -" ", -" ", -" .............. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XooXXXXXXXXX. ", -" .XooXXXXXXXXX. ", -" .XooXXXXXXXXX. ", -" .XooXXXXXX..............", -" .XooXXXXXX.OOOOOOOOOOOO.", -".........XooXXXXXX.OOOOOOOOOOOO.", -".+++++++.XooXXXXXX.OooOOOOOOOOO.", -".+++++++.XooXXXXXX.OooOOOOOOOOO.", -".+oo++++.XXXXXXXXX.OooOOOOOOOOO.", -".+oo++++.XXXXXXXXX.OooOOOOOOOOO.", -".+oo++++...........OooOOOOOOOOO.", -".+oo+++++++++. .OooOOOOOOOOO.", -".+oo+++++++++. .OooOOOOOOOOO.", -".+oo+++++++++. .OooOOOOOOOOO.", -".+oo+++++++++. .OOOOOOOOOOOO.", -".+oo+++++++++. .OOOOOOOOOOOO.", -".++++++++++++. ..............", -".++++++++++++. ", -".............. ", -" ", -" ", -" ", -" ", -" "}; +/* XPM */ +static const char * wxwin32x32_xpm[] = { +"32 32 6 1", +" c None", +". c #000000", +"X c #000084", +"o c #FFFFFF", +"O c #FFFF00", +"+ c #FF0000", +" ", +" ", +" ", +" ", +" ", +" .............. ", +" .XXXXXXXXXXXX. ", +" .XXXXXXXXXXXX. ", +" .XooXXXXXXXXX. ", +" .XooXXXXXXXXX. ", +" .XooXXXXXXXXX. ", +" .XooXXXXXX..............", +" .XooXXXXXX.OOOOOOOOOOOO.", +".........XooXXXXXX.OOOOOOOOOOOO.", +".+++++++.XooXXXXXX.OooOOOOOOOOO.", +".+++++++.XooXXXXXX.OooOOOOOOOOO.", +".+oo++++.XXXXXXXXX.OooOOOOOOOOO.", +".+oo++++.XXXXXXXXX.OooOOOOOOOOO.", +".+oo++++...........OooOOOOOOOOO.", +".+oo+++++++++. .OooOOOOOOOOO.", +".+oo+++++++++. .OooOOOOOOOOO.", +".+oo+++++++++. .OooOOOOOOOOO.", +".+oo+++++++++. .OOOOOOOOOOOO.", +".+oo+++++++++. .OOOOOOOOOOOO.", +".++++++++++++. ..............", +".++++++++++++. ", +".............. ", +" ", +" ", +" ", +" ", +" "}; diff --git a/3rdparty/wxWidgets/build/msw/Common.props b/3rdparty/wxWidgets/build/msw/Common.props index 9b77bf94f3..73bb18df9f 100644 --- a/3rdparty/wxWidgets/build/msw/Common.props +++ b/3rdparty/wxWidgets/build/msw/Common.props @@ -1,16 +1,16 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - <_PropertySheetDisplayName>wxCommon - $(PlatformName)\$(Configuration)\$(ProjectName)\ - - - - WIN32;__WXMSW__;_LIB;wxUSE_UNICODE=1;%(PreprocessorDefinitions) - Async - true - Default - - + + + + <_ProjectFileVersion>10.0.30128.1 + <_PropertySheetDisplayName>wxCommon + $(PlatformName)\$(Configuration)\$(ProjectName)\ + + + + WIN32;__WXMSW__;_LIB;wxUSE_UNICODE=1;%(PreprocessorDefinitions) + Async + true + Default + + \ No newline at end of file diff --git a/3rdparty/wxWidgets/build/msw/ProjectRootDir.props b/3rdparty/wxWidgets/build/msw/ProjectRootDir.props index ee68712b83..77a4b66287 100644 --- a/3rdparty/wxWidgets/build/msw/ProjectRootDir.props +++ b/3rdparty/wxWidgets/build/msw/ProjectRootDir.props @@ -1,22 +1,22 @@ - - - - $(ProjectDir)..\.. - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(ProjectRootDir) - - - $(SvnRootDir) - - - $(SvnCommonDir) - - + + + + $(ProjectDir)..\.. + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(ProjectRootDir) + + + $(SvnRootDir) + + + $(SvnCommonDir) + + \ No newline at end of file diff --git a/3rdparty/wxWidgets/build/msw/wx_adv_vs2012.vcxproj b/3rdparty/wxWidgets/build/msw/wx_adv_vs2012.vcxproj index 10d2f24038..a8c1e7ac90 100644 --- a/3rdparty/wxWidgets/build/msw/wx_adv_vs2012.vcxproj +++ b/3rdparty/wxWidgets/build/msw/wx_adv_vs2012.vcxproj @@ -1,231 +1,231 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - wxAdv28 - {0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E} - wxAdvanced - - - - StaticLibrary - false - Unicode - false - v110_xp - - - StaticLibrary - false - Unicode - true - v110_xp - - - StaticLibrary - false - Unicode - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName)-dbg - $(ProjectName)-dev - - - - $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) - _DEBUG;__WXDEBUG__;wxUSE_BASE=0;wxUSE_GUI=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)$(TargetName).pch - Level4 - - - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - true - .\..\..\lib\vc_lib/wx_adv.bsc - - - - - $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) - wxUSE_BASE=0;wxUSE_GUI=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)$(TargetName).pch - Level4 - - - 0x0409 - - - true - - - - - $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) - wxUSE_BASE=0;wxUSE_GUI=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)$(TargetName).pch - Level4 - - - 0x0409 - - - true - - - - - - - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {c34487af-228a-4d11-8e50-27803df76873} - false - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + wxAdv28 + {0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E} + wxAdvanced + + + + StaticLibrary + false + Unicode + false + v110_xp + + + StaticLibrary + false + Unicode + true + v110_xp + + + StaticLibrary + false + Unicode + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)-dbg + $(ProjectName)-dev + + + + $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) + _DEBUG;__WXDEBUG__;wxUSE_BASE=0;wxUSE_GUI=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)$(TargetName).pch + Level4 + + + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + true + .\..\..\lib\vc_lib/wx_adv.bsc + + + + + $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) + wxUSE_BASE=0;wxUSE_GUI=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)$(TargetName).pch + Level4 + + + 0x0409 + + + true + + + + + $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) + wxUSE_BASE=0;wxUSE_GUI=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)$(TargetName).pch + Level4 + + + 0x0409 + + + true + + + + + + + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {c34487af-228a-4d11-8e50-27803df76873} + false + + + + + \ No newline at end of file diff --git a/3rdparty/wxWidgets/build/msw/wx_adv_vs2012.vcxproj.filters b/3rdparty/wxWidgets/build/msw/wx_adv_vs2012.vcxproj.filters index 46e6e9d012..b0cce60080 100644 --- a/3rdparty/wxWidgets/build/msw/wx_adv_vs2012.vcxproj.filters +++ b/3rdparty/wxWidgets/build/msw/wx_adv_vs2012.vcxproj.filters @@ -1,247 +1,247 @@ - - - - - {830e288e-de50-416f-b9fe-de54990470ab} - - - {093bb81c-d5d4-4ca2-89c5-34e4c4ab700c} - - - {e5e10b44-4cff-403c-9856-47d4412ac18e} - - - {4570e9b5-7f02-4751-9273-f488539124a3} - - - {cc045a62-6a78-471a-99fd-bc980c4810ca} - - - {5f7c1465-867e-4c72-94f0-a91c2b9c229c} - - - {5a7b805e-25b6-4aa3-a7fc-c9846a091fe9} - - - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - - - MSW Sources - - - - - Setup Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - - - Common Headers - - + + + + + {830e288e-de50-416f-b9fe-de54990470ab} + + + {093bb81c-d5d4-4ca2-89c5-34e4c4ab700c} + + + {e5e10b44-4cff-403c-9856-47d4412ac18e} + + + {4570e9b5-7f02-4751-9273-f488539124a3} + + + {cc045a62-6a78-471a-99fd-bc980c4810ca} + + + {5f7c1465-867e-4c72-94f0-a91c2b9c229c} + + + {5a7b805e-25b6-4aa3-a7fc-c9846a091fe9} + + + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + + + MSW Sources + + + + + Setup Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + + + Common Headers + + \ No newline at end of file diff --git a/3rdparty/wxWidgets/build/msw/wx_base_vs2012.vcxproj b/3rdparty/wxWidgets/build/msw/wx_base_vs2012.vcxproj index ce80426eac..5c1f9713bc 100644 --- a/3rdparty/wxWidgets/build/msw/wx_base_vs2012.vcxproj +++ b/3rdparty/wxWidgets/build/msw/wx_base_vs2012.vcxproj @@ -1,390 +1,390 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - wxBase28 - {48AD7E0A-25B1-4974-A1E3-03F8C438D34F} - wxBase28 - - - - StaticLibrary - false - Unicode - false - v110_xp - - - StaticLibrary - false - Unicode - v110_xp - - - StaticLibrary - false - Unicode - true - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName)-dev - - - - $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) - wxUSE_GUI=0;wxUSE_BASE=1;NDEBUG;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)$(TargetName).pch - Level4 - - - 0x0409 - - - true - .\..\..\lib\vc_lib/wx_base.bsc - - - - - $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) - _DEBUG;__WXDEBUG__;wxUSE_BASE=1;wxUSE_GUI=0;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)$(TargetName).pch - Level4 - - - 0x0409 - - - true - .\..\..\lib\vc_lib/wx_base.bsc - - - - - Full - OnlyExplicitInline - Size - false - $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) - wxUSE_GUI=0;wxUSE_BASE=1;NDEBUG;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)$(TargetName).pch - Level4 - true - - - 0x0409 - - - true - .\..\..\lib\vc_lib/wx_base.bsc - - - - - - - - - - - - - - - - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {c34487af-228a-4d11-8e50-27803df76873} - false - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + wxBase28 + {48AD7E0A-25B1-4974-A1E3-03F8C438D34F} + wxBase28 + + + + StaticLibrary + false + Unicode + false + v110_xp + + + StaticLibrary + false + Unicode + v110_xp + + + StaticLibrary + false + Unicode + true + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)-dev + + + + $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) + wxUSE_GUI=0;wxUSE_BASE=1;NDEBUG;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)$(TargetName).pch + Level4 + + + 0x0409 + + + true + .\..\..\lib\vc_lib/wx_base.bsc + + + + + $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) + _DEBUG;__WXDEBUG__;wxUSE_BASE=1;wxUSE_GUI=0;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)$(TargetName).pch + Level4 + + + 0x0409 + + + true + .\..\..\lib\vc_lib/wx_base.bsc + + + + + Full + OnlyExplicitInline + Size + false + $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) + wxUSE_GUI=0;wxUSE_BASE=1;NDEBUG;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)$(TargetName).pch + Level4 + true + + + 0x0409 + + + true + .\..\..\lib\vc_lib/wx_base.bsc + + + + + + + + + + + + + + + + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {c34487af-228a-4d11-8e50-27803df76873} + false + + + + + \ No newline at end of file diff --git a/3rdparty/wxWidgets/build/msw/wx_base_vs2012.vcxproj.filters b/3rdparty/wxWidgets/build/msw/wx_base_vs2012.vcxproj.filters index 8f0adbfa26..f55ad6c213 100644 --- a/3rdparty/wxWidgets/build/msw/wx_base_vs2012.vcxproj.filters +++ b/3rdparty/wxWidgets/build/msw/wx_base_vs2012.vcxproj.filters @@ -1,689 +1,689 @@ - - - - - {b5293789-f436-410d-9eae-a3af27888fcb} - - - {25b418fa-adbb-4247-a2a0-3dee287a0545} - - - {b96f4405-9760-4a13-a65b-2f1d47734457} - - - {421d7063-551e-4536-997b-82babded914f} - - - {a604cf36-31ea-4264-b10e-079e7c0c7148} - - - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - - - MSW Sources - - - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - wxHTML Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - + + + + + {b5293789-f436-410d-9eae-a3af27888fcb} + + + {25b418fa-adbb-4247-a2a0-3dee287a0545} + + + {b96f4405-9760-4a13-a65b-2f1d47734457} + + + {421d7063-551e-4536-997b-82babded914f} + + + {a604cf36-31ea-4264-b10e-079e7c0c7148} + + + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + + + MSW Sources + + + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + wxHTML Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + \ No newline at end of file diff --git a/3rdparty/wxWidgets/build/msw/wx_config_vs2012.vcxproj b/3rdparty/wxWidgets/build/msw/wx_config_vs2012.vcxproj index 0af9f6249c..a8132c587f 100644 --- a/3rdparty/wxWidgets/build/msw/wx_config_vs2012.vcxproj +++ b/3rdparty/wxWidgets/build/msw/wx_config_vs2012.vcxproj @@ -1,95 +1,95 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - wxConfig28 - {C34487AF-228A-4D11-8E50-27803DF76873} - wxConfig - - - - Utility - Unicode - false - v110_xp - - - Utility - Unicode - false - v110_xp - - - Utility - Unicode - false - v110_xp - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\ - $(Configuration)\ - $(SolutionDir)$(Configuration)\ - $(Configuration)\ - $(SolutionDir)$(Configuration)\ - $(Configuration)\ - $(ProjectName)-dev - $(ProjectName)-dbg - - - - - - Creating ..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h - cl /EP /nologo "%(FullPath)" > "..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h" - ..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h;%(Outputs) - Creating ..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h - cl /EP /nologo "%(FullPath)" > "..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h" - ..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h;%(Outputs) - Creating ..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h - cl /EP /nologo "%(FullPath)" > "..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h" - ..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h;%(Outputs) - - - Creating ..\..\lib\vc_lib\mswd\wx\setup.h (%(FullPath)) - copy "%(FullPath)" ..\..\lib\vc_lib\mswd\wx\setup.h - ..\..\lib\vc_lib\mswd\wx\setup.h;%(Outputs) - Creating ..\..\lib\vc_lib\msw\wx\setup.h - copy "%(FullPath)" ..\..\lib\vc_lib\msw\wx\setup.h - ..\..\lib\vc_lib\msw\wx\setup.h;%(Outputs) - Creating ..\..\lib\vc_lib\msw\wx\setup.h - copy "%(FullPath)" ..\..\lib\vc_lib\msw\wx\setup.h - ..\..\lib\vc_lib\msw\wx\setup.h;%(Outputs) - - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + wxConfig28 + {C34487AF-228A-4D11-8E50-27803DF76873} + wxConfig + + + + Utility + Unicode + false + v110_xp + + + Utility + Unicode + false + v110_xp + + + Utility + Unicode + false + v110_xp + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(ProjectName)-dev + $(ProjectName)-dbg + + + + + + Creating ..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h + cl /EP /nologo "%(FullPath)" > "..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h" + ..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h;%(Outputs) + Creating ..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h + cl /EP /nologo "%(FullPath)" > "..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h" + ..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h;%(Outputs) + Creating ..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h + cl /EP /nologo "%(FullPath)" > "..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h" + ..\..\lib\vc_lib\mswd\wx\msw\rcdefs.h;%(Outputs) + + + Creating ..\..\lib\vc_lib\mswd\wx\setup.h (%(FullPath)) + copy "%(FullPath)" ..\..\lib\vc_lib\mswd\wx\setup.h + ..\..\lib\vc_lib\mswd\wx\setup.h;%(Outputs) + Creating ..\..\lib\vc_lib\msw\wx\setup.h + copy "%(FullPath)" ..\..\lib\vc_lib\msw\wx\setup.h + ..\..\lib\vc_lib\msw\wx\setup.h;%(Outputs) + Creating ..\..\lib\vc_lib\msw\wx\setup.h + copy "%(FullPath)" ..\..\lib\vc_lib\msw\wx\setup.h + ..\..\lib\vc_lib\msw\wx\setup.h;%(Outputs) + + + + + + \ No newline at end of file diff --git a/3rdparty/wxWidgets/build/msw/wx_config_vs2012.vcxproj.filters b/3rdparty/wxWidgets/build/msw/wx_config_vs2012.vcxproj.filters index 44784e030e..eec0740ab1 100644 --- a/3rdparty/wxWidgets/build/msw/wx_config_vs2012.vcxproj.filters +++ b/3rdparty/wxWidgets/build/msw/wx_config_vs2012.vcxproj.filters @@ -1,30 +1,30 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Header Files - - - - - Header Files - - - Header Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Header Files + + + + + Header Files + + + Header Files + + \ No newline at end of file diff --git a/3rdparty/wxWidgets/build/msw/wx_core_vs2012.vcxproj b/3rdparty/wxWidgets/build/msw/wx_core_vs2012.vcxproj index 292abef726..efb6dc0064 100644 --- a/3rdparty/wxWidgets/build/msw/wx_core_vs2012.vcxproj +++ b/3rdparty/wxWidgets/build/msw/wx_core_vs2012.vcxproj @@ -1,1197 +1,1197 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - wxCore28 - {0318BA30-EF48-441A-9E10-DC85EFAE39F0} - wxCore - - - - StaticLibrary - false - Unicode - false - v110_xp - - - StaticLibrary - false - Unicode - true - v110_xp - - - StaticLibrary - false - Unicode - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName)-dev - - - - $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;$(ProjectRootDir)\src\png;$(SvnRootDir)\3rdparty\libjpeg;%(AdditionalIncludeDirectories) - _DEBUG;__WXDEBUG__;wxUSE_BASE=0;wxUSE_GUI=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)$(TargetName).pch - Level4 - - - 0x0409 - - - true - - - - - $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;$(ProjectRootDir)\src\png;$(SvnRootDir)\3rdparty\libjpeg;%(AdditionalIncludeDirectories) - wxUSE_BASE=0;wxUSE_GUI=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)$(TargetName).pch - Level4 - - - 0x0409 - - - true - - - - - $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;$(ProjectRootDir)\src\png;$(SvnRootDir)\3rdparty\libjpeg;%(AdditionalIncludeDirectories) - wxUSE_BASE=0;wxUSE_GUI=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)$(TargetName).pch - Level4 - - - 0x0409 - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - true - true - true - - - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - - - - - {bc236261-77e8-4567-8d09-45cd02965eb6} - false - - - {c34487af-228a-4d11-8e50-27803df76873} - false - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + wxCore28 + {0318BA30-EF48-441A-9E10-DC85EFAE39F0} + wxCore + + + + StaticLibrary + false + Unicode + false + v110_xp + + + StaticLibrary + false + Unicode + true + v110_xp + + + StaticLibrary + false + Unicode + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)-dev + + + + $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;$(ProjectRootDir)\src\png;$(SvnRootDir)\3rdparty\libjpeg;%(AdditionalIncludeDirectories) + _DEBUG;__WXDEBUG__;wxUSE_BASE=0;wxUSE_GUI=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)$(TargetName).pch + Level4 + + + 0x0409 + + + true + + + + + $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;$(ProjectRootDir)\src\png;$(SvnRootDir)\3rdparty\libjpeg;%(AdditionalIncludeDirectories) + wxUSE_BASE=0;wxUSE_GUI=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)$(TargetName).pch + Level4 + + + 0x0409 + + + true + + + + + $(ProjectRootDir)\include;$(ProjectRootDir)\include\msvc;$(SvnRootDir)\3rdparty\zlib;$(ProjectRootDir)\src\png;$(SvnRootDir)\3rdparty\libjpeg;%(AdditionalIncludeDirectories) + wxUSE_BASE=0;wxUSE_GUI=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)$(TargetName).pch + Level4 + + + 0x0409 + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + true + true + true + + + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + + + + + {bc236261-77e8-4567-8d09-45cd02965eb6} + false + + + {c34487af-228a-4d11-8e50-27803df76873} + false + + + + + \ No newline at end of file diff --git a/3rdparty/wxWidgets/build/msw/wx_core_vs2012.vcxproj.filters b/3rdparty/wxWidgets/build/msw/wx_core_vs2012.vcxproj.filters index 613a8e4801..aa6ce3fe6e 100644 --- a/3rdparty/wxWidgets/build/msw/wx_core_vs2012.vcxproj.filters +++ b/3rdparty/wxWidgets/build/msw/wx_core_vs2012.vcxproj.filters @@ -1,2216 +1,2216 @@ - - - - - {441c0c3f-751f-496c-8814-02beec20d2d0} - - - {1ea2b2bb-90c5-4bd5-9712-af4d1791038d} - - - {cd431497-bb5d-4a57-ad61-3f3a60e84b40} - - - {d0908f68-88c8-4092-91ad-c9b338c55a70} - - - {8267a708-8a9e-45f1-a048-5b95aceb2705} - - - {0a38d0bb-f3ca-426a-8012-f7f8e1bdc2e0} - - - {efc1e641-f480-40f5-a8ff-30f0b1068722} - - - {caebc439-5015-468f-be12-735d29ed9ff4} - - - {9047c433-4645-47d4-93e7-108fa946be42} - - - {b319415a-f149-4690-bb49-ea5d2d6d6b96} - - - {9d2584bf-a90c-4987-981c-84d42781ff65} - - - {0ed566de-2ecf-42c9-bcb9-e2022129ad88} - - - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - Common Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - MSW Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - Generic Sources - - - png - - - png - - - png - - - png - - - png - - - png - - - png - - - png - - - png - - - png - - - png - - - png - - - png - - - png - - - png - - - png - - - - - Setup Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - MSW Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - Generic Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxUniv Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - wxHTML Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - png - - - png - - - png - - - - - Resources - - + + + + + {441c0c3f-751f-496c-8814-02beec20d2d0} + + + {1ea2b2bb-90c5-4bd5-9712-af4d1791038d} + + + {cd431497-bb5d-4a57-ad61-3f3a60e84b40} + + + {d0908f68-88c8-4092-91ad-c9b338c55a70} + + + {8267a708-8a9e-45f1-a048-5b95aceb2705} + + + {0a38d0bb-f3ca-426a-8012-f7f8e1bdc2e0} + + + {efc1e641-f480-40f5-a8ff-30f0b1068722} + + + {caebc439-5015-468f-be12-735d29ed9ff4} + + + {9047c433-4645-47d4-93e7-108fa946be42} + + + {b319415a-f149-4690-bb49-ea5d2d6d6b96} + + + {9d2584bf-a90c-4987-981c-84d42781ff65} + + + {0ed566de-2ecf-42c9-bcb9-e2022129ad88} + + + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + Common Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + MSW Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + Generic Sources + + + png + + + png + + + png + + + png + + + png + + + png + + + png + + + png + + + png + + + png + + + png + + + png + + + png + + + png + + + png + + + png + + + + + Setup Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + MSW Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + Generic Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxUniv Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + wxHTML Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + png + + + png + + + png + + + + + Resources + + \ No newline at end of file diff --git a/3rdparty/wxWidgets/include/wx/msw/wince/smartphone.rc b/3rdparty/wxWidgets/include/wx/msw/wince/smartphone.rc index 2be02497d3..0f13ac6697 100644 --- a/3rdparty/wxWidgets/include/wx/msw/wince/smartphone.rc +++ b/3rdparty/wxWidgets/include/wx/msw/wince/smartphone.rc @@ -1,67 +1,67 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: wx/msw/wince/smartphone.h -// Purpose: resources for MS Smartphone build -// Author: Wlodzimierz ABX Skiba -// Modified by: -// Created: 01.05.2004 -// RCS-ID: $Id: smartphone.rc 30036 2004-10-20 15:14:46Z VZ $ -// Copyright: (c) Wlodzimierz Skiba -// License: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#include - -#include "wx/msw/wince/resources.h" - -STRINGTABLE -BEGIN - IDS_EMPTY "" -END - -IDR_POPUP_1 MENU -BEGIN - POPUP "" - BEGIN - MENUITEM "M", IDM_ITEM - END -END - -IDR_POPUP_2 MENU -BEGIN - POPUP "" - BEGIN - MENUITEM "M", IDM_ITEM - END - POPUP "" - BEGIN - MENUITEM "M", IDM_ITEM - END -END - -IDR_MENUBAR_ONE_BUTTON RCDATA -BEGIN - 0,2, - I_IMAGENONE, IDM_LEFT, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, NOMENU, - I_IMAGENONE, IDM_RIGHT, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, NOMENU, -END - -IDR_MENUBAR_LEFT_MENU RCDATA -BEGIN - IDR_POPUP_1,1, - I_IMAGENONE, IDM_LEFT, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, 0, -END - -IDR_MENUBAR_RIGHT_MENU RCDATA -BEGIN - IDR_POPUP_1,2, - I_IMAGENONE, IDM_LEFT, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, NOMENU, - I_IMAGENONE, IDM_RIGHT, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, 0, -END - -IDR_MENUBAR_BOTH_MENUS RCDATA -BEGIN - IDR_POPUP_2,2, - I_IMAGENONE, IDM_LEFT, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, 0, - I_IMAGENONE, IDM_RIGHT, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, 1, -END - +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/msw/wince/smartphone.h +// Purpose: resources for MS Smartphone build +// Author: Wlodzimierz ABX Skiba +// Modified by: +// Created: 01.05.2004 +// RCS-ID: $Id: smartphone.rc 30036 2004-10-20 15:14:46Z VZ $ +// Copyright: (c) Wlodzimierz Skiba +// License: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#include + +#include "wx/msw/wince/resources.h" + +STRINGTABLE +BEGIN + IDS_EMPTY "" +END + +IDR_POPUP_1 MENU +BEGIN + POPUP "" + BEGIN + MENUITEM "M", IDM_ITEM + END +END + +IDR_POPUP_2 MENU +BEGIN + POPUP "" + BEGIN + MENUITEM "M", IDM_ITEM + END + POPUP "" + BEGIN + MENUITEM "M", IDM_ITEM + END +END + +IDR_MENUBAR_ONE_BUTTON RCDATA +BEGIN + 0,2, + I_IMAGENONE, IDM_LEFT, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, NOMENU, + I_IMAGENONE, IDM_RIGHT, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, NOMENU, +END + +IDR_MENUBAR_LEFT_MENU RCDATA +BEGIN + IDR_POPUP_1,1, + I_IMAGENONE, IDM_LEFT, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, 0, +END + +IDR_MENUBAR_RIGHT_MENU RCDATA +BEGIN + IDR_POPUP_1,2, + I_IMAGENONE, IDM_LEFT, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, NOMENU, + I_IMAGENONE, IDM_RIGHT, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, 0, +END + +IDR_MENUBAR_BOTH_MENUS RCDATA +BEGIN + IDR_POPUP_2,2, + I_IMAGENONE, IDM_LEFT, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, 0, + I_IMAGENONE, IDM_RIGHT, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_EMPTY, 0, 1, +END + diff --git a/3rdparty/wxWidgets/include/wx/msw/wince/wince.rc b/3rdparty/wxWidgets/include/wx/msw/wince/wince.rc index 1c2e85ffe5..d1f542224f 100644 --- a/3rdparty/wxWidgets/include/wx/msw/wince/wince.rc +++ b/3rdparty/wxWidgets/include/wx/msw/wince/wince.rc @@ -1,26 +1,26 @@ -#include - -#ifdef WIN32_PLATFORM_WFSP - #include "wx/msw/wince/smartphone.rc" -#else - -// Dummy menubar/toolbar for WinCE - -5000 RCDATA DISCARDABLE -BEGIN - // Popup menu name - 5000, - // Count of items to put on the menu - 0 -END - -5000 MENU DISCARDABLE -BEGIN - POPUP "Dummy" - BEGIN - MENUITEM "Dummy" 99 - END -END - -#endif - +#include + +#ifdef WIN32_PLATFORM_WFSP + #include "wx/msw/wince/smartphone.rc" +#else + +// Dummy menubar/toolbar for WinCE + +5000 RCDATA DISCARDABLE +BEGIN + // Popup menu name + 5000, + // Count of items to put on the menu + 0 +END + +5000 MENU DISCARDABLE +BEGIN + POPUP "Dummy" + BEGIN + MENUITEM "Dummy" 99 + END +END + +#endif + diff --git a/3rdparty/wxWidgets/include/wx/msw/wx.manifest b/3rdparty/wxWidgets/include/wx/msw/wx.manifest index 0d0bf1f16b..ecce6f5c3b 100644 --- a/3rdparty/wxWidgets/include/wx/msw/wx.manifest +++ b/3rdparty/wxWidgets/include/wx/msw/wx.manifest @@ -1,22 +1,22 @@ - - - -wxWindows application - - - - - - + + + +wxWindows application + + + + + + diff --git a/3rdparty/wxWidgets/include/wx/msw/wx.rc b/3rdparty/wxWidgets/include/wx/msw/wx.rc index eae47fc048..d843b4f39a 100644 --- a/3rdparty/wxWidgets/include/wx/msw/wx.rc +++ b/3rdparty/wxWidgets/include/wx/msw/wx.rc @@ -1,119 +1,119 @@ -///////////////////////////////////////////////////////////////////////////// -// File: wx.rc -// Purpose: wxWindows resource definitions. ALWAYS include -// this in your application resource file. -// Author: Julian Smart -// Modified by: -// Created: -// Copyright: (c) Julian Smart -// RCS-ID: $Id: wx.rc 43491 2006-11-18 16:46:59Z VZ $ -// Licence: wxWindows Licence -///////////////////////////////////////////////////////////////////////////// - -#if defined(__MWERKS__) -#include -#else -#include -#endif - -#if defined(_WIN32_WCE) - #include "wx/msw/wince/wince.rc" -#endif - -#include "wx/msw/rcdefs.h" - -////////////////////////////////////////////////////////////////////////////// -// -// This is the MDI Window menu -// - -wxWindowMenu MENU DISCARDABLE -BEGIN - POPUP "&Window" - BEGIN - MENUITEM "&Cascade", 4002 - MENUITEM "Tile &Horizontally", 4001 - MENUITEM "Tile &Vertically", 4005 - MENUITEM "", -1 - MENUITEM "&Arrange Icons", 4003 - MENUITEM "&Next", 4004 - END -END - -////////////////////////////////////////////////////////////////////////////// -// -// Standard wxWindows Cursors -// - -//WXCURSOR_HAND CURSOR DISCARDABLE "wx/msw/hand.cur" -//WXCURSOR_BULLSEYE CURSOR DISCARDABLE "wx/msw/bullseye.cur" -//WXCURSOR_PENCIL CURSOR DISCARDABLE "wx/msw/pencil.cur" -//WXCURSOR_MAGNIFIER CURSOR DISCARDABLE "wx/msw/magnif1.cur" -//WXCURSOR_ROLLER CURSOR DISCARDABLE "wx/msw/roller.cur" -//WXCURSOR_PBRUSH CURSOR DISCARDABLE "wx/msw/pbrush.cur" -//WXCURSOR_PLEFT CURSOR DISCARDABLE "wx/msw/pntleft.cur" -//WXCURSOR_PRIGHT CURSOR DISCARDABLE "wx/msw/pntright.cur" -WXCURSOR_BLANK CURSOR DISCARDABLE "wx/msw/blank.cur" -//WXCURSOR_RIGHT_ARROW CURSOR DISCARDABLE "wx/msw/rightarr.cur" -WXCURSOR_CROSS CURSOR DISCARDABLE "wx/msw/cross.cur" - - -////////////////////////////////////////////////////////////////////////////// -// -// Default Icons -// - -// First wx icon in alphabetical order, so it will be used by Explorer if the -// application doesn't have any icons of its own -//wxICON_AAA ICON "wx/msw/std.ico" - -//wxDEFAULT_FRAME ICON "wx/msw/std.ico" -//wxDEFAULT_MDIPARENTFRAME ICON "wx/msw/mdi.ico" -//wxDEFAULT_MDICHILDFRAME ICON "wx/msw/child.ico" - -// Standard small icons -//wxICON_SMALL_CLOSED_FOLDER ICON "wx/msw/folder1.ico" -//wxICON_SMALL_OPEN_FOLDER ICON "wx/msw/folder2.ico" -//wxICON_SMALL_FILE ICON "wx/msw/file1.ico" -//wxICON_SMALL_COMPUTER ICON "wx/msw/computer.ico" -//wxICON_SMALL_DRIVE ICON "wx/msw/drive.ico" -//wxICON_SMALL_CDROM ICON "wx/msw/cdrom.ico" -//wxICON_SMALL_FLOPPY ICON "wx/msw/floppy.ico" -//wxICON_SMALL_REMOVEABLE ICON "wx/msw/removble.ico" - -////////////////////////////////////////////////////////////////////////////// -// -// Bitmaps -// - -// For wxContextHelpButton -csquery BITMAP "wx/msw/csquery.bmp" - -// For obtaining the RGB values of standard colours -//wxBITMAP_STD_COLOURS BITMAP "wx/msw/colours.bmp" - -////////////////////////////////////////////////////////////////////////////// -// -// Manifest file for Windows XP -// - -#if !defined(wxUSE_NO_MANIFEST) || (wxUSE_NO_MANIFEST == 0) -#if !defined(WX_MSC_FULL_VER) || WX_MSC_FULL_VER < 140040130 - -// see "about isolated applications" topic in MSDN -#ifdef ISOLATION_AWARE_ENABLED -#define wxMANIFEST_ID 2 -#else -#define wxMANIFEST_ID 1 -#endif - -#if defined(WX_CPU_AMD64) -wxMANIFEST_ID 24 "wx/msw/amd64.manifest" -#elif defined(WX_CPU_IA64) -wxMANIFEST_ID 24 "wx/msw/ia64.manifest" -#elif defined(WX_CPU_X86) -wxMANIFEST_ID 24 "wx/msw/wx.manifest" -#endif - -#endif // !defined(WX_MSC_FULL_VER) || WX_MSC_FULL_VER < 140040130 -#endif // !defined(wxUSE_NO_MANIFEST) || (wxUSE_NO_MANIFEST == 0) +///////////////////////////////////////////////////////////////////////////// +// File: wx.rc +// Purpose: wxWindows resource definitions. ALWAYS include +// this in your application resource file. +// Author: Julian Smart +// Modified by: +// Created: +// Copyright: (c) Julian Smart +// RCS-ID: $Id: wx.rc 43491 2006-11-18 16:46:59Z VZ $ +// Licence: wxWindows Licence +///////////////////////////////////////////////////////////////////////////// + +#if defined(__MWERKS__) +#include +#else +#include +#endif + +#if defined(_WIN32_WCE) + #include "wx/msw/wince/wince.rc" +#endif + +#include "wx/msw/rcdefs.h" + +////////////////////////////////////////////////////////////////////////////// +// +// This is the MDI Window menu +// + +wxWindowMenu MENU DISCARDABLE +BEGIN + POPUP "&Window" + BEGIN + MENUITEM "&Cascade", 4002 + MENUITEM "Tile &Horizontally", 4001 + MENUITEM "Tile &Vertically", 4005 + MENUITEM "", -1 + MENUITEM "&Arrange Icons", 4003 + MENUITEM "&Next", 4004 + END +END + +////////////////////////////////////////////////////////////////////////////// +// +// Standard wxWindows Cursors +// + +//WXCURSOR_HAND CURSOR DISCARDABLE "wx/msw/hand.cur" +//WXCURSOR_BULLSEYE CURSOR DISCARDABLE "wx/msw/bullseye.cur" +//WXCURSOR_PENCIL CURSOR DISCARDABLE "wx/msw/pencil.cur" +//WXCURSOR_MAGNIFIER CURSOR DISCARDABLE "wx/msw/magnif1.cur" +//WXCURSOR_ROLLER CURSOR DISCARDABLE "wx/msw/roller.cur" +//WXCURSOR_PBRUSH CURSOR DISCARDABLE "wx/msw/pbrush.cur" +//WXCURSOR_PLEFT CURSOR DISCARDABLE "wx/msw/pntleft.cur" +//WXCURSOR_PRIGHT CURSOR DISCARDABLE "wx/msw/pntright.cur" +WXCURSOR_BLANK CURSOR DISCARDABLE "wx/msw/blank.cur" +//WXCURSOR_RIGHT_ARROW CURSOR DISCARDABLE "wx/msw/rightarr.cur" +WXCURSOR_CROSS CURSOR DISCARDABLE "wx/msw/cross.cur" + + +////////////////////////////////////////////////////////////////////////////// +// +// Default Icons +// + +// First wx icon in alphabetical order, so it will be used by Explorer if the +// application doesn't have any icons of its own +//wxICON_AAA ICON "wx/msw/std.ico" + +//wxDEFAULT_FRAME ICON "wx/msw/std.ico" +//wxDEFAULT_MDIPARENTFRAME ICON "wx/msw/mdi.ico" +//wxDEFAULT_MDICHILDFRAME ICON "wx/msw/child.ico" + +// Standard small icons +//wxICON_SMALL_CLOSED_FOLDER ICON "wx/msw/folder1.ico" +//wxICON_SMALL_OPEN_FOLDER ICON "wx/msw/folder2.ico" +//wxICON_SMALL_FILE ICON "wx/msw/file1.ico" +//wxICON_SMALL_COMPUTER ICON "wx/msw/computer.ico" +//wxICON_SMALL_DRIVE ICON "wx/msw/drive.ico" +//wxICON_SMALL_CDROM ICON "wx/msw/cdrom.ico" +//wxICON_SMALL_FLOPPY ICON "wx/msw/floppy.ico" +//wxICON_SMALL_REMOVEABLE ICON "wx/msw/removble.ico" + +////////////////////////////////////////////////////////////////////////////// +// +// Bitmaps +// + +// For wxContextHelpButton +csquery BITMAP "wx/msw/csquery.bmp" + +// For obtaining the RGB values of standard colours +//wxBITMAP_STD_COLOURS BITMAP "wx/msw/colours.bmp" + +////////////////////////////////////////////////////////////////////////////// +// +// Manifest file for Windows XP +// + +#if !defined(wxUSE_NO_MANIFEST) || (wxUSE_NO_MANIFEST == 0) +#if !defined(WX_MSC_FULL_VER) || WX_MSC_FULL_VER < 140040130 + +// see "about isolated applications" topic in MSDN +#ifdef ISOLATION_AWARE_ENABLED +#define wxMANIFEST_ID 2 +#else +#define wxMANIFEST_ID 1 +#endif + +#if defined(WX_CPU_AMD64) +wxMANIFEST_ID 24 "wx/msw/amd64.manifest" +#elif defined(WX_CPU_IA64) +wxMANIFEST_ID 24 "wx/msw/ia64.manifest" +#elif defined(WX_CPU_X86) +wxMANIFEST_ID 24 "wx/msw/wx.manifest" +#endif + +#endif // !defined(WX_MSC_FULL_VER) || WX_MSC_FULL_VER < 140040130 +#endif // !defined(wxUSE_NO_MANIFEST) || (wxUSE_NO_MANIFEST == 0) diff --git a/3rdparty/wxWidgets/src/common/base.rc b/3rdparty/wxWidgets/src/common/base.rc index 56f595a89d..5a814417f0 100644 --- a/3rdparty/wxWidgets/src/common/base.rc +++ b/3rdparty/wxWidgets/src/common/base.rc @@ -1,49 +1,49 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: src/base/base.rc -// Purpose: contains version info resource for wxBase DLL build -// Author: Vadim Zeitlin -// Modified by: -// Created: 09.07.00 -// RCS-ID: $Id: base.rc 13410 2002-01-06 14:51:28Z VS $ -// Copyright: (c) 2000 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#include "wx/version.h" - -#ifdef _DEBUG - #define DLL_FLAGS 0x1L - #define DLL_SUFFIX "d" -#else - #define DLL_FLAGS 0x0L - #define DLL_SUFFIX "" -#endif - -1 VERSIONINFO - FILEVERSION wxMAJOR_VERSION,wxMINOR_VERSION,wxRELEASE_NUMBER,wxBETA_NUMBER - PRODUCTVERSION wxMAJOR_VERSION,wxMINOR_VERSION,wxRELEASE_NUMBER,wxBETA_NUMBER - FILEFLAGSMASK 0x3fL - FILEFLAGS DLL_FLAGS - FILEOS 0x40004L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "wxBase (part of Windows) cross-platform framework\0" - VALUE "CompanyName", "wxWindows development team\0" - VALUE "FileDescription", "wxBase is a non GUI part of wxWindows\0" - VALUE "FileVersion", wxVERSION_NUM_DOT_STRING "\0" - VALUE "InternalName", "wxBase\0" - VALUE "LegalCopyright", "Copyright © 1993-2002 wxWindows development team\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "wxbase" wxVERSION_NUM_STRING DLL_SUFFIX ".dll\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "wxWindows\0" - VALUE "ProductVersion", wxVERSION_NUM_DOT_STRING "\0" - VALUE "SpecialBuild", "\0" - END - END -END +/////////////////////////////////////////////////////////////////////////////// +// Name: src/base/base.rc +// Purpose: contains version info resource for wxBase DLL build +// Author: Vadim Zeitlin +// Modified by: +// Created: 09.07.00 +// RCS-ID: $Id: base.rc 13410 2002-01-06 14:51:28Z VS $ +// Copyright: (c) 2000 Vadim Zeitlin +// Licence: wxWindows license +/////////////////////////////////////////////////////////////////////////////// + +#include "wx/version.h" + +#ifdef _DEBUG + #define DLL_FLAGS 0x1L + #define DLL_SUFFIX "d" +#else + #define DLL_FLAGS 0x0L + #define DLL_SUFFIX "" +#endif + +1 VERSIONINFO + FILEVERSION wxMAJOR_VERSION,wxMINOR_VERSION,wxRELEASE_NUMBER,wxBETA_NUMBER + PRODUCTVERSION wxMAJOR_VERSION,wxMINOR_VERSION,wxRELEASE_NUMBER,wxBETA_NUMBER + FILEFLAGSMASK 0x3fL + FILEFLAGS DLL_FLAGS + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "wxBase (part of Windows) cross-platform framework\0" + VALUE "CompanyName", "wxWindows development team\0" + VALUE "FileDescription", "wxBase is a non GUI part of wxWindows\0" + VALUE "FileVersion", wxVERSION_NUM_DOT_STRING "\0" + VALUE "InternalName", "wxBase\0" + VALUE "LegalCopyright", "Copyright © 1993-2002 wxWindows development team\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "wxbase" wxVERSION_NUM_STRING DLL_SUFFIX ".dll\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "wxWindows\0" + VALUE "ProductVersion", wxVERSION_NUM_DOT_STRING "\0" + VALUE "SpecialBuild", "\0" + END + END +END diff --git a/3rdparty/wxWidgets/src/common/descrip.mms b/3rdparty/wxWidgets/src/common/descrip.mms index 5b9544a245..b5c7b37ae8 100644 --- a/3rdparty/wxWidgets/src/common/descrip.mms +++ b/3rdparty/wxWidgets/src/common/descrip.mms @@ -1,583 +1,583 @@ -#***************************************************************************** -# * -# Make file for VMS * -# Author : J.Jansen (joukj@hrem.nano.tudelft.nl) * -# Date : 1 December 2006 * -# * -#***************************************************************************** -.first - define wx [--.include.wx] - -.ifdef __WXMOTIF__ -CXX_DEFINE = /define=(__WXMOTIF__=1)/name=(as_is,short)\ - /assume=(nostdnew,noglobal_array_new) -CC_DEFINE = /define=(__WXMOTIF__=1)/name=(as_is,short) -.else -.ifdef __WXGTK__ -CXX_DEFINE = /define=(__WXGTK__=1)/float=ieee/name=(as_is,short)/ieee=denorm\ - /assume=(nostdnew,noglobal_array_new) -CC_DEFINE = /define=(__WXGTK__=1)/float=ieee/name=(as_is,short)/ieee=denorm -.else -.ifdef __WXGTK2__ -CXX_DEFINE = /define=(__WXGTK__=1,VMS_GTK2=1)/float=ieee/name=(as_is,short)/ieee=denorm\ - /assume=(nostdnew,noglobal_array_new) -CC_DEFINE = /define=(__WXGTK__=1,VMS_GTK2=1)/float=ieee/name=(as_is,short)/ieee=denorm -.else -.ifdef __WXX11__ -CXX_DEFINE = /define=(__WXX11__=1,__WXUNIVERSAL__==1)/float=ieee\ - /name=(as_is,short)/assume=(nostdnew,noglobal_array_new) -CC_DEFINE = /define=(__WXX11__=1,__WXUNIVERSAL__==1)/float=ieee\ - /name=(as_is,short) -.else -CXX_DEFINE = -CC_DEFINE = -.endif -.endif -.endif -.endif - -YACC=bison/yacc - -SED=gsed - -LEX=flex - -.suffixes : .cpp - -.cpp.obj : - cxx $(CXXFLAGS)$(CXX_DEFINE) $(MMS$TARGET_NAME).cpp -.c.obj : - cc $(CFLAGS)$(CC_DEFINE) $(MMS$TARGET_NAME).c - -OBJECTS = \ - anidecod.obj,\ - animatecmn.obj,\ - appbase.obj,\ - appcmn.obj,\ - artprov.obj,\ - artstd.obj,\ - bmpbase.obj,\ - bookctrl.obj,\ - choiccmn.obj,\ - clipcmn.obj,\ - clntdata.obj,\ - cmdline.obj,\ - cmdproc.obj,\ - cmndata.obj,\ - config.obj,\ - containr.obj,\ - convauto.obj,\ - colourcmn.obj,\ - cshelp.obj,\ - ctrlcmn.obj,\ - ctrlsub.obj,\ - datacmn.obj,\ - datetime.obj,\ - datstrm.obj,\ - db.obj,\ - dbgrid.obj,\ - dbtable.obj,\ - dcbase.obj,\ - dcbufcmn.obj,\ - dircmn.obj,\ - dlgcmn.obj,\ - dobjcmn.obj,\ - docmdi.obj,\ - docview.obj,\ - dpycmn.obj,\ - dynarray.obj,\ - dynlib.obj,\ - encconv.obj,\ - event.obj,\ - evtloopcmn.obj,\ - extended.obj,\ - fddlgcmn.obj,\ - ffile.obj,\ - file.obj,\ - fileback.obj,\ - fileconf.obj,\ - filename.obj,\ - filefn.obj,\ - filesys.obj,\ - fldlgcmn.obj,\ - fmapbase.obj,\ - fontcmn.obj,\ - fontenumcmn.obj,\ - fontmap.obj,\ - framecmn.obj - -OBJECTS1=fs_inet.obj,\ - ftp.obj,\ - gaugecmn.obj,\ - gbsizer.obj,\ - gdicmn.obj,\ - gifdecod.obj,\ - hash.obj,\ - hashmap.obj,\ - helpbase.obj,\ - http.obj,\ - iconbndl.obj,\ - init.obj,\ - imagall.obj,\ - imagbmp.obj,\ - image.obj,\ - imagfill.obj,\ - imaggif.obj,\ - imagiff.obj,\ - imagjpeg.obj,\ - imagpcx.obj,\ - imagpng.obj,\ - imagpnm.obj,\ - imagtga.obj,\ - imagtiff.obj,\ - imagxpm.obj,\ - intl.obj,\ - ipcbase.obj,\ - layout.obj,\ - lboxcmn.obj,\ - list.obj,\ - log.obj,\ - longlong.obj,\ - memory.obj,\ - menucmn.obj,\ - mimecmn.obj,\ - module.obj,\ - msgout.obj,\ - mstream.obj,\ - nbkbase.obj,\ - object.obj,\ - paper.obj,\ - platinfo.obj,\ - popupcmn.obj,\ - prntbase.obj,\ - process.obj,\ - protocol.obj,\ - quantize.obj,\ - radiocmn.obj,\ - rendcmn.obj,\ - sckaddr.obj,\ - sckfile.obj,\ - sckipc.obj,\ - sckstrm.obj,\ - sizer.obj,\ - socket.obj,\ - settcmn.obj,\ - statbar.obj,\ - stdpbase.obj,\ - stockitem.obj,\ - stopwatch.obj,\ - strconv.obj,\ - stream.obj,\ - string.obj,\ - sysopt.obj - -OBJECTS2=tbarbase.obj,\ - textbuf.obj,\ - textcmn.obj,\ - textfile.obj,\ - timercmn.obj,\ - tokenzr.obj,\ - toplvcmn.obj,\ - treebase.obj,\ - txtstrm.obj,\ - url.obj,\ - utilscmn.obj,\ - rgncmn.obj,\ - uri.obj,\ - valgen.obj,\ - validate.obj,\ - valtext.obj,\ - variant.obj,\ - wfstream.obj,\ - wxchar.obj,\ - wincmn.obj,\ - xpmdecod.obj,\ - zipstrm.obj,\ - zstream.obj,\ - clrpickercmn.obj,\ - filepickercmn.obj,\ - fontpickercmn.obj,\ - pickerbase.obj,\ - listctrlcmn.obj - -OBJECTS_MOTIF=radiocmn.obj,combocmn.obj - -OBJECTS_X11=accesscmn.obj,dndcmn.obj,dpycmn.obj,dseldlg.obj,\ - dynload.obj,effects.obj,fddlgcmn.obj,fs_mem.obj,\ - gbsizer.obj,geometry.obj,matrix.obj,radiocmn.obj,\ - regex.obj,taskbarcmn.obj,xti.obj,xtistrm.obj,xtixml.obj,\ - combocmn.obj - -OBJECTS_X11_2=socketevtdispatch.obj - -SOURCES = \ - anidecod.cpp,\ - animatecmn.cpp,\ - appbase.cpp,\ - appcmn.cpp,\ - artprov.cpp,\ - artstd.cpp,\ - bmpbase.cpp,\ - bookctrl.cpp,\ - choiccmn.cpp,\ - clipcmn.cpp,\ - clntdata.cpp,\ - cmdline.cpp,\ - cmdproc.cpp,\ - cmndata.cpp,\ - config.cpp,\ - containr.cpp,\ - convauto.cpp,\ - colourcmn.cpp,\ - cshelp.cpp,\ - ctrlcmn.cpp,\ - ctrlsub.cpp,\ - datacmn.cpp,\ - datetime.cpp,\ - datstrm.cpp,\ - db.cpp,\ - dbgrid.cpp,\ - dbtable.cpp,\ - dcbase.cpp,\ - dcbufcmn.cpp,\ - dircmn.cpp,\ - dlgcmn.cpp,\ - dobjcmn.cpp,\ - docmdi.cpp,\ - docview.cpp,\ - dpycmn.cpp,\ - dynarray.cpp,\ - dynlib.cpp,\ - encconv.cpp,\ - event.cpp,\ - evtloopcmn.cpp,\ - extended.c,\ - ffile.cpp,\ - fddlgcmn.cpp,\ - file.cpp,\ - fileback.cpp,\ - fileconf.cpp,\ - filename.cpp,\ - filefn.cpp,\ - filesys.cpp,\ - fldlgcmn.cpp,\ - fmapbase.cpp,\ - fontcmn.cpp,\ - fontenumcmn.cpp,\ - fontmap.cpp,\ - framecmn.cpp,\ - fs_inet.cpp,\ - ftp.cpp,\ - gaugecmn.cpp,\ - gbsizer.cpp,\ - gdicmn.cpp,\ - gifdecod.cpp,\ - hash.cpp,\ - hashmap.cpp,\ - helpbase.cpp,\ - http.cpp,\ - iconbndl.cpp,\ - init.cpp,\ - imagall.cpp,\ - imagbmp.cpp,\ - image.cpp,\ - imagfill.cpp,\ - imaggif.cpp,\ - imagiff.cpp,\ - imagjpeg.cpp,\ - imagpcx.cpp,\ - imagpng.cpp,\ - imagpnm.cpp,\ - imagtga.cpp,\ - imagtiff.cpp,\ - imagxpm.cpp,\ - intl.cpp,\ - ipcbase.cpp,\ - layout.cpp,\ - lboxcmn.cpp,\ - list.cpp,\ - listctrlcmn.cpp,\ - log.cpp,\ - longlong.cpp,\ - memory.cpp,\ - menucmn.cpp,\ - mimecmn.cpp,\ - module.cpp,\ - msgout.cpp,\ - mstream.cpp,\ - nbkbase.cpp,\ - object.cpp,\ - paper.cpp,\ - platinfo.cpp,\ - popupcmn.cpp,\ - prntbase.cpp,\ - process.cpp,\ - protocol.cpp,\ - quantize.cpp,\ - radiocmn.cpp,\ - rendcmn.cpp,\ - rgncmn.cpp,\ - sckaddr.cpp,\ - sckfile.cpp,\ - sckipc.cpp,\ - sckstrm.cpp,\ - sizer.cpp,\ - socket.cpp,\ - socketevtdispatch.cpp,\ - settcmn.cpp,\ - statbar.cpp,\ - stdpbase.cpp,\ - stockitem.cpp,\ - stopwatch.cpp,\ - strconv.cpp,\ - stream.cpp,\ - sysopt.cpp,\ - string.cpp,\ - tbarbase.cpp,\ - textbuf.cpp,\ - textcmn.cpp,\ - textfile.cpp,\ - timercmn.cpp,\ - tokenzr.cpp,\ - toplvcmn.cpp,\ - treebase.cpp,\ - txtstrm.cpp,\ - url.cpp,\ - utilscmn.cpp,\ - valgen.cpp,\ - validate.cpp,\ - valtext.cpp,\ - variant.cpp,\ - wfstream.cpp,\ - wincmn.cpp,\ - wxchar.cpp,\ - xpmdecod.cpp,\ - zipstrm.cpp,\ - zstream.cpp,\ - clrpickercmn.cpp,\ - filepickercmn.cpp,\ - fontpickercmn.cpp,\ - pickerbase.cpp,\ - accesscmn.cpp,\ - dndcmn.cpp,\ - dpycmn.cpp,\ - dseldlg.cpp,\ - dynload.cpp,\ - effects.cpp,\ - fddlgcmn.cpp,\ - fs_mem.cpp,\ - gbsizer.cpp,\ - geometry.cpp,\ - matrix.cpp,\ - radiocmn.cpp,\ - regex.cpp,\ - taskbarcmn.cpp,\ - uri.cpp,\ - xti.cpp,\ - xtistrm.cpp,\ - xtixml.cpp - -all : $(SOURCES) - $(MMS)$(MMSQUALIFIERS) $(OBJECTS) - $(MMS)$(MMSQUALIFIERS) $(OBJECTS1) - $(MMS)$(MMSQUALIFIERS) $(OBJECTS2) -.ifdef __WXMOTIF__ - $(MMS)$(MMSQUALIFIERS) $(OBJECTS_MOTIF) - library [--.lib]libwx_motif.olb $(OBJECTS) - library [--.lib]libwx_motif.olb $(OBJECTS1) - library [--.lib]libwx_motif.olb $(OBJECTS2) - library [--.lib]libwx_motif.olb $(OBJECTS_MOTIF) -.else -.ifdef __WXGTK__ - $(MMS)$(MMSQUALIFIERS) $(OBJECTS_X11) - library [--.lib]libwx_gtk.olb $(OBJECTS) - library [--.lib]libwx_gtk.olb $(OBJECTS1) - library [--.lib]libwx_gtk.olb $(OBJECTS2) - library [--.lib]libwx_gtk.olb $(OBJECTS_X11) -.else -.ifdef __WXGTK2__ - $(MMS)$(MMSQUALIFIERS) $(OBJECTS_X11) - library [--.lib]libwx_gtk2.olb $(OBJECTS) - library [--.lib]libwx_gtk2.olb $(OBJECTS1) - library [--.lib]libwx_gtk2.olb $(OBJECTS2) - library [--.lib]libwx_gtk2.olb $(OBJECTS_X11) -.else -.ifdef __WXX11__ - $(MMS)$(MMSQUALIFIERS) $(OBJECTS_X11) - $(MMS)$(MMSQUALIFIERS) $(OBJECTS_X11_2) - library [--.lib]libwx_x11_univ.olb $(OBJECTS) - library [--.lib]libwx_x11_univ.olb $(OBJECTS1) - library [--.lib]libwx_x11_univ.olb $(OBJECTS2) - library [--.lib]libwx_x11_univ.olb $(OBJECTS_X11) - library [--.lib]libwx_x11_univ.olb $(OBJECTS_X11_2) -.endif -.endif -.endif -.endif - -anidecod.obj : anidecod.cpp -animatecmn.obj : animatecmn.cpp -appbase.obj : appbase.cpp -appcmn.obj : appcmn.cpp -artprov.obj : artprov.cpp -artstd.obj : artstd.cpp -bmpbase.obj : bmpbase.cpp -bookctrl.obj : bookctrl.cpp -choiccmn.obj : choiccmn.cpp -clipcmn.obj : clipcmn.cpp -clntdata.obj : clntdata.cpp -cmdline.obj : cmdline.cpp -cmdproc.obj : cmdproc.cpp -cmndata.obj : cmndata.cpp -config.obj : config.cpp -containr.obj : containr.cpp -convauto.obj : convauto.cpp -colourcmn.obj : colourcmn.cpp -cshelp.obj : cshelp.cpp -ctrlcmn.obj : ctrlcmn.cpp -ctrlsub.obj : ctrlsub.cpp -datacmn.obj : datacmn.cpp -datetime.obj : datetime.cpp -datstrm.obj : datstrm.cpp -db.obj : db.cpp -dbgrid.obj : dbgrid.cpp -dbtable.obj : dbtable.cpp -dcbase.obj : dcbase.cpp -dcbufcmn.obj : dcbufcmn.cpp -dircmn.obj : dircmn.cpp -dlgcmn.obj : dlgcmn.cpp -dobjcmn.obj : dobjcmn.cpp -docmdi.obj : docmdi.cpp -docview.obj : docview.cpp -dynarray.obj : dynarray.cpp -dynlib.obj : dynlib.cpp -encconv.obj : encconv.cpp -event.obj : event.cpp -evtloopcmn.obj : evtloopcmn.cpp -extended.obj : extended.c -ffile.obj : ffile.cpp -fddlgcmn.obj : fddlgcmn.cpp -file.obj : file.cpp -fileback.obj : fileback.cpp -fileconf.obj : fileconf.cpp -filefn.obj : filefn.cpp -filename.obj : filename.cpp -filesys.obj : filesys.cpp -fldlgcmn.obj : fldlgcmn.cpp -fmapbase.obj : fmapbase.cpp -fontcmn.obj : fontcmn.cpp -fontenumcmn.obj : fontenumcmn.cpp -fontmap.obj : fontmap.cpp -framecmn.obj : framecmn.cpp -fs_inet.obj : fs_inet.cpp -ftp.obj : ftp.cpp -gaugecmn.obj : gaugecmn.cpp -gbsizer.obj : gbsizer.cpp -gdicmn.obj : gdicmn.cpp -gifdecod.obj : gifdecod.cpp -hash.obj : hash.cpp -hashmap.obj : hashmap.cpp -helpbase.obj : helpbase.cpp -http.obj : http.cpp -iconbndl.obj : iconbndl.cpp -init.obj : init.cpp -imagall.obj : imagall.cpp -imagbmp.obj : imagbmp.cpp -image.obj : image.cpp -imagfill.obj : imagfill.cpp -imaggif.obj : imaggif.cpp -imagiff.obj : imagiff.cpp -imagjpeg.obj : imagjpeg.cpp -imagpcx.obj : imagpcx.cpp -imagpng.obj : imagpng.cpp -imagpnm.obj : imagpnm.cpp -imagtga.obj : imagtga.cpp -imagtiff.obj : imagtiff.cpp -imagxpm.obj : imagxpm.cpp -intl.obj : intl.cpp -ipcbase.obj : ipcbase.cpp -layout.obj : layout.cpp -lboxcmn.obj : lboxcmn.cpp -list.obj : list.cpp -log.obj : log.cpp -longlong.obj : longlong.cpp -memory.obj : memory.cpp -menucmn.obj : menucmn.cpp -mimecmn.obj : mimecmn.cpp -module.obj : module.cpp -msgout.obj : msgout.cpp -mstream.obj : mstream.cpp -nbkbase.obj : nbkbase.cpp -object.obj : object.cpp -paper.obj : paper.cpp -platinfo.obj : platinfo.cpp -popupcmn.obj : popupcmn.cpp -prntbase.obj : prntbase.cpp -process.obj : process.cpp -protocol.obj : protocol.cpp -quantize.obj : quantize.cpp -radiocmn.obj : radiocmn.cpp -rendcmn.obj : rendcmn.cpp -rgncmn.obj : rgncmn.cpp -sckaddr.obj : sckaddr.cpp -sckfile.obj : sckfile.cpp -sckipc.obj : sckipc.cpp -sckstrm.obj : sckstrm.cpp -sizer.obj : sizer.cpp -socket.obj : socket.cpp -socketevtdispatch.obj : socketevtdispatch.cpp -settcmn.obj : settcmn.cpp -statbar.obj : statbar.cpp -stdpbase.obj : stdpbase.cpp -stockitem.obj : stockitem.cpp -stopwatch.obj : stopwatch.cpp -strconv.obj : strconv.cpp -stream.obj : stream.cpp -sysopt.obj : sysopt.cpp -string.obj : string.cpp -tbarbase.obj : tbarbase.cpp -textbuf.obj : textbuf.cpp -textcmn.obj : textcmn.cpp -textfile.obj : textfile.cpp -timercmn.obj : timercmn.cpp -tokenzr.obj : tokenzr.cpp -toplvcmn.obj : toplvcmn.cpp -treebase.obj : treebase.cpp -txtstrm.obj : txtstrm.cpp -url.obj : url.cpp -utilscmn.obj : utilscmn.cpp -valgen.obj : valgen.cpp -validate.obj : validate.cpp -valtext.obj : valtext.cpp -variant.obj : variant.cpp -wfstream.obj : wfstream.cpp -wincmn.obj : wincmn.cpp -wxchar.obj : wxchar.cpp -xpmdecod.obj : xpmdecod.cpp -zipstrm.obj : zipstrm.cpp -zstream.obj : zstream.cpp -accesscmn.obj : accesscmn.cpp -dndcmn.obj : dndcmn.cpp -dpycmn.obj : dpycmn.cpp -dseldlg.obj : dseldlg.cpp -dynload.obj : dynload.cpp -effects.obj : effects.cpp -fddlgcmn.obj : fddlgcmn.cpp -fs_mem.obj : fs_mem.cpp -gbsizer.obj : gbsizer.cpp -geometry.obj : geometry.cpp -matrix.obj : matrix.cpp -radiocmn.obj : radiocmn.cpp -regex.obj : regex.cpp -taskbarcmn.obj : taskbarcmn.cpp -xti.obj : xti.cpp -xtistrm.obj : xtistrm.cpp -xtixml.obj : xtixml.cpp -uri.obj : uri.cpp -dpycmn.obj : dpycmn.cpp -combocmn.obj : combocmn.cpp -clrpickercmn.obj : clrpickercmn.cpp -filepickercmn.obj : filepickercmn.cpp -fontpickercmn.obj : fontpickercmn.cpp -pickerbase.obj : pickerbase.cpp -listctrlcmn.obj : listctrlcmn.cpp +#***************************************************************************** +# * +# Make file for VMS * +# Author : J.Jansen (joukj@hrem.nano.tudelft.nl) * +# Date : 1 December 2006 * +# * +#***************************************************************************** +.first + define wx [--.include.wx] + +.ifdef __WXMOTIF__ +CXX_DEFINE = /define=(__WXMOTIF__=1)/name=(as_is,short)\ + /assume=(nostdnew,noglobal_array_new) +CC_DEFINE = /define=(__WXMOTIF__=1)/name=(as_is,short) +.else +.ifdef __WXGTK__ +CXX_DEFINE = /define=(__WXGTK__=1)/float=ieee/name=(as_is,short)/ieee=denorm\ + /assume=(nostdnew,noglobal_array_new) +CC_DEFINE = /define=(__WXGTK__=1)/float=ieee/name=(as_is,short)/ieee=denorm +.else +.ifdef __WXGTK2__ +CXX_DEFINE = /define=(__WXGTK__=1,VMS_GTK2=1)/float=ieee/name=(as_is,short)/ieee=denorm\ + /assume=(nostdnew,noglobal_array_new) +CC_DEFINE = /define=(__WXGTK__=1,VMS_GTK2=1)/float=ieee/name=(as_is,short)/ieee=denorm +.else +.ifdef __WXX11__ +CXX_DEFINE = /define=(__WXX11__=1,__WXUNIVERSAL__==1)/float=ieee\ + /name=(as_is,short)/assume=(nostdnew,noglobal_array_new) +CC_DEFINE = /define=(__WXX11__=1,__WXUNIVERSAL__==1)/float=ieee\ + /name=(as_is,short) +.else +CXX_DEFINE = +CC_DEFINE = +.endif +.endif +.endif +.endif + +YACC=bison/yacc + +SED=gsed + +LEX=flex + +.suffixes : .cpp + +.cpp.obj : + cxx $(CXXFLAGS)$(CXX_DEFINE) $(MMS$TARGET_NAME).cpp +.c.obj : + cc $(CFLAGS)$(CC_DEFINE) $(MMS$TARGET_NAME).c + +OBJECTS = \ + anidecod.obj,\ + animatecmn.obj,\ + appbase.obj,\ + appcmn.obj,\ + artprov.obj,\ + artstd.obj,\ + bmpbase.obj,\ + bookctrl.obj,\ + choiccmn.obj,\ + clipcmn.obj,\ + clntdata.obj,\ + cmdline.obj,\ + cmdproc.obj,\ + cmndata.obj,\ + config.obj,\ + containr.obj,\ + convauto.obj,\ + colourcmn.obj,\ + cshelp.obj,\ + ctrlcmn.obj,\ + ctrlsub.obj,\ + datacmn.obj,\ + datetime.obj,\ + datstrm.obj,\ + db.obj,\ + dbgrid.obj,\ + dbtable.obj,\ + dcbase.obj,\ + dcbufcmn.obj,\ + dircmn.obj,\ + dlgcmn.obj,\ + dobjcmn.obj,\ + docmdi.obj,\ + docview.obj,\ + dpycmn.obj,\ + dynarray.obj,\ + dynlib.obj,\ + encconv.obj,\ + event.obj,\ + evtloopcmn.obj,\ + extended.obj,\ + fddlgcmn.obj,\ + ffile.obj,\ + file.obj,\ + fileback.obj,\ + fileconf.obj,\ + filename.obj,\ + filefn.obj,\ + filesys.obj,\ + fldlgcmn.obj,\ + fmapbase.obj,\ + fontcmn.obj,\ + fontenumcmn.obj,\ + fontmap.obj,\ + framecmn.obj + +OBJECTS1=fs_inet.obj,\ + ftp.obj,\ + gaugecmn.obj,\ + gbsizer.obj,\ + gdicmn.obj,\ + gifdecod.obj,\ + hash.obj,\ + hashmap.obj,\ + helpbase.obj,\ + http.obj,\ + iconbndl.obj,\ + init.obj,\ + imagall.obj,\ + imagbmp.obj,\ + image.obj,\ + imagfill.obj,\ + imaggif.obj,\ + imagiff.obj,\ + imagjpeg.obj,\ + imagpcx.obj,\ + imagpng.obj,\ + imagpnm.obj,\ + imagtga.obj,\ + imagtiff.obj,\ + imagxpm.obj,\ + intl.obj,\ + ipcbase.obj,\ + layout.obj,\ + lboxcmn.obj,\ + list.obj,\ + log.obj,\ + longlong.obj,\ + memory.obj,\ + menucmn.obj,\ + mimecmn.obj,\ + module.obj,\ + msgout.obj,\ + mstream.obj,\ + nbkbase.obj,\ + object.obj,\ + paper.obj,\ + platinfo.obj,\ + popupcmn.obj,\ + prntbase.obj,\ + process.obj,\ + protocol.obj,\ + quantize.obj,\ + radiocmn.obj,\ + rendcmn.obj,\ + sckaddr.obj,\ + sckfile.obj,\ + sckipc.obj,\ + sckstrm.obj,\ + sizer.obj,\ + socket.obj,\ + settcmn.obj,\ + statbar.obj,\ + stdpbase.obj,\ + stockitem.obj,\ + stopwatch.obj,\ + strconv.obj,\ + stream.obj,\ + string.obj,\ + sysopt.obj + +OBJECTS2=tbarbase.obj,\ + textbuf.obj,\ + textcmn.obj,\ + textfile.obj,\ + timercmn.obj,\ + tokenzr.obj,\ + toplvcmn.obj,\ + treebase.obj,\ + txtstrm.obj,\ + url.obj,\ + utilscmn.obj,\ + rgncmn.obj,\ + uri.obj,\ + valgen.obj,\ + validate.obj,\ + valtext.obj,\ + variant.obj,\ + wfstream.obj,\ + wxchar.obj,\ + wincmn.obj,\ + xpmdecod.obj,\ + zipstrm.obj,\ + zstream.obj,\ + clrpickercmn.obj,\ + filepickercmn.obj,\ + fontpickercmn.obj,\ + pickerbase.obj,\ + listctrlcmn.obj + +OBJECTS_MOTIF=radiocmn.obj,combocmn.obj + +OBJECTS_X11=accesscmn.obj,dndcmn.obj,dpycmn.obj,dseldlg.obj,\ + dynload.obj,effects.obj,fddlgcmn.obj,fs_mem.obj,\ + gbsizer.obj,geometry.obj,matrix.obj,radiocmn.obj,\ + regex.obj,taskbarcmn.obj,xti.obj,xtistrm.obj,xtixml.obj,\ + combocmn.obj + +OBJECTS_X11_2=socketevtdispatch.obj + +SOURCES = \ + anidecod.cpp,\ + animatecmn.cpp,\ + appbase.cpp,\ + appcmn.cpp,\ + artprov.cpp,\ + artstd.cpp,\ + bmpbase.cpp,\ + bookctrl.cpp,\ + choiccmn.cpp,\ + clipcmn.cpp,\ + clntdata.cpp,\ + cmdline.cpp,\ + cmdproc.cpp,\ + cmndata.cpp,\ + config.cpp,\ + containr.cpp,\ + convauto.cpp,\ + colourcmn.cpp,\ + cshelp.cpp,\ + ctrlcmn.cpp,\ + ctrlsub.cpp,\ + datacmn.cpp,\ + datetime.cpp,\ + datstrm.cpp,\ + db.cpp,\ + dbgrid.cpp,\ + dbtable.cpp,\ + dcbase.cpp,\ + dcbufcmn.cpp,\ + dircmn.cpp,\ + dlgcmn.cpp,\ + dobjcmn.cpp,\ + docmdi.cpp,\ + docview.cpp,\ + dpycmn.cpp,\ + dynarray.cpp,\ + dynlib.cpp,\ + encconv.cpp,\ + event.cpp,\ + evtloopcmn.cpp,\ + extended.c,\ + ffile.cpp,\ + fddlgcmn.cpp,\ + file.cpp,\ + fileback.cpp,\ + fileconf.cpp,\ + filename.cpp,\ + filefn.cpp,\ + filesys.cpp,\ + fldlgcmn.cpp,\ + fmapbase.cpp,\ + fontcmn.cpp,\ + fontenumcmn.cpp,\ + fontmap.cpp,\ + framecmn.cpp,\ + fs_inet.cpp,\ + ftp.cpp,\ + gaugecmn.cpp,\ + gbsizer.cpp,\ + gdicmn.cpp,\ + gifdecod.cpp,\ + hash.cpp,\ + hashmap.cpp,\ + helpbase.cpp,\ + http.cpp,\ + iconbndl.cpp,\ + init.cpp,\ + imagall.cpp,\ + imagbmp.cpp,\ + image.cpp,\ + imagfill.cpp,\ + imaggif.cpp,\ + imagiff.cpp,\ + imagjpeg.cpp,\ + imagpcx.cpp,\ + imagpng.cpp,\ + imagpnm.cpp,\ + imagtga.cpp,\ + imagtiff.cpp,\ + imagxpm.cpp,\ + intl.cpp,\ + ipcbase.cpp,\ + layout.cpp,\ + lboxcmn.cpp,\ + list.cpp,\ + listctrlcmn.cpp,\ + log.cpp,\ + longlong.cpp,\ + memory.cpp,\ + menucmn.cpp,\ + mimecmn.cpp,\ + module.cpp,\ + msgout.cpp,\ + mstream.cpp,\ + nbkbase.cpp,\ + object.cpp,\ + paper.cpp,\ + platinfo.cpp,\ + popupcmn.cpp,\ + prntbase.cpp,\ + process.cpp,\ + protocol.cpp,\ + quantize.cpp,\ + radiocmn.cpp,\ + rendcmn.cpp,\ + rgncmn.cpp,\ + sckaddr.cpp,\ + sckfile.cpp,\ + sckipc.cpp,\ + sckstrm.cpp,\ + sizer.cpp,\ + socket.cpp,\ + socketevtdispatch.cpp,\ + settcmn.cpp,\ + statbar.cpp,\ + stdpbase.cpp,\ + stockitem.cpp,\ + stopwatch.cpp,\ + strconv.cpp,\ + stream.cpp,\ + sysopt.cpp,\ + string.cpp,\ + tbarbase.cpp,\ + textbuf.cpp,\ + textcmn.cpp,\ + textfile.cpp,\ + timercmn.cpp,\ + tokenzr.cpp,\ + toplvcmn.cpp,\ + treebase.cpp,\ + txtstrm.cpp,\ + url.cpp,\ + utilscmn.cpp,\ + valgen.cpp,\ + validate.cpp,\ + valtext.cpp,\ + variant.cpp,\ + wfstream.cpp,\ + wincmn.cpp,\ + wxchar.cpp,\ + xpmdecod.cpp,\ + zipstrm.cpp,\ + zstream.cpp,\ + clrpickercmn.cpp,\ + filepickercmn.cpp,\ + fontpickercmn.cpp,\ + pickerbase.cpp,\ + accesscmn.cpp,\ + dndcmn.cpp,\ + dpycmn.cpp,\ + dseldlg.cpp,\ + dynload.cpp,\ + effects.cpp,\ + fddlgcmn.cpp,\ + fs_mem.cpp,\ + gbsizer.cpp,\ + geometry.cpp,\ + matrix.cpp,\ + radiocmn.cpp,\ + regex.cpp,\ + taskbarcmn.cpp,\ + uri.cpp,\ + xti.cpp,\ + xtistrm.cpp,\ + xtixml.cpp + +all : $(SOURCES) + $(MMS)$(MMSQUALIFIERS) $(OBJECTS) + $(MMS)$(MMSQUALIFIERS) $(OBJECTS1) + $(MMS)$(MMSQUALIFIERS) $(OBJECTS2) +.ifdef __WXMOTIF__ + $(MMS)$(MMSQUALIFIERS) $(OBJECTS_MOTIF) + library [--.lib]libwx_motif.olb $(OBJECTS) + library [--.lib]libwx_motif.olb $(OBJECTS1) + library [--.lib]libwx_motif.olb $(OBJECTS2) + library [--.lib]libwx_motif.olb $(OBJECTS_MOTIF) +.else +.ifdef __WXGTK__ + $(MMS)$(MMSQUALIFIERS) $(OBJECTS_X11) + library [--.lib]libwx_gtk.olb $(OBJECTS) + library [--.lib]libwx_gtk.olb $(OBJECTS1) + library [--.lib]libwx_gtk.olb $(OBJECTS2) + library [--.lib]libwx_gtk.olb $(OBJECTS_X11) +.else +.ifdef __WXGTK2__ + $(MMS)$(MMSQUALIFIERS) $(OBJECTS_X11) + library [--.lib]libwx_gtk2.olb $(OBJECTS) + library [--.lib]libwx_gtk2.olb $(OBJECTS1) + library [--.lib]libwx_gtk2.olb $(OBJECTS2) + library [--.lib]libwx_gtk2.olb $(OBJECTS_X11) +.else +.ifdef __WXX11__ + $(MMS)$(MMSQUALIFIERS) $(OBJECTS_X11) + $(MMS)$(MMSQUALIFIERS) $(OBJECTS_X11_2) + library [--.lib]libwx_x11_univ.olb $(OBJECTS) + library [--.lib]libwx_x11_univ.olb $(OBJECTS1) + library [--.lib]libwx_x11_univ.olb $(OBJECTS2) + library [--.lib]libwx_x11_univ.olb $(OBJECTS_X11) + library [--.lib]libwx_x11_univ.olb $(OBJECTS_X11_2) +.endif +.endif +.endif +.endif + +anidecod.obj : anidecod.cpp +animatecmn.obj : animatecmn.cpp +appbase.obj : appbase.cpp +appcmn.obj : appcmn.cpp +artprov.obj : artprov.cpp +artstd.obj : artstd.cpp +bmpbase.obj : bmpbase.cpp +bookctrl.obj : bookctrl.cpp +choiccmn.obj : choiccmn.cpp +clipcmn.obj : clipcmn.cpp +clntdata.obj : clntdata.cpp +cmdline.obj : cmdline.cpp +cmdproc.obj : cmdproc.cpp +cmndata.obj : cmndata.cpp +config.obj : config.cpp +containr.obj : containr.cpp +convauto.obj : convauto.cpp +colourcmn.obj : colourcmn.cpp +cshelp.obj : cshelp.cpp +ctrlcmn.obj : ctrlcmn.cpp +ctrlsub.obj : ctrlsub.cpp +datacmn.obj : datacmn.cpp +datetime.obj : datetime.cpp +datstrm.obj : datstrm.cpp +db.obj : db.cpp +dbgrid.obj : dbgrid.cpp +dbtable.obj : dbtable.cpp +dcbase.obj : dcbase.cpp +dcbufcmn.obj : dcbufcmn.cpp +dircmn.obj : dircmn.cpp +dlgcmn.obj : dlgcmn.cpp +dobjcmn.obj : dobjcmn.cpp +docmdi.obj : docmdi.cpp +docview.obj : docview.cpp +dynarray.obj : dynarray.cpp +dynlib.obj : dynlib.cpp +encconv.obj : encconv.cpp +event.obj : event.cpp +evtloopcmn.obj : evtloopcmn.cpp +extended.obj : extended.c +ffile.obj : ffile.cpp +fddlgcmn.obj : fddlgcmn.cpp +file.obj : file.cpp +fileback.obj : fileback.cpp +fileconf.obj : fileconf.cpp +filefn.obj : filefn.cpp +filename.obj : filename.cpp +filesys.obj : filesys.cpp +fldlgcmn.obj : fldlgcmn.cpp +fmapbase.obj : fmapbase.cpp +fontcmn.obj : fontcmn.cpp +fontenumcmn.obj : fontenumcmn.cpp +fontmap.obj : fontmap.cpp +framecmn.obj : framecmn.cpp +fs_inet.obj : fs_inet.cpp +ftp.obj : ftp.cpp +gaugecmn.obj : gaugecmn.cpp +gbsizer.obj : gbsizer.cpp +gdicmn.obj : gdicmn.cpp +gifdecod.obj : gifdecod.cpp +hash.obj : hash.cpp +hashmap.obj : hashmap.cpp +helpbase.obj : helpbase.cpp +http.obj : http.cpp +iconbndl.obj : iconbndl.cpp +init.obj : init.cpp +imagall.obj : imagall.cpp +imagbmp.obj : imagbmp.cpp +image.obj : image.cpp +imagfill.obj : imagfill.cpp +imaggif.obj : imaggif.cpp +imagiff.obj : imagiff.cpp +imagjpeg.obj : imagjpeg.cpp +imagpcx.obj : imagpcx.cpp +imagpng.obj : imagpng.cpp +imagpnm.obj : imagpnm.cpp +imagtga.obj : imagtga.cpp +imagtiff.obj : imagtiff.cpp +imagxpm.obj : imagxpm.cpp +intl.obj : intl.cpp +ipcbase.obj : ipcbase.cpp +layout.obj : layout.cpp +lboxcmn.obj : lboxcmn.cpp +list.obj : list.cpp +log.obj : log.cpp +longlong.obj : longlong.cpp +memory.obj : memory.cpp +menucmn.obj : menucmn.cpp +mimecmn.obj : mimecmn.cpp +module.obj : module.cpp +msgout.obj : msgout.cpp +mstream.obj : mstream.cpp +nbkbase.obj : nbkbase.cpp +object.obj : object.cpp +paper.obj : paper.cpp +platinfo.obj : platinfo.cpp +popupcmn.obj : popupcmn.cpp +prntbase.obj : prntbase.cpp +process.obj : process.cpp +protocol.obj : protocol.cpp +quantize.obj : quantize.cpp +radiocmn.obj : radiocmn.cpp +rendcmn.obj : rendcmn.cpp +rgncmn.obj : rgncmn.cpp +sckaddr.obj : sckaddr.cpp +sckfile.obj : sckfile.cpp +sckipc.obj : sckipc.cpp +sckstrm.obj : sckstrm.cpp +sizer.obj : sizer.cpp +socket.obj : socket.cpp +socketevtdispatch.obj : socketevtdispatch.cpp +settcmn.obj : settcmn.cpp +statbar.obj : statbar.cpp +stdpbase.obj : stdpbase.cpp +stockitem.obj : stockitem.cpp +stopwatch.obj : stopwatch.cpp +strconv.obj : strconv.cpp +stream.obj : stream.cpp +sysopt.obj : sysopt.cpp +string.obj : string.cpp +tbarbase.obj : tbarbase.cpp +textbuf.obj : textbuf.cpp +textcmn.obj : textcmn.cpp +textfile.obj : textfile.cpp +timercmn.obj : timercmn.cpp +tokenzr.obj : tokenzr.cpp +toplvcmn.obj : toplvcmn.cpp +treebase.obj : treebase.cpp +txtstrm.obj : txtstrm.cpp +url.obj : url.cpp +utilscmn.obj : utilscmn.cpp +valgen.obj : valgen.cpp +validate.obj : validate.cpp +valtext.obj : valtext.cpp +variant.obj : variant.cpp +wfstream.obj : wfstream.cpp +wincmn.obj : wincmn.cpp +wxchar.obj : wxchar.cpp +xpmdecod.obj : xpmdecod.cpp +zipstrm.obj : zipstrm.cpp +zstream.obj : zstream.cpp +accesscmn.obj : accesscmn.cpp +dndcmn.obj : dndcmn.cpp +dpycmn.obj : dpycmn.cpp +dseldlg.obj : dseldlg.cpp +dynload.obj : dynload.cpp +effects.obj : effects.cpp +fddlgcmn.obj : fddlgcmn.cpp +fs_mem.obj : fs_mem.cpp +gbsizer.obj : gbsizer.cpp +geometry.obj : geometry.cpp +matrix.obj : matrix.cpp +radiocmn.obj : radiocmn.cpp +regex.obj : regex.cpp +taskbarcmn.obj : taskbarcmn.cpp +xti.obj : xti.cpp +xtistrm.obj : xtistrm.cpp +xtixml.obj : xtixml.cpp +uri.obj : uri.cpp +dpycmn.obj : dpycmn.cpp +combocmn.obj : combocmn.cpp +clrpickercmn.obj : clrpickercmn.cpp +filepickercmn.obj : filepickercmn.cpp +fontpickercmn.obj : fontpickercmn.cpp +pickerbase.obj : pickerbase.cpp +listctrlcmn.obj : listctrlcmn.cpp diff --git a/3rdparty/wxWidgets/src/common/glob.inc b/3rdparty/wxWidgets/src/common/glob.inc index ea226977ef..fc1e084d62 100644 --- a/3rdparty/wxWidgets/src/common/glob.inc +++ b/3rdparty/wxWidgets/src/common/glob.inc @@ -1,367 +1,367 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: glob.inc -// Purpose: File and other globbing (included by utils.cpp) -// Author: Karsten Ballueder -// Modified by: -// Created: 20/5/1998 -// RCS-ID: $Id: glob.inc 33948 2005-05-04 18:57:50Z JS $ -// Copyright: (c) Karsten Ballueder -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// This file includes: -// wxIsWild(const char *pattern) -// wxMatchWild(const char *pattern, const char *str, bool dot_special) -// - -//--------------------------------------------------------------------------------- -#ifndef UNIX_GLOB -# ifdef wx_x -# define UNIX_GLOB 1 -# else -# define UNIX_GLOB 0 -# endif -#endif - -#if UNIX_GLOB -# ifdef wx_msw -# error "Can't use Unix file globbing under Windows!" -# endif -#endif - -/************************************************************************* - * - * wxIsWild checks whether the pattern contains wildcards, and - * returns TRUE if it does, and FALSE if it does not (or if the - * pattern is NULL -- i.e. no string). - * - * The argument is: - * - * 1) pattern - a character string - */ -bool -wxIsWild (const char *pattern) -{ - while (*pattern) - { - switch (*pattern++) - { - case '?': - case '*': -#if UNIX_GLOB - case '[': - case '{': /* } */ -#endif - return TRUE; -#if UNIX_GLOB - case '\\': - if (!*pattern++) - return FALSE; -#endif - } /* switch() */ - } /* while() */ - return FALSE; -} - - - -#if UNIX_GLOB - -// Unix Glob() -// -// Pattern Function -// ----------------------------------------------------- -// '*' = match 0 or more occurances of anything -// "[abc]" = match anyof "abc" (ranges supported) -// "{xx,yy,zz}" = match anyof "xx", "yy", or "zz" -// '?' = match any character -// -// '\' is used to "escape" special characters -// Recursive - -bool -wxMatchWild (const char *pattern, const char *str, bool dot_special) -{ - char c; - const char *cp; - bool done = FALSE, ret_code, ok; - // Below is for vi fans - const char OB = '{', CB = '}'; - -#if 0 - if (strcmp(pattern, "*.*") == 0) - pattern = "*"; // Hack for MS-DOS compat. -#endif - - // dot_special means '.' only matches '.' - if (dot_special && *str == '.' && *pattern != *str) - return FALSE; - - while ((*pattern != '\0') && (!done) && (((*str == '\0') && - ((*pattern == OB) || (*pattern == '*'))) || (*str != '\0'))) - { - switch (*pattern) - { - case '\\': - pattern++; - if (*pattern != '\0') - pattern++; - break; - case '*': - pattern++; - ret_code = FALSE; - while ((*str != '\0') && (!(ret_code = wxMatchWild (pattern, str++, FALSE)))); - if (ret_code) - { - while (*str != '\0') - str++; - while (*pattern != '\0') - pattern++; - } - break; - case '[': - pattern++; - repeat: - if ((*pattern == '\0') || (*pattern == ']')) - { - done = TRUE; - break; - } - if (*pattern == '\\') - { - pattern++; - if (*pattern == '\0') - { - done = TRUE; - break; - } - } - if (*(pattern + 1) == '-') - { - c = *pattern; - pattern += 2; - if (*pattern == ']') - { - done = TRUE; - break; - } - if (*pattern == '\\') - { - pattern++; - if (*pattern == '\0') - { - done = TRUE; - break; - } - } - if ((*str < c) || (*str > *pattern)) - { - pattern++; - goto repeat; - } - } - else if (*pattern != *str) - { - pattern++; - goto repeat; - } - pattern++; - while ((*pattern != ']') && (*pattern != '\0')) - { - if ((*pattern == '\\') && (*(pattern + 1) != '\0')) - pattern++; - pattern++; - } // while() - if (*pattern != '\0') - { - pattern++, str++; - } - break; - case '?': - pattern++; - str++; - break; - case OB: - pattern++; - while ((*pattern != CB) && (*pattern != '\0')) - { - cp = str; - ok = TRUE; - while (ok && (*cp != '\0') && (*pattern != '\0') && - (*pattern != ',') && (*pattern != CB)) - { - if (*pattern == '\\') - pattern++; - ok = (*pattern++ == *cp++); - } // while() - if (*pattern == '\0') - { - ok = FALSE; - done = TRUE; - break; - } - else if (ok) - { - str = cp; - while ((*pattern != CB) && (*pattern != '\0')) - { - if (*++pattern == '\\') - { - if (*++pattern == CB) - pattern++; - } - } // while() - } - else - { - while (*pattern != CB && *pattern != ',' && *pattern != '\0') - { - if (*++pattern == '\\') - { - if (*++pattern == CB || *pattern == ',') - pattern++; - } - } // while() - } - if (*pattern != '\0') - pattern++; - } // while() - break; - default: - if (*str == *pattern) - { - str++, pattern++; - } - else - { - done = TRUE; - } - } // switch() - } // while() - while (*pattern == '*') - pattern++; - return ((*str == '\0') && (*pattern == '\0')); -} - -#else /* MS-DOS/Windows glob() */ -/************************************************************************* - * - * wxMatchWild matches the given pattern string against - * a text string, and returns TRUE if it matches, FALSE otherwise. - * - * A match means that the entire text string is used up in the matching. - * The pattern can contain the following wildcards. - * - * * -- matches any sequence of characters - * ? -- matches one character - * - * If one or other or both of the string arguments to wxMatchWild function is - * NULL (i.e. there isn't a string), then the function returns FALSE. - * - */ -static bool wxPatternMatch (const char *pattern, const char *text, size_t i, size_t j); - -// @@@@ dotSpecial is ignored by MS-DOS -bool -wxMatchWild (const char *pattern, const char *text, bool /* dotSpecial */ ) -{ - if (pattern == NULL || text == NULL || *pattern == '\0' || *text == '\0') - return FALSE; - return wxPatternMatch (pattern, text, 0, 0); -} - -/************************************************************************* - * - * wxPatternMatch does the work for wxMatchWild. wxPatternMatch matches - * the given pattern string against a text string, and returns TRUE if - * it matches, FALSE otherwise. It is assumed that the string arguments - * to wxPatternMatch exist. - * - * A match means that the entire text string is used up in the matching. - * The pattern can contain the following wildcards. - * - * * -- matches any sequence of characters - * ? -- matches one character - * - * wxPatternMatch works by going down the pattern trying to match the - * the same index character in the pattern and string arrays, and stops - * when the end of the pattern or text string is reached. However, if a - * '*' wildcard is met, the algorithm checks to see whether the remaining - * pattern (after the wildcard) matches the rest of the text (i.e. the - * wxPatternMatch function is called recursively). - */ -// Recursive -static bool -wxPatternMatch (const char *pattern, const char *text, size_t i, size_t j) -{ - size_t pattern_length = strlen (pattern); - size_t text_length = strlen (text); - bool match = FALSE; - -#ifdef wx_msw -// MS-DOS file system is case INDEPENDENT -# define EQU(x,y) (wxToLower(x) == wxToLower(y)) -#else -# define EQU(x,y) ((x) == (y)) -#endif - - while (j < pattern_length && i < text_length) - { - if (EQU(text[i], pattern[j]) || pattern[j] == '?') - { - match = TRUE; - i++, j++; - } - else if (pattern[j] == '*') - { - // If pattern ends in '*' - if (++j == pattern_length) - { - match = TRUE; - i = text_length; - } - else - { - match = FALSE; -// after wildcard check to see whether rest of pattern matches - // up with rest of text - while (i < text_length && match != TRUE) - { - match = wxPatternMatch (pattern, text, i, j); - i++; - } -// text index is decremented so that it points to where - // the text string starts to match the rest of the pattern - i--; - } - } - else if (! EQU(text[i], pattern[j])) - { - j = pattern_length; - match = FALSE; - } - } - if (j == pattern_length && i == text_length && match == TRUE) - { - return TRUE; - } - else -// special case where pattern and text are the same except that pattern - // also only has '*' wildcards on the end - if (i == text_length && pattern[j] == '*' && match == TRUE) - { - for (; j < pattern_length; j++) - { - if (pattern[j] != '*') - return FALSE; - } - return TRUE; - } - else - { - return FALSE; - } -} - -#endif /* UNIX_GLOB */ -//----------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////// +// Name: glob.inc +// Purpose: File and other globbing (included by utils.cpp) +// Author: Karsten Ballueder +// Modified by: +// Created: 20/5/1998 +// RCS-ID: $Id: glob.inc 33948 2005-05-04 18:57:50Z JS $ +// Copyright: (c) Karsten Ballueder +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +// This file includes: +// wxIsWild(const char *pattern) +// wxMatchWild(const char *pattern, const char *str, bool dot_special) +// + +//--------------------------------------------------------------------------------- +#ifndef UNIX_GLOB +# ifdef wx_x +# define UNIX_GLOB 1 +# else +# define UNIX_GLOB 0 +# endif +#endif + +#if UNIX_GLOB +# ifdef wx_msw +# error "Can't use Unix file globbing under Windows!" +# endif +#endif + +/************************************************************************* + * + * wxIsWild checks whether the pattern contains wildcards, and + * returns TRUE if it does, and FALSE if it does not (or if the + * pattern is NULL -- i.e. no string). + * + * The argument is: + * + * 1) pattern - a character string + */ +bool +wxIsWild (const char *pattern) +{ + while (*pattern) + { + switch (*pattern++) + { + case '?': + case '*': +#if UNIX_GLOB + case '[': + case '{': /* } */ +#endif + return TRUE; +#if UNIX_GLOB + case '\\': + if (!*pattern++) + return FALSE; +#endif + } /* switch() */ + } /* while() */ + return FALSE; +} + + + +#if UNIX_GLOB + +// Unix Glob() +// +// Pattern Function +// ----------------------------------------------------- +// '*' = match 0 or more occurances of anything +// "[abc]" = match anyof "abc" (ranges supported) +// "{xx,yy,zz}" = match anyof "xx", "yy", or "zz" +// '?' = match any character +// +// '\' is used to "escape" special characters +// Recursive + +bool +wxMatchWild (const char *pattern, const char *str, bool dot_special) +{ + char c; + const char *cp; + bool done = FALSE, ret_code, ok; + // Below is for vi fans + const char OB = '{', CB = '}'; + +#if 0 + if (strcmp(pattern, "*.*") == 0) + pattern = "*"; // Hack for MS-DOS compat. +#endif + + // dot_special means '.' only matches '.' + if (dot_special && *str == '.' && *pattern != *str) + return FALSE; + + while ((*pattern != '\0') && (!done) && (((*str == '\0') && + ((*pattern == OB) || (*pattern == '*'))) || (*str != '\0'))) + { + switch (*pattern) + { + case '\\': + pattern++; + if (*pattern != '\0') + pattern++; + break; + case '*': + pattern++; + ret_code = FALSE; + while ((*str != '\0') && (!(ret_code = wxMatchWild (pattern, str++, FALSE)))); + if (ret_code) + { + while (*str != '\0') + str++; + while (*pattern != '\0') + pattern++; + } + break; + case '[': + pattern++; + repeat: + if ((*pattern == '\0') || (*pattern == ']')) + { + done = TRUE; + break; + } + if (*pattern == '\\') + { + pattern++; + if (*pattern == '\0') + { + done = TRUE; + break; + } + } + if (*(pattern + 1) == '-') + { + c = *pattern; + pattern += 2; + if (*pattern == ']') + { + done = TRUE; + break; + } + if (*pattern == '\\') + { + pattern++; + if (*pattern == '\0') + { + done = TRUE; + break; + } + } + if ((*str < c) || (*str > *pattern)) + { + pattern++; + goto repeat; + } + } + else if (*pattern != *str) + { + pattern++; + goto repeat; + } + pattern++; + while ((*pattern != ']') && (*pattern != '\0')) + { + if ((*pattern == '\\') && (*(pattern + 1) != '\0')) + pattern++; + pattern++; + } // while() + if (*pattern != '\0') + { + pattern++, str++; + } + break; + case '?': + pattern++; + str++; + break; + case OB: + pattern++; + while ((*pattern != CB) && (*pattern != '\0')) + { + cp = str; + ok = TRUE; + while (ok && (*cp != '\0') && (*pattern != '\0') && + (*pattern != ',') && (*pattern != CB)) + { + if (*pattern == '\\') + pattern++; + ok = (*pattern++ == *cp++); + } // while() + if (*pattern == '\0') + { + ok = FALSE; + done = TRUE; + break; + } + else if (ok) + { + str = cp; + while ((*pattern != CB) && (*pattern != '\0')) + { + if (*++pattern == '\\') + { + if (*++pattern == CB) + pattern++; + } + } // while() + } + else + { + while (*pattern != CB && *pattern != ',' && *pattern != '\0') + { + if (*++pattern == '\\') + { + if (*++pattern == CB || *pattern == ',') + pattern++; + } + } // while() + } + if (*pattern != '\0') + pattern++; + } // while() + break; + default: + if (*str == *pattern) + { + str++, pattern++; + } + else + { + done = TRUE; + } + } // switch() + } // while() + while (*pattern == '*') + pattern++; + return ((*str == '\0') && (*pattern == '\0')); +} + +#else /* MS-DOS/Windows glob() */ +/************************************************************************* + * + * wxMatchWild matches the given pattern string against + * a text string, and returns TRUE if it matches, FALSE otherwise. + * + * A match means that the entire text string is used up in the matching. + * The pattern can contain the following wildcards. + * + * * -- matches any sequence of characters + * ? -- matches one character + * + * If one or other or both of the string arguments to wxMatchWild function is + * NULL (i.e. there isn't a string), then the function returns FALSE. + * + */ +static bool wxPatternMatch (const char *pattern, const char *text, size_t i, size_t j); + +// @@@@ dotSpecial is ignored by MS-DOS +bool +wxMatchWild (const char *pattern, const char *text, bool /* dotSpecial */ ) +{ + if (pattern == NULL || text == NULL || *pattern == '\0' || *text == '\0') + return FALSE; + return wxPatternMatch (pattern, text, 0, 0); +} + +/************************************************************************* + * + * wxPatternMatch does the work for wxMatchWild. wxPatternMatch matches + * the given pattern string against a text string, and returns TRUE if + * it matches, FALSE otherwise. It is assumed that the string arguments + * to wxPatternMatch exist. + * + * A match means that the entire text string is used up in the matching. + * The pattern can contain the following wildcards. + * + * * -- matches any sequence of characters + * ? -- matches one character + * + * wxPatternMatch works by going down the pattern trying to match the + * the same index character in the pattern and string arrays, and stops + * when the end of the pattern or text string is reached. However, if a + * '*' wildcard is met, the algorithm checks to see whether the remaining + * pattern (after the wildcard) matches the rest of the text (i.e. the + * wxPatternMatch function is called recursively). + */ +// Recursive +static bool +wxPatternMatch (const char *pattern, const char *text, size_t i, size_t j) +{ + size_t pattern_length = strlen (pattern); + size_t text_length = strlen (text); + bool match = FALSE; + +#ifdef wx_msw +// MS-DOS file system is case INDEPENDENT +# define EQU(x,y) (wxToLower(x) == wxToLower(y)) +#else +# define EQU(x,y) ((x) == (y)) +#endif + + while (j < pattern_length && i < text_length) + { + if (EQU(text[i], pattern[j]) || pattern[j] == '?') + { + match = TRUE; + i++, j++; + } + else if (pattern[j] == '*') + { + // If pattern ends in '*' + if (++j == pattern_length) + { + match = TRUE; + i = text_length; + } + else + { + match = FALSE; +// after wildcard check to see whether rest of pattern matches + // up with rest of text + while (i < text_length && match != TRUE) + { + match = wxPatternMatch (pattern, text, i, j); + i++; + } +// text index is decremented so that it points to where + // the text string starts to match the rest of the pattern + i--; + } + } + else if (! EQU(text[i], pattern[j])) + { + j = pattern_length; + match = FALSE; + } + } + if (j == pattern_length && i == text_length && match == TRUE) + { + return TRUE; + } + else +// special case where pattern and text are the same except that pattern + // also only has '*' wildcards on the end + if (i == text_length && pattern[j] == '*' && match == TRUE) + { + for (; j < pattern_length; j++) + { + if (pattern[j] != '*') + return FALSE; + } + return TRUE; + } + else + { + return FALSE; + } +} + +#endif /* UNIX_GLOB */ +//----------------------------------------------------------------------------- diff --git a/3rdparty/wxWidgets/src/common/unictabl.inc b/3rdparty/wxWidgets/src/common/unictabl.inc index 13ee276afb..d75491642c 100644 --- a/3rdparty/wxWidgets/src/common/unictabl.inc +++ b/3rdparty/wxWidgets/src/common/unictabl.inc @@ -1,872 +1,872 @@ - - -/* - * This file is #included by encconv.cpp - * - * CVS-ID: $Id: unictabl.inc 40398 2006-07-31 16:28:43Z VS $ - * - * *** *** CAUTION! *** *** - * Do not modify this file by hand! It is generated by shell - * script $(WXWIN)/misc/unictabl/regenerate - * - * Parts of this file are based on tables published by Unicode, Inc. - * Original tables are freely available at - * ftp://ftp.unicode.org/Public/MAPPINGS - * - * Original copyright info as present in mapping tables follows: - * - * - * Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved. - * - * This file is provided as-is by Unicode, Inc. (The Unicode Consortium). - * No claims are made as to fitness for any particular purpose. No - * warranties of any kind are expressed or implied. The recipient - * agrees to determine applicability of information provided. If this - * file has been provided on optical media by Unicode, Inc., the sole - * remedy for any claim will be exchange of defective media within 90 - * days of receipt. - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form for - * internal or external distribution as long as this notice remains - * attached. - */ - - - - -/* - * ISO8859_1 to Unicode recoding table - * based on file mappings/8859-1.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_1[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, - 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, - 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, - 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, - 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, - 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, - 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, - 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, - 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, - 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, - 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF - }; - - -/* - * ISO8859_10 to Unicode recoding table - * based on file mappings/8859-10.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_10[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7, - 0x013B, 0x0110, 0x0160, 0x0166, 0x017D, 0x00AD, 0x016A, 0x014A, - 0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137, 0x00B7, - 0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2015, 0x016B, 0x014B, - 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, - 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x00CF, - 0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168, - 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, - 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, - 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF, - 0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169, - 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138 - }; - - -/* - * ISO8859_13 to Unicode recoding table - * based on file mappings/8859-13.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_13[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x201D, 0x00A2, 0x00A3, 0x00A4, 0x201E, 0x00A6, 0x00A7, - 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x201C, 0x00B5, 0x00B6, 0x00B7, - 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, - 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, - 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, - 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, - 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, - 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, - 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, - 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, - 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019 - }; - - -/* - * ISO8859_14 to Unicode recoding table - * based on file mappings/8859-14.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_14[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x1E02, 0x1E03, 0x00A3, 0x010A, 0x010B, 0x1E0A, 0x00A7, - 0x1E80, 0x00A9, 0x1E82, 0x1E0B, 0x1EF2, 0x00AD, 0x00AE, 0x0178, - 0x1E1E, 0x1E1F, 0x0120, 0x0121, 0x1E40, 0x1E41, 0x00B6, 0x1E56, - 0x1E81, 0x1E57, 0x1E83, 0x1E60, 0x1EF3, 0x1E84, 0x1E85, 0x1E61, - 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, - 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, - 0x0174, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x1E6A, - 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x0176, 0x00DF, - 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, - 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, - 0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B, - 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF - }; - - -/* - * ISO8859_15 to Unicode recoding table - * based on file mappings/8859-15.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_15[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AC, 0x00A5, 0x0160, 0x00A7, - 0x0161, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5, 0x00B6, 0x00B7, - 0x017E, 0x00B9, 0x00BA, 0x00BB, 0x0152, 0x0153, 0x0178, 0x00BF, - 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, - 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, - 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, - 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, - 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, - 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, - 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, - 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF - }; - - -/* - * ISO8859_2 to Unicode recoding table - * based on file mappings/8859-2.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_2[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, - 0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, - 0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7, - 0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, - 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, - 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, - 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, - 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, - 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, - 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, - 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, - 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9 - }; - - -/* - * ISO8859_3 to Unicode recoding table - * based on file mappings/8859-3.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_3[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x0126, 0x02D8, 0x00A3, 0x00A4, 0x0000, 0x0124, 0x00A7, - 0x00A8, 0x0130, 0x015E, 0x011E, 0x0134, 0x00AD, 0x0000, 0x017B, - 0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125, 0x00B7, - 0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD, 0x0000, 0x017C, - 0x00C0, 0x00C1, 0x00C2, 0x0000, 0x00C4, 0x010A, 0x0108, 0x00C7, - 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, - 0x0000, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7, - 0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF, - 0x00E0, 0x00E1, 0x00E2, 0x0000, 0x00E4, 0x010B, 0x0109, 0x00E7, - 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, - 0x0000, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7, - 0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9 - }; - - -/* - * ISO8859_4 to Unicode recoding table - * based on file mappings/8859-4.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_4[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7, - 0x00A8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00AD, 0x017D, 0x00AF, - 0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C, 0x02C7, - 0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B, - 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, - 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x012A, - 0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7, - 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF, - 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, - 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B, - 0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7, - 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9 - }; - - -/* - * ISO8859_5 to Unicode recoding table - * based on file mappings/8859-5.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_5[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, - 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F, - 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, - 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, - 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, - 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, - 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, - 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, - 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, - 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, - 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, - 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F - }; - - -/* - * ISO8859_6 to Unicode recoding table - * based on file mappings/8859-6.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_6[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x0000, 0x0000, 0x0000, 0x00A4, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x060C, 0x00AD, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x061B, 0x0000, 0x0000, 0x0000, 0x061F, - 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, - 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, - 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, - 0x0638, 0x0639, 0x063A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, - 0x0648, 0x0649, 0x064A, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, - 0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 - }; - - -/* - * ISO8859_7 to Unicode recoding table - * based on file mappings/8859-7.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_7[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x2018, 0x2019, 0x00A3, 0x0000, 0x0000, 0x00A6, 0x00A7, - 0x00A8, 0x00A9, 0x0000, 0x00AB, 0x00AC, 0x00AD, 0x0000, 0x2015, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x0385, 0x0386, 0x00B7, - 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, - 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, - 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, - 0x03A0, 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, - 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, - 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, - 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, - 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, - 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x0000 - }; - - -/* - * ISO8859_8 to Unicode recoding table - * based on file mappings/8859-8.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_8[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x0000, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, - 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x203E, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, - 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017, - 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, - 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, - 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, - 0x05E8, 0x05E9, 0x05EA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 - }; - - -/* - * ISO8859_9 to Unicode recoding table - * based on file mappings/8859-9.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__ISO8859_9[128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, - 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, - 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, - 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, - 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, - 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, - 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, - 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, - 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, - 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, - 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, - 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF - }; - - -/* - * CP1250 to Unicode recoding table - * based on file mappings/CP1250.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__CP1250[128] = { - 0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021, - 0x0000, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, - 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, - 0x0000, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, - 0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, - 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B, - 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7, - 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C, - 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, - 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, - 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, - 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, - 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, - 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, - 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, - 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9 - }; - - -/* - * CP1251 to Unicode recoding table - * based on file mappings/CP1251.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__CP1251[128] = { - 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, - 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, - 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, - 0x0000, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, - 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, - 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, - 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, - 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, - 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, - 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, - 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, - 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, - 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, - 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, - 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, - 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F - }; - - -/* - * CP1252 to Unicode recoding table - * based on file mappings/CP1252.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__CP1252[128] = { - 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, - 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x017D, 0x0000, - 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, - 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0000, 0x017E, 0x0178, - 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, - 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, - 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, - 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, - 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, - 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, - 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, - 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, - 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, - 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, - 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF - }; - - -/* - * CP1253 to Unicode recoding table - * based on file mappings/CP1253.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__CP1253[128] = { - 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, - 0x0000, 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, - 0x0000, 0x2122, 0x0000, 0x203A, 0x0000, 0x0000, 0x0000, 0x0000, - 0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, - 0x00A8, 0x00A9, 0x0000, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7, - 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, - 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, - 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, - 0x03A0, 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, - 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, - 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, - 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, - 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, - 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x0000 - }; - - -/* - * CP1254 to Unicode recoding table - * based on file mappings/CP1254.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__CP1254[128] = { - 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, - 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000, - 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, - 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0000, 0x0000, 0x0178, - 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, - 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, - 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, - 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, - 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, - 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, - 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, - 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, - 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, - 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, - 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF - }; - - -/* - * CP1255 to Unicode recoding table - * based on file mappings/CP1255.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__CP1255[128] = { - 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, - 0x02C6, 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, - 0x02DC, 0x2122, 0x0000, 0x203A, 0x0000, 0x0000, 0x0000, 0x0000, - 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AA, 0x00A5, 0x00A6, 0x00A7, - 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, - 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, - 0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7, - 0x05B8, 0x05B9, 0x0000, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF, - 0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3, - 0x05F4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, - 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, - 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, - 0x05E8, 0x05E9, 0x05EA, 0x0000, 0x0000, 0x200E, 0x200F, 0x0000 - }; - - -/* - * CP1256 to Unicode recoding table - * based on file mappings/CP1256.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__CP1256[128] = { - 0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, - 0x02C6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, - 0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, - 0x06A9, 0x2122, 0x0691, 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA, - 0x00A0, 0x060C, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, - 0x00A8, 0x00A9, 0x06BE, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, - 0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061F, - 0x06C1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, - 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, - 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7, - 0x0637, 0x0638, 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, 0x0643, - 0x00E0, 0x0644, 0x00E2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7, - 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A, 0x00EE, 0x00EF, - 0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, 0x00F7, - 0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x06D2 - }; - - -/* - * CP1257 to Unicode recoding table - * based on file mappings/CP1257.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__CP1257[128] = { - 0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021, - 0x0000, 0x2030, 0x0000, 0x2039, 0x0000, 0x00A8, 0x02C7, 0x00B8, - 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, - 0x0000, 0x2122, 0x0000, 0x203A, 0x0000, 0x00AF, 0x02DB, 0x0000, - 0x00A0, 0x0000, 0x00A2, 0x00A3, 0x00A4, 0x0000, 0x00A6, 0x00A7, - 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, - 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, - 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, - 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, - 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, - 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, - 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, - 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, - 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, - 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9 - }; - - -/* - * KOI8 to Unicode recoding table - * based on file mappings/KOI8-R.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__KOI8[128] = { - 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, - 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, - 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, - 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, - 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, - 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, - 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, - 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9, - 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, - 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, - 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, - 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, - 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, - 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, - 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, - 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A - }; - - -/* - * KOI8_U to Unicode recoding table - * based on file mappings/KOI8-U.TXT by Unicode Consortium - */ - -static const wxUint16 encoding_table__KOI8_U[128] = { - 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, - 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, - 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, - 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, - 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, - 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x0491, 0x255D, 0x255E, - 0x255F, 0x2560, 0x2561, 0x0401, 0x0403, 0x2563, 0x0406, 0x0407, - 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x0490, 0x256C, 0x00A9, - 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, - 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, - 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, - 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, - 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, - 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, - 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, - 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A - }; - - - - - -/* - * - * Unicode to 7bit ASCII fallback - * (for use with wxRECODE_SUBSTITUTE recoding mode) - * - */ - -static const struct { - wxUint16 c /*code*/; - wxUint8 s /*inaccurate substitution*/; -} encoding_unicode_fallback[] = { - - {0x00AB, 0x22}, - {0x00BB, 0x22}, - {0x00C0, 0x41}, - {0x00C1, 0x41}, - {0x00C2, 0x41}, - {0x00C3, 0x41}, - {0x00C4, 0x41}, - {0x00C5, 0x41}, - {0x00C7, 0x43}, - {0x00C8, 0x45}, - {0x00C9, 0x45}, - {0x00CA, 0x45}, - {0x00CB, 0x45}, - {0x00CC, 0x49}, - {0x00CD, 0x49}, - {0x00CE, 0x49}, - {0x00CF, 0x49}, - {0x00D1, 0x4E}, - {0x00D2, 0x4F}, - {0x00D3, 0x4F}, - {0x00D4, 0x4F}, - {0x00D5, 0x4F}, - {0x00D6, 0x4F}, - {0x00D8, 0x4F}, - {0x00D9, 0x55}, - {0x00DA, 0x55}, - {0x00DB, 0x55}, - {0x00DC, 0x55}, - {0x00DD, 0x59}, - {0x00E0, 0x61}, - {0x00E1, 0x61}, - {0x00E2, 0x61}, - {0x00E3, 0x61}, - {0x00E4, 0x61}, - {0x00E5, 0x61}, - {0x00E7, 0x63}, - {0x00E8, 0x65}, - {0x00E9, 0x65}, - {0x00EA, 0x65}, - {0x00EB, 0x65}, - {0x00EC, 0x69}, - {0x00ED, 0x69}, - {0x00EE, 0x69}, - {0x00EF, 0x69}, - {0x00F1, 0x6E}, - {0x00F2, 0x6F}, - {0x00F3, 0x6F}, - {0x00F4, 0x6F}, - {0x00F5, 0x6F}, - {0x00F6, 0x6F}, - {0x00F8, 0x6F}, - {0x00F9, 0x75}, - {0x00FA, 0x75}, - {0x00FB, 0x75}, - {0x00FC, 0x75}, - {0x00FD, 0x79}, - {0x00FF, 0x79}, - {0x0100, 0x41}, - {0x0101, 0x61}, - {0x0102, 0x41}, - {0x0103, 0x61}, - {0x0104, 0x41}, - {0x0105, 0x61}, - {0x0106, 0x43}, - {0x0107, 0x63}, - {0x0108, 0x43}, - {0x0109, 0x63}, - {0x010A, 0x43}, - {0x010B, 0x63}, - {0x010C, 0x43}, - {0x010D, 0x63}, - {0x010E, 0x44}, - {0x010F, 0x64}, - {0x0110, 0x44}, - {0x0111, 0x64}, - {0x0112, 0x45}, - {0x0113, 0x65}, - {0x0116, 0x45}, - {0x0117, 0x65}, - {0x0118, 0x45}, - {0x0119, 0x65}, - {0x011A, 0x45}, - {0x011B, 0x65}, - {0x011C, 0x47}, - {0x011D, 0x67}, - {0x011E, 0x47}, - {0x011F, 0x67}, - {0x0120, 0x47}, - {0x0121, 0x67}, - {0x0122, 0x47}, - {0x0123, 0x67}, - {0x0124, 0x48}, - {0x0125, 0x68}, - {0x0126, 0x48}, - {0x0127, 0x68}, - {0x0128, 0x49}, - {0x0129, 0x69}, - {0x012A, 0x49}, - {0x012B, 0x69}, - {0x012E, 0x49}, - {0x012F, 0x69}, - {0x0130, 0x49}, - {0x0134, 0x4A}, - {0x0135, 0x6A}, - {0x0136, 0x4B}, - {0x0137, 0x6B}, - {0x0139, 0x4C}, - {0x013A, 0x6C}, - {0x013B, 0x4C}, - {0x013C, 0x6C}, - {0x013D, 0x4C}, - {0x013E, 0x6C}, - {0x0141, 0x4C}, - {0x0142, 0x6C}, - {0x0143, 0x4E}, - {0x0144, 0x6E}, - {0x0145, 0x4E}, - {0x0146, 0x6E}, - {0x0147, 0x4E}, - {0x0148, 0x6E}, - {0x014C, 0x4F}, - {0x014D, 0x6F}, - {0x0150, 0x4F}, - {0x0151, 0x6F}, - {0x0154, 0x52}, - {0x0155, 0x72}, - {0x0156, 0x52}, - {0x0157, 0x72}, - {0x0158, 0x52}, - {0x0159, 0x72}, - {0x015A, 0x53}, - {0x015B, 0x73}, - {0x015C, 0x53}, - {0x015D, 0x73}, - {0x015E, 0x53}, - {0x015F, 0x73}, - {0x0160, 0x53}, - {0x0161, 0x73}, - {0x0162, 0x54}, - {0x0163, 0x74}, - {0x0164, 0x54}, - {0x0165, 0x74}, - {0x0166, 0x54}, - {0x0167, 0x74}, - {0x0168, 0x55}, - {0x0169, 0x75}, - {0x016A, 0x55}, - {0x016B, 0x75}, - {0x016C, 0x55}, - {0x016D, 0x75}, - {0x016E, 0x55}, - {0x016F, 0x75}, - {0x0170, 0x55}, - {0x0171, 0x75}, - {0x0172, 0x55}, - {0x0173, 0x75}, - {0x0174, 0x57}, - {0x0175, 0x77}, - {0x0176, 0x59}, - {0x0177, 0x79}, - {0x0178, 0x59}, - {0x0179, 0x5A}, - {0x017A, 0x7A}, - {0x017B, 0x5A}, - {0x017C, 0x7A}, - {0x017D, 0x5A}, - {0x017E, 0x7A}, - {0x0192, 0x66}, - {0x1E02, 0x42}, - {0x1E03, 0x62}, - {0x1E0A, 0x44}, - {0x1E0B, 0x64}, - {0x1E1E, 0x46}, - {0x1E1F, 0x66}, - {0x1E40, 0x4D}, - {0x1E41, 0x6D}, - {0x1E56, 0x50}, - {0x1E57, 0x70}, - {0x1E60, 0x53}, - {0x1E61, 0x73}, - {0x1E6A, 0x54}, - {0x1E6B, 0x74}, - {0x1E80, 0x57}, - {0x1E81, 0x77}, - {0x1E82, 0x57}, - {0x1E83, 0x77}, - {0x1E84, 0x57}, - {0x1E85, 0x77}, - {0x1EF2, 0x59}, - {0x1EF3, 0x79}, - {0x2013, 0x2D}, - {0x2014, 0x2D}, - {0x2018, 0x27}, - {0x2019, 0x27}, - {0x201A, 0x27}, - {0x201C, 0x22}, - {0x201D, 0x22}, - {0x201E, 0x22}, - {0x2039, 0x27}, - {0x203A, 0x27}, - {0, 0} - }; - -static const unsigned encoding_unicode_fallback_count = 200; - - - - -/* - * - * Table of all supported encodings: - * - */ - -static const struct { - wxFontEncoding encoding; // encoding identifier - const wxUint16 *table; // 8bit to unicode table -} encodings_list[] = { - - { wxFONTENCODING_ISO8859_1, encoding_table__ISO8859_1}, - { wxFONTENCODING_ISO8859_10, encoding_table__ISO8859_10}, - { wxFONTENCODING_ISO8859_13, encoding_table__ISO8859_13}, - { wxFONTENCODING_ISO8859_14, encoding_table__ISO8859_14}, - { wxFONTENCODING_ISO8859_15, encoding_table__ISO8859_15}, - { wxFONTENCODING_ISO8859_2, encoding_table__ISO8859_2}, - { wxFONTENCODING_ISO8859_3, encoding_table__ISO8859_3}, - { wxFONTENCODING_ISO8859_4, encoding_table__ISO8859_4}, - { wxFONTENCODING_ISO8859_5, encoding_table__ISO8859_5}, - { wxFONTENCODING_ISO8859_6, encoding_table__ISO8859_6}, - { wxFONTENCODING_ISO8859_7, encoding_table__ISO8859_7}, - { wxFONTENCODING_ISO8859_8, encoding_table__ISO8859_8}, - { wxFONTENCODING_ISO8859_9, encoding_table__ISO8859_9}, - { wxFONTENCODING_CP1250, encoding_table__CP1250}, - { wxFONTENCODING_CP1251, encoding_table__CP1251}, - { wxFONTENCODING_CP1252, encoding_table__CP1252}, - { wxFONTENCODING_CP1253, encoding_table__CP1253}, - { wxFONTENCODING_CP1254, encoding_table__CP1254}, - { wxFONTENCODING_CP1255, encoding_table__CP1255}, - { wxFONTENCODING_CP1256, encoding_table__CP1256}, - { wxFONTENCODING_CP1257, encoding_table__CP1257}, - { wxFONTENCODING_KOI8, encoding_table__KOI8}, - { wxFONTENCODING_KOI8_U, encoding_table__KOI8_U}, - {wxFONTENCODING_MAX /*anything*/, NULL} - }; + + +/* + * This file is #included by encconv.cpp + * + * CVS-ID: $Id: unictabl.inc 40398 2006-07-31 16:28:43Z VS $ + * + * *** *** CAUTION! *** *** + * Do not modify this file by hand! It is generated by shell + * script $(WXWIN)/misc/unictabl/regenerate + * + * Parts of this file are based on tables published by Unicode, Inc. + * Original tables are freely available at + * ftp://ftp.unicode.org/Public/MAPPINGS + * + * Original copyright info as present in mapping tables follows: + * + * + * Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved. + * + * This file is provided as-is by Unicode, Inc. (The Unicode Consortium). + * No claims are made as to fitness for any particular purpose. No + * warranties of any kind are expressed or implied. The recipient + * agrees to determine applicability of information provided. If this + * file has been provided on optical media by Unicode, Inc., the sole + * remedy for any claim will be exchange of defective media within 90 + * days of receipt. + * + * Unicode, Inc. hereby grants the right to freely use the information + * supplied in this file in the creation of products supporting the + * Unicode Standard, and to make copies of this file in any form for + * internal or external distribution as long as this notice remains + * attached. + */ + + + + +/* + * ISO8859_1 to Unicode recoding table + * based on file mappings/8859-1.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_1[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, + 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, + 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, + 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, + 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, + 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, + 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, + 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF + }; + + +/* + * ISO8859_10 to Unicode recoding table + * based on file mappings/8859-10.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_10[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7, + 0x013B, 0x0110, 0x0160, 0x0166, 0x017D, 0x00AD, 0x016A, 0x014A, + 0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137, 0x00B7, + 0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2015, 0x016B, 0x014B, + 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, + 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x00CF, + 0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168, + 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, + 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, + 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF, + 0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169, + 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138 + }; + + +/* + * ISO8859_13 to Unicode recoding table + * based on file mappings/8859-13.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_13[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x201D, 0x00A2, 0x00A3, 0x00A4, 0x201E, 0x00A6, 0x00A7, + 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x201C, 0x00B5, 0x00B6, 0x00B7, + 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, + 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, + 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, + 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, + 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, + 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, + 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, + 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, + 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019 + }; + + +/* + * ISO8859_14 to Unicode recoding table + * based on file mappings/8859-14.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_14[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x1E02, 0x1E03, 0x00A3, 0x010A, 0x010B, 0x1E0A, 0x00A7, + 0x1E80, 0x00A9, 0x1E82, 0x1E0B, 0x1EF2, 0x00AD, 0x00AE, 0x0178, + 0x1E1E, 0x1E1F, 0x0120, 0x0121, 0x1E40, 0x1E41, 0x00B6, 0x1E56, + 0x1E81, 0x1E57, 0x1E83, 0x1E60, 0x1EF3, 0x1E84, 0x1E85, 0x1E61, + 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, + 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, + 0x0174, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x1E6A, + 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x0176, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, + 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B, + 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF + }; + + +/* + * ISO8859_15 to Unicode recoding table + * based on file mappings/8859-15.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_15[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AC, 0x00A5, 0x0160, 0x00A7, + 0x0161, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5, 0x00B6, 0x00B7, + 0x017E, 0x00B9, 0x00BA, 0x00BB, 0x0152, 0x0153, 0x0178, 0x00BF, + 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, + 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, + 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, + 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, + 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, + 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF + }; + + +/* + * ISO8859_2 to Unicode recoding table + * based on file mappings/8859-2.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_2[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, + 0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, + 0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7, + 0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, + 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, + 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, + 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, + 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, + 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, + 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, + 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, + 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9 + }; + + +/* + * ISO8859_3 to Unicode recoding table + * based on file mappings/8859-3.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_3[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x0126, 0x02D8, 0x00A3, 0x00A4, 0x0000, 0x0124, 0x00A7, + 0x00A8, 0x0130, 0x015E, 0x011E, 0x0134, 0x00AD, 0x0000, 0x017B, + 0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125, 0x00B7, + 0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD, 0x0000, 0x017C, + 0x00C0, 0x00C1, 0x00C2, 0x0000, 0x00C4, 0x010A, 0x0108, 0x00C7, + 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, + 0x0000, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7, + 0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x0000, 0x00E4, 0x010B, 0x0109, 0x00E7, + 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x0000, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7, + 0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9 + }; + + +/* + * ISO8859_4 to Unicode recoding table + * based on file mappings/8859-4.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_4[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7, + 0x00A8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00AD, 0x017D, 0x00AF, + 0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C, 0x02C7, + 0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B, + 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, + 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x012A, + 0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7, + 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF, + 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, + 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B, + 0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7, + 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9 + }; + + +/* + * ISO8859_5 to Unicode recoding table + * based on file mappings/8859-5.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_5[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, + 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, + 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, + 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, + 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, + 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, + 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F + }; + + +/* + * ISO8859_6 to Unicode recoding table + * based on file mappings/8859-6.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_6[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x0000, 0x0000, 0x0000, 0x00A4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x060C, 0x00AD, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x061B, 0x0000, 0x0000, 0x0000, 0x061F, + 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, + 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, + 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, + 0x0638, 0x0639, 0x063A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, + 0x0648, 0x0649, 0x064A, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, + 0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }; + + +/* + * ISO8859_7 to Unicode recoding table + * based on file mappings/8859-7.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_7[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x2018, 0x2019, 0x00A3, 0x0000, 0x0000, 0x00A6, 0x00A7, + 0x00A8, 0x00A9, 0x0000, 0x00AB, 0x00AC, 0x00AD, 0x0000, 0x2015, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x0385, 0x0386, 0x00B7, + 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, + 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, + 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, + 0x03A0, 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, + 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, + 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, + 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, + 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, + 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x0000 + }; + + +/* + * ISO8859_8 to Unicode recoding table + * based on file mappings/8859-8.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_8[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x0000, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, + 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x203E, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, + 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017, + 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, + 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, + 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, + 0x05E8, 0x05E9, 0x05EA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }; + + +/* + * ISO8859_9 to Unicode recoding table + * based on file mappings/8859-9.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__ISO8859_9[128] = { + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, + 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, + 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, + 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, + 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, + 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, + 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, + 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF + }; + + +/* + * CP1250 to Unicode recoding table + * based on file mappings/CP1250.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__CP1250[128] = { + 0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021, + 0x0000, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, + 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, + 0x0000, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, + 0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, + 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B, + 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7, + 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C, + 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, + 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, + 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, + 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, + 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, + 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, + 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, + 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9 + }; + + +/* + * CP1251 to Unicode recoding table + * based on file mappings/CP1251.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__CP1251[128] = { + 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, + 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, + 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, + 0x0000, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, + 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, + 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, + 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, + 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, + 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, + 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, + 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F + }; + + +/* + * CP1252 to Unicode recoding table + * based on file mappings/CP1252.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__CP1252[128] = { + 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, + 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x017D, 0x0000, + 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, + 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0000, 0x017E, 0x0178, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, + 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, + 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, + 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, + 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, + 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, + 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, + 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF + }; + + +/* + * CP1253 to Unicode recoding table + * based on file mappings/CP1253.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__CP1253[128] = { + 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, + 0x0000, 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, + 0x0000, 0x2122, 0x0000, 0x203A, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, + 0x00A8, 0x00A9, 0x0000, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7, + 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, + 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, + 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, + 0x03A0, 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, + 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, + 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, + 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, + 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, + 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x0000 + }; + + +/* + * CP1254 to Unicode recoding table + * based on file mappings/CP1254.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__CP1254[128] = { + 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, + 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, + 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0000, 0x0000, 0x0178, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, + 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, + 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, + 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, + 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, + 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, + 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, + 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF + }; + + +/* + * CP1255 to Unicode recoding table + * based on file mappings/CP1255.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__CP1255[128] = { + 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, + 0x02C6, 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, + 0x02DC, 0x2122, 0x0000, 0x203A, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AA, 0x00A5, 0x00A6, 0x00A7, + 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, + 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7, + 0x05B8, 0x05B9, 0x0000, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF, + 0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3, + 0x05F4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, + 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, + 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, + 0x05E8, 0x05E9, 0x05EA, 0x0000, 0x0000, 0x200E, 0x200F, 0x0000 + }; + + +/* + * CP1256 to Unicode recoding table + * based on file mappings/CP1256.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__CP1256[128] = { + 0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, + 0x02C6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, + 0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, + 0x06A9, 0x2122, 0x0691, 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA, + 0x00A0, 0x060C, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, + 0x00A8, 0x00A9, 0x06BE, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, + 0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061F, + 0x06C1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, + 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, + 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7, + 0x0637, 0x0638, 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, 0x0643, + 0x00E0, 0x0644, 0x00E2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7, + 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A, 0x00EE, 0x00EF, + 0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, 0x00F7, + 0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x06D2 + }; + + +/* + * CP1257 to Unicode recoding table + * based on file mappings/CP1257.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__CP1257[128] = { + 0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021, + 0x0000, 0x2030, 0x0000, 0x2039, 0x0000, 0x00A8, 0x02C7, 0x00B8, + 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, + 0x0000, 0x2122, 0x0000, 0x203A, 0x0000, 0x00AF, 0x02DB, 0x0000, + 0x00A0, 0x0000, 0x00A2, 0x00A3, 0x00A4, 0x0000, 0x00A6, 0x00A7, + 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, + 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, + 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, + 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, + 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, + 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, + 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, + 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, + 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, + 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9 + }; + + +/* + * KOI8 to Unicode recoding table + * based on file mappings/KOI8-R.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__KOI8[128] = { + 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, + 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, + 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, + 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, + 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, + 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, + 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, + 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9, + 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, + 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, + 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, + 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, + 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, + 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, + 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, + 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A + }; + + +/* + * KOI8_U to Unicode recoding table + * based on file mappings/KOI8-U.TXT by Unicode Consortium + */ + +static const wxUint16 encoding_table__KOI8_U[128] = { + 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, + 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, + 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, + 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, + 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, + 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x0491, 0x255D, 0x255E, + 0x255F, 0x2560, 0x2561, 0x0401, 0x0403, 0x2563, 0x0406, 0x0407, + 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x0490, 0x256C, 0x00A9, + 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, + 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, + 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, + 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, + 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, + 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, + 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, + 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A + }; + + + + + +/* + * + * Unicode to 7bit ASCII fallback + * (for use with wxRECODE_SUBSTITUTE recoding mode) + * + */ + +static const struct { + wxUint16 c /*code*/; + wxUint8 s /*inaccurate substitution*/; +} encoding_unicode_fallback[] = { + + {0x00AB, 0x22}, + {0x00BB, 0x22}, + {0x00C0, 0x41}, + {0x00C1, 0x41}, + {0x00C2, 0x41}, + {0x00C3, 0x41}, + {0x00C4, 0x41}, + {0x00C5, 0x41}, + {0x00C7, 0x43}, + {0x00C8, 0x45}, + {0x00C9, 0x45}, + {0x00CA, 0x45}, + {0x00CB, 0x45}, + {0x00CC, 0x49}, + {0x00CD, 0x49}, + {0x00CE, 0x49}, + {0x00CF, 0x49}, + {0x00D1, 0x4E}, + {0x00D2, 0x4F}, + {0x00D3, 0x4F}, + {0x00D4, 0x4F}, + {0x00D5, 0x4F}, + {0x00D6, 0x4F}, + {0x00D8, 0x4F}, + {0x00D9, 0x55}, + {0x00DA, 0x55}, + {0x00DB, 0x55}, + {0x00DC, 0x55}, + {0x00DD, 0x59}, + {0x00E0, 0x61}, + {0x00E1, 0x61}, + {0x00E2, 0x61}, + {0x00E3, 0x61}, + {0x00E4, 0x61}, + {0x00E5, 0x61}, + {0x00E7, 0x63}, + {0x00E8, 0x65}, + {0x00E9, 0x65}, + {0x00EA, 0x65}, + {0x00EB, 0x65}, + {0x00EC, 0x69}, + {0x00ED, 0x69}, + {0x00EE, 0x69}, + {0x00EF, 0x69}, + {0x00F1, 0x6E}, + {0x00F2, 0x6F}, + {0x00F3, 0x6F}, + {0x00F4, 0x6F}, + {0x00F5, 0x6F}, + {0x00F6, 0x6F}, + {0x00F8, 0x6F}, + {0x00F9, 0x75}, + {0x00FA, 0x75}, + {0x00FB, 0x75}, + {0x00FC, 0x75}, + {0x00FD, 0x79}, + {0x00FF, 0x79}, + {0x0100, 0x41}, + {0x0101, 0x61}, + {0x0102, 0x41}, + {0x0103, 0x61}, + {0x0104, 0x41}, + {0x0105, 0x61}, + {0x0106, 0x43}, + {0x0107, 0x63}, + {0x0108, 0x43}, + {0x0109, 0x63}, + {0x010A, 0x43}, + {0x010B, 0x63}, + {0x010C, 0x43}, + {0x010D, 0x63}, + {0x010E, 0x44}, + {0x010F, 0x64}, + {0x0110, 0x44}, + {0x0111, 0x64}, + {0x0112, 0x45}, + {0x0113, 0x65}, + {0x0116, 0x45}, + {0x0117, 0x65}, + {0x0118, 0x45}, + {0x0119, 0x65}, + {0x011A, 0x45}, + {0x011B, 0x65}, + {0x011C, 0x47}, + {0x011D, 0x67}, + {0x011E, 0x47}, + {0x011F, 0x67}, + {0x0120, 0x47}, + {0x0121, 0x67}, + {0x0122, 0x47}, + {0x0123, 0x67}, + {0x0124, 0x48}, + {0x0125, 0x68}, + {0x0126, 0x48}, + {0x0127, 0x68}, + {0x0128, 0x49}, + {0x0129, 0x69}, + {0x012A, 0x49}, + {0x012B, 0x69}, + {0x012E, 0x49}, + {0x012F, 0x69}, + {0x0130, 0x49}, + {0x0134, 0x4A}, + {0x0135, 0x6A}, + {0x0136, 0x4B}, + {0x0137, 0x6B}, + {0x0139, 0x4C}, + {0x013A, 0x6C}, + {0x013B, 0x4C}, + {0x013C, 0x6C}, + {0x013D, 0x4C}, + {0x013E, 0x6C}, + {0x0141, 0x4C}, + {0x0142, 0x6C}, + {0x0143, 0x4E}, + {0x0144, 0x6E}, + {0x0145, 0x4E}, + {0x0146, 0x6E}, + {0x0147, 0x4E}, + {0x0148, 0x6E}, + {0x014C, 0x4F}, + {0x014D, 0x6F}, + {0x0150, 0x4F}, + {0x0151, 0x6F}, + {0x0154, 0x52}, + {0x0155, 0x72}, + {0x0156, 0x52}, + {0x0157, 0x72}, + {0x0158, 0x52}, + {0x0159, 0x72}, + {0x015A, 0x53}, + {0x015B, 0x73}, + {0x015C, 0x53}, + {0x015D, 0x73}, + {0x015E, 0x53}, + {0x015F, 0x73}, + {0x0160, 0x53}, + {0x0161, 0x73}, + {0x0162, 0x54}, + {0x0163, 0x74}, + {0x0164, 0x54}, + {0x0165, 0x74}, + {0x0166, 0x54}, + {0x0167, 0x74}, + {0x0168, 0x55}, + {0x0169, 0x75}, + {0x016A, 0x55}, + {0x016B, 0x75}, + {0x016C, 0x55}, + {0x016D, 0x75}, + {0x016E, 0x55}, + {0x016F, 0x75}, + {0x0170, 0x55}, + {0x0171, 0x75}, + {0x0172, 0x55}, + {0x0173, 0x75}, + {0x0174, 0x57}, + {0x0175, 0x77}, + {0x0176, 0x59}, + {0x0177, 0x79}, + {0x0178, 0x59}, + {0x0179, 0x5A}, + {0x017A, 0x7A}, + {0x017B, 0x5A}, + {0x017C, 0x7A}, + {0x017D, 0x5A}, + {0x017E, 0x7A}, + {0x0192, 0x66}, + {0x1E02, 0x42}, + {0x1E03, 0x62}, + {0x1E0A, 0x44}, + {0x1E0B, 0x64}, + {0x1E1E, 0x46}, + {0x1E1F, 0x66}, + {0x1E40, 0x4D}, + {0x1E41, 0x6D}, + {0x1E56, 0x50}, + {0x1E57, 0x70}, + {0x1E60, 0x53}, + {0x1E61, 0x73}, + {0x1E6A, 0x54}, + {0x1E6B, 0x74}, + {0x1E80, 0x57}, + {0x1E81, 0x77}, + {0x1E82, 0x57}, + {0x1E83, 0x77}, + {0x1E84, 0x57}, + {0x1E85, 0x77}, + {0x1EF2, 0x59}, + {0x1EF3, 0x79}, + {0x2013, 0x2D}, + {0x2014, 0x2D}, + {0x2018, 0x27}, + {0x2019, 0x27}, + {0x201A, 0x27}, + {0x201C, 0x22}, + {0x201D, 0x22}, + {0x201E, 0x22}, + {0x2039, 0x27}, + {0x203A, 0x27}, + {0, 0} + }; + +static const unsigned encoding_unicode_fallback_count = 200; + + + + +/* + * + * Table of all supported encodings: + * + */ + +static const struct { + wxFontEncoding encoding; // encoding identifier + const wxUint16 *table; // 8bit to unicode table +} encodings_list[] = { + + { wxFONTENCODING_ISO8859_1, encoding_table__ISO8859_1}, + { wxFONTENCODING_ISO8859_10, encoding_table__ISO8859_10}, + { wxFONTENCODING_ISO8859_13, encoding_table__ISO8859_13}, + { wxFONTENCODING_ISO8859_14, encoding_table__ISO8859_14}, + { wxFONTENCODING_ISO8859_15, encoding_table__ISO8859_15}, + { wxFONTENCODING_ISO8859_2, encoding_table__ISO8859_2}, + { wxFONTENCODING_ISO8859_3, encoding_table__ISO8859_3}, + { wxFONTENCODING_ISO8859_4, encoding_table__ISO8859_4}, + { wxFONTENCODING_ISO8859_5, encoding_table__ISO8859_5}, + { wxFONTENCODING_ISO8859_6, encoding_table__ISO8859_6}, + { wxFONTENCODING_ISO8859_7, encoding_table__ISO8859_7}, + { wxFONTENCODING_ISO8859_8, encoding_table__ISO8859_8}, + { wxFONTENCODING_ISO8859_9, encoding_table__ISO8859_9}, + { wxFONTENCODING_CP1250, encoding_table__CP1250}, + { wxFONTENCODING_CP1251, encoding_table__CP1251}, + { wxFONTENCODING_CP1252, encoding_table__CP1252}, + { wxFONTENCODING_CP1253, encoding_table__CP1253}, + { wxFONTENCODING_CP1254, encoding_table__CP1254}, + { wxFONTENCODING_CP1255, encoding_table__CP1255}, + { wxFONTENCODING_CP1256, encoding_table__CP1256}, + { wxFONTENCODING_CP1257, encoding_table__CP1257}, + { wxFONTENCODING_KOI8, encoding_table__KOI8}, + { wxFONTENCODING_KOI8_U, encoding_table__KOI8_U}, + {wxFONTENCODING_MAX /*anything*/, NULL} + }; diff --git a/3rdparty/wxWidgets/src/generic/descrip.mms b/3rdparty/wxWidgets/src/generic/descrip.mms index dc636de7b3..742fc28c50 100644 --- a/3rdparty/wxWidgets/src/generic/descrip.mms +++ b/3rdparty/wxWidgets/src/generic/descrip.mms @@ -1,276 +1,276 @@ -#***************************************************************************** -# * -# Make file for VMS * -# Author : J.Jansen (joukj@hrem.nano.tudelft.nl) * -# Date : 31 October 2006 * -# * -#***************************************************************************** -.first - define wx [--.include.wx] - -.ifdef __WXMOTIF__ -CXX_DEFINE = /define=(__WXMOTIF__=1)/name=(as_is,short)\ - /assume=(nostdnew,noglobal_array_new) -CC_DEFINE = /define=(__WXMOTIF__=1)/name=(as_is,short) -.else -.ifdef __WXGTK__ -CXX_DEFINE = /define=(__WXGTK__=1)/float=ieee/name=(as_is,short)/ieee=denorm\ - /assume=(nostdnew,noglobal_array_new) -CC_DEFINE = /define=(__WXGTK__=1)/float=ieee/name=(as_is,short)/ieee=denorm -.else -.ifdef __WXX11__ -CXX_DEFINE = /define=(__WXX11__=1,__WXUNIVERSAL__==1)/float=ieee\ - /name=(as_is,short)/assume=(nostdnew,noglobal_array_new) -CC_DEFINE = /define=(__WXX11__=1,__WXUNIVERSAL__==1)/float=ieee\ - /name=(as_is,short) -.else -.ifdef __WXGTK2__ -CXX_DEFINE = /define=(__WXGTK__=1,VMS_GTK2==1)/float=ieee\ - /name=(as_is,short)/assume=(nostdnew,noglobal_array_new) -CC_DEFINE = /define=(__WX_GTK__=1,VMS_GTK2==1)/float=ieee\ - /name=(as_is,short) -.else -CXX_DEFINE = -CC_DEFINE = -.endif -.endif -.endif -.endif - -.suffixes : .cpp - -.cpp.obj : - cxx $(CXXFLAGS)$(CXX_DEFINE) $(MMS$TARGET_NAME).cpp -.c.obj : - cc $(CFLAGS)$(CC_DEFINE) $(MMS$TARGET_NAME).c - -OBJECTS = \ - aboutdlgg.obj,\ - animateg.obj,\ - busyinfo.obj,\ - calctrl.obj,\ - caret.obj,\ - choicbkg.obj,\ - choicdgg.obj,\ - colrdlgg.obj,\ - clrpickerg.obj,\ - datectlg.obj,\ - dcpsg.obj,\ - dirctrlg.obj,\ - dirdlgg.obj,\ - fdrepdlg.obj,\ - fontdlgg.obj,\ - fontpickerg.obj,\ - grid.obj,\ - gridctrl.obj,\ - gridsel.obj,\ - helpext.obj,\ - htmllbox.obj,\ - imaglist.obj,\ - laywin.obj,\ - listbkg.obj,\ - listctrl.obj,\ - logg.obj,\ - msgdlgg.obj,\ - numdlgg.obj,\ - odcombo.obj,\ - panelg.obj,\ - printps.obj,\ - prntdlgg.obj,\ - propdlg.obj,\ - progdlgg.obj,\ - renderg.obj,\ - sashwin.obj,\ - scrlwing.obj,\ - selstore.obj,\ - splitter.obj,\ - tabg.obj,\ - textdlgg.obj,\ - tipdlg.obj,\ - tipwin.obj,\ - toolbkg.obj,\ - treebkg.obj,\ - treectlg.obj,\ - wizard.obj,\ - hyperlink.obj,\ - filepickerg.obj,\ - bmpcboxg.obj - -SOURCES = \ - aboutdlgg.cpp,\ - accel.cpp,\ - animateg.cpp,\ - busyinfo.cpp,\ - calctrl.cpp,\ - caret.cpp,\ - choicbkg.cpp,\ - choicdgg.cpp,\ - collpaneg.cpp,\ - colrdlgg.cpp,\ - clrpickerg.cpp,\ - datectlg.cpp,\ - dcpsg.cpp,\ - dirctrlg.cpp,\ - dirdlgg.cpp,\ - filedlgg.cpp,\ - fdrepdlg.cpp,\ - fontdlgg.cpp,\ - fontpickerg.cpp,\ - grid.cpp,\ - gridctrl.cpp,\ - gridsel.cpp,\ - helpext.cpp,\ - htmllbox.cpp,\ - imaglist.cpp,\ - laywin.cpp,\ - listbkg.cpp,\ - listctrl.cpp,\ - logg.cpp,\ - msgdlgg.cpp,\ - notebook.cpp,\ - numdlgg.cpp,\ - odcombo.cpp,\ - paletteg.cpp,\ - panelg.cpp,\ - printps.cpp,\ - prntdlgg.cpp,\ - propdlg.cpp,\ - progdlgg.cpp,\ - renderg.cpp,\ - sashwin.cpp,\ - selstore.cpp,\ - splitter.cpp,\ - statline.cpp,\ - statusbr.cpp,\ - tabg.cpp,\ - textdlgg.cpp,\ - tipdlg.cpp,\ - tipwin.cpp,\ - toolbkg.cpp,\ - treebkg.cpp,\ - treectlg.cpp,\ - wizard.cpp,\ - dragimgg.cpp,\ - fdrepdlg.cpp,\ - htmllbox.cpp,\ - listbkg.cpp,\ - mdig.cpp,\ - scrlwing.cpp,\ - spinctlg.cpp,\ - splash.cpp,\ - timer.cpp,\ - vlbox.cpp,\ - hyperlink.cpp,\ - filepickerg.cpp,\ - vscroll.cpp,\ - icon.cpp,bmpcboxg.cpp - -.ifdef __WXMOTIF__ -OBJECTS0=,statusbr.obj,statline.obj,notebook.obj,spinctlg.obj,collpaneg.obj,\ - combog.obj -.else -.ifdef __WXX11__ -OBJECTS0=,accel.obj,filedlgg.obj,dragimgg.obj,fdrepdlg.obj,htmllbox.obj,\ - listbkg.obj,mdig.obj,spinctlg.obj,splash.obj,timer.obj,\ - vlbox.obj,vscroll.obj,combog.obj,icon.obj,collpaneg.obj -.else -.ifdef __WXGTK__ -OBJECTS0=,accel.obj,statusbr.obj,filedlgg.obj,paletteg.obj,vlbox.obj,\ - vscroll.obj,combog.obj,icon.obj,collpaneg.obj -.else -OBJECTS0=,accel.obj,statusbr.obj,filedlgg.obj,paletteg.obj,vlbox.obj,\ - vscroll.obj,combog.obj,icon.obj -.endif -.endif -.endif - -all : $(SOURCES) - $(MMS)$(MMSQUALIFIERS) $(OBJECTS)$(OBJECTS0) -.ifdef __WXMOTIF__ - library/crea [--.lib]libwx_motif.olb $(OBJECTS)$(OBJECTS0) -.else -.ifdef __WXGTK__ - library/crea [--.lib]libwx_gtk.olb $(OBJECTS)$(OBJECTS0) -.else -.ifdef __WXGTK2__ - library/crea [--.lib]libwx_gtk2.olb $(OBJECTS)$(OBJECTS0) -.else -.ifdef __WXX11__ - library/crea [--.lib]libwx_x11_univ.olb $(OBJECTS)$(OBJECTS0) -.endif -.endif -.endif -.endif - -aboutdlgg.obj : aboutdlgg.cpp -accel.obj : accel.cpp -animateg.obj : animateg.cpp -busyinfo.obj : busyinfo.cpp -calctrl.obj : calctrl.cpp -caret.obj : caret.cpp -choicdgg.obj : choicdgg.cpp -clrpickerg.obj : clrpickerg.cpp -collpaneg.obj : collpaneg.cpp -colrdlgg.obj : colrdlgg.cpp -datectlg.obj : datectlg.cpp -dcpsg.obj : dcpsg.cpp -dirctrlg.obj : dirctrlg.cpp -dirdlgg.obj : dirdlgg.cpp -filedlgg.obj : filedlgg.cpp -fontdlgg.obj : fontdlgg.cpp -fdrepdlg.obj : fdrepdlg.cpp -grid.obj : grid.cpp -gridctrl.obj : gridctrl.cpp -gridsel.obj : gridsel.cpp -helpext.obj : helpext.cpp -htmllbox.obj : htmllbox.cpp -icon.obj : icon.cpp -imaglist.obj : imaglist.cpp -laywin.obj : laywin.cpp -listctrl.obj : listctrl.cpp -logg.obj : logg.cpp -msgdlgg.obj : msgdlgg.cpp -notebook.obj : notebook.cpp -numdlgg.obj : numdlgg.cpp -odcombo.obj : odcombo.cpp -paletteg.obj : paletteg.cpp -panelg.obj : panelg.cpp -printps.obj : printps.cpp -prntdlgg.obj : prntdlgg.cpp -progdlgg.obj : progdlgg.cpp -propdlg.obj : propdlg.cpp -scrlwing.obj : scrlwing.cpp -spinctlg.obj : spinctlg.cpp -renderg.obj : renderg.cpp -sashwin.obj : sashwin.cpp -selstore.obj : selstore.cpp -splitter.obj : splitter.cpp -statline.obj : statline.cpp -statusbr.obj : statusbr.cpp -tabg.obj : tabg.cpp -textdlgg.obj : textdlgg.cpp -tipdlg.obj : tipdlg.cpp -tipwin.obj : tipwin.cpp -treectlg.obj : treectlg.cpp -wizard.obj : wizard.cpp -dragimgg.obj : dragimgg.cpp -fdrepdlg.obj : fdrepdlg.cpp -htmllbox.obj : htmllbox.cpp -listbkg.obj : listbkg.cpp -mdig.obj : mdig.cpp -scrlwing.obj : scrlwing.cpp -spinctlg.obj : spinctlg.cpp -splash.obj : splash.cpp -timer.obj : timer.cpp -vlbox.obj : vlbox.cpp -vscroll.obj : vscroll.cpp - cxx $(CXXFLAGS)$(CXX_DEFINE)/nowarn vscroll.cpp -listbkg.obj : listbkg.cpp -choicbkg.obj : choicbkg.cpp -toolbkg.obj : toolbkg.cpp -treebkg.obj : treebkg.cpp -combog.obj : combog.cpp -fontpickerg.obj : fontpickerg.cpp -hyperlink.obj : hyperlink.cpp -filepickerg.obj : filepickerg.cpp -bmpcboxg.obj : bmpcboxg.cpp +#***************************************************************************** +# * +# Make file for VMS * +# Author : J.Jansen (joukj@hrem.nano.tudelft.nl) * +# Date : 31 October 2006 * +# * +#***************************************************************************** +.first + define wx [--.include.wx] + +.ifdef __WXMOTIF__ +CXX_DEFINE = /define=(__WXMOTIF__=1)/name=(as_is,short)\ + /assume=(nostdnew,noglobal_array_new) +CC_DEFINE = /define=(__WXMOTIF__=1)/name=(as_is,short) +.else +.ifdef __WXGTK__ +CXX_DEFINE = /define=(__WXGTK__=1)/float=ieee/name=(as_is,short)/ieee=denorm\ + /assume=(nostdnew,noglobal_array_new) +CC_DEFINE = /define=(__WXGTK__=1)/float=ieee/name=(as_is,short)/ieee=denorm +.else +.ifdef __WXX11__ +CXX_DEFINE = /define=(__WXX11__=1,__WXUNIVERSAL__==1)/float=ieee\ + /name=(as_is,short)/assume=(nostdnew,noglobal_array_new) +CC_DEFINE = /define=(__WXX11__=1,__WXUNIVERSAL__==1)/float=ieee\ + /name=(as_is,short) +.else +.ifdef __WXGTK2__ +CXX_DEFINE = /define=(__WXGTK__=1,VMS_GTK2==1)/float=ieee\ + /name=(as_is,short)/assume=(nostdnew,noglobal_array_new) +CC_DEFINE = /define=(__WX_GTK__=1,VMS_GTK2==1)/float=ieee\ + /name=(as_is,short) +.else +CXX_DEFINE = +CC_DEFINE = +.endif +.endif +.endif +.endif + +.suffixes : .cpp + +.cpp.obj : + cxx $(CXXFLAGS)$(CXX_DEFINE) $(MMS$TARGET_NAME).cpp +.c.obj : + cc $(CFLAGS)$(CC_DEFINE) $(MMS$TARGET_NAME).c + +OBJECTS = \ + aboutdlgg.obj,\ + animateg.obj,\ + busyinfo.obj,\ + calctrl.obj,\ + caret.obj,\ + choicbkg.obj,\ + choicdgg.obj,\ + colrdlgg.obj,\ + clrpickerg.obj,\ + datectlg.obj,\ + dcpsg.obj,\ + dirctrlg.obj,\ + dirdlgg.obj,\ + fdrepdlg.obj,\ + fontdlgg.obj,\ + fontpickerg.obj,\ + grid.obj,\ + gridctrl.obj,\ + gridsel.obj,\ + helpext.obj,\ + htmllbox.obj,\ + imaglist.obj,\ + laywin.obj,\ + listbkg.obj,\ + listctrl.obj,\ + logg.obj,\ + msgdlgg.obj,\ + numdlgg.obj,\ + odcombo.obj,\ + panelg.obj,\ + printps.obj,\ + prntdlgg.obj,\ + propdlg.obj,\ + progdlgg.obj,\ + renderg.obj,\ + sashwin.obj,\ + scrlwing.obj,\ + selstore.obj,\ + splitter.obj,\ + tabg.obj,\ + textdlgg.obj,\ + tipdlg.obj,\ + tipwin.obj,\ + toolbkg.obj,\ + treebkg.obj,\ + treectlg.obj,\ + wizard.obj,\ + hyperlink.obj,\ + filepickerg.obj,\ + bmpcboxg.obj + +SOURCES = \ + aboutdlgg.cpp,\ + accel.cpp,\ + animateg.cpp,\ + busyinfo.cpp,\ + calctrl.cpp,\ + caret.cpp,\ + choicbkg.cpp,\ + choicdgg.cpp,\ + collpaneg.cpp,\ + colrdlgg.cpp,\ + clrpickerg.cpp,\ + datectlg.cpp,\ + dcpsg.cpp,\ + dirctrlg.cpp,\ + dirdlgg.cpp,\ + filedlgg.cpp,\ + fdrepdlg.cpp,\ + fontdlgg.cpp,\ + fontpickerg.cpp,\ + grid.cpp,\ + gridctrl.cpp,\ + gridsel.cpp,\ + helpext.cpp,\ + htmllbox.cpp,\ + imaglist.cpp,\ + laywin.cpp,\ + listbkg.cpp,\ + listctrl.cpp,\ + logg.cpp,\ + msgdlgg.cpp,\ + notebook.cpp,\ + numdlgg.cpp,\ + odcombo.cpp,\ + paletteg.cpp,\ + panelg.cpp,\ + printps.cpp,\ + prntdlgg.cpp,\ + propdlg.cpp,\ + progdlgg.cpp,\ + renderg.cpp,\ + sashwin.cpp,\ + selstore.cpp,\ + splitter.cpp,\ + statline.cpp,\ + statusbr.cpp,\ + tabg.cpp,\ + textdlgg.cpp,\ + tipdlg.cpp,\ + tipwin.cpp,\ + toolbkg.cpp,\ + treebkg.cpp,\ + treectlg.cpp,\ + wizard.cpp,\ + dragimgg.cpp,\ + fdrepdlg.cpp,\ + htmllbox.cpp,\ + listbkg.cpp,\ + mdig.cpp,\ + scrlwing.cpp,\ + spinctlg.cpp,\ + splash.cpp,\ + timer.cpp,\ + vlbox.cpp,\ + hyperlink.cpp,\ + filepickerg.cpp,\ + vscroll.cpp,\ + icon.cpp,bmpcboxg.cpp + +.ifdef __WXMOTIF__ +OBJECTS0=,statusbr.obj,statline.obj,notebook.obj,spinctlg.obj,collpaneg.obj,\ + combog.obj +.else +.ifdef __WXX11__ +OBJECTS0=,accel.obj,filedlgg.obj,dragimgg.obj,fdrepdlg.obj,htmllbox.obj,\ + listbkg.obj,mdig.obj,spinctlg.obj,splash.obj,timer.obj,\ + vlbox.obj,vscroll.obj,combog.obj,icon.obj,collpaneg.obj +.else +.ifdef __WXGTK__ +OBJECTS0=,accel.obj,statusbr.obj,filedlgg.obj,paletteg.obj,vlbox.obj,\ + vscroll.obj,combog.obj,icon.obj,collpaneg.obj +.else +OBJECTS0=,accel.obj,statusbr.obj,filedlgg.obj,paletteg.obj,vlbox.obj,\ + vscroll.obj,combog.obj,icon.obj +.endif +.endif +.endif + +all : $(SOURCES) + $(MMS)$(MMSQUALIFIERS) $(OBJECTS)$(OBJECTS0) +.ifdef __WXMOTIF__ + library/crea [--.lib]libwx_motif.olb $(OBJECTS)$(OBJECTS0) +.else +.ifdef __WXGTK__ + library/crea [--.lib]libwx_gtk.olb $(OBJECTS)$(OBJECTS0) +.else +.ifdef __WXGTK2__ + library/crea [--.lib]libwx_gtk2.olb $(OBJECTS)$(OBJECTS0) +.else +.ifdef __WXX11__ + library/crea [--.lib]libwx_x11_univ.olb $(OBJECTS)$(OBJECTS0) +.endif +.endif +.endif +.endif + +aboutdlgg.obj : aboutdlgg.cpp +accel.obj : accel.cpp +animateg.obj : animateg.cpp +busyinfo.obj : busyinfo.cpp +calctrl.obj : calctrl.cpp +caret.obj : caret.cpp +choicdgg.obj : choicdgg.cpp +clrpickerg.obj : clrpickerg.cpp +collpaneg.obj : collpaneg.cpp +colrdlgg.obj : colrdlgg.cpp +datectlg.obj : datectlg.cpp +dcpsg.obj : dcpsg.cpp +dirctrlg.obj : dirctrlg.cpp +dirdlgg.obj : dirdlgg.cpp +filedlgg.obj : filedlgg.cpp +fontdlgg.obj : fontdlgg.cpp +fdrepdlg.obj : fdrepdlg.cpp +grid.obj : grid.cpp +gridctrl.obj : gridctrl.cpp +gridsel.obj : gridsel.cpp +helpext.obj : helpext.cpp +htmllbox.obj : htmllbox.cpp +icon.obj : icon.cpp +imaglist.obj : imaglist.cpp +laywin.obj : laywin.cpp +listctrl.obj : listctrl.cpp +logg.obj : logg.cpp +msgdlgg.obj : msgdlgg.cpp +notebook.obj : notebook.cpp +numdlgg.obj : numdlgg.cpp +odcombo.obj : odcombo.cpp +paletteg.obj : paletteg.cpp +panelg.obj : panelg.cpp +printps.obj : printps.cpp +prntdlgg.obj : prntdlgg.cpp +progdlgg.obj : progdlgg.cpp +propdlg.obj : propdlg.cpp +scrlwing.obj : scrlwing.cpp +spinctlg.obj : spinctlg.cpp +renderg.obj : renderg.cpp +sashwin.obj : sashwin.cpp +selstore.obj : selstore.cpp +splitter.obj : splitter.cpp +statline.obj : statline.cpp +statusbr.obj : statusbr.cpp +tabg.obj : tabg.cpp +textdlgg.obj : textdlgg.cpp +tipdlg.obj : tipdlg.cpp +tipwin.obj : tipwin.cpp +treectlg.obj : treectlg.cpp +wizard.obj : wizard.cpp +dragimgg.obj : dragimgg.cpp +fdrepdlg.obj : fdrepdlg.cpp +htmllbox.obj : htmllbox.cpp +listbkg.obj : listbkg.cpp +mdig.obj : mdig.cpp +scrlwing.obj : scrlwing.cpp +spinctlg.obj : spinctlg.cpp +splash.obj : splash.cpp +timer.obj : timer.cpp +vlbox.obj : vlbox.cpp +vscroll.obj : vscroll.cpp + cxx $(CXXFLAGS)$(CXX_DEFINE)/nowarn vscroll.cpp +listbkg.obj : listbkg.cpp +choicbkg.obj : choicbkg.cpp +toolbkg.obj : toolbkg.cpp +treebkg.obj : treebkg.cpp +combog.obj : combog.cpp +fontpickerg.obj : fontpickerg.cpp +hyperlink.obj : hyperlink.cpp +filepickerg.obj : filepickerg.cpp +bmpcboxg.obj : bmpcboxg.cpp diff --git a/3rdparty/wxWidgets/src/msw/makebase.b32 b/3rdparty/wxWidgets/src/msw/makebase.b32 index 4190d63a83..9cb1bea264 100644 --- a/3rdparty/wxWidgets/src/msw/makebase.b32 +++ b/3rdparty/wxWidgets/src/msw/makebase.b32 @@ -1,456 +1,456 @@ - - - - -# This file was automatically generated by tmake -# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE B32.T! - -# -# File: makebase.b32 -# Author: Julian Smart -# Created: 1998 -# Updated: Michael Fielding, 2002 -# Copyright: -# -# "%W% %G%" -# -# Makefile : Builds wxWindows library wxbase.lib for MS Windows, -# and Borland C++ (32-bit). - -# BCCDIR now defined in ../makeb32.env - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) -THISDIR = $(WXDIR)\src\msw - -# Set all these to 1 if you want to build a dynamic library -!if "$(DLL)" == "1" -WXMAKINGDLL=1 -WXBUILDDLL=1 -!endif - -wxUSE_GUI=0 - -!include $(WXDIR)\src\makeb32.env - -PERIPH_LIBS= -PERIPH_TARGET=zlib regex $(PERIPH_TARGET) -PERIPH_CLEAN_TARGET=clean_zlib clean_regex $(PERIPH_CLEAN_TARGET) - -!if "$(DLL)" == "0" -DUMMY=dummy -!else -DUMMY=dummydll -LIBS= cw32mti import32 ole2w32 odbc32 zlib regex -!endif - -LIBTARGET=$(WXLIB) - -GENDIR=..\generic -COMMDIR=..\common -HTMLDIR=..\html -OLEDIR=.\ole -MSWDIR=. - -DOCDIR = $(WXDIR)\docs - -COMMONOBJS = \ - $(OBJ_PATH)\appbase.obj \ - $(OBJ_PATH)\clntdata.obj \ - $(OBJ_PATH)\cmdline.obj \ - $(OBJ_PATH)\config.obj \ - $(OBJ_PATH)\datetime.obj \ - $(OBJ_PATH)\datstrm.obj \ - $(OBJ_PATH)\db.obj \ - $(OBJ_PATH)\dbtable.obj \ - $(OBJ_PATH)\dircmn.obj \ - $(OBJ_PATH)\dynarray.obj \ - $(OBJ_PATH)\dynlib.obj \ - $(OBJ_PATH)\dynload.obj \ - $(OBJ_PATH)\encconv.obj \ - $(OBJ_PATH)\event.obj \ - $(OBJ_PATH)\extended.obj \ - $(OBJ_PATH)\ffile.obj \ - $(OBJ_PATH)\file.obj \ - $(OBJ_PATH)\fileconf.obj \ - $(OBJ_PATH)\filefn.obj \ - $(OBJ_PATH)\filename.obj \ - $(OBJ_PATH)\filesys.obj \ - $(OBJ_PATH)\fmapbase.obj \ - $(OBJ_PATH)\fs_inet.obj \ - $(OBJ_PATH)\fs_mem.obj \ - $(OBJ_PATH)\fs_zip.obj \ - $(OBJ_PATH)\ftp.obj \ - $(OBJ_PATH)\hash.obj \ - $(OBJ_PATH)\hashmap.obj \ - $(OBJ_PATH)\http.obj \ - $(OBJ_PATH)\intl.obj \ - $(OBJ_PATH)\ipcbase.obj \ - $(OBJ_PATH)\list.obj \ - $(OBJ_PATH)\log.obj \ - $(OBJ_PATH)\longlong.obj \ - $(OBJ_PATH)\memory.obj \ - $(OBJ_PATH)\mimecmn.obj \ - $(OBJ_PATH)\module.obj \ - $(OBJ_PATH)\msgout.obj \ - $(OBJ_PATH)\mstream.obj \ - $(OBJ_PATH)\object.obj \ - $(OBJ_PATH)\process.obj \ - $(OBJ_PATH)\protocol.obj \ - $(OBJ_PATH)\regex.obj \ - $(OBJ_PATH)\sckaddr.obj \ - $(OBJ_PATH)\sckfile.obj \ - $(OBJ_PATH)\sckipc.obj \ - $(OBJ_PATH)\sckstrm.obj \ - $(OBJ_PATH)\socket.obj \ - $(OBJ_PATH)\stopwatch.obj \ - $(OBJ_PATH)\strconv.obj \ - $(OBJ_PATH)\stream.obj \ - $(OBJ_PATH)\string.obj \ - $(OBJ_PATH)\sysopt.obj \ - $(OBJ_PATH)\textbuf.obj \ - $(OBJ_PATH)\textfile.obj \ - $(OBJ_PATH)\tokenzr.obj \ - $(OBJ_PATH)\txtstrm.obj \ - $(OBJ_PATH)\unzip.obj \ - $(OBJ_PATH)\url.obj \ - $(OBJ_PATH)\utilscmn.obj \ - $(OBJ_PATH)\variant.obj \ - $(OBJ_PATH)\wfstream.obj \ - $(OBJ_PATH)\wxchar.obj \ - $(OBJ_PATH)\zipstrm.obj \ - $(OBJ_PATH)\zstream.obj \ - $(OBJ_PATH)\init.obj - -MSWOBJS = $(OBJ_PATH)\basemsw.obj \ - $(OBJ_PATH)\dde.obj \ - $(OBJ_PATH)\dir.obj \ - $(OBJ_PATH)\gsocket.obj \ - $(OBJ_PATH)\gsockmsw.obj \ - $(OBJ_PATH)\main.obj \ - $(OBJ_PATH)\mimetype.obj \ - $(OBJ_PATH)\mslu.obj \ - $(OBJ_PATH)\regconf.obj \ - $(OBJ_PATH)\registry.obj \ - $(OBJ_PATH)\snglinst.obj \ - $(OBJ_PATH)\thread.obj \ - $(OBJ_PATH)\utils.obj \ - $(OBJ_PATH)\utilsexc.obj \ - $(OBJ_PATH)\volume.obj - -OBJECTS = $(COMMONOBJS) $(MSWOBJS) - -default: wx - -wx: $(ARCHINCDIR)\wx makesetuph makearchsetuph makeoutdir $(CFG) $(DUMMY).obj $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET) - -all: wx - -makeoutdir: - -mkdir $(OBJ_PATH) - -# Copy the in-CVS setup0.h to setup.h if necessary -makesetuph: - cd $(WXDIR)\include\wx\msw - if not exist setup.h copy setup0.h setup.h - cd $(WXDIR)\src\msw - -# Copy include\wx\msw\setup.h to the architecture-specific location -makearchsetuph: - copy $(WXDIR)\include\wx\msw\setup.h $(ARCHSETUPH) - cd $(WXDIR)\src\msw - -$(ARCHINCDIR)\wx: - -mkdir $(ARCHINCDIR) - -mkdir $(ARCHINCDIR)\wx - -erase $(CFG) - -!if "$(DLL)" == "0" - -$(LIBTARGET): $(DUMMY).obj $(OBJECTS) - -erase $(WXLIB) - tlib "$(WXLIB)" /P1024 @&&! -+$(OBJECTS:.obj =.obj +) +$(PERIPH_LIBS:.lib =.lib +) -! - -!else - -$(LIBTARGET): $(DUMMY).obj $(OBJECTS) - -erase $(WXLIB) - -erase $(WXDLL) - $(LINK) $(LINK_FLAGS) /L$(WXLIBDIR);$(BCCDIR)\lib;$(BCCDIR)\lib\psdk /v @&&! -c0d32.obj $(OBJECTS) -$(WXLIBDIR)\$(WXLIBNAME) -nul -$(PERIPH_LIBS) $(LIBS) -wxb32 -! - implib -c $(LIBTARGET) $(WXLIBDIR)\$(WXLIBNAME).dll -!endif - -dummy.obj: dummy.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h -dummydll.obj: dummydll.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h version.res - -version.res: - brc32 -r -i$(WXDIR)\include\ $(MSWDIR)\version.rc - -$(OBJ_PATH)\basemsw.obj: $(MSWDIR)\basemsw.$(SRCSUFF) - -$(OBJ_PATH)\dde.obj: $(MSWDIR)\dde.$(SRCSUFF) - -$(OBJ_PATH)\dir.obj: $(MSWDIR)\dir.$(SRCSUFF) - -$(OBJ_PATH)\gsocket.obj: $(MSWDIR)\gsocket.c - -$(OBJ_PATH)\gsockmsw.obj: $(MSWDIR)\gsockmsw.c - -$(OBJ_PATH)\main.obj: $(MSWDIR)\main.$(SRCSUFF) - -$(OBJ_PATH)\mimetype.obj: $(MSWDIR)\mimetype.$(SRCSUFF) - -$(OBJ_PATH)\mslu.obj: $(MSWDIR)\mslu.$(SRCSUFF) - -$(OBJ_PATH)\regconf.obj: $(MSWDIR)\regconf.$(SRCSUFF) - -$(OBJ_PATH)\registry.obj: $(MSWDIR)\registry.$(SRCSUFF) - -$(OBJ_PATH)\snglinst.obj: $(MSWDIR)\snglinst.$(SRCSUFF) - -$(OBJ_PATH)\thread.obj: $(MSWDIR)\thread.$(SRCSUFF) - -$(OBJ_PATH)\utils.obj: $(MSWDIR)\utils.$(SRCSUFF) - -$(OBJ_PATH)\utilsexc.obj: $(MSWDIR)\utilsexc.$(SRCSUFF) - -$(OBJ_PATH)\volume.obj: $(MSWDIR)\volume.$(SRCSUFF) - - - -######################################################## -# Common objects (always compiled) - -$(OBJ_PATH)\appbase.obj: $(COMMDIR)\appbase.$(SRCSUFF) - -$(OBJ_PATH)\clntdata.obj: $(COMMDIR)\clntdata.$(SRCSUFF) - -$(OBJ_PATH)\cmdline.obj: $(COMMDIR)\cmdline.$(SRCSUFF) - -$(OBJ_PATH)\config.obj: $(COMMDIR)\config.$(SRCSUFF) - -$(OBJ_PATH)\datetime.obj: $(COMMDIR)\datetime.$(SRCSUFF) - -$(OBJ_PATH)\datstrm.obj: $(COMMDIR)\datstrm.$(SRCSUFF) - -$(OBJ_PATH)\db.obj: $(COMMDIR)\db.$(SRCSUFF) - -$(OBJ_PATH)\dbtable.obj: $(COMMDIR)\dbtable.$(SRCSUFF) - -$(OBJ_PATH)\dircmn.obj: $(COMMDIR)\dircmn.$(SRCSUFF) - -$(OBJ_PATH)\dynarray.obj: $(COMMDIR)\dynarray.$(SRCSUFF) - -$(OBJ_PATH)\dynlib.obj: $(COMMDIR)\dynlib.$(SRCSUFF) - -$(OBJ_PATH)\dynload.obj: $(COMMDIR)\dynload.$(SRCSUFF) - -$(OBJ_PATH)\encconv.obj: $(COMMDIR)\encconv.$(SRCSUFF) - -$(OBJ_PATH)\event.obj: $(COMMDIR)\event.$(SRCSUFF) - -$(OBJ_PATH)\extended.obj: $(COMMDIR)\extended.c - -$(OBJ_PATH)\ffile.obj: $(COMMDIR)\ffile.$(SRCSUFF) - -$(OBJ_PATH)\file.obj: $(COMMDIR)\file.$(SRCSUFF) - -$(OBJ_PATH)\fileconf.obj: $(COMMDIR)\fileconf.$(SRCSUFF) - -$(OBJ_PATH)\filefn.obj: $(COMMDIR)\filefn.$(SRCSUFF) - -$(OBJ_PATH)\filename.obj: $(COMMDIR)\filename.$(SRCSUFF) - -$(OBJ_PATH)\filesys.obj: $(COMMDIR)\filesys.$(SRCSUFF) - -$(OBJ_PATH)\fmapbase.obj: $(COMMDIR)\fmapbase.$(SRCSUFF) - -$(OBJ_PATH)\fs_inet.obj: $(COMMDIR)\fs_inet.$(SRCSUFF) - -$(OBJ_PATH)\fs_mem.obj: $(COMMDIR)\fs_mem.$(SRCSUFF) - -$(OBJ_PATH)\fs_zip.obj: $(COMMDIR)\fs_zip.$(SRCSUFF) - -$(OBJ_PATH)\ftp.obj: $(COMMDIR)\ftp.$(SRCSUFF) - -$(OBJ_PATH)\hash.obj: $(COMMDIR)\hash.$(SRCSUFF) - -$(OBJ_PATH)\hashmap.obj: $(COMMDIR)\hashmap.$(SRCSUFF) - -$(OBJ_PATH)\http.obj: $(COMMDIR)\http.$(SRCSUFF) - -$(OBJ_PATH)\intl.obj: $(COMMDIR)\intl.$(SRCSUFF) - -$(OBJ_PATH)\ipcbase.obj: $(COMMDIR)\ipcbase.$(SRCSUFF) - -$(OBJ_PATH)\list.obj: $(COMMDIR)\list.$(SRCSUFF) - -$(OBJ_PATH)\log.obj: $(COMMDIR)\log.$(SRCSUFF) - -$(OBJ_PATH)\longlong.obj: $(COMMDIR)\longlong.$(SRCSUFF) - -$(OBJ_PATH)\memory.obj: $(COMMDIR)\memory.$(SRCSUFF) - -$(OBJ_PATH)\mimecmn.obj: $(COMMDIR)\mimecmn.$(SRCSUFF) - -$(OBJ_PATH)\module.obj: $(COMMDIR)\module.$(SRCSUFF) - -$(OBJ_PATH)\msgout.obj: $(COMMDIR)\msgout.$(SRCSUFF) - -$(OBJ_PATH)\mstream.obj: $(COMMDIR)\mstream.$(SRCSUFF) - -$(OBJ_PATH)\object.obj: $(COMMDIR)\object.$(SRCSUFF) - -$(OBJ_PATH)\process.obj: $(COMMDIR)\process.$(SRCSUFF) - -$(OBJ_PATH)\protocol.obj: $(COMMDIR)\protocol.$(SRCSUFF) - -$(OBJ_PATH)\regex.obj: $(COMMDIR)\regex.$(SRCSUFF) - -$(OBJ_PATH)\sckaddr.obj: $(COMMDIR)\sckaddr.$(SRCSUFF) - -$(OBJ_PATH)\sckfile.obj: $(COMMDIR)\sckfile.$(SRCSUFF) - -$(OBJ_PATH)\sckipc.obj: $(COMMDIR)\sckipc.$(SRCSUFF) - -$(OBJ_PATH)\sckstrm.obj: $(COMMDIR)\sckstrm.$(SRCSUFF) - -$(OBJ_PATH)\socket.obj: $(COMMDIR)\socket.$(SRCSUFF) - -$(OBJ_PATH)\stopwatch.obj: $(COMMDIR)\stopwatch.$(SRCSUFF) - -$(OBJ_PATH)\strconv.obj: $(COMMDIR)\strconv.$(SRCSUFF) - -$(OBJ_PATH)\stream.obj: $(COMMDIR)\stream.$(SRCSUFF) - -$(OBJ_PATH)\string.obj: $(COMMDIR)\string.$(SRCSUFF) - -$(OBJ_PATH)\sysopt.obj: $(COMMDIR)\sysopt.$(SRCSUFF) - -$(OBJ_PATH)\textbuf.obj: $(COMMDIR)\textbuf.$(SRCSUFF) - -$(OBJ_PATH)\textfile.obj: $(COMMDIR)\textfile.$(SRCSUFF) - -$(OBJ_PATH)\tokenzr.obj: $(COMMDIR)\tokenzr.$(SRCSUFF) - -$(OBJ_PATH)\txtstrm.obj: $(COMMDIR)\txtstrm.$(SRCSUFF) - -$(OBJ_PATH)\unzip.obj: $(COMMDIR)\unzip.c - -$(OBJ_PATH)\url.obj: $(COMMDIR)\url.$(SRCSUFF) - -$(OBJ_PATH)\utilscmn.obj: $(COMMDIR)\utilscmn.$(SRCSUFF) - -$(OBJ_PATH)\variant.obj: $(COMMDIR)\variant.$(SRCSUFF) - -$(OBJ_PATH)\wfstream.obj: $(COMMDIR)\wfstream.$(SRCSUFF) - -$(OBJ_PATH)\wxchar.obj: $(COMMDIR)\wxchar.$(SRCSUFF) - -$(OBJ_PATH)\zipstrm.obj: $(COMMDIR)\zipstrm.$(SRCSUFF) - -$(OBJ_PATH)\zstream.obj: $(COMMDIR)\zstream.$(SRCSUFF) - -$(OBJ_PATH)\init.obj: $(COMMDIR)\init.$(SRCSUFF) - - - - -all_utils: - cd $(WXDIR)\utils - ${MAKE} -f makefile.b32 - cd $(WXDIR)\src\msw - -all_samples: - cd $(WXDIR)\samples - ${MAKE} -f makefile.b32 - cd $(WXDIR)\src\msw - -all_execs: - cd $(WXDIR)\utils - ${MAKE} -f makefile.b32 all_execs - cd $(WXDIR)\src\msw - - - -zlib: $(CFG) - cd $(WXDIR)\src\zlib - ${MAKE} -f makefile.b32 wxUSE_GUI=0 lib - cd $(WXDIR)\src\msw - -clean_zlib: - cd $(WXDIR)\src\zlib - ${MAKE} -f makefile.b32 clean - cd $(WXDIR)\src\msw - - -regex: $(CFG) - cd $(WXDIR)\src\regex - ${MAKE} -f makefile.b32 wxUSE_GUI=0 lib - cd $(WXDIR)\src\msw - -clean_regex: - cd $(WXDIR)\src\regex - ${MAKE} -f makefile.b32 clean - cd $(WXDIR)\src\msw - - - -$(CFG): makebase.b32 - copy &&! --Hc --H=$(WXDIR)\src\msw\wx32.csm --3 --d --a1 # byte alignment --R- --X --w-par --w-aus --w-hid # virtual function A hides virtual function B --tWM --tWC - --I$(ARCHINCDIR);$(WXINC);$(BCCDIR)\include;$(WXDIR)/src/generic;$(WXDIR)/src/png;$(WXDIR)/src/jpeg;$(WXDIR)/src/zlib;$(WXDIR)/src/tiff;$(THISDIR) --I$(WXDIR)\include\wx\msw\gnuwin32 - --L$(BCCDIR)\lib;$(BCCDIR)\lib\psdk --D__WXWIN__ --D__WXMSW__ --D__WINDOWS__ --DWIN32 -$(OPT) -$(DEBUG_FLAGS) -$(WIN95FLAG) -! $(CFG) - -clean: $(PERIPH_CLEAN_TARGET) - -$(RM) $(WXLIBDIR)\*.tds - -$(RM) $(WXLIBDIR)\*.il? - -$(RM) $(OBJ_PATH)\*.obj - -$(RM) $(OBJ_PATH)\*.pch - -$(RM) $(OBJ_PATH)\*.csm - -$(RM) $(OBJ_PATH)\"wx32.#??" - -cleancfg: - -$(RM) $(OBJ_PATH)\*.cfg - - -cleanall: clean cleancfg - - -self: - cd $(WXWIN)\distrib\msw\tmake - perl -S tmake -tb32base wxwin.pro -o makebase.b32 - copy makebase.b32 $(WXWIN)\src\msw + + + + +# This file was automatically generated by tmake +# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE B32.T! + +# +# File: makebase.b32 +# Author: Julian Smart +# Created: 1998 +# Updated: Michael Fielding, 2002 +# Copyright: +# +# "%W% %G%" +# +# Makefile : Builds wxWindows library wxbase.lib for MS Windows, +# and Borland C++ (32-bit). + +# BCCDIR now defined in ../makeb32.env + +!if "$(WXWIN)" == "" +!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx +!endif + +WXDIR = $(WXWIN) +THISDIR = $(WXDIR)\src\msw + +# Set all these to 1 if you want to build a dynamic library +!if "$(DLL)" == "1" +WXMAKINGDLL=1 +WXBUILDDLL=1 +!endif + +wxUSE_GUI=0 + +!include $(WXDIR)\src\makeb32.env + +PERIPH_LIBS= +PERIPH_TARGET=zlib regex $(PERIPH_TARGET) +PERIPH_CLEAN_TARGET=clean_zlib clean_regex $(PERIPH_CLEAN_TARGET) + +!if "$(DLL)" == "0" +DUMMY=dummy +!else +DUMMY=dummydll +LIBS= cw32mti import32 ole2w32 odbc32 zlib regex +!endif + +LIBTARGET=$(WXLIB) + +GENDIR=..\generic +COMMDIR=..\common +HTMLDIR=..\html +OLEDIR=.\ole +MSWDIR=. + +DOCDIR = $(WXDIR)\docs + +COMMONOBJS = \ + $(OBJ_PATH)\appbase.obj \ + $(OBJ_PATH)\clntdata.obj \ + $(OBJ_PATH)\cmdline.obj \ + $(OBJ_PATH)\config.obj \ + $(OBJ_PATH)\datetime.obj \ + $(OBJ_PATH)\datstrm.obj \ + $(OBJ_PATH)\db.obj \ + $(OBJ_PATH)\dbtable.obj \ + $(OBJ_PATH)\dircmn.obj \ + $(OBJ_PATH)\dynarray.obj \ + $(OBJ_PATH)\dynlib.obj \ + $(OBJ_PATH)\dynload.obj \ + $(OBJ_PATH)\encconv.obj \ + $(OBJ_PATH)\event.obj \ + $(OBJ_PATH)\extended.obj \ + $(OBJ_PATH)\ffile.obj \ + $(OBJ_PATH)\file.obj \ + $(OBJ_PATH)\fileconf.obj \ + $(OBJ_PATH)\filefn.obj \ + $(OBJ_PATH)\filename.obj \ + $(OBJ_PATH)\filesys.obj \ + $(OBJ_PATH)\fmapbase.obj \ + $(OBJ_PATH)\fs_inet.obj \ + $(OBJ_PATH)\fs_mem.obj \ + $(OBJ_PATH)\fs_zip.obj \ + $(OBJ_PATH)\ftp.obj \ + $(OBJ_PATH)\hash.obj \ + $(OBJ_PATH)\hashmap.obj \ + $(OBJ_PATH)\http.obj \ + $(OBJ_PATH)\intl.obj \ + $(OBJ_PATH)\ipcbase.obj \ + $(OBJ_PATH)\list.obj \ + $(OBJ_PATH)\log.obj \ + $(OBJ_PATH)\longlong.obj \ + $(OBJ_PATH)\memory.obj \ + $(OBJ_PATH)\mimecmn.obj \ + $(OBJ_PATH)\module.obj \ + $(OBJ_PATH)\msgout.obj \ + $(OBJ_PATH)\mstream.obj \ + $(OBJ_PATH)\object.obj \ + $(OBJ_PATH)\process.obj \ + $(OBJ_PATH)\protocol.obj \ + $(OBJ_PATH)\regex.obj \ + $(OBJ_PATH)\sckaddr.obj \ + $(OBJ_PATH)\sckfile.obj \ + $(OBJ_PATH)\sckipc.obj \ + $(OBJ_PATH)\sckstrm.obj \ + $(OBJ_PATH)\socket.obj \ + $(OBJ_PATH)\stopwatch.obj \ + $(OBJ_PATH)\strconv.obj \ + $(OBJ_PATH)\stream.obj \ + $(OBJ_PATH)\string.obj \ + $(OBJ_PATH)\sysopt.obj \ + $(OBJ_PATH)\textbuf.obj \ + $(OBJ_PATH)\textfile.obj \ + $(OBJ_PATH)\tokenzr.obj \ + $(OBJ_PATH)\txtstrm.obj \ + $(OBJ_PATH)\unzip.obj \ + $(OBJ_PATH)\url.obj \ + $(OBJ_PATH)\utilscmn.obj \ + $(OBJ_PATH)\variant.obj \ + $(OBJ_PATH)\wfstream.obj \ + $(OBJ_PATH)\wxchar.obj \ + $(OBJ_PATH)\zipstrm.obj \ + $(OBJ_PATH)\zstream.obj \ + $(OBJ_PATH)\init.obj + +MSWOBJS = $(OBJ_PATH)\basemsw.obj \ + $(OBJ_PATH)\dde.obj \ + $(OBJ_PATH)\dir.obj \ + $(OBJ_PATH)\gsocket.obj \ + $(OBJ_PATH)\gsockmsw.obj \ + $(OBJ_PATH)\main.obj \ + $(OBJ_PATH)\mimetype.obj \ + $(OBJ_PATH)\mslu.obj \ + $(OBJ_PATH)\regconf.obj \ + $(OBJ_PATH)\registry.obj \ + $(OBJ_PATH)\snglinst.obj \ + $(OBJ_PATH)\thread.obj \ + $(OBJ_PATH)\utils.obj \ + $(OBJ_PATH)\utilsexc.obj \ + $(OBJ_PATH)\volume.obj + +OBJECTS = $(COMMONOBJS) $(MSWOBJS) + +default: wx + +wx: $(ARCHINCDIR)\wx makesetuph makearchsetuph makeoutdir $(CFG) $(DUMMY).obj $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET) + +all: wx + +makeoutdir: + -mkdir $(OBJ_PATH) + +# Copy the in-CVS setup0.h to setup.h if necessary +makesetuph: + cd $(WXDIR)\include\wx\msw + if not exist setup.h copy setup0.h setup.h + cd $(WXDIR)\src\msw + +# Copy include\wx\msw\setup.h to the architecture-specific location +makearchsetuph: + copy $(WXDIR)\include\wx\msw\setup.h $(ARCHSETUPH) + cd $(WXDIR)\src\msw + +$(ARCHINCDIR)\wx: + -mkdir $(ARCHINCDIR) + -mkdir $(ARCHINCDIR)\wx + -erase $(CFG) + +!if "$(DLL)" == "0" + +$(LIBTARGET): $(DUMMY).obj $(OBJECTS) + -erase $(WXLIB) + tlib "$(WXLIB)" /P1024 @&&! ++$(OBJECTS:.obj =.obj +) +$(PERIPH_LIBS:.lib =.lib +) +! + +!else + +$(LIBTARGET): $(DUMMY).obj $(OBJECTS) + -erase $(WXLIB) + -erase $(WXDLL) + $(LINK) $(LINK_FLAGS) /L$(WXLIBDIR);$(BCCDIR)\lib;$(BCCDIR)\lib\psdk /v @&&! +c0d32.obj $(OBJECTS) +$(WXLIBDIR)\$(WXLIBNAME) +nul +$(PERIPH_LIBS) $(LIBS) +wxb32 +! + implib -c $(LIBTARGET) $(WXLIBDIR)\$(WXLIBNAME).dll +!endif + +dummy.obj: dummy.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h +dummydll.obj: dummydll.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h version.res + +version.res: + brc32 -r -i$(WXDIR)\include\ $(MSWDIR)\version.rc + +$(OBJ_PATH)\basemsw.obj: $(MSWDIR)\basemsw.$(SRCSUFF) + +$(OBJ_PATH)\dde.obj: $(MSWDIR)\dde.$(SRCSUFF) + +$(OBJ_PATH)\dir.obj: $(MSWDIR)\dir.$(SRCSUFF) + +$(OBJ_PATH)\gsocket.obj: $(MSWDIR)\gsocket.c + +$(OBJ_PATH)\gsockmsw.obj: $(MSWDIR)\gsockmsw.c + +$(OBJ_PATH)\main.obj: $(MSWDIR)\main.$(SRCSUFF) + +$(OBJ_PATH)\mimetype.obj: $(MSWDIR)\mimetype.$(SRCSUFF) + +$(OBJ_PATH)\mslu.obj: $(MSWDIR)\mslu.$(SRCSUFF) + +$(OBJ_PATH)\regconf.obj: $(MSWDIR)\regconf.$(SRCSUFF) + +$(OBJ_PATH)\registry.obj: $(MSWDIR)\registry.$(SRCSUFF) + +$(OBJ_PATH)\snglinst.obj: $(MSWDIR)\snglinst.$(SRCSUFF) + +$(OBJ_PATH)\thread.obj: $(MSWDIR)\thread.$(SRCSUFF) + +$(OBJ_PATH)\utils.obj: $(MSWDIR)\utils.$(SRCSUFF) + +$(OBJ_PATH)\utilsexc.obj: $(MSWDIR)\utilsexc.$(SRCSUFF) + +$(OBJ_PATH)\volume.obj: $(MSWDIR)\volume.$(SRCSUFF) + + + +######################################################## +# Common objects (always compiled) + +$(OBJ_PATH)\appbase.obj: $(COMMDIR)\appbase.$(SRCSUFF) + +$(OBJ_PATH)\clntdata.obj: $(COMMDIR)\clntdata.$(SRCSUFF) + +$(OBJ_PATH)\cmdline.obj: $(COMMDIR)\cmdline.$(SRCSUFF) + +$(OBJ_PATH)\config.obj: $(COMMDIR)\config.$(SRCSUFF) + +$(OBJ_PATH)\datetime.obj: $(COMMDIR)\datetime.$(SRCSUFF) + +$(OBJ_PATH)\datstrm.obj: $(COMMDIR)\datstrm.$(SRCSUFF) + +$(OBJ_PATH)\db.obj: $(COMMDIR)\db.$(SRCSUFF) + +$(OBJ_PATH)\dbtable.obj: $(COMMDIR)\dbtable.$(SRCSUFF) + +$(OBJ_PATH)\dircmn.obj: $(COMMDIR)\dircmn.$(SRCSUFF) + +$(OBJ_PATH)\dynarray.obj: $(COMMDIR)\dynarray.$(SRCSUFF) + +$(OBJ_PATH)\dynlib.obj: $(COMMDIR)\dynlib.$(SRCSUFF) + +$(OBJ_PATH)\dynload.obj: $(COMMDIR)\dynload.$(SRCSUFF) + +$(OBJ_PATH)\encconv.obj: $(COMMDIR)\encconv.$(SRCSUFF) + +$(OBJ_PATH)\event.obj: $(COMMDIR)\event.$(SRCSUFF) + +$(OBJ_PATH)\extended.obj: $(COMMDIR)\extended.c + +$(OBJ_PATH)\ffile.obj: $(COMMDIR)\ffile.$(SRCSUFF) + +$(OBJ_PATH)\file.obj: $(COMMDIR)\file.$(SRCSUFF) + +$(OBJ_PATH)\fileconf.obj: $(COMMDIR)\fileconf.$(SRCSUFF) + +$(OBJ_PATH)\filefn.obj: $(COMMDIR)\filefn.$(SRCSUFF) + +$(OBJ_PATH)\filename.obj: $(COMMDIR)\filename.$(SRCSUFF) + +$(OBJ_PATH)\filesys.obj: $(COMMDIR)\filesys.$(SRCSUFF) + +$(OBJ_PATH)\fmapbase.obj: $(COMMDIR)\fmapbase.$(SRCSUFF) + +$(OBJ_PATH)\fs_inet.obj: $(COMMDIR)\fs_inet.$(SRCSUFF) + +$(OBJ_PATH)\fs_mem.obj: $(COMMDIR)\fs_mem.$(SRCSUFF) + +$(OBJ_PATH)\fs_zip.obj: $(COMMDIR)\fs_zip.$(SRCSUFF) + +$(OBJ_PATH)\ftp.obj: $(COMMDIR)\ftp.$(SRCSUFF) + +$(OBJ_PATH)\hash.obj: $(COMMDIR)\hash.$(SRCSUFF) + +$(OBJ_PATH)\hashmap.obj: $(COMMDIR)\hashmap.$(SRCSUFF) + +$(OBJ_PATH)\http.obj: $(COMMDIR)\http.$(SRCSUFF) + +$(OBJ_PATH)\intl.obj: $(COMMDIR)\intl.$(SRCSUFF) + +$(OBJ_PATH)\ipcbase.obj: $(COMMDIR)\ipcbase.$(SRCSUFF) + +$(OBJ_PATH)\list.obj: $(COMMDIR)\list.$(SRCSUFF) + +$(OBJ_PATH)\log.obj: $(COMMDIR)\log.$(SRCSUFF) + +$(OBJ_PATH)\longlong.obj: $(COMMDIR)\longlong.$(SRCSUFF) + +$(OBJ_PATH)\memory.obj: $(COMMDIR)\memory.$(SRCSUFF) + +$(OBJ_PATH)\mimecmn.obj: $(COMMDIR)\mimecmn.$(SRCSUFF) + +$(OBJ_PATH)\module.obj: $(COMMDIR)\module.$(SRCSUFF) + +$(OBJ_PATH)\msgout.obj: $(COMMDIR)\msgout.$(SRCSUFF) + +$(OBJ_PATH)\mstream.obj: $(COMMDIR)\mstream.$(SRCSUFF) + +$(OBJ_PATH)\object.obj: $(COMMDIR)\object.$(SRCSUFF) + +$(OBJ_PATH)\process.obj: $(COMMDIR)\process.$(SRCSUFF) + +$(OBJ_PATH)\protocol.obj: $(COMMDIR)\protocol.$(SRCSUFF) + +$(OBJ_PATH)\regex.obj: $(COMMDIR)\regex.$(SRCSUFF) + +$(OBJ_PATH)\sckaddr.obj: $(COMMDIR)\sckaddr.$(SRCSUFF) + +$(OBJ_PATH)\sckfile.obj: $(COMMDIR)\sckfile.$(SRCSUFF) + +$(OBJ_PATH)\sckipc.obj: $(COMMDIR)\sckipc.$(SRCSUFF) + +$(OBJ_PATH)\sckstrm.obj: $(COMMDIR)\sckstrm.$(SRCSUFF) + +$(OBJ_PATH)\socket.obj: $(COMMDIR)\socket.$(SRCSUFF) + +$(OBJ_PATH)\stopwatch.obj: $(COMMDIR)\stopwatch.$(SRCSUFF) + +$(OBJ_PATH)\strconv.obj: $(COMMDIR)\strconv.$(SRCSUFF) + +$(OBJ_PATH)\stream.obj: $(COMMDIR)\stream.$(SRCSUFF) + +$(OBJ_PATH)\string.obj: $(COMMDIR)\string.$(SRCSUFF) + +$(OBJ_PATH)\sysopt.obj: $(COMMDIR)\sysopt.$(SRCSUFF) + +$(OBJ_PATH)\textbuf.obj: $(COMMDIR)\textbuf.$(SRCSUFF) + +$(OBJ_PATH)\textfile.obj: $(COMMDIR)\textfile.$(SRCSUFF) + +$(OBJ_PATH)\tokenzr.obj: $(COMMDIR)\tokenzr.$(SRCSUFF) + +$(OBJ_PATH)\txtstrm.obj: $(COMMDIR)\txtstrm.$(SRCSUFF) + +$(OBJ_PATH)\unzip.obj: $(COMMDIR)\unzip.c + +$(OBJ_PATH)\url.obj: $(COMMDIR)\url.$(SRCSUFF) + +$(OBJ_PATH)\utilscmn.obj: $(COMMDIR)\utilscmn.$(SRCSUFF) + +$(OBJ_PATH)\variant.obj: $(COMMDIR)\variant.$(SRCSUFF) + +$(OBJ_PATH)\wfstream.obj: $(COMMDIR)\wfstream.$(SRCSUFF) + +$(OBJ_PATH)\wxchar.obj: $(COMMDIR)\wxchar.$(SRCSUFF) + +$(OBJ_PATH)\zipstrm.obj: $(COMMDIR)\zipstrm.$(SRCSUFF) + +$(OBJ_PATH)\zstream.obj: $(COMMDIR)\zstream.$(SRCSUFF) + +$(OBJ_PATH)\init.obj: $(COMMDIR)\init.$(SRCSUFF) + + + + +all_utils: + cd $(WXDIR)\utils + ${MAKE} -f makefile.b32 + cd $(WXDIR)\src\msw + +all_samples: + cd $(WXDIR)\samples + ${MAKE} -f makefile.b32 + cd $(WXDIR)\src\msw + +all_execs: + cd $(WXDIR)\utils + ${MAKE} -f makefile.b32 all_execs + cd $(WXDIR)\src\msw + + + +zlib: $(CFG) + cd $(WXDIR)\src\zlib + ${MAKE} -f makefile.b32 wxUSE_GUI=0 lib + cd $(WXDIR)\src\msw + +clean_zlib: + cd $(WXDIR)\src\zlib + ${MAKE} -f makefile.b32 clean + cd $(WXDIR)\src\msw + + +regex: $(CFG) + cd $(WXDIR)\src\regex + ${MAKE} -f makefile.b32 wxUSE_GUI=0 lib + cd $(WXDIR)\src\msw + +clean_regex: + cd $(WXDIR)\src\regex + ${MAKE} -f makefile.b32 clean + cd $(WXDIR)\src\msw + + + +$(CFG): makebase.b32 + copy &&! +-Hc +-H=$(WXDIR)\src\msw\wx32.csm +-3 +-d +-a1 # byte alignment +-R- +-X +-w-par +-w-aus +-w-hid # virtual function A hides virtual function B +-tWM +-tWC + +-I$(ARCHINCDIR);$(WXINC);$(BCCDIR)\include;$(WXDIR)/src/generic;$(WXDIR)/src/png;$(WXDIR)/src/jpeg;$(WXDIR)/src/zlib;$(WXDIR)/src/tiff;$(THISDIR) +-I$(WXDIR)\include\wx\msw\gnuwin32 + +-L$(BCCDIR)\lib;$(BCCDIR)\lib\psdk +-D__WXWIN__ +-D__WXMSW__ +-D__WINDOWS__ +-DWIN32 +$(OPT) +$(DEBUG_FLAGS) +$(WIN95FLAG) +! $(CFG) + +clean: $(PERIPH_CLEAN_TARGET) + -$(RM) $(WXLIBDIR)\*.tds + -$(RM) $(WXLIBDIR)\*.il? + -$(RM) $(OBJ_PATH)\*.obj + -$(RM) $(OBJ_PATH)\*.pch + -$(RM) $(OBJ_PATH)\*.csm + -$(RM) $(OBJ_PATH)\"wx32.#??" + +cleancfg: + -$(RM) $(OBJ_PATH)\*.cfg + + +cleanall: clean cleancfg + + +self: + cd $(WXWIN)\distrib\msw\tmake + perl -S tmake -tb32base wxwin.pro -o makebase.b32 + copy makebase.b32 $(WXWIN)\src\msw diff --git a/3rdparty/wxWidgets/src/msw/makefile.mic b/3rdparty/wxWidgets/src/msw/makefile.mic index 0bdbbfbc77..b544a55a3f 100644 --- a/3rdparty/wxWidgets/src/msw/makefile.mic +++ b/3rdparty/wxWidgets/src/msw/makefile.mic @@ -1,356 +1,356 @@ -############################################################################## -# Microwindows template Makefile -# Copyright (c) 2000 Martin Jolicoeur, Greg Haerr -# Licence: wxWindows Licence -############################################################################## - -TOP=$(MICROWINDOWS) -ifeq "$(MICROWINDOWS)" "" -TOP=/home/julians/local/microwindows/microwindows-0.89pre8/src -endif - -CONFIG = $(TOP)/config -WXDIR = ../.. -OBJSUFF = o -SRCSUFF = cpp -WXLIB=$(WXDIR)/lib/libwx.a -AROPTIONS = ruv -RANLIB = ranlib -RM = rm -f - -GENDIR = $(WXDIR)/src/generic -COMMDIR = $(WXDIR)/src/common -HTMLDIR = $(WXDIR)/src/html -ZLIBDIR = $(WXDIR)/src/zlib -PNGDIR = $(WXDIR)/src/png -JPEGDIR = $(WXDIR)/src/jpeg -TIFFDIR = $(WXDIR)/src/tiff -OLEDIR = $(WXDIR)/src/msw/ole -MICROWINDIR = $(WXDIR)/src/msw -UNIXDIR = $(WXDIR)/src/unix -UNIVDIR = $(WXDIR)/src/univ - -ZLIBLIB = $(WXDIR)/lib/libzlib.a -PNGLIB = $(WXDIR)/lib/libpng.a -JPEGLIB = $(WXDIR)/lib/libjpeg.a -TIFFLIB = $(WXDIR)/lib/libtiff.a - -GENERICOBJS = \ - $(GENDIR)/accel.$(OBJSUFF) \ - $(GENDIR)/busyinfo.$(OBJSUFF) \ - $(GENDIR)/calctrl.$(OBJSUFF) \ - $(GENDIR)/choicdgg.$(OBJSUFF) \ - $(GENDIR)/colrdlgg.$(OBJSUFF) \ - $(GENDIR)/dirctrlg.$(OBJSUFF) \ - $(GENDIR)/dragimgg.$(OBJSUFF) \ - $(GENDIR)/fontdlgg.$(OBJSUFF) \ - $(GENDIR)/grid.$(OBJSUFF) \ - $(GENDIR)/gridctrl.$(OBJSUFF) \ - $(GENDIR)/gridsel.$(OBJSUFF) \ - $(GENDIR)/imaglist.$(OBJSUFF) \ - $(GENDIR)/laywin.$(OBJSUFF) \ - $(GENDIR)/listctrl.$(OBJSUFF) \ - $(GENDIR)/logg.$(OBJSUFF) \ - $(GENDIR)/msgdlgg.$(OBJSUFF) \ - $(GENDIR)/numdlgg.$(OBJSUFF) \ - $(GENDIR)/panelg.$(OBJSUFF) \ - $(GENDIR)/progdlgg.$(OBJSUFF) \ - $(GENDIR)/sashwin.$(OBJSUFF) \ - $(GENDIR)/scrlwing.$(OBJSUFF) \ - $(GENDIR)/spinctlg.$(OBJSUFF) \ - $(GENDIR)/splash.$(OBJSUFF) \ - $(GENDIR)/splitter.$(OBJSUFF) \ - $(GENDIR)/tabg.$(OBJSUFF) \ - $(GENDIR)/tbarsmpl.$(OBJSUFF) \ - $(GENDIR)/textdlgg.$(OBJSUFF) \ - $(GENDIR)/tipdlg.$(OBJSUFF) \ - $(GENDIR)/tipwin.$(OBJSUFF) \ - $(GENDIR)/treectlg.$(OBJSUFF) \ - $(GENDIR)/treelay.$(OBJSUFF) \ - $(GENDIR)/wizard.$(OBJSUFF) - -COMMONOBJS = \ - $(COMMDIR)/appcmn.$(OBJSUFF) \ - $(COMMDIR)/choiccmn.$(OBJSUFF) \ - $(COMMDIR)/clntdata.$(OBJSUFF) \ - $(COMMDIR)/clipcmn.$(OBJSUFF) \ - $(COMMDIR)/cmdline.$(OBJSUFF) \ - $(COMMDIR)/cmdproc.$(OBJSUFF) \ - $(COMMDIR)/cmndata.$(OBJSUFF) \ - $(COMMDIR)/config.$(OBJSUFF) \ - $(COMMDIR)/containr.$(OBJSUFF) \ - $(COMMDIR)/cshelp.$(OBJSUFF) \ - $(COMMDIR)/ctrlcmn.$(OBJSUFF) \ - $(COMMDIR)/ctrlsub.$(OBJSUFF) \ - $(COMMDIR)/datetime.$(OBJSUFF) \ - $(COMMDIR)/datstrm.$(OBJSUFF) \ - $(COMMDIR)/dcbase.$(OBJSUFF) \ - $(COMMDIR)/dircmn.$(OBJSUFF) \ - $(COMMDIR)/dlgcmn.$(OBJSUFF) \ - $(COMMDIR)/dobjcmn.$(OBJSUFF) \ - $(COMMDIR)/docview.$(OBJSUFF) \ - $(COMMDIR)/dynarray.$(OBJSUFF) \ - $(COMMDIR)/dynlib.$(OBJSUFF) \ - $(COMMDIR)/effects.$(OBJSUFF) \ - $(COMMDIR)/encconv.$(OBJSUFF) \ - $(COMMDIR)/event.$(OBJSUFF) \ - $(COMMDIR)/extended.$(OBJSUFF) \ - $(COMMDIR)/ffile.$(OBJSUFF) \ - $(COMMDIR)/file.$(OBJSUFF) \ - $(COMMDIR)/fileconf.$(OBJSUFF) \ - $(COMMDIR)/filefn.$(OBJSUFF) \ - $(COMMDIR)/filename.$(OBJSUFF) \ - $(COMMDIR)/filesys.$(OBJSUFF) \ - $(COMMDIR)/fontcmn.$(OBJSUFF) \ - $(COMMDIR)/fontmap.$(OBJSUFF) \ - $(COMMDIR)/framecmn.$(OBJSUFF) \ - $(COMMDIR)/gaugecmn.$(OBJSUFF) \ - $(COMMDIR)/gdicmn.$(OBJSUFF) \ - $(COMMDIR)/geometry.$(OBJSUFF) \ - $(COMMDIR)/gifdecod.$(OBJSUFF) \ - $(COMMDIR)/hash.$(OBJSUFF) \ - $(COMMDIR)/helpbase.$(OBJSUFF) \ - $(COMMDIR)/imagall.$(OBJSUFF) \ - $(COMMDIR)/imagbmp.$(OBJSUFF) \ - $(COMMDIR)/image.$(OBJSUFF) \ - $(COMMDIR)/imaggif.$(OBJSUFF) \ - $(COMMDIR)/imagjpeg.$(OBJSUFF) \ - $(COMMDIR)/imagpcx.$(OBJSUFF) \ - $(COMMDIR)/imagpng.$(OBJSUFF) \ - $(COMMDIR)/imagpnm.$(OBJSUFF) \ - $(COMMDIR)/imagtiff.$(OBJSUFF) \ - $(COMMDIR)/imagxpm.$(OBJSUFF) \ - $(COMMDIR)/intl.$(OBJSUFF) \ - $(COMMDIR)/ipcbase.$(OBJSUFF) \ - $(COMMDIR)/layout.$(OBJSUFF) \ - $(COMMDIR)/lboxcmn.$(OBJSUFF) \ - $(COMMDIR)/list.$(OBJSUFF) \ - $(COMMDIR)/log.$(OBJSUFF) \ - $(COMMDIR)/longlong.$(OBJSUFF) \ - $(COMMDIR)/matrix.$(OBJSUFF) \ - $(COMMDIR)/memory.$(OBJSUFF) \ - $(COMMDIR)/menucmn.$(OBJSUFF) \ - $(COMMDIR)/mimecmn.$(OBJSUFF) \ - $(COMMDIR)/module.$(OBJSUFF) \ - $(COMMDIR)/mstream.$(OBJSUFF) \ - $(COMMDIR)/nbkbase.$(OBJSUFF) \ - $(COMMDIR)/object.$(OBJSUFF) \ - $(COMMDIR)/paper.$(OBJSUFF) \ - $(COMMDIR)/popupcmn.$(OBJSUFF) \ - $(COMMDIR)/prntbase.$(OBJSUFF) \ - $(COMMDIR)/process.$(OBJSUFF) \ - $(COMMDIR)/quantize.$(OBJSUFF) \ - $(COMMDIR)/radiocmn.$(OBJSUFF) \ - $(COMMDIR)/sizer.$(OBJSUFF) \ - $(COMMDIR)/statbar.$(OBJSUFF) \ - $(COMMDIR)/strconv.$(OBJSUFF) \ - $(COMMDIR)/stream.$(OBJSUFF) \ - $(COMMDIR)/string.$(OBJSUFF) \ - $(COMMDIR)/sysopt.$(OBJSUFF) \ - $(COMMDIR)/tbarbase.$(OBJSUFF) \ - $(COMMDIR)/textbuf.$(OBJSUFF) \ - $(COMMDIR)/textcmn.$(OBJSUFF) \ - $(COMMDIR)/textfile.$(OBJSUFF) \ - $(COMMDIR)/timercmn.$(OBJSUFF) \ - $(COMMDIR)/tokenzr.$(OBJSUFF) \ - $(COMMDIR)/toplvcmn.$(OBJSUFF) \ - $(COMMDIR)/treebase.$(OBJSUFF) \ - $(COMMDIR)/txtstrm.$(OBJSUFF) \ - $(COMMDIR)/utilscmn.$(OBJSUFF) \ - $(UNIXDIR)/utilsunx.$(OBJSUFF) \ - $(COMMDIR)/valgen.$(OBJSUFF) \ - $(COMMDIR)/validate.$(OBJSUFF) \ - $(COMMDIR)/valtext.$(OBJSUFF) \ - $(COMMDIR)/variant.$(OBJSUFF) \ - $(COMMDIR)/wfstream.$(OBJSUFF) \ - $(COMMDIR)/wincmn.$(OBJSUFF) \ - $(COMMDIR)/wxchar.$(OBJSUFF) \ - $(COMMDIR)/xpmdecod.$(OBJSUFF) - -HTMLOBJS = \ - $(HTMLDIR)/helpctrl.$(OBJSUFF) \ - $(HTMLDIR)/helpdata.$(OBJSUFF) \ - $(HTMLDIR)/helpfrm.$(OBJSUFF) \ - $(HTMLDIR)/htmlcell.$(OBJSUFF) \ - $(HTMLDIR)/htmlfilt.$(OBJSUFF) \ - $(HTMLDIR)/htmlpars.$(OBJSUFF) \ - $(HTMLDIR)/htmltag.$(OBJSUFF) \ - $(HTMLDIR)/htmlwin.$(OBJSUFF) \ - $(HTMLDIR)/htmprint.$(OBJSUFF) \ - $(HTMLDIR)/m_dflist.$(OBJSUFF) \ - $(HTMLDIR)/m_fonts.$(OBJSUFF) \ - $(HTMLDIR)/m_hline.$(OBJSUFF) \ - $(HTMLDIR)/m_image.$(OBJSUFF) \ - $(HTMLDIR)/m_layout.$(OBJSUFF) \ - $(HTMLDIR)/m_links.$(OBJSUFF) \ - $(HTMLDIR)/m_list.$(OBJSUFF) \ - $(HTMLDIR)/m_meta.$(OBJSUFF) \ - $(HTMLDIR)/m_pre.$(OBJSUFF) \ - $(HTMLDIR)/m_tables.$(OBJSUFF) \ - $(HTMLDIR)/winpars.$(OBJSUFF) - -MSWOBJS = \ - $(MICROWINDIR)/app.$(OBJSUFF) \ - $(MICROWINDIR)/bitmap.$(OBJSUFF) \ - $(MICROWINDIR)/brush.$(OBJSUFF) \ - $(MICROWINDIR)/caret.$(OBJSUFF) \ - $(MICROWINDIR)/clipbrd.$(OBJSUFF) \ - $(MICROWINDIR)/colour.$(OBJSUFF) \ - $(MICROWINDIR)/cursor.$(OBJSUFF) \ - $(MICROWINDIR)/data.$(OBJSUFF) \ - $(MICROWINDIR)/dc.$(OBJSUFF) \ - $(MICROWINDIR)/dcclient.$(OBJSUFF) \ - $(MICROWINDIR)/dcmemory.$(OBJSUFF) \ - $(MICROWINDIR)/dcprint.$(OBJSUFF) \ - $(MICROWINDIR)/dcscreen.$(OBJSUFF) \ - $(MICROWINDIR)/dde.$(OBJSUFF) \ - $(MICROWINDIR)/dialog.$(OBJSUFF) \ - $(MICROWINDIR)/dialup.$(OBJSUFF) \ - $(UNIXDIR)/dir.$(OBJSUFF) \ - $(MICROWINDIR)/evtloop.$(OBJSUFF) \ - $(MICROWINDIR)/font.$(OBJSUFF) \ - $(MICROWINDIR)/fontenum.$(OBJSUFF) \ - $(MICROWINDIR)/fontutil.$(OBJSUFF) \ - $(MICROWINDIR)/gdiimage.$(OBJSUFF) \ - $(MICROWINDIR)/gdiobj.$(OBJSUFF) \ - $(MICROWINDIR)/icon.$(OBJSUFF) \ - $(MICROWINDIR)/main.$(OBJSUFF) \ - $(MICROWINDIR)/microwin.$(OBJSUFF) \ - $(MICROWINDIR)/palette.$(OBJSUFF) \ - $(MICROWINDIR)/pen.$(OBJSUFF) \ - $(MICROWINDIR)/region.$(OBJSUFF) \ - $(MICROWINDIR)/settings.$(OBJSUFF) \ - $(MICROWINDIR)/snglinst.$(OBJSUFF) \ - $(MICROWINDIR)/thread.$(OBJSUFF) \ - $(MICROWINDIR)/timer.$(OBJSUFF) \ - $(MICROWINDIR)/toplevel.$(OBJSUFF) \ - $(MICROWINDIR)/utils.$(OBJSUFF) \ - $(MICROWINDIR)/window.$(OBJSUFF) \ - $(OLEDIR)/dataobj.$(OBJSUFF) - -UNIVOBJS_TODO = $(UNIVDIR)/choice.$(OBJSUFF) \ - $(UNIVDIR)/colordlg.$(OBJSUFF) \ - - -UNIVOBJS = \ - $(UNIVDIR)/bmpbuttn.$(OBJSUFF) \ - $(UNIVDIR)/button.$(OBJSUFF) \ - $(UNIVDIR)/checkbox.$(OBJSUFF) \ - $(UNIVDIR)/checklst.$(OBJSUFF) \ - $(UNIVDIR)/colschem.$(OBJSUFF) \ - $(UNIVDIR)/combobox.$(OBJSUFF) \ - $(UNIVDIR)/control.$(OBJSUFF) \ - $(UNIVDIR)/framuniv.$(OBJSUFF) \ - $(UNIVDIR)/gauge.$(OBJSUFF) \ - $(UNIVDIR)/inphand.$(OBJSUFF) \ - $(UNIVDIR)/inpcons.$(OBJSUFF) \ - $(UNIVDIR)/listbox.$(OBJSUFF) \ - $(UNIVDIR)/menu.$(OBJSUFF) \ - $(UNIVDIR)/notebook.$(OBJSUFF) \ - $(UNIVDIR)/radiobox.$(OBJSUFF) \ - $(UNIVDIR)/radiobut.$(OBJSUFF) \ - $(UNIVDIR)/renderer.$(OBJSUFF) \ - $(UNIVDIR)/scrarrow.$(OBJSUFF) \ - $(UNIVDIR)/scrolbar.$(OBJSUFF) \ - $(UNIVDIR)/scrthumb.$(OBJSUFF) \ - $(UNIVDIR)/slider.$(OBJSUFF) \ - $(UNIVDIR)/spinbutt.$(OBJSUFF) \ - $(UNIVDIR)/statbmp.$(OBJSUFF) \ - $(UNIVDIR)/statbox.$(OBJSUFF) \ - $(UNIVDIR)/statline.$(OBJSUFF) \ - $(UNIVDIR)/stattext.$(OBJSUFF) \ - $(UNIVDIR)/statusbr.$(OBJSUFF) \ - $(UNIVDIR)/textctrl.$(OBJSUFF) \ - $(UNIVDIR)/theme.$(OBJSUFF) \ - $(UNIVDIR)/topluniv.$(OBJSUFF) \ - $(UNIVDIR)/winuniv.$(OBJSUFF) \ - $(UNIVDIR)/themes/gtk.$(OBJSUFF) \ - $(UNIVDIR)/themes/win32.$(OBJSUFF) - -include $(CONFIG) - -######################## Additional Flags section ############################ - -# Directories list for header files -INCLUDEDIRS += -I$(WXDIR)/include -# Defines for preprocessor -DEFINES += -DMWIN -D__WXMSW__ -D__WXMICROWIN__ -D__WXUNIVERSAL__ -D__WIN32__ -D__WIN95__ -DHAVE_BOOL -DMICROWIN_TODO=1 -D__UNIX__ -DHAVE_NANOSLEEP -DMICROWIN_NOCONTROLS -D__WXDEBUG__ -DwxSIZE_T_IS_UINT -DWXWIN_OS_DESCRIPTION="\"MicroWindows\"" - -# Compilation flags for C files OTHER than include directories -CFLAGS += -# Preprocessor flags OTHER than defines -CPPFLAGS += -# Linking flags -LDFLAGS += - -############################# targets section ################################ - -# If you want to create a library with the objects files, define the name here -LIBNAME = - -# If we put it below OBJS=, Makefile.rules includes .depend -# and it continually looks for .c files to satisfy .o.cpp -# dependency. What's going on there? -include $(TOP)/Makefile.rules - -# List of objects to compile -OBJS = $(COMMONOBJS) $(MSWOBJS) $(GENERICOBJS) $(UNIVOBJS) - -all: $(WXLIB) - -######################### Makefile.rules section ############################# - - - -######################## Tools targets section ############################### - -#ntest: $(OBJS) $(NANOXCLIENTLIBS) $(TOP)/config -# $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@ $(NANOXCLIENTLIBS) - -$(WXLIB): $(OBJS) - ar $(AROPTIONS) $@ $(OBJS) - $(RANLIB) $@ - -#.SUFFIXES: .cpp .cxx .c - -#.c.o: -# $(CC) -c $(CFLAGS) $(CFLAGS) -o $@ $*.c - -.cxx.o: - $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $*.cxx - -.cpp.o: - $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $*.cpp - -#$(COMMDIR)/appcmn.o: $(COMMDIR)/appcmn.cpp -# $(CC) -c $(CPPFLAGS) -o $@ $*.cpp - -#appcmn.o: $(COMMDIR)/appcmn.cpp -# $(CC) $(CPPFLAGS) -c -o $@ $< - -cleanwx: - -$(RM) *.o - -$(RM) *.bak - -$(RM) core - -$(RM) ole/*.o - -$(RM) ../common/y_tab.c - -$(RM) ../common/lex_yy.c - -$(RM) ../common/*.o - -$(RM) ../common/*.bak - -$(RM) ../generic/*.o - -$(RM) ../generic/*.bak - -$(RM) ../univ/*.o - -$(RM) ../univ/*.bak - -$(RM) ../univ/themes/*.o - -$(RM) ../univ/themes/*.bak - -$(RM) ../unix/*.o - -$(RM) ../unix/*.bak - -$(RM) ../html/*.o - -$(RM) ../zlib/*.o - -$(RM) ../zlib/*.bak - -$(RM) ../png/*.o - -$(RM) ../png/*.bak - -$(RM) ../jpeg/*.o - -$(RM) ../jpeg/*.bak - -$(RM) ../tiff/*.o - -$(RM) ../tiff/*.bak +############################################################################## +# Microwindows template Makefile +# Copyright (c) 2000 Martin Jolicoeur, Greg Haerr +# Licence: wxWindows Licence +############################################################################## + +TOP=$(MICROWINDOWS) +ifeq "$(MICROWINDOWS)" "" +TOP=/home/julians/local/microwindows/microwindows-0.89pre8/src +endif + +CONFIG = $(TOP)/config +WXDIR = ../.. +OBJSUFF = o +SRCSUFF = cpp +WXLIB=$(WXDIR)/lib/libwx.a +AROPTIONS = ruv +RANLIB = ranlib +RM = rm -f + +GENDIR = $(WXDIR)/src/generic +COMMDIR = $(WXDIR)/src/common +HTMLDIR = $(WXDIR)/src/html +ZLIBDIR = $(WXDIR)/src/zlib +PNGDIR = $(WXDIR)/src/png +JPEGDIR = $(WXDIR)/src/jpeg +TIFFDIR = $(WXDIR)/src/tiff +OLEDIR = $(WXDIR)/src/msw/ole +MICROWINDIR = $(WXDIR)/src/msw +UNIXDIR = $(WXDIR)/src/unix +UNIVDIR = $(WXDIR)/src/univ + +ZLIBLIB = $(WXDIR)/lib/libzlib.a +PNGLIB = $(WXDIR)/lib/libpng.a +JPEGLIB = $(WXDIR)/lib/libjpeg.a +TIFFLIB = $(WXDIR)/lib/libtiff.a + +GENERICOBJS = \ + $(GENDIR)/accel.$(OBJSUFF) \ + $(GENDIR)/busyinfo.$(OBJSUFF) \ + $(GENDIR)/calctrl.$(OBJSUFF) \ + $(GENDIR)/choicdgg.$(OBJSUFF) \ + $(GENDIR)/colrdlgg.$(OBJSUFF) \ + $(GENDIR)/dirctrlg.$(OBJSUFF) \ + $(GENDIR)/dragimgg.$(OBJSUFF) \ + $(GENDIR)/fontdlgg.$(OBJSUFF) \ + $(GENDIR)/grid.$(OBJSUFF) \ + $(GENDIR)/gridctrl.$(OBJSUFF) \ + $(GENDIR)/gridsel.$(OBJSUFF) \ + $(GENDIR)/imaglist.$(OBJSUFF) \ + $(GENDIR)/laywin.$(OBJSUFF) \ + $(GENDIR)/listctrl.$(OBJSUFF) \ + $(GENDIR)/logg.$(OBJSUFF) \ + $(GENDIR)/msgdlgg.$(OBJSUFF) \ + $(GENDIR)/numdlgg.$(OBJSUFF) \ + $(GENDIR)/panelg.$(OBJSUFF) \ + $(GENDIR)/progdlgg.$(OBJSUFF) \ + $(GENDIR)/sashwin.$(OBJSUFF) \ + $(GENDIR)/scrlwing.$(OBJSUFF) \ + $(GENDIR)/spinctlg.$(OBJSUFF) \ + $(GENDIR)/splash.$(OBJSUFF) \ + $(GENDIR)/splitter.$(OBJSUFF) \ + $(GENDIR)/tabg.$(OBJSUFF) \ + $(GENDIR)/tbarsmpl.$(OBJSUFF) \ + $(GENDIR)/textdlgg.$(OBJSUFF) \ + $(GENDIR)/tipdlg.$(OBJSUFF) \ + $(GENDIR)/tipwin.$(OBJSUFF) \ + $(GENDIR)/treectlg.$(OBJSUFF) \ + $(GENDIR)/treelay.$(OBJSUFF) \ + $(GENDIR)/wizard.$(OBJSUFF) + +COMMONOBJS = \ + $(COMMDIR)/appcmn.$(OBJSUFF) \ + $(COMMDIR)/choiccmn.$(OBJSUFF) \ + $(COMMDIR)/clntdata.$(OBJSUFF) \ + $(COMMDIR)/clipcmn.$(OBJSUFF) \ + $(COMMDIR)/cmdline.$(OBJSUFF) \ + $(COMMDIR)/cmdproc.$(OBJSUFF) \ + $(COMMDIR)/cmndata.$(OBJSUFF) \ + $(COMMDIR)/config.$(OBJSUFF) \ + $(COMMDIR)/containr.$(OBJSUFF) \ + $(COMMDIR)/cshelp.$(OBJSUFF) \ + $(COMMDIR)/ctrlcmn.$(OBJSUFF) \ + $(COMMDIR)/ctrlsub.$(OBJSUFF) \ + $(COMMDIR)/datetime.$(OBJSUFF) \ + $(COMMDIR)/datstrm.$(OBJSUFF) \ + $(COMMDIR)/dcbase.$(OBJSUFF) \ + $(COMMDIR)/dircmn.$(OBJSUFF) \ + $(COMMDIR)/dlgcmn.$(OBJSUFF) \ + $(COMMDIR)/dobjcmn.$(OBJSUFF) \ + $(COMMDIR)/docview.$(OBJSUFF) \ + $(COMMDIR)/dynarray.$(OBJSUFF) \ + $(COMMDIR)/dynlib.$(OBJSUFF) \ + $(COMMDIR)/effects.$(OBJSUFF) \ + $(COMMDIR)/encconv.$(OBJSUFF) \ + $(COMMDIR)/event.$(OBJSUFF) \ + $(COMMDIR)/extended.$(OBJSUFF) \ + $(COMMDIR)/ffile.$(OBJSUFF) \ + $(COMMDIR)/file.$(OBJSUFF) \ + $(COMMDIR)/fileconf.$(OBJSUFF) \ + $(COMMDIR)/filefn.$(OBJSUFF) \ + $(COMMDIR)/filename.$(OBJSUFF) \ + $(COMMDIR)/filesys.$(OBJSUFF) \ + $(COMMDIR)/fontcmn.$(OBJSUFF) \ + $(COMMDIR)/fontmap.$(OBJSUFF) \ + $(COMMDIR)/framecmn.$(OBJSUFF) \ + $(COMMDIR)/gaugecmn.$(OBJSUFF) \ + $(COMMDIR)/gdicmn.$(OBJSUFF) \ + $(COMMDIR)/geometry.$(OBJSUFF) \ + $(COMMDIR)/gifdecod.$(OBJSUFF) \ + $(COMMDIR)/hash.$(OBJSUFF) \ + $(COMMDIR)/helpbase.$(OBJSUFF) \ + $(COMMDIR)/imagall.$(OBJSUFF) \ + $(COMMDIR)/imagbmp.$(OBJSUFF) \ + $(COMMDIR)/image.$(OBJSUFF) \ + $(COMMDIR)/imaggif.$(OBJSUFF) \ + $(COMMDIR)/imagjpeg.$(OBJSUFF) \ + $(COMMDIR)/imagpcx.$(OBJSUFF) \ + $(COMMDIR)/imagpng.$(OBJSUFF) \ + $(COMMDIR)/imagpnm.$(OBJSUFF) \ + $(COMMDIR)/imagtiff.$(OBJSUFF) \ + $(COMMDIR)/imagxpm.$(OBJSUFF) \ + $(COMMDIR)/intl.$(OBJSUFF) \ + $(COMMDIR)/ipcbase.$(OBJSUFF) \ + $(COMMDIR)/layout.$(OBJSUFF) \ + $(COMMDIR)/lboxcmn.$(OBJSUFF) \ + $(COMMDIR)/list.$(OBJSUFF) \ + $(COMMDIR)/log.$(OBJSUFF) \ + $(COMMDIR)/longlong.$(OBJSUFF) \ + $(COMMDIR)/matrix.$(OBJSUFF) \ + $(COMMDIR)/memory.$(OBJSUFF) \ + $(COMMDIR)/menucmn.$(OBJSUFF) \ + $(COMMDIR)/mimecmn.$(OBJSUFF) \ + $(COMMDIR)/module.$(OBJSUFF) \ + $(COMMDIR)/mstream.$(OBJSUFF) \ + $(COMMDIR)/nbkbase.$(OBJSUFF) \ + $(COMMDIR)/object.$(OBJSUFF) \ + $(COMMDIR)/paper.$(OBJSUFF) \ + $(COMMDIR)/popupcmn.$(OBJSUFF) \ + $(COMMDIR)/prntbase.$(OBJSUFF) \ + $(COMMDIR)/process.$(OBJSUFF) \ + $(COMMDIR)/quantize.$(OBJSUFF) \ + $(COMMDIR)/radiocmn.$(OBJSUFF) \ + $(COMMDIR)/sizer.$(OBJSUFF) \ + $(COMMDIR)/statbar.$(OBJSUFF) \ + $(COMMDIR)/strconv.$(OBJSUFF) \ + $(COMMDIR)/stream.$(OBJSUFF) \ + $(COMMDIR)/string.$(OBJSUFF) \ + $(COMMDIR)/sysopt.$(OBJSUFF) \ + $(COMMDIR)/tbarbase.$(OBJSUFF) \ + $(COMMDIR)/textbuf.$(OBJSUFF) \ + $(COMMDIR)/textcmn.$(OBJSUFF) \ + $(COMMDIR)/textfile.$(OBJSUFF) \ + $(COMMDIR)/timercmn.$(OBJSUFF) \ + $(COMMDIR)/tokenzr.$(OBJSUFF) \ + $(COMMDIR)/toplvcmn.$(OBJSUFF) \ + $(COMMDIR)/treebase.$(OBJSUFF) \ + $(COMMDIR)/txtstrm.$(OBJSUFF) \ + $(COMMDIR)/utilscmn.$(OBJSUFF) \ + $(UNIXDIR)/utilsunx.$(OBJSUFF) \ + $(COMMDIR)/valgen.$(OBJSUFF) \ + $(COMMDIR)/validate.$(OBJSUFF) \ + $(COMMDIR)/valtext.$(OBJSUFF) \ + $(COMMDIR)/variant.$(OBJSUFF) \ + $(COMMDIR)/wfstream.$(OBJSUFF) \ + $(COMMDIR)/wincmn.$(OBJSUFF) \ + $(COMMDIR)/wxchar.$(OBJSUFF) \ + $(COMMDIR)/xpmdecod.$(OBJSUFF) + +HTMLOBJS = \ + $(HTMLDIR)/helpctrl.$(OBJSUFF) \ + $(HTMLDIR)/helpdata.$(OBJSUFF) \ + $(HTMLDIR)/helpfrm.$(OBJSUFF) \ + $(HTMLDIR)/htmlcell.$(OBJSUFF) \ + $(HTMLDIR)/htmlfilt.$(OBJSUFF) \ + $(HTMLDIR)/htmlpars.$(OBJSUFF) \ + $(HTMLDIR)/htmltag.$(OBJSUFF) \ + $(HTMLDIR)/htmlwin.$(OBJSUFF) \ + $(HTMLDIR)/htmprint.$(OBJSUFF) \ + $(HTMLDIR)/m_dflist.$(OBJSUFF) \ + $(HTMLDIR)/m_fonts.$(OBJSUFF) \ + $(HTMLDIR)/m_hline.$(OBJSUFF) \ + $(HTMLDIR)/m_image.$(OBJSUFF) \ + $(HTMLDIR)/m_layout.$(OBJSUFF) \ + $(HTMLDIR)/m_links.$(OBJSUFF) \ + $(HTMLDIR)/m_list.$(OBJSUFF) \ + $(HTMLDIR)/m_meta.$(OBJSUFF) \ + $(HTMLDIR)/m_pre.$(OBJSUFF) \ + $(HTMLDIR)/m_tables.$(OBJSUFF) \ + $(HTMLDIR)/winpars.$(OBJSUFF) + +MSWOBJS = \ + $(MICROWINDIR)/app.$(OBJSUFF) \ + $(MICROWINDIR)/bitmap.$(OBJSUFF) \ + $(MICROWINDIR)/brush.$(OBJSUFF) \ + $(MICROWINDIR)/caret.$(OBJSUFF) \ + $(MICROWINDIR)/clipbrd.$(OBJSUFF) \ + $(MICROWINDIR)/colour.$(OBJSUFF) \ + $(MICROWINDIR)/cursor.$(OBJSUFF) \ + $(MICROWINDIR)/data.$(OBJSUFF) \ + $(MICROWINDIR)/dc.$(OBJSUFF) \ + $(MICROWINDIR)/dcclient.$(OBJSUFF) \ + $(MICROWINDIR)/dcmemory.$(OBJSUFF) \ + $(MICROWINDIR)/dcprint.$(OBJSUFF) \ + $(MICROWINDIR)/dcscreen.$(OBJSUFF) \ + $(MICROWINDIR)/dde.$(OBJSUFF) \ + $(MICROWINDIR)/dialog.$(OBJSUFF) \ + $(MICROWINDIR)/dialup.$(OBJSUFF) \ + $(UNIXDIR)/dir.$(OBJSUFF) \ + $(MICROWINDIR)/evtloop.$(OBJSUFF) \ + $(MICROWINDIR)/font.$(OBJSUFF) \ + $(MICROWINDIR)/fontenum.$(OBJSUFF) \ + $(MICROWINDIR)/fontutil.$(OBJSUFF) \ + $(MICROWINDIR)/gdiimage.$(OBJSUFF) \ + $(MICROWINDIR)/gdiobj.$(OBJSUFF) \ + $(MICROWINDIR)/icon.$(OBJSUFF) \ + $(MICROWINDIR)/main.$(OBJSUFF) \ + $(MICROWINDIR)/microwin.$(OBJSUFF) \ + $(MICROWINDIR)/palette.$(OBJSUFF) \ + $(MICROWINDIR)/pen.$(OBJSUFF) \ + $(MICROWINDIR)/region.$(OBJSUFF) \ + $(MICROWINDIR)/settings.$(OBJSUFF) \ + $(MICROWINDIR)/snglinst.$(OBJSUFF) \ + $(MICROWINDIR)/thread.$(OBJSUFF) \ + $(MICROWINDIR)/timer.$(OBJSUFF) \ + $(MICROWINDIR)/toplevel.$(OBJSUFF) \ + $(MICROWINDIR)/utils.$(OBJSUFF) \ + $(MICROWINDIR)/window.$(OBJSUFF) \ + $(OLEDIR)/dataobj.$(OBJSUFF) + +UNIVOBJS_TODO = $(UNIVDIR)/choice.$(OBJSUFF) \ + $(UNIVDIR)/colordlg.$(OBJSUFF) \ + + +UNIVOBJS = \ + $(UNIVDIR)/bmpbuttn.$(OBJSUFF) \ + $(UNIVDIR)/button.$(OBJSUFF) \ + $(UNIVDIR)/checkbox.$(OBJSUFF) \ + $(UNIVDIR)/checklst.$(OBJSUFF) \ + $(UNIVDIR)/colschem.$(OBJSUFF) \ + $(UNIVDIR)/combobox.$(OBJSUFF) \ + $(UNIVDIR)/control.$(OBJSUFF) \ + $(UNIVDIR)/framuniv.$(OBJSUFF) \ + $(UNIVDIR)/gauge.$(OBJSUFF) \ + $(UNIVDIR)/inphand.$(OBJSUFF) \ + $(UNIVDIR)/inpcons.$(OBJSUFF) \ + $(UNIVDIR)/listbox.$(OBJSUFF) \ + $(UNIVDIR)/menu.$(OBJSUFF) \ + $(UNIVDIR)/notebook.$(OBJSUFF) \ + $(UNIVDIR)/radiobox.$(OBJSUFF) \ + $(UNIVDIR)/radiobut.$(OBJSUFF) \ + $(UNIVDIR)/renderer.$(OBJSUFF) \ + $(UNIVDIR)/scrarrow.$(OBJSUFF) \ + $(UNIVDIR)/scrolbar.$(OBJSUFF) \ + $(UNIVDIR)/scrthumb.$(OBJSUFF) \ + $(UNIVDIR)/slider.$(OBJSUFF) \ + $(UNIVDIR)/spinbutt.$(OBJSUFF) \ + $(UNIVDIR)/statbmp.$(OBJSUFF) \ + $(UNIVDIR)/statbox.$(OBJSUFF) \ + $(UNIVDIR)/statline.$(OBJSUFF) \ + $(UNIVDIR)/stattext.$(OBJSUFF) \ + $(UNIVDIR)/statusbr.$(OBJSUFF) \ + $(UNIVDIR)/textctrl.$(OBJSUFF) \ + $(UNIVDIR)/theme.$(OBJSUFF) \ + $(UNIVDIR)/topluniv.$(OBJSUFF) \ + $(UNIVDIR)/winuniv.$(OBJSUFF) \ + $(UNIVDIR)/themes/gtk.$(OBJSUFF) \ + $(UNIVDIR)/themes/win32.$(OBJSUFF) + +include $(CONFIG) + +######################## Additional Flags section ############################ + +# Directories list for header files +INCLUDEDIRS += -I$(WXDIR)/include +# Defines for preprocessor +DEFINES += -DMWIN -D__WXMSW__ -D__WXMICROWIN__ -D__WXUNIVERSAL__ -D__WIN32__ -D__WIN95__ -DHAVE_BOOL -DMICROWIN_TODO=1 -D__UNIX__ -DHAVE_NANOSLEEP -DMICROWIN_NOCONTROLS -D__WXDEBUG__ -DwxSIZE_T_IS_UINT -DWXWIN_OS_DESCRIPTION="\"MicroWindows\"" + +# Compilation flags for C files OTHER than include directories +CFLAGS += +# Preprocessor flags OTHER than defines +CPPFLAGS += +# Linking flags +LDFLAGS += + +############################# targets section ################################ + +# If you want to create a library with the objects files, define the name here +LIBNAME = + +# If we put it below OBJS=, Makefile.rules includes .depend +# and it continually looks for .c files to satisfy .o.cpp +# dependency. What's going on there? +include $(TOP)/Makefile.rules + +# List of objects to compile +OBJS = $(COMMONOBJS) $(MSWOBJS) $(GENERICOBJS) $(UNIVOBJS) + +all: $(WXLIB) + +######################### Makefile.rules section ############################# + + + +######################## Tools targets section ############################### + +#ntest: $(OBJS) $(NANOXCLIENTLIBS) $(TOP)/config +# $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@ $(NANOXCLIENTLIBS) + +$(WXLIB): $(OBJS) + ar $(AROPTIONS) $@ $(OBJS) + $(RANLIB) $@ + +#.SUFFIXES: .cpp .cxx .c + +#.c.o: +# $(CC) -c $(CFLAGS) $(CFLAGS) -o $@ $*.c + +.cxx.o: + $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $*.cxx + +.cpp.o: + $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $*.cpp + +#$(COMMDIR)/appcmn.o: $(COMMDIR)/appcmn.cpp +# $(CC) -c $(CPPFLAGS) -o $@ $*.cpp + +#appcmn.o: $(COMMDIR)/appcmn.cpp +# $(CC) $(CPPFLAGS) -c -o $@ $< + +cleanwx: + -$(RM) *.o + -$(RM) *.bak + -$(RM) core + -$(RM) ole/*.o + -$(RM) ../common/y_tab.c + -$(RM) ../common/lex_yy.c + -$(RM) ../common/*.o + -$(RM) ../common/*.bak + -$(RM) ../generic/*.o + -$(RM) ../generic/*.bak + -$(RM) ../univ/*.o + -$(RM) ../univ/*.bak + -$(RM) ../univ/themes/*.o + -$(RM) ../univ/themes/*.bak + -$(RM) ../unix/*.o + -$(RM) ../unix/*.bak + -$(RM) ../html/*.o + -$(RM) ../zlib/*.o + -$(RM) ../zlib/*.bak + -$(RM) ../png/*.o + -$(RM) ../png/*.bak + -$(RM) ../jpeg/*.o + -$(RM) ../jpeg/*.bak + -$(RM) ../tiff/*.o + -$(RM) ../tiff/*.bak diff --git a/3rdparty/wxWidgets/src/msw/makefile.sl b/3rdparty/wxWidgets/src/msw/makefile.sl index 7ccfdec179..296f76b193 100644 --- a/3rdparty/wxWidgets/src/msw/makefile.sl +++ b/3rdparty/wxWidgets/src/msw/makefile.sl @@ -1,914 +1,914 @@ -# -# File: makefile.wat -# Author: Julian Smart -# Created: 1998 -# -# Makefile : Builds wxWindows library for Salford C++, WIN32 - -include ..\makesl.env - -LIBTARGET = $(WXLIB)\wx.lib -EXTRATARGETS = # xpm png zlib -EXTRATARGETSCLEAN = # clean_xpm clean_png clean_zlib -GENDIR=$(WXDIR)\src\generic -COMMDIR=$(WXDIR)\src\common -XPMDIR=$(WXDIR)\src\xpm -OLEDIR=ole -MSWDIR=$(WXDIR)\src\msw - -GENERICOBJS= choicdgg.obj \ - dirdlgg.obj \ - gridg.obj \ - laywin.obj \ - panelg.obj \ - prop.obj \ - progdlgg.obj \ - propform.obj \ - proplist.obj \ - sashwin.obj \ - scrolwin.obj \ - splitter.obj \ - statusbr.obj \ - tabg.obj \ - textdlgg.obj - -# These are generic things that don't need to be compiled on MSW, -# but sometimes it's useful to do so for testing purposes. -NONESSENTIALOBJS= printps.obj \ - prntdlgg.obj \ - msgdlgg.obj \ - colrdlgg.obj \ - fontdlgg.obj - -COMMONOBJS = cmndata.obj \ - config.obj \ - dcbase.obj \ - docview.obj \ - docmdi.obj \ - dynarray.obj \ - dynlib.obj \ - event.obj \ - file.obj \ - filefn.obj \ - fileconf.obj \ - framecmn.obj \ - gdicmn.obj \ - image.obj \ - intl.obj \ - ipcbase.obj \ - helpbase.obj \ - layout.obj \ - log.obj \ - memory.obj \ - module.obj \ - object.obj \ - prntbase.obj \ - resource.obj \ - tbarbase.obj \ - tbarsmpl.obj \ - textfile.obj \ - timercmn.obj \ - utilscmn.obj \ - validate.obj \ - valgen.obj \ - valtext.obj \ - date.obj \ - hash.obj \ - list.obj \ - paper.obj \ - string.obj \ - socket.obj \ - sckint.obj \ - sckaddr.obj \ - sckfile.obj \ - sckipc.obj \ - sckstrm.obj \ - url.obj \ - http.obj \ - protocol.obj \ - time.obj \ - tokenzr.obj \ - wxexpr.obj \ - y_tab.obj \ - extended.obj \ - process.obj \ - wfstream.obj \ - mstream.obj \ - zstream.obj \ - stream.obj \ - datstrm.obj \ - objstrm.obj \ - variant.obj \ - wincmn.obj \ - wxchar.obj - -# Can't compile these yet under Salford C++ -# mimetype.obj \ -# db.obj \ -# dbtable.obj \ - -MSWOBJS = \ - accel.obj \ - app.obj \ - bitmap.obj \ - bmpbuttn.obj \ - brush.obj \ - button.obj \ - checkbox.obj \ - checklst.obj \ - caret.obj \ - choice.obj \ - clipbrd.obj \ - colordlg.obj \ - colour.obj \ - combobox.obj \ - control.obj \ - curico.obj \ - cursor.obj \ - data.obj \ - dc.obj \ - dcmemory.obj \ - dcclient.obj \ - dcprint.obj \ - dcscreen.obj \ - dde.obj \ - dialog.obj \ - dib.obj \ - dibutils.obj \ - filedlg.obj \ - font.obj \ - fontdlg.obj \ - frame.obj \ - gauge95.obj \ - gdiobj.obj \ - helpwin.obj \ - icon.obj \ - imaglist.obj \ - iniconf.obj \ - joystick.obj \ - listbox.obj \ - listctrl.obj \ - main.obj \ - mdi.obj \ - menu.obj \ - menuitem.obj \ - metafile.obj \ - minifram.obj \ - msgdlg.obj \ - nativdlg.obj \ - notebook.obj \ - ownerdrw.obj \ - palette.obj \ - pen.obj \ - penwin.obj \ - printdlg.obj \ - printwin.obj \ - radiobox.obj \ - radiobut.obj \ - region.obj \ - registry.obj \ - regconf.obj \ - scrolbar.obj \ - settings.obj \ - slidrmsw.obj \ - slider95.obj \ - spinbutt.obj \ - statbmp.obj \ - statbox.obj \ - statbr95.obj \ - stattext.obj \ - tabctrl.obj \ - taskbar.obj \ - tbar95.obj \ - tbarmsw.obj \ - textctrl.obj \ - thread.obj \ - timer.obj \ - tooltip.obj \ - treectrl.obj \ - utils.obj \ - utilsexc.obj \ - wave.obj \ - window.obj - -# No OLE functions for wxDirDialog: use generic one instead -# dirdlg.obj \ -# pnghand.obj \ -# xpmhand.obj \ - -OLEOBJS = \ - droptgt.obj \ - dropsrc.obj \ - dataobj.obj \ - oleutils.obj \ - uuid.obj \ - automtn.obj - -# Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc. -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) # $(OLEOBJS) - -all: $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) - -$(LIBTARGET) : $(OBJECTS) - slink $$salford.lnk - -clean: $(EXTRATARGETSCLEAN) - -erase *.obj - -erase $(LIBTARGET) - -erase *.pch - -erase *.err - -cleanall: clean - -test: test.obj - -test.obj: test.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) test.cpp - -accel.obj: $(MSWDIR)\accel.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\accel.cpp /BINARY accel.obj - -app.obj: $(MSWDIR)\app.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\app.cpp /BINARY app.obj - -bitmap.obj: $(MSWDIR)\bitmap.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\bitmap.cpp /BINARY bitmap.obj - -bmpbuttn.obj: $(MSWDIR)\bmpbuttn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\bmpbuttn.cpp /BINARY bmpbuttn.obj - -brush.obj: $(MSWDIR)\brush.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\brush.cpp /BINARY brush.obj - -button.obj: $(MSWDIR)\button.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\button.cpp /BINARY button.obj - -caret.obj: $(MSWDIR)\caret.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\caret.cpp /BINARY caret.obj - -choice.obj: $(MSWDIR)\choice.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\choice.cpp /BINARY choice.obj - -checkbox.obj: $(MSWDIR)\checkbox.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\checkbox.cpp /BINARY checkbox.obj - -checklst.obj: $(MSWDIR)\checklst.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\checklst.cpp /BINARY checklst.obj - -clipbrd.obj: $(MSWDIR)\clipbrd.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\clipbrd.cpp /BINARY clipbrd.obj - -colordlg.obj: $(MSWDIR)\colordlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\colordlg.cpp /BINARY colordlg.obj - -colour.obj: $(MSWDIR)\colour.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\colour.cpp /BINARY colour.obj - -combobox.obj: $(MSWDIR)\combobox.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\combobox.cpp /BINARY combobox.obj - -control.obj: $(MSWDIR)\control.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\control.cpp /BINARY control.obj - -curico.obj: $(MSWDIR)\curico.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\curico.cpp /BINARY curico.obj - -cursor.obj: $(MSWDIR)\cursor.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\cursor.cpp /BINARY cursor.obj - -data.obj: $(MSWDIR)\data.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\data.cpp /BINARY data.obj - -dde.obj: $(MSWDIR)\dde.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dde.cpp /BINARY dde.obj - -dc.obj: $(MSWDIR)\dc.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dc.cpp /BINARY dc.obj - -dcmemory.obj: $(MSWDIR)\dcmemory.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcmemory.cpp /BINARY dcmemory.obj - -dcclient.obj: $(MSWDIR)\dcclient.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcclient.cpp /BINARY dcclient.obj - -dcprint.obj: $(MSWDIR)\dcprint.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcprint.cpp /BINARY dcprint.obj - -dcscreen.obj: $(MSWDIR)\dcscreen.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcscreen.cpp /BINARY dcscreen.obj - -dialog.obj: $(MSWDIR)\dialog.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dialog.cpp /BINARY dialog.obj - -dib.obj: $(MSWDIR)\dib.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dib.cpp /BINARY dib.obj - -dibutils.obj: $(MSWDIR)\dibutils.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dibutils.cpp /BINARY dibutils.obj - -dirdlg.obj: $(MSWDIR)\dirdlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dirdlg.cpp /BINARY dirdlg.obj - -filedlg.obj: $(MSWDIR)\filedlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\filedlg.cpp /BINARY filedlg.obj - -font.obj: $(MSWDIR)\font.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\font.cpp /BINARY font.obj - -fontdlg.obj: $(MSWDIR)\fontdlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\fontdlg.cpp /BINARY fontdlg.obj - -frame.obj: $(MSWDIR)\frame.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\frame.cpp /BINARY frame.obj - -gauge95.obj: $(MSWDIR)\gauge95.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\gauge95.cpp /BINARY gauge95.obj - -gdiobj.obj: $(MSWDIR)\gdiobj.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\gdiobj.cpp /BINARY gdiobj.obj - -helpwin.obj: $(MSWDIR)\helpwin.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\helpwin.cpp /BINARY helpwin.obj - -icon.obj: $(MSWDIR)\icon.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\icon.cpp /BINARY icon.obj - -imaglist.obj: $(MSWDIR)\imaglist.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\imaglist.cpp /BINARY imaglist.obj - -iniconf.obj: $(MSWDIR)\iniconf.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\iniconf.cpp /BINARY iniconf.obj - -joystick.obj: $(MSWDIR)\joystick.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\joystick.cpp /BINARY joystick.obj - -listbox.obj: $(MSWDIR)\listbox.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\listbox.cpp /BINARY listbox.obj - -listctrl.obj: $(MSWDIR)\listctrl.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\listctrl.cpp /BINARY listctrl.obj - -main.obj: $(MSWDIR)\main.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\main.cpp /BINARY main.obj - -mdi.obj: $(MSWDIR)\mdi.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\mdi.cpp /BINARY mdi.obj - -menu.obj: $(MSWDIR)\menu.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\menu.cpp /BINARY menu.obj - -menuitem.obj: $(MSWDIR)\menuitem.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\menuitem.cpp /BINARY menuitem.obj - -metafile.obj: $(MSWDIR)\metafile.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\metafile.cpp /BINARY metafile.obj - -minifram.obj: $(MSWDIR)\minifram.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\minifram.cpp /BINARY minifram.obj - -msgdlg.obj: $(MSWDIR)\msgdlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\msgdlg.cpp /BINARY msgdlg.obj - -nativdlg.obj: $(MSWDIR)\nativdlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\nativdlg.cpp /BINARY nativdlg.obj - -notebook.obj: $(MSWDIR)\notebook.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\notebook.cpp /BINARY notebook.obj - -ownerdrw.obj: $(MSWDIR)\ownerdrw.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\ownerdrw.cpp /BINARY ownerdrw.obj - -palette.obj: $(MSWDIR)\palette.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\palette.cpp /BINARY palette.obj - -pen.obj: $(MSWDIR)\pen.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\pen.cpp /BINARY pen.obj - -penwin.obj: $(MSWDIR)\penwin.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\penwin.cpp /BINARY penwin.obj - -printdlg.obj: $(MSWDIR)\printdlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\printdlg.cpp /BINARY printdlg.obj - -printwin.obj: $(MSWDIR)\printwin.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\printwin.cpp /BINARY printwin.obj - -radiobox.obj: $(MSWDIR)\radiobox.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\radiobox.cpp /BINARY radiobox.obj - -radiobut.obj: $(MSWDIR)\radiobut.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\radiobut.cpp /BINARY radiobut.obj - -region.obj: $(MSWDIR)\region.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\region.cpp /BINARY region.obj - -registry.obj: $(MSWDIR)\registry.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\registry.cpp /BINARY registry.obj - -regconf.obj: $(MSWDIR)\regconf.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\regconf.cpp /BINARY regconf.obj - -scrolbar.obj: $(MSWDIR)\scrolbar.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\scrolbar.cpp /BINARY scrolbar.obj - -settings.obj: $(MSWDIR)\settings.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\settings.cpp /BINARY settings.obj - -slidrmsw.obj: $(MSWDIR)\slidrmsw.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\slidrmsw.cpp /BINARY slidrmsw.obj - -slider95.obj: $(MSWDIR)\slider95.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\slider95.cpp /BINARY slider95.obj - -spinbutt.obj: $(MSWDIR)\spinbutt.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\spinbutt.cpp /BINARY spinbutt.obj - -statbmp.obj: $(MSWDIR)\statbmp.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\statbmp.cpp /BINARY statbmp.obj - -statbox.obj: $(MSWDIR)\statbox.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\statbox.cpp /BINARY statbox.obj - -statbr95.obj: $(MSWDIR)\statbr95.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\statbr95.cpp /BINARY statbr95.obj - -stattext.obj: $(MSWDIR)\stattext.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\stattext.cpp /BINARY stattext.obj - -tabctrl.obj: $(MSWDIR)\tabctrl.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tabctrl.cpp /BINARY tabctrl.obj - -taskbar.obj: $(MSWDIR)\taskbar.cpp - cl @<< - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\taskbar.cpp /BINARY taskbar.obj - -tbar95.obj: $(MSWDIR)\tbar95.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tbar95.cpp /BINARY tbar95.obj - -tbarmsw.obj: $(MSWDIR)\tbarmsw.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tbarmsw.cpp /BINARY tbarmsw.obj - -textctrl.obj: $(MSWDIR)\textctrl.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\textctrl.cpp /BINARY textctrl.obj - -thread.obj: $(MSWDIR)\thread.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\thread.cpp /BINARY thread.obj - -timer.obj: $(MSWDIR)\timer.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\timer.cpp /BINARY timer.obj - -tooltip.obj: $(MSWDIR)\tooltip.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tooltip.cpp /BINARY tooltip.obj - -treectrl.obj: $(MSWDIR)\treectrl.cpp - cl @<< - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\treectrl.cpp /BINARY treectrl.obj - -utils.obj: $(MSWDIR)\utils.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\utils.cpp /BINARY utils.obj - -utilsexc.obj: $(MSWDIR)\utilsexc.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\utilsexc.cpp /BINARY utilsexc.obj - -wave.obj: $(MSWDIR)\wave.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\wave.cpp /BINARY wave.obj - -window.obj: $(MSWDIR)\window.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\window.cpp /BINARY window.obj - -xpmhand.obj: $(MSWDIR)\xpmhand.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\xpmhand.cpp /BINARY xpmhand.obj - -droptgt.obj: $(OLEDIR)\droptgt.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\droptgt.cpp /BINARY droptgt.obj - -dropsrc.obj: $(OLEDIR)\dropsrc.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\dropsrc.cpp /BINARY dropsrc.obj - -dataobj.obj: $(OLEDIR)\dataobj.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\dataobj.cpp /BINARY dataobj.obj - -oleutils.obj: $(OLEDIR)\oleutils.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\oleutils.cpp /BINARY oleutils.obj - -uuid.obj: $(OLEDIR)\uuid.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\uuid.cpp /BINARY uuid.obj - -automtn.obj: $(OLEDIR)\automtn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\automtn.cpp /BINARY automtn.obj - -######################################################## -# Common objects (always compiled) - -cmndata.obj: $(COMMDIR)\cmndata.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\cmndata.cpp /BINARY cmndata.obj - -config.obj: $(COMMDIR)\config.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\config.cpp /BINARY config.obj - -dcbase.obj: $(COMMDIR)\dcbase.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dcbase.cpp /BINARY dcbase.obj - -db.obj: $(COMMDIR)\db.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\db.cpp /BINARY db.obj - -dbtable.obj: $(COMMDIR)\dbtable.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dbtable.cpp /BINARY dbtable.obj - -docview.obj: $(COMMDIR)\docview.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\docview.cpp /BINARY docview.obj - -docmdi.obj: $(COMMDIR)\docmdi.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\docmdi.cpp /BINARY docmdi.obj - -dynarray.obj: $(COMMDIR)\dynarray.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dynarray.cpp /BINARY dynarray.obj - -dynlib.obj: $(COMMDIR)\dynlib.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dynlib.cpp /BINARY dynlib.obj - -event.obj: $(COMMDIR)\event.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\event.cpp /BINARY event.obj - -file.obj: $(COMMDIR)\file.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\file.cpp /BINARY file.obj - -fileconf.obj: $(COMMDIR)\fileconf.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\fileconf.cpp /BINARY fileconf.obj - -filefn.obj: $(COMMDIR)\filefn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\filefn.cpp /BINARY filefn.obj - -framecmn.obj: $(COMMDIR)\framecmn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\framecmn.cpp /BINARY framecmn.obj - -gdicmn.obj: $(COMMDIR)\gdicmn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\gdicmn.cpp /BINARY gdicmn.obj - -image.obj: $(COMMDIR)\image.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\image.cpp /BINARY image.obj - -intl.obj: $(COMMDIR)\intl.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\intl.cpp /BINARY intl.obj - -ipcbase.obj: $(COMMDIR)\ipcbase.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\ipcbase.cpp /BINARY ipcbase.obj - -helpbase.obj: $(COMMDIR)\helpbase.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\helpbase.cpp /BINARY helpbase.obj - -layout.obj: $(COMMDIR)\layout.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\layout.cpp /BINARY layout.obj - -log.obj: $(COMMDIR)\log.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\log.cpp /BINARY log.obj - -memory.obj: $(COMMDIR)\memory.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\memory.cpp /BINARY memory.obj - -mimetype.obj: $(COMMDIR)\mimetype.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\mimetype.cpp /BINARY mimetype.obj - -module.obj: $(COMMDIR)\module.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\module.cpp /BINARY module.obj - -object.obj: $(COMMDIR)\object.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\object.cpp /BINARY object.obj - -prntbase.obj: $(COMMDIR)\prntbase.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\prntbase.cpp /BINARY prntbase.obj - -resource.obj: $(COMMDIR)\resource.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\resource.cpp /BINARY resource.obj - -tbarbase.obj: $(COMMDIR)\tbarbase.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\tbarbase.cpp /BINARY tbarbase.obj - -tbarsmpl.obj: $(COMMDIR)\tbarsmpl.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\tbarsmpl.cpp /BINARY tbarsmpl.obj - -textfile.obj: $(COMMDIR)\textfile.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\textfile.cpp /BINARY textfile.obj - -timercmn.obj: $(COMMDIR)\timercmn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\timercmn.cpp /BINARY timercmn.obj - -utilscmn.obj: $(COMMDIR)\utilscmn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\utilscmn.cpp /BINARY utilscmn.obj - -validate.obj: $(COMMDIR)\validate.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\validate.cpp /BINARY validate.obj - -valgen.obj: $(COMMDIR)\valgen.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\valgen.cpp /BINARY valgen.obj - -valtext.obj: $(COMMDIR)\valtext.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\valtext.cpp /BINARY valtext.obj - -date.obj: $(COMMDIR)\date.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\date.cpp /BINARY date.obj - -wxexpr.obj: $(COMMDIR)\wxexpr.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wxexpr.cpp /BINARY wxexpr.obj - -hash.obj: $(COMMDIR)\hash.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\hash.cpp /BINARY hash.obj - -list.obj: $(COMMDIR)\list.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\list.cpp /BINARY list.obj - -paper.obj: $(COMMDIR)\paper.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\paper.cpp /BINARY paper.obj - -string.obj: $(COMMDIR)\string.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\string.cpp /BINARY string.obj - -socket.obj: $(COMMDIR)\socket.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\socket.cpp /BINARY socket.obj - -sckint.obj: $(COMMDIR)\sckint.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckint.cpp /BINARY sckint.obj - -sckaddr.obj: $(COMMDIR)\sckaddr.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckaddr.cpp /BINARY sckaddr.obj - -sckfile.obj: $(COMMDIR)\sckfile.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckfile.cpp /BINARY sckfile.obj - -sckipc.obj: $(COMMDIR)\sckipc.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckipc.cpp /BINARY sckipc.obj - -sckstrm.obj: $(COMMDIR)\sckstrm.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckstrm.cpp /BINARY sckstrm.obj - -url.obj: $(COMMDIR)\url.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\url.cpp /BINARY url.obj - -http.obj: $(COMMDIR)\http.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\http.cpp /BINARY http.obj - -protocol.obj: $(COMMDIR)\protocol.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\protocol.cpp /BINARY protocol.obj - -tokenzr.obj: $(COMMDIR)\tokenzr.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\tokenzr.cpp /BINARY tokenzr.obj - -matrix.obj: $(COMMDIR)\matrix.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\matrix.cpp /BINARY matrix.obj - -time.obj: $(COMMDIR)\time.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\time.cpp /BINARY time.obj - -stream.obj: $(COMMDIR)\stream.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\stream.cpp /BINARY stream.obj - -wfstream.obj: $(COMMDIR)\wfstream.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wfstream.cpp /BINARY wfstream.obj - -mstream.obj: $(COMMDIR)\mstream.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\mstream.cpp /BINARY mstream.obj - -zstream.obj: $(COMMDIR)\zstream.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\zstream.cpp /BINARY zstream.obj - -datstrm.obj: $(COMMDIR)\datstrm.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\datstrm.cpp /BINARY datstrm.obj - -objstrm.obj: $(COMMDIR)\objstrm.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\objstrm.cpp /BINARY objstrm.obj - -extended.obj: $(COMMDIR)\extended.c - $(CC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\extended.c /BINARY extended.obj - -process.obj: $(COMMDIR)\process.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\process.cpp /BINARY process.obj - -variant.obj: $(COMMDIR)\variant.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\variant.cpp /BINARY variant.obj - -wincmn.obj: $(COMMDIR)\wincmn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wincmn.cpp /BINARY wincmn.obj - -wxchar.obj: $(COMMDIR)\wxcharp.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wxchar.cpp /BINARY wxchar.obj - -######################################################## -# Generic objects (not always compiled, depending on -# whether platforms have native implementations) - -choicdgg.obj: $(GENDIR)\choicdgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\choicdgg.cpp /BINARY choicdgg.obj - -colrdlgg.obj: $(GENDIR)\colrdgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\colrdgg.cpp /BINARY colordgg.obj - -dirdlgg.obj: $(GENDIR)\dirdlgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\dirdlgg.cpp /BINARY dirdlgg.obj - -fontdlgg.obj: $(GENDIR)\fontdlgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\fontdlgg.cpp /BINARY fontdlgg.obj - -gridg.obj: $(GENDIR)\gridg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\gridg.cpp /BINARY gridg.obj - -laywin.obj: $(GENDIR)\laywin.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\laywin.cpp /BINARY laywin.obj - -msgdlgg.obj: $(GENDIR)\msgdlgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\msgdlgg.cpp /BINARY msgdlgg.obj - -panelg.obj: $(GENDIR)\panelg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\panelg.cpp /BINARY panelg.obj - -printps.obj: $(GENDIR)\printps.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\printps.cpp /BINARY printps.obj - -progdlgg.obj: $(GENDIR)\progdlgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\progdlgg.cpp /BINARY progdlgg.obj - -prop.obj: $(GENDIR)\prop.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\prop.cpp /BINARY prop.obj - -propform.obj: $(GENDIR)\propform.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\propform.cpp /BINARY propform.obj - -proplist.obj: $(GENDIR)\proplist.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\proplist.cpp /BINARY proplist.obj - -prntdlgg.obj: $(GENDIR)\prntdlgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\prntdlgg.cpp /BINARY prntdlgg.obj - -sashwin.obj: $(GENDIR)\sashwin.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\sashwin.cpp /BINARY sashwin.obj - -scrolwin.obj: $(GENDIR)\scrolwin.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\scrolwin.cpp /BINARY scrolwin.obj - -splitter.obj: $(GENDIR)\splitter.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\splitter.cpp /BINARY splitter.obj - -statusbr.obj: $(GENDIR)\statusbr.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\statusbr.cpp /BINARY statusbr.obj - -tabg.obj: $(GENDIR)\tabg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\tabg.cpp /BINARY tabg.obj - -textdlgg.obj: $(GENDIR)\textdlgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\textdlgg.cpp /BINARY textdlgg.obj - -crbuffri.obj: $(XPMDIR)\crbuffri.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crbuffri.c - -crbuffrp.obj: $(XPMDIR)\crbuffrp.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crbuffrp.c - -crdatfri.obj: $(XPMDIR)\crdatfri.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crdatfri.c - -crdatfrp.obj: $(XPMDIR)\crdatfrp.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crdatfrp.c - -create.obj: $(XPMDIR)\create.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\create.c - -crifrbuf.obj: $(XPMDIR)\crifrbuf.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crifrbuf.c - -crifrdat.obj: $(XPMDIR)\crifrdat.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crifrdat.c - -crpfrbuf.obj: $(XPMDIR)\crpfrbuf.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crpfrbuf.c - -crpfrdat.obj: $(XPMDIR)\crpfrdat.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crpfrdat.c - -dataxpm.obj: $(XPMDIR)\data.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\data.c /BINARY dataxpm.obj - -hashtab.obj: $(XPMDIR)\hashtab.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\hashtab.c - -misc.obj: $(XPMDIR)\misc.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\misc.c - -parse.obj: $(XPMDIR)\parse.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\parse.c - -rdftodat.obj: $(XPMDIR)\rdftodat.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rdftodat.c - -rdftoi.obj: $(XPMDIR)\rdftoi.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rdftoi.c - -rdftop.obj: $(XPMDIR)\rdftop.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rdftop.c - -rgb.obj: $(XPMDIR)\rgb.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rgb.c - -scan.obj: $(XPMDIR)\scan.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\scan.c - -simx.obj: $(XPMDIR)\simx.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\simx.c - -wrffrdat.obj: $(XPMDIR)\wrffrdat.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\wrffrdat.c - -wrffri.obj: $(XPMDIR)\wrffri.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\wrffri.c - -wrffrp.obj: $(XPMDIR)\wrffrp.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\wrffrp.c - -OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \ - trees$(O) -OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \ - infutil$(O) inffast$(O) - -adler32.obj: adler32.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -compress.obj: compress.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -crc32.obj: crc32.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -gzio.obj: gzio.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\ - infcodes.h infutil.h - $(CC) -c $(CFLAGS) $*.c - -infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\ - infcodes.h inffast.h - $(CC) -c $(CFLAGS) $*.c - -inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h - $(CC) -c $(CFLAGS) $*.c - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - $(CC) -c $(CFLAGS) $*.c - -infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h - $(CC) -c $(CFLAGS) $*.c - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h - $(CC) -c $(CFLAGS) $*.c - -trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -uncompr.obj: uncompr.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - - -y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c - $(CC) /ANSI_C $(CPPFLAGS) $(IFLAGS) /DEFINE USE_DEFINE $(COMMDIR)\y_tab.c /BINARY y_tab.obj - -$(COMMDIR)\y_tab.c: $(COMMDIR)\dosyacc.c - copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c - -$(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c - copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c - -xpm: - cd $(WXDIR)\src\xpm - wmake -f makefile.wat all - cd $(WXDIR)\src\msw - -clean_xpm: - cd $(WXDIR)\src\xpm - wmake -f makefile.wat clean - cd $(WXDIR)\src\msw - -png: - cd $(WXDIR)\src\png - wmake -f makefile.wat all - cd $(WXDIR)\src\msw - -clean_png: - cd $(WXDIR)\src\png - wmake -f makefile.wat clean - cd $(WXDIR)\src\msw - -zlib: - cd $(WXDIR)\src\zlib - wmake -f makefile.wat all - cd $(WXDIR)\src\msw - -clean_zlib: - cd $(WXDIR)\src\zlib - wmake -f makefile.wat clean - cd $(WXDIR)\src\msw - - +# +# File: makefile.wat +# Author: Julian Smart +# Created: 1998 +# +# Makefile : Builds wxWindows library for Salford C++, WIN32 + +include ..\makesl.env + +LIBTARGET = $(WXLIB)\wx.lib +EXTRATARGETS = # xpm png zlib +EXTRATARGETSCLEAN = # clean_xpm clean_png clean_zlib +GENDIR=$(WXDIR)\src\generic +COMMDIR=$(WXDIR)\src\common +XPMDIR=$(WXDIR)\src\xpm +OLEDIR=ole +MSWDIR=$(WXDIR)\src\msw + +GENERICOBJS= choicdgg.obj \ + dirdlgg.obj \ + gridg.obj \ + laywin.obj \ + panelg.obj \ + prop.obj \ + progdlgg.obj \ + propform.obj \ + proplist.obj \ + sashwin.obj \ + scrolwin.obj \ + splitter.obj \ + statusbr.obj \ + tabg.obj \ + textdlgg.obj + +# These are generic things that don't need to be compiled on MSW, +# but sometimes it's useful to do so for testing purposes. +NONESSENTIALOBJS= printps.obj \ + prntdlgg.obj \ + msgdlgg.obj \ + colrdlgg.obj \ + fontdlgg.obj + +COMMONOBJS = cmndata.obj \ + config.obj \ + dcbase.obj \ + docview.obj \ + docmdi.obj \ + dynarray.obj \ + dynlib.obj \ + event.obj \ + file.obj \ + filefn.obj \ + fileconf.obj \ + framecmn.obj \ + gdicmn.obj \ + image.obj \ + intl.obj \ + ipcbase.obj \ + helpbase.obj \ + layout.obj \ + log.obj \ + memory.obj \ + module.obj \ + object.obj \ + prntbase.obj \ + resource.obj \ + tbarbase.obj \ + tbarsmpl.obj \ + textfile.obj \ + timercmn.obj \ + utilscmn.obj \ + validate.obj \ + valgen.obj \ + valtext.obj \ + date.obj \ + hash.obj \ + list.obj \ + paper.obj \ + string.obj \ + socket.obj \ + sckint.obj \ + sckaddr.obj \ + sckfile.obj \ + sckipc.obj \ + sckstrm.obj \ + url.obj \ + http.obj \ + protocol.obj \ + time.obj \ + tokenzr.obj \ + wxexpr.obj \ + y_tab.obj \ + extended.obj \ + process.obj \ + wfstream.obj \ + mstream.obj \ + zstream.obj \ + stream.obj \ + datstrm.obj \ + objstrm.obj \ + variant.obj \ + wincmn.obj \ + wxchar.obj + +# Can't compile these yet under Salford C++ +# mimetype.obj \ +# db.obj \ +# dbtable.obj \ + +MSWOBJS = \ + accel.obj \ + app.obj \ + bitmap.obj \ + bmpbuttn.obj \ + brush.obj \ + button.obj \ + checkbox.obj \ + checklst.obj \ + caret.obj \ + choice.obj \ + clipbrd.obj \ + colordlg.obj \ + colour.obj \ + combobox.obj \ + control.obj \ + curico.obj \ + cursor.obj \ + data.obj \ + dc.obj \ + dcmemory.obj \ + dcclient.obj \ + dcprint.obj \ + dcscreen.obj \ + dde.obj \ + dialog.obj \ + dib.obj \ + dibutils.obj \ + filedlg.obj \ + font.obj \ + fontdlg.obj \ + frame.obj \ + gauge95.obj \ + gdiobj.obj \ + helpwin.obj \ + icon.obj \ + imaglist.obj \ + iniconf.obj \ + joystick.obj \ + listbox.obj \ + listctrl.obj \ + main.obj \ + mdi.obj \ + menu.obj \ + menuitem.obj \ + metafile.obj \ + minifram.obj \ + msgdlg.obj \ + nativdlg.obj \ + notebook.obj \ + ownerdrw.obj \ + palette.obj \ + pen.obj \ + penwin.obj \ + printdlg.obj \ + printwin.obj \ + radiobox.obj \ + radiobut.obj \ + region.obj \ + registry.obj \ + regconf.obj \ + scrolbar.obj \ + settings.obj \ + slidrmsw.obj \ + slider95.obj \ + spinbutt.obj \ + statbmp.obj \ + statbox.obj \ + statbr95.obj \ + stattext.obj \ + tabctrl.obj \ + taskbar.obj \ + tbar95.obj \ + tbarmsw.obj \ + textctrl.obj \ + thread.obj \ + timer.obj \ + tooltip.obj \ + treectrl.obj \ + utils.obj \ + utilsexc.obj \ + wave.obj \ + window.obj + +# No OLE functions for wxDirDialog: use generic one instead +# dirdlg.obj \ +# pnghand.obj \ +# xpmhand.obj \ + +OLEOBJS = \ + droptgt.obj \ + dropsrc.obj \ + dataobj.obj \ + oleutils.obj \ + uuid.obj \ + automtn.obj + +# Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc. +OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) # $(OLEOBJS) + +all: $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) + +$(LIBTARGET) : $(OBJECTS) + slink $$salford.lnk + +clean: $(EXTRATARGETSCLEAN) + -erase *.obj + -erase $(LIBTARGET) + -erase *.pch + -erase *.err + +cleanall: clean + +test: test.obj + +test.obj: test.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) test.cpp + +accel.obj: $(MSWDIR)\accel.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\accel.cpp /BINARY accel.obj + +app.obj: $(MSWDIR)\app.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\app.cpp /BINARY app.obj + +bitmap.obj: $(MSWDIR)\bitmap.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\bitmap.cpp /BINARY bitmap.obj + +bmpbuttn.obj: $(MSWDIR)\bmpbuttn.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\bmpbuttn.cpp /BINARY bmpbuttn.obj + +brush.obj: $(MSWDIR)\brush.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\brush.cpp /BINARY brush.obj + +button.obj: $(MSWDIR)\button.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\button.cpp /BINARY button.obj + +caret.obj: $(MSWDIR)\caret.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\caret.cpp /BINARY caret.obj + +choice.obj: $(MSWDIR)\choice.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\choice.cpp /BINARY choice.obj + +checkbox.obj: $(MSWDIR)\checkbox.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\checkbox.cpp /BINARY checkbox.obj + +checklst.obj: $(MSWDIR)\checklst.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\checklst.cpp /BINARY checklst.obj + +clipbrd.obj: $(MSWDIR)\clipbrd.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\clipbrd.cpp /BINARY clipbrd.obj + +colordlg.obj: $(MSWDIR)\colordlg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\colordlg.cpp /BINARY colordlg.obj + +colour.obj: $(MSWDIR)\colour.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\colour.cpp /BINARY colour.obj + +combobox.obj: $(MSWDIR)\combobox.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\combobox.cpp /BINARY combobox.obj + +control.obj: $(MSWDIR)\control.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\control.cpp /BINARY control.obj + +curico.obj: $(MSWDIR)\curico.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\curico.cpp /BINARY curico.obj + +cursor.obj: $(MSWDIR)\cursor.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\cursor.cpp /BINARY cursor.obj + +data.obj: $(MSWDIR)\data.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\data.cpp /BINARY data.obj + +dde.obj: $(MSWDIR)\dde.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dde.cpp /BINARY dde.obj + +dc.obj: $(MSWDIR)\dc.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dc.cpp /BINARY dc.obj + +dcmemory.obj: $(MSWDIR)\dcmemory.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcmemory.cpp /BINARY dcmemory.obj + +dcclient.obj: $(MSWDIR)\dcclient.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcclient.cpp /BINARY dcclient.obj + +dcprint.obj: $(MSWDIR)\dcprint.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcprint.cpp /BINARY dcprint.obj + +dcscreen.obj: $(MSWDIR)\dcscreen.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcscreen.cpp /BINARY dcscreen.obj + +dialog.obj: $(MSWDIR)\dialog.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dialog.cpp /BINARY dialog.obj + +dib.obj: $(MSWDIR)\dib.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dib.cpp /BINARY dib.obj + +dibutils.obj: $(MSWDIR)\dibutils.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dibutils.cpp /BINARY dibutils.obj + +dirdlg.obj: $(MSWDIR)\dirdlg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dirdlg.cpp /BINARY dirdlg.obj + +filedlg.obj: $(MSWDIR)\filedlg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\filedlg.cpp /BINARY filedlg.obj + +font.obj: $(MSWDIR)\font.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\font.cpp /BINARY font.obj + +fontdlg.obj: $(MSWDIR)\fontdlg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\fontdlg.cpp /BINARY fontdlg.obj + +frame.obj: $(MSWDIR)\frame.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\frame.cpp /BINARY frame.obj + +gauge95.obj: $(MSWDIR)\gauge95.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\gauge95.cpp /BINARY gauge95.obj + +gdiobj.obj: $(MSWDIR)\gdiobj.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\gdiobj.cpp /BINARY gdiobj.obj + +helpwin.obj: $(MSWDIR)\helpwin.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\helpwin.cpp /BINARY helpwin.obj + +icon.obj: $(MSWDIR)\icon.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\icon.cpp /BINARY icon.obj + +imaglist.obj: $(MSWDIR)\imaglist.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\imaglist.cpp /BINARY imaglist.obj + +iniconf.obj: $(MSWDIR)\iniconf.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\iniconf.cpp /BINARY iniconf.obj + +joystick.obj: $(MSWDIR)\joystick.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\joystick.cpp /BINARY joystick.obj + +listbox.obj: $(MSWDIR)\listbox.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\listbox.cpp /BINARY listbox.obj + +listctrl.obj: $(MSWDIR)\listctrl.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\listctrl.cpp /BINARY listctrl.obj + +main.obj: $(MSWDIR)\main.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\main.cpp /BINARY main.obj + +mdi.obj: $(MSWDIR)\mdi.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\mdi.cpp /BINARY mdi.obj + +menu.obj: $(MSWDIR)\menu.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\menu.cpp /BINARY menu.obj + +menuitem.obj: $(MSWDIR)\menuitem.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\menuitem.cpp /BINARY menuitem.obj + +metafile.obj: $(MSWDIR)\metafile.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\metafile.cpp /BINARY metafile.obj + +minifram.obj: $(MSWDIR)\minifram.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\minifram.cpp /BINARY minifram.obj + +msgdlg.obj: $(MSWDIR)\msgdlg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\msgdlg.cpp /BINARY msgdlg.obj + +nativdlg.obj: $(MSWDIR)\nativdlg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\nativdlg.cpp /BINARY nativdlg.obj + +notebook.obj: $(MSWDIR)\notebook.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\notebook.cpp /BINARY notebook.obj + +ownerdrw.obj: $(MSWDIR)\ownerdrw.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\ownerdrw.cpp /BINARY ownerdrw.obj + +palette.obj: $(MSWDIR)\palette.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\palette.cpp /BINARY palette.obj + +pen.obj: $(MSWDIR)\pen.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\pen.cpp /BINARY pen.obj + +penwin.obj: $(MSWDIR)\penwin.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\penwin.cpp /BINARY penwin.obj + +printdlg.obj: $(MSWDIR)\printdlg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\printdlg.cpp /BINARY printdlg.obj + +printwin.obj: $(MSWDIR)\printwin.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\printwin.cpp /BINARY printwin.obj + +radiobox.obj: $(MSWDIR)\radiobox.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\radiobox.cpp /BINARY radiobox.obj + +radiobut.obj: $(MSWDIR)\radiobut.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\radiobut.cpp /BINARY radiobut.obj + +region.obj: $(MSWDIR)\region.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\region.cpp /BINARY region.obj + +registry.obj: $(MSWDIR)\registry.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\registry.cpp /BINARY registry.obj + +regconf.obj: $(MSWDIR)\regconf.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\regconf.cpp /BINARY regconf.obj + +scrolbar.obj: $(MSWDIR)\scrolbar.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\scrolbar.cpp /BINARY scrolbar.obj + +settings.obj: $(MSWDIR)\settings.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\settings.cpp /BINARY settings.obj + +slidrmsw.obj: $(MSWDIR)\slidrmsw.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\slidrmsw.cpp /BINARY slidrmsw.obj + +slider95.obj: $(MSWDIR)\slider95.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\slider95.cpp /BINARY slider95.obj + +spinbutt.obj: $(MSWDIR)\spinbutt.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\spinbutt.cpp /BINARY spinbutt.obj + +statbmp.obj: $(MSWDIR)\statbmp.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\statbmp.cpp /BINARY statbmp.obj + +statbox.obj: $(MSWDIR)\statbox.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\statbox.cpp /BINARY statbox.obj + +statbr95.obj: $(MSWDIR)\statbr95.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\statbr95.cpp /BINARY statbr95.obj + +stattext.obj: $(MSWDIR)\stattext.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\stattext.cpp /BINARY stattext.obj + +tabctrl.obj: $(MSWDIR)\tabctrl.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tabctrl.cpp /BINARY tabctrl.obj + +taskbar.obj: $(MSWDIR)\taskbar.cpp + cl @<< + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\taskbar.cpp /BINARY taskbar.obj + +tbar95.obj: $(MSWDIR)\tbar95.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tbar95.cpp /BINARY tbar95.obj + +tbarmsw.obj: $(MSWDIR)\tbarmsw.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tbarmsw.cpp /BINARY tbarmsw.obj + +textctrl.obj: $(MSWDIR)\textctrl.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\textctrl.cpp /BINARY textctrl.obj + +thread.obj: $(MSWDIR)\thread.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\thread.cpp /BINARY thread.obj + +timer.obj: $(MSWDIR)\timer.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\timer.cpp /BINARY timer.obj + +tooltip.obj: $(MSWDIR)\tooltip.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tooltip.cpp /BINARY tooltip.obj + +treectrl.obj: $(MSWDIR)\treectrl.cpp + cl @<< + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\treectrl.cpp /BINARY treectrl.obj + +utils.obj: $(MSWDIR)\utils.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\utils.cpp /BINARY utils.obj + +utilsexc.obj: $(MSWDIR)\utilsexc.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\utilsexc.cpp /BINARY utilsexc.obj + +wave.obj: $(MSWDIR)\wave.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\wave.cpp /BINARY wave.obj + +window.obj: $(MSWDIR)\window.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\window.cpp /BINARY window.obj + +xpmhand.obj: $(MSWDIR)\xpmhand.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\xpmhand.cpp /BINARY xpmhand.obj + +droptgt.obj: $(OLEDIR)\droptgt.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\droptgt.cpp /BINARY droptgt.obj + +dropsrc.obj: $(OLEDIR)\dropsrc.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\dropsrc.cpp /BINARY dropsrc.obj + +dataobj.obj: $(OLEDIR)\dataobj.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\dataobj.cpp /BINARY dataobj.obj + +oleutils.obj: $(OLEDIR)\oleutils.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\oleutils.cpp /BINARY oleutils.obj + +uuid.obj: $(OLEDIR)\uuid.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\uuid.cpp /BINARY uuid.obj + +automtn.obj: $(OLEDIR)\automtn.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\automtn.cpp /BINARY automtn.obj + +######################################################## +# Common objects (always compiled) + +cmndata.obj: $(COMMDIR)\cmndata.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\cmndata.cpp /BINARY cmndata.obj + +config.obj: $(COMMDIR)\config.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\config.cpp /BINARY config.obj + +dcbase.obj: $(COMMDIR)\dcbase.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dcbase.cpp /BINARY dcbase.obj + +db.obj: $(COMMDIR)\db.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\db.cpp /BINARY db.obj + +dbtable.obj: $(COMMDIR)\dbtable.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dbtable.cpp /BINARY dbtable.obj + +docview.obj: $(COMMDIR)\docview.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\docview.cpp /BINARY docview.obj + +docmdi.obj: $(COMMDIR)\docmdi.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\docmdi.cpp /BINARY docmdi.obj + +dynarray.obj: $(COMMDIR)\dynarray.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dynarray.cpp /BINARY dynarray.obj + +dynlib.obj: $(COMMDIR)\dynlib.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dynlib.cpp /BINARY dynlib.obj + +event.obj: $(COMMDIR)\event.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\event.cpp /BINARY event.obj + +file.obj: $(COMMDIR)\file.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\file.cpp /BINARY file.obj + +fileconf.obj: $(COMMDIR)\fileconf.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\fileconf.cpp /BINARY fileconf.obj + +filefn.obj: $(COMMDIR)\filefn.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\filefn.cpp /BINARY filefn.obj + +framecmn.obj: $(COMMDIR)\framecmn.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\framecmn.cpp /BINARY framecmn.obj + +gdicmn.obj: $(COMMDIR)\gdicmn.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\gdicmn.cpp /BINARY gdicmn.obj + +image.obj: $(COMMDIR)\image.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\image.cpp /BINARY image.obj + +intl.obj: $(COMMDIR)\intl.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\intl.cpp /BINARY intl.obj + +ipcbase.obj: $(COMMDIR)\ipcbase.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\ipcbase.cpp /BINARY ipcbase.obj + +helpbase.obj: $(COMMDIR)\helpbase.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\helpbase.cpp /BINARY helpbase.obj + +layout.obj: $(COMMDIR)\layout.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\layout.cpp /BINARY layout.obj + +log.obj: $(COMMDIR)\log.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\log.cpp /BINARY log.obj + +memory.obj: $(COMMDIR)\memory.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\memory.cpp /BINARY memory.obj + +mimetype.obj: $(COMMDIR)\mimetype.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\mimetype.cpp /BINARY mimetype.obj + +module.obj: $(COMMDIR)\module.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\module.cpp /BINARY module.obj + +object.obj: $(COMMDIR)\object.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\object.cpp /BINARY object.obj + +prntbase.obj: $(COMMDIR)\prntbase.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\prntbase.cpp /BINARY prntbase.obj + +resource.obj: $(COMMDIR)\resource.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\resource.cpp /BINARY resource.obj + +tbarbase.obj: $(COMMDIR)\tbarbase.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\tbarbase.cpp /BINARY tbarbase.obj + +tbarsmpl.obj: $(COMMDIR)\tbarsmpl.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\tbarsmpl.cpp /BINARY tbarsmpl.obj + +textfile.obj: $(COMMDIR)\textfile.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\textfile.cpp /BINARY textfile.obj + +timercmn.obj: $(COMMDIR)\timercmn.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\timercmn.cpp /BINARY timercmn.obj + +utilscmn.obj: $(COMMDIR)\utilscmn.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\utilscmn.cpp /BINARY utilscmn.obj + +validate.obj: $(COMMDIR)\validate.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\validate.cpp /BINARY validate.obj + +valgen.obj: $(COMMDIR)\valgen.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\valgen.cpp /BINARY valgen.obj + +valtext.obj: $(COMMDIR)\valtext.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\valtext.cpp /BINARY valtext.obj + +date.obj: $(COMMDIR)\date.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\date.cpp /BINARY date.obj + +wxexpr.obj: $(COMMDIR)\wxexpr.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wxexpr.cpp /BINARY wxexpr.obj + +hash.obj: $(COMMDIR)\hash.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\hash.cpp /BINARY hash.obj + +list.obj: $(COMMDIR)\list.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\list.cpp /BINARY list.obj + +paper.obj: $(COMMDIR)\paper.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\paper.cpp /BINARY paper.obj + +string.obj: $(COMMDIR)\string.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\string.cpp /BINARY string.obj + +socket.obj: $(COMMDIR)\socket.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\socket.cpp /BINARY socket.obj + +sckint.obj: $(COMMDIR)\sckint.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckint.cpp /BINARY sckint.obj + +sckaddr.obj: $(COMMDIR)\sckaddr.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckaddr.cpp /BINARY sckaddr.obj + +sckfile.obj: $(COMMDIR)\sckfile.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckfile.cpp /BINARY sckfile.obj + +sckipc.obj: $(COMMDIR)\sckipc.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckipc.cpp /BINARY sckipc.obj + +sckstrm.obj: $(COMMDIR)\sckstrm.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckstrm.cpp /BINARY sckstrm.obj + +url.obj: $(COMMDIR)\url.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\url.cpp /BINARY url.obj + +http.obj: $(COMMDIR)\http.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\http.cpp /BINARY http.obj + +protocol.obj: $(COMMDIR)\protocol.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\protocol.cpp /BINARY protocol.obj + +tokenzr.obj: $(COMMDIR)\tokenzr.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\tokenzr.cpp /BINARY tokenzr.obj + +matrix.obj: $(COMMDIR)\matrix.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\matrix.cpp /BINARY matrix.obj + +time.obj: $(COMMDIR)\time.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\time.cpp /BINARY time.obj + +stream.obj: $(COMMDIR)\stream.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\stream.cpp /BINARY stream.obj + +wfstream.obj: $(COMMDIR)\wfstream.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wfstream.cpp /BINARY wfstream.obj + +mstream.obj: $(COMMDIR)\mstream.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\mstream.cpp /BINARY mstream.obj + +zstream.obj: $(COMMDIR)\zstream.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\zstream.cpp /BINARY zstream.obj + +datstrm.obj: $(COMMDIR)\datstrm.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\datstrm.cpp /BINARY datstrm.obj + +objstrm.obj: $(COMMDIR)\objstrm.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\objstrm.cpp /BINARY objstrm.obj + +extended.obj: $(COMMDIR)\extended.c + $(CC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\extended.c /BINARY extended.obj + +process.obj: $(COMMDIR)\process.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\process.cpp /BINARY process.obj + +variant.obj: $(COMMDIR)\variant.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\variant.cpp /BINARY variant.obj + +wincmn.obj: $(COMMDIR)\wincmn.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wincmn.cpp /BINARY wincmn.obj + +wxchar.obj: $(COMMDIR)\wxcharp.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wxchar.cpp /BINARY wxchar.obj + +######################################################## +# Generic objects (not always compiled, depending on +# whether platforms have native implementations) + +choicdgg.obj: $(GENDIR)\choicdgg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\choicdgg.cpp /BINARY choicdgg.obj + +colrdlgg.obj: $(GENDIR)\colrdgg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\colrdgg.cpp /BINARY colordgg.obj + +dirdlgg.obj: $(GENDIR)\dirdlgg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\dirdlgg.cpp /BINARY dirdlgg.obj + +fontdlgg.obj: $(GENDIR)\fontdlgg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\fontdlgg.cpp /BINARY fontdlgg.obj + +gridg.obj: $(GENDIR)\gridg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\gridg.cpp /BINARY gridg.obj + +laywin.obj: $(GENDIR)\laywin.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\laywin.cpp /BINARY laywin.obj + +msgdlgg.obj: $(GENDIR)\msgdlgg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\msgdlgg.cpp /BINARY msgdlgg.obj + +panelg.obj: $(GENDIR)\panelg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\panelg.cpp /BINARY panelg.obj + +printps.obj: $(GENDIR)\printps.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\printps.cpp /BINARY printps.obj + +progdlgg.obj: $(GENDIR)\progdlgg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\progdlgg.cpp /BINARY progdlgg.obj + +prop.obj: $(GENDIR)\prop.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\prop.cpp /BINARY prop.obj + +propform.obj: $(GENDIR)\propform.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\propform.cpp /BINARY propform.obj + +proplist.obj: $(GENDIR)\proplist.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\proplist.cpp /BINARY proplist.obj + +prntdlgg.obj: $(GENDIR)\prntdlgg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\prntdlgg.cpp /BINARY prntdlgg.obj + +sashwin.obj: $(GENDIR)\sashwin.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\sashwin.cpp /BINARY sashwin.obj + +scrolwin.obj: $(GENDIR)\scrolwin.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\scrolwin.cpp /BINARY scrolwin.obj + +splitter.obj: $(GENDIR)\splitter.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\splitter.cpp /BINARY splitter.obj + +statusbr.obj: $(GENDIR)\statusbr.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\statusbr.cpp /BINARY statusbr.obj + +tabg.obj: $(GENDIR)\tabg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\tabg.cpp /BINARY tabg.obj + +textdlgg.obj: $(GENDIR)\textdlgg.cpp + $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\textdlgg.cpp /BINARY textdlgg.obj + +crbuffri.obj: $(XPMDIR)\crbuffri.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crbuffri.c + +crbuffrp.obj: $(XPMDIR)\crbuffrp.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crbuffrp.c + +crdatfri.obj: $(XPMDIR)\crdatfri.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crdatfri.c + +crdatfrp.obj: $(XPMDIR)\crdatfrp.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crdatfrp.c + +create.obj: $(XPMDIR)\create.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\create.c + +crifrbuf.obj: $(XPMDIR)\crifrbuf.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crifrbuf.c + +crifrdat.obj: $(XPMDIR)\crifrdat.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crifrdat.c + +crpfrbuf.obj: $(XPMDIR)\crpfrbuf.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crpfrbuf.c + +crpfrdat.obj: $(XPMDIR)\crpfrdat.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crpfrdat.c + +dataxpm.obj: $(XPMDIR)\data.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\data.c /BINARY dataxpm.obj + +hashtab.obj: $(XPMDIR)\hashtab.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\hashtab.c + +misc.obj: $(XPMDIR)\misc.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\misc.c + +parse.obj: $(XPMDIR)\parse.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\parse.c + +rdftodat.obj: $(XPMDIR)\rdftodat.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rdftodat.c + +rdftoi.obj: $(XPMDIR)\rdftoi.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rdftoi.c + +rdftop.obj: $(XPMDIR)\rdftop.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rdftop.c + +rgb.obj: $(XPMDIR)\rgb.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rgb.c + +scan.obj: $(XPMDIR)\scan.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\scan.c + +simx.obj: $(XPMDIR)\simx.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\simx.c + +wrffrdat.obj: $(XPMDIR)\wrffrdat.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\wrffrdat.c + +wrffri.obj: $(XPMDIR)\wrffri.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\wrffri.c + +wrffrp.obj: $(XPMDIR)\wrffrp.c + *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\wrffrp.c + +OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \ + trees$(O) +OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \ + infutil$(O) inffast$(O) + +adler32.obj: adler32.c zutil.h zlib.h zconf.h + $(CC) -c $(CFLAGS) $*.c + +compress.obj: compress.c zlib.h zconf.h + $(CC) -c $(CFLAGS) $*.c + +crc32.obj: crc32.c zutil.h zlib.h zconf.h + $(CC) -c $(CFLAGS) $*.c + +deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h + $(CC) -c $(CFLAGS) $*.c + +gzio.obj: gzio.c zutil.h zlib.h zconf.h + $(CC) -c $(CFLAGS) $*.c + +infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\ + infcodes.h infutil.h + $(CC) -c $(CFLAGS) $*.c + +infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\ + infcodes.h inffast.h + $(CC) -c $(CFLAGS) $*.c + +inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h + $(CC) -c $(CFLAGS) $*.c + +inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h + $(CC) -c $(CFLAGS) $*.c + +infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h + $(CC) -c $(CFLAGS) $*.c + +inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h + $(CC) -c $(CFLAGS) $*.c + +trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h + $(CC) -c $(CFLAGS) $*.c + +uncompr.obj: uncompr.c zlib.h zconf.h + $(CC) -c $(CFLAGS) $*.c + +zutil.obj: zutil.c zutil.h zlib.h zconf.h + $(CC) -c $(CFLAGS) $*.c + + +y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c + $(CC) /ANSI_C $(CPPFLAGS) $(IFLAGS) /DEFINE USE_DEFINE $(COMMDIR)\y_tab.c /BINARY y_tab.obj + +$(COMMDIR)\y_tab.c: $(COMMDIR)\dosyacc.c + copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c + +$(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c + copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c + +xpm: + cd $(WXDIR)\src\xpm + wmake -f makefile.wat all + cd $(WXDIR)\src\msw + +clean_xpm: + cd $(WXDIR)\src\xpm + wmake -f makefile.wat clean + cd $(WXDIR)\src\msw + +png: + cd $(WXDIR)\src\png + wmake -f makefile.wat all + cd $(WXDIR)\src\msw + +clean_png: + cd $(WXDIR)\src\png + wmake -f makefile.wat clean + cd $(WXDIR)\src\msw + +zlib: + cd $(WXDIR)\src\zlib + wmake -f makefile.wat all + cd $(WXDIR)\src\msw + +clean_zlib: + cd $(WXDIR)\src\zlib + wmake -f makefile.wat clean + cd $(WXDIR)\src\msw + + diff --git a/3rdparty/wxWidgets/src/msw/version.rc b/3rdparty/wxWidgets/src/msw/version.rc index d29e75786d..a14110c9a1 100644 --- a/3rdparty/wxWidgets/src/msw/version.rc +++ b/3rdparty/wxWidgets/src/msw/version.rc @@ -1,62 +1,62 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: src/msw/version.rc -// Purpose: contains version info resource for wxMSW DLL build -// Author: Vadim Zeitlin -// Modified by: -// Created: 09.07.00 -// RCS-ID: $Id: version.rc 41690 2006-10-08 10:59:16Z VZ $ -// Copyright: (c) 2000 Vadim Zeitlin -// Licence: wxWidgets license -/////////////////////////////////////////////////////////////////////////////// - -#include "wx/version.h" - -// see http://msdn.microsoft.com/library/psdk/winui/rc_7x2d.htm for values: we -// don't use symbolic constants because older compilers might not have them -#ifdef WXMAKINGDLL - #define wxVFT 2 // VFT_DLL -#else - #define wxVFT 1 // VFT_APP -#endif - -#ifdef _DEBUG - #define DLL_FLAGS 0x1L -#else - #define DLL_FLAGS 0x0L -#endif - -#ifdef _UNICODE - #define LANG "04090000" -#else - #define LANG "040904b0" -#endif - -1 VERSIONINFO - FILEVERSION wxMAJOR_VERSION,wxMINOR_VERSION,wxRELEASE_NUMBER,wxSUBRELEASE_NUMBER - PRODUCTVERSION wxMAJOR_VERSION,wxMINOR_VERSION,wxRELEASE_NUMBER,wxSUBRELEASE_NUMBER - FILEFLAGSMASK 0x3fL - FILEFLAGS DLL_FLAGS - FILEOS 0x40004L // VOS_NT_WINDOWS32 - FILETYPE wxVFT - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - // US English Ascii; see http://msdn.microsoft.com/library/psdk/winui/rc_3rxn.htm for codes - BLOCK LANG - BEGIN - VALUE "Comments", "wxWidgets cross-platform GUI framework\0" - VALUE "CompanyName", "wxWidgets development team\0" - VALUE "FileDescription", "wxWidgets for MSW\0" - VALUE "FileVersion", "wxWidgets Library " wxVERSION_NUM_DOT_STRING "\0" - VALUE "InternalName", "wxMSW\0" - VALUE "LegalCopyright", "Copyright © 1993-2006 wxWidgets development team\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", wxSTRINGIZE(WXDLLNAME) ".dll\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "wxWidgets\0" - VALUE "ProductVersion", wxVERSION_NUM_DOT_STRING "\0" - VALUE "SpecialBuild", "\0" - END - END -END +/////////////////////////////////////////////////////////////////////////////// +// Name: src/msw/version.rc +// Purpose: contains version info resource for wxMSW DLL build +// Author: Vadim Zeitlin +// Modified by: +// Created: 09.07.00 +// RCS-ID: $Id: version.rc 41690 2006-10-08 10:59:16Z VZ $ +// Copyright: (c) 2000 Vadim Zeitlin +// Licence: wxWidgets license +/////////////////////////////////////////////////////////////////////////////// + +#include "wx/version.h" + +// see http://msdn.microsoft.com/library/psdk/winui/rc_7x2d.htm for values: we +// don't use symbolic constants because older compilers might not have them +#ifdef WXMAKINGDLL + #define wxVFT 2 // VFT_DLL +#else + #define wxVFT 1 // VFT_APP +#endif + +#ifdef _DEBUG + #define DLL_FLAGS 0x1L +#else + #define DLL_FLAGS 0x0L +#endif + +#ifdef _UNICODE + #define LANG "04090000" +#else + #define LANG "040904b0" +#endif + +1 VERSIONINFO + FILEVERSION wxMAJOR_VERSION,wxMINOR_VERSION,wxRELEASE_NUMBER,wxSUBRELEASE_NUMBER + PRODUCTVERSION wxMAJOR_VERSION,wxMINOR_VERSION,wxRELEASE_NUMBER,wxSUBRELEASE_NUMBER + FILEFLAGSMASK 0x3fL + FILEFLAGS DLL_FLAGS + FILEOS 0x40004L // VOS_NT_WINDOWS32 + FILETYPE wxVFT + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + // US English Ascii; see http://msdn.microsoft.com/library/psdk/winui/rc_3rxn.htm for codes + BLOCK LANG + BEGIN + VALUE "Comments", "wxWidgets cross-platform GUI framework\0" + VALUE "CompanyName", "wxWidgets development team\0" + VALUE "FileDescription", "wxWidgets for MSW\0" + VALUE "FileVersion", "wxWidgets Library " wxVERSION_NUM_DOT_STRING "\0" + VALUE "InternalName", "wxMSW\0" + VALUE "LegalCopyright", "Copyright © 1993-2006 wxWidgets development team\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", wxSTRINGIZE(WXDLLNAME) ".dll\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "wxWidgets\0" + VALUE "ProductVersion", wxVERSION_NUM_DOT_STRING "\0" + VALUE "SpecialBuild", "\0" + END + END +END diff --git a/3rdparty/wxWidgets/src/png/LICENSE b/3rdparty/wxWidgets/src/png/LICENSE index 97d066c2d2..48eaeadbcd 100644 --- a/3rdparty/wxWidgets/src/png/LICENSE +++ b/3rdparty/wxWidgets/src/png/LICENSE @@ -1,111 +1,111 @@ - -This copy of the libpng notices is provided for your convenience. In case of -any discrepancy between this copy and the notices in the file png.h that is -included in the libpng distribution, the latter shall prevail. - -COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: - -If you modify libpng you may insert additional notices immediately following -this sentence. - -This code is released under the libpng license. - -libpng versions 1.2.6, August 15, 2004, through 1.2.39, August 13, 2009, are -Copyright (c) 2004, 2006-2009 Glenn Randers-Pehrson, and are -distributed according to the same disclaimer and license as libpng-1.2.5 -with the following individual added to the list of Contributing Authors - - Cosmin Truta - -libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are -Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are -distributed according to the same disclaimer and license as libpng-1.0.6 -with the following individuals added to the list of Contributing Authors - - Simon-Pierre Cadieux - Eric S. Raymond - Gilles Vollant - -and with the following additions to the disclaimer: - - There is no warranty against interference with your enjoyment of the - library or against infringement. There is no warranty that our - efforts or the library will fulfill any of your particular purposes - or needs. This library is provided with all faults, and the entire - risk of satisfactory quality, performance, accuracy, and effort is with - the user. - -libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are -Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are -distributed according to the same disclaimer and license as libpng-0.96, -with the following individuals added to the list of Contributing Authors: - - Tom Lane - Glenn Randers-Pehrson - Willem van Schaik - -libpng versions 0.89, June 1996, through 0.96, May 1997, are -Copyright (c) 1996, 1997 Andreas Dilger -Distributed according to the same disclaimer and license as libpng-0.88, -with the following individuals added to the list of Contributing Authors: - - John Bowler - Kevin Bracey - Sam Bushell - Magnus Holmgren - Greg Roelofs - Tom Tanner - -libpng versions 0.5, May 1995, through 0.88, January 1996, are -Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - -For the purposes of this copyright and license, "Contributing Authors" -is defined as the following set of individuals: - - Andreas Dilger - Dave Martindale - Guy Eric Schalnat - Paul Schmidt - Tim Wegner - -The PNG Reference Library is supplied "AS IS". The Contributing Authors -and Group 42, Inc. disclaim all warranties, expressed or implied, -including, without limitation, the warranties of merchantability and of -fitness for any purpose. The Contributing Authors and Group 42, Inc. -assume no liability for direct, indirect, incidental, special, exemplary, -or consequential damages, which may result from the use of the PNG -Reference Library, even if advised of the possibility of such damage. - -Permission is hereby granted to use, copy, modify, and distribute this -source code, or portions hereof, for any purpose, without fee, subject -to the following restrictions: - -1. The origin of this source code must not be misrepresented. - -2. Altered versions must be plainly marked as such and must not - be misrepresented as being the original source. - -3. This Copyright notice may not be removed or altered from any - source or altered source distribution. - -The Contributing Authors and Group 42, Inc. specifically permit, without -fee, and encourage the use of this source code as a component to -supporting the PNG file format in commercial products. If you use this -source code in a product, acknowledgment is not required but would be -appreciated. - - -A "png_get_copyright" function is available, for convenient use in "about" -boxes and the like: - - printf("%s",png_get_copyright(NULL)); - -Also, the PNG logo (in PNG format, of course) is supplied in the -files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). - -Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a -certification mark of the Open Source Initiative. - -Glenn Randers-Pehrson -glennrp at users.sourceforge.net -August 13, 2009 + +This copy of the libpng notices is provided for your convenience. In case of +any discrepancy between this copy and the notices in the file png.h that is +included in the libpng distribution, the latter shall prevail. + +COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: + +If you modify libpng you may insert additional notices immediately following +this sentence. + +This code is released under the libpng license. + +libpng versions 1.2.6, August 15, 2004, through 1.2.39, August 13, 2009, are +Copyright (c) 2004, 2006-2009 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.2.5 +with the following individual added to the list of Contributing Authors + + Cosmin Truta + +libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are +Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.0.6 +with the following individuals added to the list of Contributing Authors + + Simon-Pierre Cadieux + Eric S. Raymond + Gilles Vollant + +and with the following additions to the disclaimer: + + There is no warranty against interference with your enjoyment of the + library or against infringement. There is no warranty that our + efforts or the library will fulfill any of your particular purposes + or needs. This library is provided with all faults, and the entire + risk of satisfactory quality, performance, accuracy, and effort is with + the user. + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are +Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-0.96, +with the following individuals added to the list of Contributing Authors: + + Tom Lane + Glenn Randers-Pehrson + Willem van Schaik + +libpng versions 0.89, June 1996, through 0.96, May 1997, are +Copyright (c) 1996, 1997 Andreas Dilger +Distributed according to the same disclaimer and license as libpng-0.88, +with the following individuals added to the list of Contributing Authors: + + John Bowler + Kevin Bracey + Sam Bushell + Magnus Holmgren + Greg Roelofs + Tom Tanner + +libpng versions 0.5, May 1995, through 0.88, January 1996, are +Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. + +For the purposes of this copyright and license, "Contributing Authors" +is defined as the following set of individuals: + + Andreas Dilger + Dave Martindale + Guy Eric Schalnat + Paul Schmidt + Tim Wegner + +The PNG Reference Library is supplied "AS IS". The Contributing Authors +and Group 42, Inc. disclaim all warranties, expressed or implied, +including, without limitation, the warranties of merchantability and of +fitness for any purpose. The Contributing Authors and Group 42, Inc. +assume no liability for direct, indirect, incidental, special, exemplary, +or consequential damages, which may result from the use of the PNG +Reference Library, even if advised of the possibility of such damage. + +Permission is hereby granted to use, copy, modify, and distribute this +source code, or portions hereof, for any purpose, without fee, subject +to the following restrictions: + +1. The origin of this source code must not be misrepresented. + +2. Altered versions must be plainly marked as such and must not + be misrepresented as being the original source. + +3. This Copyright notice may not be removed or altered from any + source or altered source distribution. + +The Contributing Authors and Group 42, Inc. specifically permit, without +fee, and encourage the use of this source code as a component to +supporting the PNG file format in commercial products. If you use this +source code in a product, acknowledgment is not required but would be +appreciated. + + +A "png_get_copyright" function is available, for convenient use in "about" +boxes and the like: + + printf("%s",png_get_copyright(NULL)); + +Also, the PNG logo (in PNG format, of course) is supplied in the +files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). + +Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a +certification mark of the Open Source Initiative. + +Glenn Randers-Pehrson +glennrp at users.sourceforge.net +August 13, 2009 diff --git a/3rdparty/wxwidgets3.0/art/addbookm.xpm b/3rdparty/wxwidgets3.0/art/addbookm.xpm index fb13ff161d..0b4f695c2c 100644 --- a/3rdparty/wxwidgets3.0/art/addbookm.xpm +++ b/3rdparty/wxwidgets3.0/art/addbookm.xpm @@ -1,24 +1,24 @@ -/* XPM */ -static const char *const addbookm_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -". c Black", -"X c #00C000", -" c None", -/* pixels */ -" ....... ", -" .XXXXX. ", -" .. .XXXXX. ", -" .. .XXXXX. ", -" ...... .XXXXX. ", -" ...... .XXXXX. ", -" .. .XXXXX. ", -" .. .XXXXX. ", -" .XXXXX. ", -" .XXXXX. ", -" .XXXXX. ", -" .XXXXX. ", -" .XX.XX. ", -" .X. .X. ", -" .. .. " -}; +/* XPM */ +static const char *const addbookm_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 3 1", +". c Black", +"X c #00C000", +" c None", +/* pixels */ +" ....... ", +" .XXXXX. ", +" .. .XXXXX. ", +" .. .XXXXX. ", +" ...... .XXXXX. ", +" ...... .XXXXX. ", +" .. .XXXXX. ", +" .. .XXXXX. ", +" .XXXXX. ", +" .XXXXX. ", +" .XXXXX. ", +" .XXXXX. ", +" .XX.XX. ", +" .X. .X. ", +" .. .. " +}; diff --git a/3rdparty/wxwidgets3.0/art/back.xpm b/3rdparty/wxwidgets3.0/art/back.xpm index 38b0f4b7dd..d5c1de519d 100644 --- a/3rdparty/wxwidgets3.0/art/back.xpm +++ b/3rdparty/wxwidgets3.0/art/back.xpm @@ -1,21 +1,21 @@ -/* XPM */ -static const char *const back_xpm[] = { -"16 15 3 1", -" c None", -". c Black", -"X c Gray100", -" ", -" ", -" . ", -" .. ", -" .X. ", -" .XX........ ", -" .XXXXXXXXXX. ", -" .XXXXXXXXXXX. ", -" .XXXXXXXXXXX. ", -" .XXXXXXXXXX. ", -" .XX........ ", -" .X. ", -" .. ", -" . ", -" "}; +/* XPM */ +static const char *const back_xpm[] = { +"16 15 3 1", +" c None", +". c Black", +"X c Gray100", +" ", +" ", +" . ", +" .. ", +" .X. ", +" .XX........ ", +" .XXXXXXXXXX. ", +" .XXXXXXXXXXX. ", +" .XXXXXXXXXXX. ", +" .XXXXXXXXXX. ", +" .XX........ ", +" .X. ", +" .. ", +" . ", +" "}; diff --git a/3rdparty/wxwidgets3.0/art/cdrom.xpm b/3rdparty/wxwidgets3.0/art/cdrom.xpm index fecc52ec74..e3bc19b96b 100644 --- a/3rdparty/wxwidgets3.0/art/cdrom.xpm +++ b/3rdparty/wxwidgets3.0/art/cdrom.xpm @@ -1,57 +1,57 @@ -/* XPM */ -static const char *const cdrom_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 36 1", -"= c #9BACC2", -"y c #547B99", -"$ c #FFFFFF", -"@ c #839CB5", -"o c #547897", -"4 c #4D7492", -"% c #F1F4F7", -"X c #5A809C", -"< c #8497A5", -"0 c #7898AD", -"+ c #CAD2DC", -"r c #ACAEB2", -"2 c #BECAD9", -"* c #65839D", -"e c #DCE2EA", -"- c #ADBED2", -"t c #597B9A", -" c None", -"1 c #467291", -"9 c #D6DFE7", -"O c #7393AB", -"u c #49708B", -"5 c #A0BACB", -"& c #AABFCD", -"8 c #B9CBD5", -"; c #B4C4D3", -": c #6F90A6", -"3 c #A8B6CA", -"# c #ADBACE", -"w c #E4E9ED", -". c #8EA9BC", -"> c #B3BFD1", -", c #C2CBDB", -"6 c #C0D1DC", -"7 c #A2B3C5", -"q c #5D7C93", -/* pixels */ -" .XooOo+ ", -" X@#$$$%o& ", -" *=-;$$$$$o+ ", -" +O#;-$$$$$$: ", -" o=>,-<1<$2-o ", -" o3>--1$122-* ", -" o=--$<4<22-X ", -" o5$$$$$26;7* ", -" X%$$$$2;-X8 ", -" 90*9$$$-7Xqo ", -" wXwe@O44X422222<<*4", -" ttyyyoo4441uuuo", -" t>$$$$$$$$$$$>o", -" XXXtyyyoo44411u" -}; +/* XPM */ +static const char *const cdrom_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 36 1", +"= c #9BACC2", +"y c #547B99", +"$ c #FFFFFF", +"@ c #839CB5", +"o c #547897", +"4 c #4D7492", +"% c #F1F4F7", +"X c #5A809C", +"< c #8497A5", +"0 c #7898AD", +"+ c #CAD2DC", +"r c #ACAEB2", +"2 c #BECAD9", +"* c #65839D", +"e c #DCE2EA", +"- c #ADBED2", +"t c #597B9A", +" c None", +"1 c #467291", +"9 c #D6DFE7", +"O c #7393AB", +"u c #49708B", +"5 c #A0BACB", +"& c #AABFCD", +"8 c #B9CBD5", +"; c #B4C4D3", +": c #6F90A6", +"3 c #A8B6CA", +"# c #ADBACE", +"w c #E4E9ED", +". c #8EA9BC", +"> c #B3BFD1", +", c #C2CBDB", +"6 c #C0D1DC", +"7 c #A2B3C5", +"q c #5D7C93", +/* pixels */ +" .XooOo+ ", +" X@#$$$%o& ", +" *=-;$$$$$o+ ", +" +O#;-$$$$$$: ", +" o=>,-<1<$2-o ", +" o3>--1$122-* ", +" o=--$<4<22-X ", +" o5$$$$$26;7* ", +" X%$$$$2;-X8 ", +" 90*9$$$-7Xqo ", +" wXwe@O44X422222<<*4", +" ttyyyoo4441uuuo", +" t>$$$$$$$$$$$>o", +" XXXtyyyoo44411u" +}; diff --git a/3rdparty/wxwidgets3.0/art/copy.xpm b/3rdparty/wxwidgets3.0/art/copy.xpm index 9143caa9b2..f393cd23e6 100644 --- a/3rdparty/wxwidgets3.0/art/copy.xpm +++ b/3rdparty/wxwidgets3.0/art/copy.xpm @@ -1,44 +1,44 @@ -/* XPM */ -static const char *const copy_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 23 1", -"o c #97C4E7", -"* c #FFFFFF", -"@ c #60A9DA", -"= c #D1E5F5", -"& c #C3DDF1", -". c #7EA6C0", -" c None", -"X c #2F93CD", -"O c #85BBE2", -", c #EFF6FC", -"; c #DEEDF8", -"+ c #72B2DD", -"3 c #F7FBFD", -"4 c #FAFCFE", -": c #DAEAF7", -"< c #E9F3FA", -"1 c #E2EFF8", -"- c #FDFDFE", -"% c #B6D5EE", -"$ c #A5CCEA", -"> c #E5F0F9", -"# c #AFD1EC", -"2 c #F4F9FD", -/* pixels */ -" .....XX ", -" .oO+@X#X ", -" .$oO+X##X ", -" .%$o........ ", -" .&%$.*=&#o.-. ", -" .=&%.*;=&#.--. ", -" .:=&.*>;=&.... ", -" .>:=.*,>;=&#o. ", -" .<1:.*2,>:=&#. ", -" .2<1.*32,>:=&. ", -" .32<.*432,>:=. ", -" .32<.*-432,>:. ", -" .....**-432,>. ", -" .***-432,. ", -" .......... " -}; +/* XPM */ +static const char *const copy_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 23 1", +"o c #97C4E7", +"* c #FFFFFF", +"@ c #60A9DA", +"= c #D1E5F5", +"& c #C3DDF1", +". c #7EA6C0", +" c None", +"X c #2F93CD", +"O c #85BBE2", +", c #EFF6FC", +"; c #DEEDF8", +"+ c #72B2DD", +"3 c #F7FBFD", +"4 c #FAFCFE", +": c #DAEAF7", +"< c #E9F3FA", +"1 c #E2EFF8", +"- c #FDFDFE", +"% c #B6D5EE", +"$ c #A5CCEA", +"> c #E5F0F9", +"# c #AFD1EC", +"2 c #F4F9FD", +/* pixels */ +" .....XX ", +" .oO+@X#X ", +" .$oO+X##X ", +" .%$o........ ", +" .&%$.*=&#o.-. ", +" .=&%.*;=&#.--. ", +" .:=&.*>;=&.... ", +" .>:=.*,>;=&#o. ", +" .<1:.*2,>:=&#. ", +" .2<1.*32,>:=&. ", +" .32<.*432,>:=. ", +" .32<.*-432,>:. ", +" .....**-432,>. ", +" .***-432,. ", +" .......... " +}; diff --git a/3rdparty/wxwidgets3.0/art/cross.xpm b/3rdparty/wxwidgets3.0/art/cross.xpm index 20ab3f3466..407fa9bfa1 100644 --- a/3rdparty/wxwidgets3.0/art/cross.xpm +++ b/3rdparty/wxwidgets3.0/art/cross.xpm @@ -1,17 +1,17 @@ -/* XPM */ -static const char *const cross_xpm[] = { -/* columns rows colors chars-per-pixel */ -"10 10 2 1", -" c Gray0", -"# c None", -/* pixels */ -" ######## ", -" #### ", -"# ## #", -"## ##", -"### ###", -"### ###", -"## ##", -"# ## #", -" #### ", -" ###### "}; +/* XPM */ +static const char *const cross_xpm[] = { +/* columns rows colors chars-per-pixel */ +"10 10 2 1", +" c Gray0", +"# c None", +/* pixels */ +" ######## ", +" #### ", +"# ## #", +"## ##", +"### ###", +"### ###", +"## ##", +"# ## #", +" #### ", +" ###### "}; diff --git a/3rdparty/wxwidgets3.0/art/cut.xpm b/3rdparty/wxwidgets3.0/art/cut.xpm index eacd7f94b3..e638157f59 100644 --- a/3rdparty/wxwidgets3.0/art/cut.xpm +++ b/3rdparty/wxwidgets3.0/art/cut.xpm @@ -1,46 +1,46 @@ -/* XPM */ -static const char *const cut_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 25 1", -"6 c #D8BDC0", -": c #C3C3C4", -"- c #FFFFFF", -". c #6C6D70", -"2 c #AD3A45", -"o c #DBDBDB", -"# c #939495", -"< c #E42234", -"& c #C3C5C8", -"; c #C6CCD3", -"% c #B7B7B8", -" c None", -"* c #DFE0E2", -"5 c #B69596", -"3 c #9C2A35", -"1 c #CFCFD0", -", c #AB5C64", -"+ c #D2D3D4", -"$ c #BCBDBE", -"@ c #C6C8CA", -"> c #CDC0C1", -"O c #826F72", -"X c #979BA0", -"4 c #9B8687", -"= c #9FA0A0", -/* pixels */ -" .X .o ", -" O.+ @. ", -" O. .. ", -" O#$ %.& ", -" O.*.. ", -" #%#.. ", -" O=-.. ", -" #%#;. ", -" OO:=O ", -" >,,<, ,<,,1 ", -" ><23<1 1<32<1 ", -" ,2 4< <5 2, ", -" <, ,2 2, ,< ", -" 23,<5 5<,32 ", -" 6225 522> " -}; +/* XPM */ +static const char *const cut_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 25 1", +"6 c #D8BDC0", +": c #C3C3C4", +"- c #FFFFFF", +". c #6C6D70", +"2 c #AD3A45", +"o c #DBDBDB", +"# c #939495", +"< c #E42234", +"& c #C3C5C8", +"; c #C6CCD3", +"% c #B7B7B8", +" c None", +"* c #DFE0E2", +"5 c #B69596", +"3 c #9C2A35", +"1 c #CFCFD0", +", c #AB5C64", +"+ c #D2D3D4", +"$ c #BCBDBE", +"@ c #C6C8CA", +"> c #CDC0C1", +"O c #826F72", +"X c #979BA0", +"4 c #9B8687", +"= c #9FA0A0", +/* pixels */ +" .X .o ", +" O.+ @. ", +" O. .. ", +" O#$ %.& ", +" O.*.. ", +" #%#.. ", +" O=-.. ", +" #%#;. ", +" OO:=O ", +" >,,<, ,<,,1 ", +" ><23<1 1<32<1 ", +" ,2 4< <5 2, ", +" <, ,2 2, ,< ", +" 23,<5 5<,32 ", +" 6225 522> " +}; diff --git a/3rdparty/wxwidgets3.0/art/deffile.xpm b/3rdparty/wxwidgets3.0/art/deffile.xpm index 182fbe4180..d7546a53f4 100644 --- a/3rdparty/wxwidgets3.0/art/deffile.xpm +++ b/3rdparty/wxwidgets3.0/art/deffile.xpm @@ -1,54 +1,54 @@ -/* XPM */ -static const char *const deffile_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 16 32 1", -"= c #97C4E7", -": c #72A8D2", -"1 c #FFFFFF", -"w c #839CB5", -"X c #6B98B8", -". c #5A89A6", -"@ c #3A749C", -", c #D1E5F5", -"< c #67A1CF", -"> c #F1F4F7", -"e c #85A7BC", -"% c #C3DDF1", -"0 c #749BB4", -"2 c #7EA6C0", -"; c #5F9BC8", -" c None", -"O c #538DB3", -"- c #85BBE2", -"$ c #D6DFE7", -"9 c #EFF6FC", -"o c #6591AE", -"4 c #F7FBFD", -"8 c #FAFCFE", -"6 c #DAEAF7", -"7 c #E9F3FA", -"q c #FDFDFE", -"3 c #E2EFF8", -"# c #8EA9BC", -"& c #B6D5EE", -"* c #A5CCEA", -"5 c #F4F9FD", -"+ c #4581AA", -/* pixels */ -" ..XooO+@#$ ", -" .%%&*=-;:;> ", -" .,,%&*=<1=X> ", -" #%%%%&*211=X ", -" #3----- c #F1F4F7", +"e c #85A7BC", +"% c #C3DDF1", +"0 c #749BB4", +"2 c #7EA6C0", +"; c #5F9BC8", +" c None", +"O c #538DB3", +"- c #85BBE2", +"$ c #D6DFE7", +"9 c #EFF6FC", +"o c #6591AE", +"4 c #F7FBFD", +"8 c #FAFCFE", +"6 c #DAEAF7", +"7 c #E9F3FA", +"q c #FDFDFE", +"3 c #E2EFF8", +"# c #8EA9BC", +"& c #B6D5EE", +"* c #A5CCEA", +"5 c #F4F9FD", +"+ c #4581AA", +/* pixels */ +" ..XooO+@#$ ", +" .%%&*=-;:;> ", +" .,,%&*=<1=X> ", +" #%%%%&*211=X ", +" #3----- c #5A7BB4", -"% c #5F7FB5", -/* pixels */ -" ", -" .Xo OO ", -" +@#. $@% ", -" &@@X .*@*o ", -" =@= .*@*. ", -" -@@X*@*. ", -" .#@@@$. ", -" ;@@: ", -" ;@@@+ ", -" .>@#%@@. ", -" o*@*oO@@, ", -" <#@*. .@@= ", -"&@@$ :@@1 ", -";#& 2#>. ", -" " -}; +/* XPM */ +static const char *const delete_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 21 1", +"2 c #A5AEBD", +"* c #5478B4", +"< c #95A3BB", +"O c #9AA7BC", +"; c #758EB7", +"$ c #6986B6", +"# c #4971B2", +"& c #8A9CBA", +"X c #8598B9", +" c None", +"o c #ABB2BE", +"- c #7F95B9", +"= c #4E74B3", +"1 c #A0ABBC", +"+ c #6F8AB7", +". c #B5B9BF", +"@ c #3E69B1", +", c #90A0BA", +": c #6483B5", +"> c #5A7BB4", +"% c #5F7FB5", +/* pixels */ +" ", +" .Xo OO ", +" +@#. $@% ", +" &@@X .*@*o ", +" =@= .*@*. ", +" -@@X*@*. ", +" .#@@@$. ", +" ;@@: ", +" ;@@@+ ", +" .>@#%@@. ", +" o*@*oO@@, ", +" <#@*. .@@= ", +"&@@$ :@@1 ", +";#& 2#>. ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/dir_up.xpm b/3rdparty/wxwidgets3.0/art/dir_up.xpm index f644d93e6d..dd85ff25cd 100644 --- a/3rdparty/wxwidgets3.0/art/dir_up.xpm +++ b/3rdparty/wxwidgets3.0/art/dir_up.xpm @@ -1,52 +1,52 @@ -/* XPM */ -static const char *const dir_up_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 31 1", -"6 c #9BACC2", -"o c #9AEA53", -"7 c #94A5BD", -"8 c #547897", -"5 c #839CB5", -"@ c #376485", -"$ c #5A809C", -"# c #7F99B4", -": c #D1D9E5", -"< c #EAEDF3", -"& c #446A8C", -"q c #65839D", -"> c #DCE2EA", -", c #E1E6EE", -"2 c #F5F6F7", -"O c #8DA0B9", -" c None", -"% c #467291", -". c #305F81", -"X c #7393AB", -"+ c #6A89A2", -"4 c #A8B6CA", -"1 c #EEF1F3", -"3 c #F8F9FA", -"0 c #215579", -"9 c #7F97B0", -"* c #B3BFD1", -"w c #7A90AC", -"- c #C2CBDB", -"; c #CAD6E1", -"= c #BBC4D6", -/* pixels */ -" .. ", -" X.o. ", -".... X.ooo. ", -".OO+....ooooo. ", -".OOOOOO@@ooo.. ", -".OOOO#OO@ooo.$ ", -".OOOOOOO@ooo.$ ", -".O%............&", -".O&*=-;:>,<1231.", -".+.4*=-;:>,<12$.", -"..564*=-;:>,<1. ", -".@O764*=-;:>,<. ", -".89O764*=-;:>$$ ", -"0qw9O764*=-;:. ", -"0............. " -}; +/* XPM */ +static const char *const dir_up_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 31 1", +"6 c #9BACC2", +"o c #9AEA53", +"7 c #94A5BD", +"8 c #547897", +"5 c #839CB5", +"@ c #376485", +"$ c #5A809C", +"# c #7F99B4", +": c #D1D9E5", +"< c #EAEDF3", +"& c #446A8C", +"q c #65839D", +"> c #DCE2EA", +", c #E1E6EE", +"2 c #F5F6F7", +"O c #8DA0B9", +" c None", +"% c #467291", +". c #305F81", +"X c #7393AB", +"+ c #6A89A2", +"4 c #A8B6CA", +"1 c #EEF1F3", +"3 c #F8F9FA", +"0 c #215579", +"9 c #7F97B0", +"* c #B3BFD1", +"w c #7A90AC", +"- c #C2CBDB", +"; c #CAD6E1", +"= c #BBC4D6", +/* pixels */ +" .. ", +" X.o. ", +".... X.ooo. ", +".OO+....ooooo. ", +".OOOOOO@@ooo.. ", +".OOOO#OO@ooo.$ ", +".OOOOOOO@ooo.$ ", +".O%............&", +".O&*=-;:>,<1231.", +".+.4*=-;:>,<12$.", +"..564*=-;:>,<1. ", +".@O764*=-;:>,<. ", +".89O764*=-;:>$$ ", +"0qw9O764*=-;:. ", +"0............. " +}; diff --git a/3rdparty/wxwidgets3.0/art/down.xpm b/3rdparty/wxwidgets3.0/art/down.xpm index 88b0a9fdc9..5a0e4c98fb 100644 --- a/3rdparty/wxwidgets3.0/art/down.xpm +++ b/3rdparty/wxwidgets3.0/art/down.xpm @@ -1,21 +1,21 @@ -/* XPM */ -static const char *const down_xpm[] = { -"16 15 3 1", -" c None", -". c Black", -"X c Gray100", -" ", -" ...... ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" ....XXXX.... ", -" .XXXXXXXX. ", -" .XXXXXX. ", -" .XXXX. ", -" .XX. ", -" .. ", -" "}; +/* XPM */ +static const char *const down_xpm[] = { +"16 15 3 1", +" c None", +". c Black", +"X c Gray100", +" ", +" ...... ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" ....XXXX.... ", +" .XXXXXXXX. ", +" .XXXXXX. ", +" .XXXX. ", +" .XX. ", +" .. ", +" "}; diff --git a/3rdparty/wxwidgets3.0/art/exefile.xpm b/3rdparty/wxwidgets3.0/art/exefile.xpm index f814a597e8..54a5e49c33 100644 --- a/3rdparty/wxwidgets3.0/art/exefile.xpm +++ b/3rdparty/wxwidgets3.0/art/exefile.xpm @@ -1,73 +1,73 @@ -/* XPM */ -static const char *const exefile_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 16 51 1", -"% c #E8E8EC", -"= c #E8E8ED", -"z c #CACAD4", -"8 c #D9D9E1", -"p c #D2D2DA", -"u c #E1E1E7", -"a c #D2D2DB", -"< c #E9E9ED", -"q c #DADAE1", -"+ c #F1F1F4", -"g c #D3D3DB", -"1 c #E2E2E8", -"x c #D3D3DC", -"5 c #00A5FF", -"$ c #EAEAEE", -"4 c #DBDBE2", -"h c #CCCCD6", -"y c #D4D4DC", -"r c #E3E3E9", -"d c #D4D4DD", -"7 c #DCDCE2", -": c #EBEBEF", -"0 c #DCDCE3", -" c None", -"O c #F3F3F5", -"> c #E4E4E9", -"& c #F3F3F6", -"j c #D5D5DD", -"6 c #E4E4EA", -". c #C6C6D5", -"# c #ECECF0", -"f c #CECED7", -"l c #CECED8", -"e c #D6D6DE", -"; c #EDEDF0", -"3 c #DEDEE4", -", c #EDEDF1", -"c c #CFCFD8", -"o c #F5F5F7", -"- c #E6E6EB", -"w c #D7D7DF", -"v c #C8C8D3", -"i c #DFDFE5", -"@ c #EEEEF2", -"s c #D0D0D9", -"X c #9494AD", -"9 c #D8D8DF", -"t c #D8D8E0", -"* c #EFEFF2", -"2 c #E0E0E6", -"k c #D1D1DA", -/* pixels */ -" ........X ", -" .oO+@#$%XX ", -" .&+*#$=-XXX ", -" .+*;:=->XXXX ", -" .*,:<->1234X ", -" .,5:5612378X ", -" 5,5559530qwX ", -" 55555550q9eX ", -" 5555r5555teyX ", -" 55rui559eypX ", -" 5555i5555yasX ", -" 5555555dasfX ", -" 5355595gsfhX ", -" .3595jgklhzX ", -" .0qwjxkchzvX ", -" XXXXXXXXXXXX " -}; +/* XPM */ +static const char *const exefile_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 16 51 1", +"% c #E8E8EC", +"= c #E8E8ED", +"z c #CACAD4", +"8 c #D9D9E1", +"p c #D2D2DA", +"u c #E1E1E7", +"a c #D2D2DB", +"< c #E9E9ED", +"q c #DADAE1", +"+ c #F1F1F4", +"g c #D3D3DB", +"1 c #E2E2E8", +"x c #D3D3DC", +"5 c #00A5FF", +"$ c #EAEAEE", +"4 c #DBDBE2", +"h c #CCCCD6", +"y c #D4D4DC", +"r c #E3E3E9", +"d c #D4D4DD", +"7 c #DCDCE2", +": c #EBEBEF", +"0 c #DCDCE3", +" c None", +"O c #F3F3F5", +"> c #E4E4E9", +"& c #F3F3F6", +"j c #D5D5DD", +"6 c #E4E4EA", +". c #C6C6D5", +"# c #ECECF0", +"f c #CECED7", +"l c #CECED8", +"e c #D6D6DE", +"; c #EDEDF0", +"3 c #DEDEE4", +", c #EDEDF1", +"c c #CFCFD8", +"o c #F5F5F7", +"- c #E6E6EB", +"w c #D7D7DF", +"v c #C8C8D3", +"i c #DFDFE5", +"@ c #EEEEF2", +"s c #D0D0D9", +"X c #9494AD", +"9 c #D8D8DF", +"t c #D8D8E0", +"* c #EFEFF2", +"2 c #E0E0E6", +"k c #D1D1DA", +/* pixels */ +" ........X ", +" .oO+@#$%XX ", +" .&+*#$=-XXX ", +" .+*;:=->XXXX ", +" .*,:<->1234X ", +" .,5:5612378X ", +" 5,5559530qwX ", +" 55555550q9eX ", +" 5555r5555teyX ", +" 55rui559eypX ", +" 5555i5555yasX ", +" 5555555dasfX ", +" 5355595gsfhX ", +" .3595jgklhzX ", +" .0qwjxkchzvX ", +" XXXXXXXXXXXX " +}; diff --git a/3rdparty/wxwidgets3.0/art/fileopen.xpm b/3rdparty/wxwidgets3.0/art/fileopen.xpm index 636a904123..997efdea19 100644 --- a/3rdparty/wxwidgets3.0/art/fileopen.xpm +++ b/3rdparty/wxwidgets3.0/art/fileopen.xpm @@ -1,57 +1,57 @@ -/* XPM */ -static const char *const fileopen_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 36 1", -"6 c #9BACC2", -"< c #9AEA53", -"9 c #94A5BD", -"5 c #839CB5", -"; c #4D7492", -". c #376485", -"$ c #7F99B4", -"r c #D1D9E5", -"7 c #EAEDF3", -"@ c #CAD2DC", -"% c #718BA7", -"t c #BECAD9", -"& c #65839D", -"0 c #DCE2EA", -"4 c #F5F6F7", -"w c #597B9A", -"O c #8DA0B9", -" c None", -"+ c #467291", -"u c #305F81", -"= c #B4C4D3", -"# c #CAE2AA", -"1 c #FAFCFE", -"3 c #A8B6CA", -"q c #E4E9ED", -"8 c #EEF1F3", -"X c #215579", -"2 c #7F97B0", -": c #B3BFD1", -"y c #7A90AC", -", c #C2CBDB", -"- c #ADD668", -"* c #B6D791", -"e c #CAD6E1", -"o c #DFF0D0", -"> c #BBC4D6", -/* pixels */ -" ", -" .... ", -"XXXXX .oo. ", -"XOOOO+@.#o. ", -"XOOOO$%&.*oXXX ", -"XOOOOOOO.*oX=X ", -"XOXXXX...-oXXXX;", -"XOX:>,.<<<<,.<<>.>.X0q7; ", -"Xw2O963:>>er0t; ", -"X&y2O963:>,er; ", -"uXXXXXXXXXXXX; ", -" " -}; +/* XPM */ +static const char *const fileopen_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 36 1", +"6 c #9BACC2", +"< c #9AEA53", +"9 c #94A5BD", +"5 c #839CB5", +"; c #4D7492", +". c #376485", +"$ c #7F99B4", +"r c #D1D9E5", +"7 c #EAEDF3", +"@ c #CAD2DC", +"% c #718BA7", +"t c #BECAD9", +"& c #65839D", +"0 c #DCE2EA", +"4 c #F5F6F7", +"w c #597B9A", +"O c #8DA0B9", +" c None", +"+ c #467291", +"u c #305F81", +"= c #B4C4D3", +"# c #CAE2AA", +"1 c #FAFCFE", +"3 c #A8B6CA", +"q c #E4E9ED", +"8 c #EEF1F3", +"X c #215579", +"2 c #7F97B0", +": c #B3BFD1", +"y c #7A90AC", +", c #C2CBDB", +"- c #ADD668", +"* c #B6D791", +"e c #CAD6E1", +"o c #DFF0D0", +"> c #BBC4D6", +/* pixels */ +" ", +" .... ", +"XXXXX .oo. ", +"XOOOO+@.#o. ", +"XOOOO$%&.*oXXX ", +"XOOOOOOO.*oX=X ", +"XOXXXX...-oXXXX;", +"XOX:>,.<<<<,.<<>.>.X0q7; ", +"Xw2O963:>>er0t; ", +"X&y2O963:>,er; ", +"uXXXXXXXXXXXX; ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/filesave.xpm b/3rdparty/wxwidgets3.0/art/filesave.xpm index b1ffda3346..f571025cd6 100644 --- a/3rdparty/wxwidgets3.0/art/filesave.xpm +++ b/3rdparty/wxwidgets3.0/art/filesave.xpm @@ -1,42 +1,42 @@ -/* XPM */ -static const char *const filesave_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 21 1", -"O c #FFFFFF", -"> c #D5D6D8", -"; c #446A8C", -"1 c #CAD2DC", -": c #C0C7D1", -" c #5F666D", -"% c #A5B0BA", -"o c #65839D", -", c #DCE2EA", -"< c #C3C5C8", -"- c #E1E6EE", -"* c #C6CCD3", -". c None", -"$ c #305F81", -"2 c #D6DFE7", -"= c #D2D9E0", -"& c #B7BFC7", -"X c #1B4467", -"# c #BCBDBE", -"@ c #7A90AC", -"+ c #5D7C93", -/* pixels */ -" .", -" XoOOOOOOOOO+X .", -" @oO#######O+@ .", -" @oOOOOOOOOO+@ .", -" @oO#######O+@ .", -" @oOOOOOOOOO+@ .", -" @@+++++++++@@ .", -" @@@@@@@@@@@@@ .", -" @@@$$$$$$$$@@ .", -" @@$%%%&*=-O$@ .", -" @@$%X;;*=-O$@ .", -" @@$%X;;:>,O$@ .", -" @@$%X;;<12O$@ .", -" @@$<<2OOOOO$@ .", -". .." -}; +/* XPM */ +static const char *const filesave_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 21 1", +"O c #FFFFFF", +"> c #D5D6D8", +"; c #446A8C", +"1 c #CAD2DC", +": c #C0C7D1", +" c #5F666D", +"% c #A5B0BA", +"o c #65839D", +", c #DCE2EA", +"< c #C3C5C8", +"- c #E1E6EE", +"* c #C6CCD3", +". c None", +"$ c #305F81", +"2 c #D6DFE7", +"= c #D2D9E0", +"& c #B7BFC7", +"X c #1B4467", +"# c #BCBDBE", +"@ c #7A90AC", +"+ c #5D7C93", +/* pixels */ +" .", +" XoOOOOOOOOO+X .", +" @oO#######O+@ .", +" @oOOOOOOOOO+@ .", +" @oO#######O+@ .", +" @oOOOOOOOOO+@ .", +" @@+++++++++@@ .", +" @@@@@@@@@@@@@ .", +" @@@$$$$$$$$@@ .", +" @@$%%%&*=-O$@ .", +" @@$%X;;*=-O$@ .", +" @@$%X;;:>,O$@ .", +" @@$%X;;<12O$@ .", +" @@$<<2OOOOO$@ .", +". .." +}; diff --git a/3rdparty/wxwidgets3.0/art/filesaveas.xpm b/3rdparty/wxwidgets3.0/art/filesaveas.xpm index 4ca8e26227..7562f4cc47 100644 --- a/3rdparty/wxwidgets3.0/art/filesaveas.xpm +++ b/3rdparty/wxwidgets3.0/art/filesaveas.xpm @@ -1,44 +1,44 @@ -/* XPM */ -static const char *const filesaveas_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 23 1", -"X c Black", -"+ c #FFFFFF", -"< c #D5D6D8", -"> c #446A8C", -"3 c #CAD2DC", -", c #C0C7D1", -" c #5F666D", -"* c #A5B0BA", -"O c #65839D", -"1 c #DCE2EA", -"2 c #C3C5C8", -": c #E1E6EE", -". c #FFFF00", -"- c #C6CCD3", -"@ c None", -"& c #305F81", -"4 c #D6DFE7", -"; c #D2D9E0", -"= c #B7BFC7", -"o c #1B4467", -"$ c #BCBDBE", -"# c #7A90AC", -"% c #5D7C93", -/* pixels */ -" .X .XX.", -" oO+++++++.X.X.@", -" #O+$$$$$XX...XX", -" #O++++++.......", -" #O+$$$$$XX...XX", -" #O+++++++.X.X.@", -" ##%%%%%%.X%.X .", -" ############# @", -" ###&&&&&&&&## @", -" ##&***=-;:+&# @", -" ##&*o>>-;:+&# @", -" ##&*o>>,<1+&# @", -" ##&*o>>234+&# @", -" ##&224+++++&# @", -"@ @@" -}; +/* XPM */ +static const char *const filesaveas_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 23 1", +"X c Black", +"+ c #FFFFFF", +"< c #D5D6D8", +"> c #446A8C", +"3 c #CAD2DC", +", c #C0C7D1", +" c #5F666D", +"* c #A5B0BA", +"O c #65839D", +"1 c #DCE2EA", +"2 c #C3C5C8", +": c #E1E6EE", +". c #FFFF00", +"- c #C6CCD3", +"@ c None", +"& c #305F81", +"4 c #D6DFE7", +"; c #D2D9E0", +"= c #B7BFC7", +"o c #1B4467", +"$ c #BCBDBE", +"# c #7A90AC", +"% c #5D7C93", +/* pixels */ +" .X .XX.", +" oO+++++++.X.X.@", +" #O+$$$$$XX...XX", +" #O++++++.......", +" #O+$$$$$XX...XX", +" #O+++++++.X.X.@", +" ##%%%%%%.X%.X .", +" ############# @", +" ###&&&&&&&&## @", +" ##&***=-;:+&# @", +" ##&*o>>-;:+&# @", +" ##&*o>>,<1+&# @", +" ##&*o>>234+&# @", +" ##&224+++++&# @", +"@ @@" +}; diff --git a/3rdparty/wxwidgets3.0/art/find.xpm b/3rdparty/wxwidgets3.0/art/find.xpm index d5f24f8e41..a31ecde63f 100644 --- a/3rdparty/wxwidgets3.0/art/find.xpm +++ b/3rdparty/wxwidgets3.0/art/find.xpm @@ -1,62 +1,62 @@ -/* XPM */ -static const char *const find_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 41 1", -"y c #A06959", -"9 c #A7DAF2", -"$ c #B5CAD7", -"> c #35B4E1", -"t c #6B98B8", -"w c #B6E0F4", -"q c #AEC9D7", -"1 c #5A89A6", -"+ c #98B3C6", -"4 c #EAF6FC", -"3 c #DEF1FA", -"= c #4CBCE3", -"d c #DB916B", -"X c #85A7BC", -"s c #D8BCA4", -"o c #749BB4", -"e c #BCD9EF", -"* c #62B4DD", -"< c #91D2EF", -"a c #E6DED2", -"0 c #E9F4FB", -" c None", -"@ c #A0BACB", -"O c #AABFCD", -"i c #6591AE", -": c #B9CBD5", -"- c #71C5E7", -"5 c #D3ECF8", -"% c #81A3B9", -"6 c #8AD0EE", -"8 c #FDFDFE", -"p c #8EA9BC", -"r c #B6D5EE", -", c #81CCEB", -". c #ACC4D3", -"; c #AFD1DE", -"7 c #EFF8FC", -"u c #C2CBDB", -"# c #C0D1DC", -"2 c #CAD6E1", -"& c #8FB0C3", -/* pixels */ -" .XooXO ", -" +@###$+% ", -" .&#*==-;@@ ", -" o:*>,<--:X ", -" 12>-345-#% ", -" 12>678392% ", -" %$*,3059q& ", -" @Oq,wwer@@ ", -" t@q22q&+ ", -" yyui+%o%p ", -" yasy ", -" yasdy ", -" yasdy ", -" ysdy ", -" yy " -}; +/* XPM */ +static const char *const find_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 41 1", +"y c #A06959", +"9 c #A7DAF2", +"$ c #B5CAD7", +"> c #35B4E1", +"t c #6B98B8", +"w c #B6E0F4", +"q c #AEC9D7", +"1 c #5A89A6", +"+ c #98B3C6", +"4 c #EAF6FC", +"3 c #DEF1FA", +"= c #4CBCE3", +"d c #DB916B", +"X c #85A7BC", +"s c #D8BCA4", +"o c #749BB4", +"e c #BCD9EF", +"* c #62B4DD", +"< c #91D2EF", +"a c #E6DED2", +"0 c #E9F4FB", +" c None", +"@ c #A0BACB", +"O c #AABFCD", +"i c #6591AE", +": c #B9CBD5", +"- c #71C5E7", +"5 c #D3ECF8", +"% c #81A3B9", +"6 c #8AD0EE", +"8 c #FDFDFE", +"p c #8EA9BC", +"r c #B6D5EE", +", c #81CCEB", +". c #ACC4D3", +"; c #AFD1DE", +"7 c #EFF8FC", +"u c #C2CBDB", +"# c #C0D1DC", +"2 c #CAD6E1", +"& c #8FB0C3", +/* pixels */ +" .XooXO ", +" +@###$+% ", +" .&#*==-;@@ ", +" o:*>,<--:X ", +" 12>-345-#% ", +" 12>678392% ", +" %$*,3059q& ", +" @Oq,wwer@@ ", +" t@q22q&+ ", +" yyui+%o%p ", +" yasy ", +" yasdy ", +" yasdy ", +" ysdy ", +" yy " +}; diff --git a/3rdparty/wxwidgets3.0/art/findrepl.xpm b/3rdparty/wxwidgets3.0/art/findrepl.xpm index 55380e5c06..5d688ba4bc 100644 --- a/3rdparty/wxwidgets3.0/art/findrepl.xpm +++ b/3rdparty/wxwidgets3.0/art/findrepl.xpm @@ -1,63 +1,63 @@ -/* XPM */ -static const char *const findrepl_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 42 1", -"y c #A06959", -"9 c #A7DAF2", -"$ c #B5CAD7", -"> c #35B4E1", -"t c #6B98B8", -"w c #B6E0F4", -"q c #AEC9D7", -"1 c #5A89A6", -"+ c #98B3C6", -"4 c #EAF6FC", -"d c #008000", -"3 c #DEF1FA", -"= c #4CBCE3", -"f c #DB916B", -"X c #85A7BC", -"s c #D8BCA4", -"o c #749BB4", -"e c #BCD9EF", -"* c #62B4DD", -"< c #91D2EF", -"a c #E6DED2", -"0 c #E9F4FB", -" c None", -"@ c #A0BACB", -"O c #AABFCD", -"i c #6591AE", -": c #B9CBD5", -"- c #71C5E7", -"5 c #D3ECF8", -"% c #81A3B9", -"6 c #8AD0EE", -"8 c #FDFDFE", -"p c #8EA9BC", -"r c #B6D5EE", -", c #81CCEB", -". c #ACC4D3", -"; c #AFD1DE", -"7 c #EFF8FC", -"u c #C2CBDB", -"# c #C0D1DC", -"2 c #CAD6E1", -"& c #8FB0C3", -/* pixels */ -" .XooXO ", -" +@###$+% ", -" .&#*==-;@@ ", -" o:*>,<--:X ", -" 12>-345-#% ", -" 12>678392% ", -" %$*,3059q& ", -" @Oq,wwer@@ ", -" t@q22q&+ ", -" yyui+%o%p ", -" yasy d d ", -" yasfy dd dd ", -"yasfy ddddddddd", -"ysfy dd dd ", -" yy d d " -}; +/* XPM */ +static const char *const findrepl_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 42 1", +"y c #A06959", +"9 c #A7DAF2", +"$ c #B5CAD7", +"> c #35B4E1", +"t c #6B98B8", +"w c #B6E0F4", +"q c #AEC9D7", +"1 c #5A89A6", +"+ c #98B3C6", +"4 c #EAF6FC", +"d c #008000", +"3 c #DEF1FA", +"= c #4CBCE3", +"f c #DB916B", +"X c #85A7BC", +"s c #D8BCA4", +"o c #749BB4", +"e c #BCD9EF", +"* c #62B4DD", +"< c #91D2EF", +"a c #E6DED2", +"0 c #E9F4FB", +" c None", +"@ c #A0BACB", +"O c #AABFCD", +"i c #6591AE", +": c #B9CBD5", +"- c #71C5E7", +"5 c #D3ECF8", +"% c #81A3B9", +"6 c #8AD0EE", +"8 c #FDFDFE", +"p c #8EA9BC", +"r c #B6D5EE", +", c #81CCEB", +". c #ACC4D3", +"; c #AFD1DE", +"7 c #EFF8FC", +"u c #C2CBDB", +"# c #C0D1DC", +"2 c #CAD6E1", +"& c #8FB0C3", +/* pixels */ +" .XooXO ", +" +@###$+% ", +" .&#*==-;@@ ", +" o:*>,<--:X ", +" 12>-345-#% ", +" 12>678392% ", +" %$*,3059q& ", +" @Oq,wwer@@ ", +" t@q22q&+ ", +" yyui+%o%p ", +" yasy d d ", +" yasfy dd dd ", +"yasfy ddddddddd", +"ysfy dd dd ", +" yy d d " +}; diff --git a/3rdparty/wxwidgets3.0/art/floppy.xpm b/3rdparty/wxwidgets3.0/art/floppy.xpm index 0c685efbcb..f6057b14fa 100644 --- a/3rdparty/wxwidgets3.0/art/floppy.xpm +++ b/3rdparty/wxwidgets3.0/art/floppy.xpm @@ -1,39 +1,39 @@ -/* XPM */ -static const char *const floppy_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 18 1", -"& c #E3E4E6", -"+ c #FFFFFF", -". c #446A8C", -"o c #697787", -"> c #5F666D", -"* c #B2B3B3", -" c None", -", c #4B4C4D", -"= c #DCDBDA", -"$ c #1B4467", -": c #E4E9ED", -"@ c #979BA0", -"X c #203646", -"O c #215579", -"- c #545B63", -"; c #636465", -"# c #CAD6E1", -"% c #7F8286", -/* pixels */ -" .XoooooooXO ", -" .o+++++++.O ", -" .o+OOOOO+.O ", -" .o+++++++.O ", -" .o@@@@@@@.O ", -" ..........O ", -" ..#+++++#.O ", -" ..+$O+++#.O ", -" ..+$O+++#.O ", -" %&.........*% ", -"%=+++++++++++&% ", -"--------------; ", -"-:::::::::::::- ", -"-:X:XXXXXXXXX:> ", -"-*************, " -}; +/* XPM */ +static const char *const floppy_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 18 1", +"& c #E3E4E6", +"+ c #FFFFFF", +". c #446A8C", +"o c #697787", +"> c #5F666D", +"* c #B2B3B3", +" c None", +", c #4B4C4D", +"= c #DCDBDA", +"$ c #1B4467", +": c #E4E9ED", +"@ c #979BA0", +"X c #203646", +"O c #215579", +"- c #545B63", +"; c #636465", +"# c #CAD6E1", +"% c #7F8286", +/* pixels */ +" .XoooooooXO ", +" .o+++++++.O ", +" .o+OOOOO+.O ", +" .o+++++++.O ", +" .o@@@@@@@.O ", +" ..........O ", +" ..#+++++#.O ", +" ..+$O+++#.O ", +" ..+$O+++#.O ", +" %&.........*% ", +"%=+++++++++++&% ", +"--------------; ", +"-:::::::::::::- ", +"-:X:XXXXXXXXX:> ", +"-*************, " +}; diff --git a/3rdparty/wxwidgets3.0/art/folder.xpm b/3rdparty/wxwidgets3.0/art/folder.xpm index a116dcbd7b..98e52a70b8 100644 --- a/3rdparty/wxwidgets3.0/art/folder.xpm +++ b/3rdparty/wxwidgets3.0/art/folder.xpm @@ -1,43 +1,43 @@ -/* XPM */ -static const char *const folder_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 22 1", -"> c #9BACC2", -". c #547897", -"1 c #7F99B4", -"X c #D1D9E5", -"< c #EAEDF3", -"+ c #CAD2DC", -"3 c #718BA7", -"O c #BECAD9", -"$ c #E1E6EE", -"* c #F5F6F7", -", c #8DA0B9", -" c None", -"# c #D6DFE7", -"@ c #D2D9E0", -"- c #FAFCFE", -"; c #ADBACE", -"& c #EEF1F3", -"= c #F8F9FA", -"o c #B3BFD1", -"2 c #7A90AC", -": c #A2B3C5", -"% c #E5EAF1", -/* pixels */ -" ", -" ..... ", -" .XXXX. ", -" ............. ", -" .oO+@#$%&*=-. ", -" .oO+@#$%&*=-. ", -" .;oO+X#$%&*=. ", -" .:;oO+X#$%&*. ", -" .>:;oO+X#$%&. ", -" .,>:;oO+X#$<. ", -" .1,>:;oO+X#$. ", -" .21,>:;oO+X#. ", -" .321,>:;oO+X. ", -" ............. ", -" " -}; +/* XPM */ +static const char *const folder_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 22 1", +"> c #9BACC2", +". c #547897", +"1 c #7F99B4", +"X c #D1D9E5", +"< c #EAEDF3", +"+ c #CAD2DC", +"3 c #718BA7", +"O c #BECAD9", +"$ c #E1E6EE", +"* c #F5F6F7", +", c #8DA0B9", +" c None", +"# c #D6DFE7", +"@ c #D2D9E0", +"- c #FAFCFE", +"; c #ADBACE", +"& c #EEF1F3", +"= c #F8F9FA", +"o c #B3BFD1", +"2 c #7A90AC", +": c #A2B3C5", +"% c #E5EAF1", +/* pixels */ +" ", +" ..... ", +" .XXXX. ", +" ............. ", +" .oO+@#$%&*=-. ", +" .oO+@#$%&*=-. ", +" .;oO+X#$%&*=. ", +" .:;oO+X#$%&*. ", +" .>:;oO+X#$%&. ", +" .,>:;oO+X#$<. ", +" .1,>:;oO+X#$. ", +" .21,>:;oO+X#. ", +" .321,>:;oO+X. ", +" ............. ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/folder_open.xpm b/3rdparty/wxwidgets3.0/art/folder_open.xpm index dd450e73b9..154441d2a9 100644 --- a/3rdparty/wxwidgets3.0/art/folder_open.xpm +++ b/3rdparty/wxwidgets3.0/art/folder_open.xpm @@ -1,52 +1,52 @@ -/* XPM */ -static const char *const folder_open_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 31 1", -"6 c #9BACC2", -"w c #547B99", -"5 c #94A5BD", -". c #376485", -"; c #F1F4F7", -"o c #7F99B4", -"2 c #D1D9E5", -"- c #EAEDF3", -"O c #718BA7", -"0 c #65839D", -"* c #DCE2EA", -": c #F5F6F7", -"7 c #597B9A", -"X c #8DA0B9", -" c None", -"+ c #467291", -"q c #305F81", -"& c #D6DFE7", -"3 c #6A89A2", -"1 c #A8B6CA", -"= c #E4E9ED", -"> c #F8F9FA", -", c #FDFDFE", -"9 c #215579", -"8 c #7F97B0", -"@ c #B3BFD1", -"< c #7A90AC", -"$ c #C2CBDB", -"4 c #A2B3C5", -"% c #CAD6E1", -"# c #BBC4D6", -/* pixels */ -" ", -"..... ", -".XXXo. ", -".XXXXO........ ", -".XXXXXXXXXXXX. ", -".XXXXXXXXXXXX. ", -".X++++++++++++++", -".X+@#$%&*=-;:>,+", -".<.1@#$%2*=-;:23", -"..X41@#$%2*=-;3 ", -"..X561@#$%2*=-3 ", -".78X561@#$%2*%3 ", -"90<8X561@#$%23 ", -"q++++++++++++w ", -" " -}; +/* XPM */ +static const char *const folder_open_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 31 1", +"6 c #9BACC2", +"w c #547B99", +"5 c #94A5BD", +". c #376485", +"; c #F1F4F7", +"o c #7F99B4", +"2 c #D1D9E5", +"- c #EAEDF3", +"O c #718BA7", +"0 c #65839D", +"* c #DCE2EA", +": c #F5F6F7", +"7 c #597B9A", +"X c #8DA0B9", +" c None", +"+ c #467291", +"q c #305F81", +"& c #D6DFE7", +"3 c #6A89A2", +"1 c #A8B6CA", +"= c #E4E9ED", +"> c #F8F9FA", +", c #FDFDFE", +"9 c #215579", +"8 c #7F97B0", +"@ c #B3BFD1", +"< c #7A90AC", +"$ c #C2CBDB", +"4 c #A2B3C5", +"% c #CAD6E1", +"# c #BBC4D6", +/* pixels */ +" ", +"..... ", +".XXXo. ", +".XXXXO........ ", +".XXXXXXXXXXXX. ", +".XXXXXXXXXXXX. ", +".X++++++++++++++", +".X+@#$%&*=-;:>,+", +".<.1@#$%2*=-;:23", +"..X41@#$%2*=-;3 ", +"..X561@#$%2*=-3 ", +".78X561@#$%2*%3 ", +"90<8X561@#$%23 ", +"q++++++++++++w ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/forward.xpm b/3rdparty/wxwidgets3.0/art/forward.xpm index d17eef486e..81f62b0344 100644 --- a/3rdparty/wxwidgets3.0/art/forward.xpm +++ b/3rdparty/wxwidgets3.0/art/forward.xpm @@ -1,21 +1,21 @@ -/* XPM */ -static const char *const forward_xpm[] = { -"16 15 3 1", -" c None", -". c Black", -"X c Gray100", -" ", -" ", -" . ", -" .. ", -" .X. ", -" ........XX. ", -" .XXXXXXXXXX. ", -" .XXXXXXXXXXX. ", -" .XXXXXXXXXXX. ", -" .XXXXXXXXXX. ", -" ........XX. ", -" .X. ", -" .. ", -" . ", -" "}; +/* XPM */ +static const char *const forward_xpm[] = { +"16 15 3 1", +" c None", +". c Black", +"X c Gray100", +" ", +" ", +" . ", +" .. ", +" .X. ", +" ........XX. ", +" .XXXXXXXXXX. ", +" .XXXXXXXXXXX. ", +" .XXXXXXXXXXX. ", +" .XXXXXXXXXX. ", +" ........XX. ", +" .X. ", +" .. ", +" . ", +" "}; diff --git a/3rdparty/wxwidgets3.0/art/gtk/error.xpm b/3rdparty/wxwidgets3.0/art/gtk/error.xpm index 2505d3d4a8..559715c64c 100644 --- a/3rdparty/wxwidgets3.0/art/gtk/error.xpm +++ b/3rdparty/wxwidgets3.0/art/gtk/error.xpm @@ -1,58 +1,58 @@ -/* XPM */ -static const char *const error_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 4 1", -" c None", -"X c #242424", -"o c #DCDF00", -". c #C00000", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ..... ", -" ............. ", -" ................. ", -" ................... ", -" ....................... ", -" ......................... ", -" ........................... ", -" ...........................X ", -" .............................X ", -" ............................... ", -" ...............................X ", -" .................................X ", -" .................................X ", -" .................................XX ", -" ...ooooooooooooooooooooooooooo...XX ", -" ....ooooooooooooooooooooooooooo....X ", -" ....ooooooooooooooooooooooooooo....X ", -" ....ooooooooooooooooooooooooooo....XX ", -" ....ooooooooooooooooooooooooooo....XX ", -" ....ooooooooooooooooooooooooooo....XX ", -" ...ooooooooooooooooooooooooooo...XXX ", -" ...ooooooooooooooooooooooooooo...XXX ", -" .................................XX ", -" .................................XX ", -" ...............................XXX ", -" ...............................XXX ", -" .............................XXX ", -" ...........................XXXX ", -" ...........................XXX ", -" .........................XXX ", -" .......................XXXX ", -" X...................XXXXX ", -" X.................XXXXX ", -" X.............XXXXX ", -" XXXX.....XXXXXXXX ", -" XXXXXXXXXXXXX ", -" XXXXX ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char *const error_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 4 1", +" c None", +"X c #242424", +"o c #DCDF00", +". c #C00000", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ..... ", +" ............. ", +" ................. ", +" ................... ", +" ....................... ", +" ......................... ", +" ........................... ", +" ...........................X ", +" .............................X ", +" ............................... ", +" ...............................X ", +" .................................X ", +" .................................X ", +" .................................XX ", +" ...ooooooooooooooooooooooooooo...XX ", +" ....ooooooooooooooooooooooooooo....X ", +" ....ooooooooooooooooooooooooooo....X ", +" ....ooooooooooooooooooooooooooo....XX ", +" ....ooooooooooooooooooooooooooo....XX ", +" ....ooooooooooooooooooooooooooo....XX ", +" ...ooooooooooooooooooooooooooo...XXX ", +" ...ooooooooooooooooooooooooooo...XXX ", +" .................................XX ", +" .................................XX ", +" ...............................XXX ", +" ...............................XXX ", +" .............................XXX ", +" ...........................XXXX ", +" ...........................XXX ", +" .........................XXX ", +" .......................XXXX ", +" X...................XXXXX ", +" X.................XXXXX ", +" X.............XXXXX ", +" XXXX.....XXXXXXXX ", +" XXXXXXXXXXXXX ", +" XXXXX ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/gtk/info.xpm b/3rdparty/wxwidgets3.0/art/gtk/info.xpm index 8883955448..fe32e61982 100644 --- a/3rdparty/wxwidgets3.0/art/gtk/info.xpm +++ b/3rdparty/wxwidgets3.0/art/gtk/info.xpm @@ -1,63 +1,63 @@ -/* XPM */ -static const char *const info_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 9 1", -"$ c Black", -"O c #FFFFFF", -"@ c #808080", -"+ c #000080", -"o c #E8EB01", -" c None", -"X c #FFFF40", -"# c #C0C0C0", -". c #ABAD01", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ..... ", -" ..XXXXX.. ", -" ..XXXXXXXXo.. ", -" .XXXOXXXXXXXoo. ", -" .XOOXXX+XXXXXo. ", -" .XOOOXX+++XXXXoo. ", -" .XOOXXX+++XXXXXo. ", -" .XOOOXXX+++XXXXXXo. ", -" .XOOXXXX+++XXXXXXo. ", -" .XXXXXXX+++XXXXXXX. ", -" .XXXXXXX+++XXXXXXo. ", -" .XXXXXXX+++XXXXXoo. ", -" .XXXXXX+++XXXXXo. ", -" .XXXXXXX+XXXXXXo. ", -" .XXXXXXXXXXXXo. ", -" .XXXXX+++XXXoo. ", -" .XXXX+++XXoo. ", -" .XXXXXXXXo. ", -" ..XXXXXXo.. ", -" .XXXXXo.. ", -" @#######@ ", -" @@@@@@@@@ ", -" @#######@ ", -" @@@@@@@@@ ", -" @#######@ ", -" @@@@@@@ ", -" ### ", -" $$$ ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char *const info_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 9 1", +"$ c Black", +"O c #FFFFFF", +"@ c #808080", +"+ c #000080", +"o c #E8EB01", +" c None", +"X c #FFFF40", +"# c #C0C0C0", +". c #ABAD01", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ..... ", +" ..XXXXX.. ", +" ..XXXXXXXXo.. ", +" .XXXOXXXXXXXoo. ", +" .XOOXXX+XXXXXo. ", +" .XOOOXX+++XXXXoo. ", +" .XOOXXX+++XXXXXo. ", +" .XOOOXXX+++XXXXXXo. ", +" .XOOXXXX+++XXXXXXo. ", +" .XXXXXXX+++XXXXXXX. ", +" .XXXXXXX+++XXXXXXo. ", +" .XXXXXXX+++XXXXXoo. ", +" .XXXXXX+++XXXXXo. ", +" .XXXXXXX+XXXXXXo. ", +" .XXXXXXXXXXXXo. ", +" .XXXXX+++XXXoo. ", +" .XXXX+++XXoo. ", +" .XXXXXXXXo. ", +" ..XXXXXXo.. ", +" .XXXXXo.. ", +" @#######@ ", +" @@@@@@@@@ ", +" @#######@ ", +" @@@@@@@@@ ", +" @#######@ ", +" @@@@@@@ ", +" ### ", +" $$$ ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/gtk/question.xpm b/3rdparty/wxwidgets3.0/art/gtk/question.xpm index 701f4457ba..cb0001ec80 100644 --- a/3rdparty/wxwidgets3.0/art/gtk/question.xpm +++ b/3rdparty/wxwidgets3.0/art/gtk/question.xpm @@ -1,75 +1,75 @@ -/* XPM */ -static const char *const question_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 21 1", -". c Black", -"> c #696969", -"O c #1F1F00", -"+ c #181818", -"o c #F6F900", -"; c #3F3F00", -"$ c #111111", -" c None", -"& c #202020", -"X c #AAAA00", -"@ c #949400", -": c #303030", -"1 c #383838", -"% c #2A2A00", -", c #404040", -"= c #B4B400", -"- c #484848", -"# c #151500", -"< c #9F9F00", -"2 c #6A6A00", -"* c #353500", -/* pixels */ -" ", -" ", -" ", -" ", -" ......... ", -" ...XXXXXXX.. ", -" ..XXXXoooooXXXO+ ", -" ..XXooooooooooooX@.. ", -" ..XoooooooooooooooXX#. ", -" $%XoooooooooooooooooXX#. ", -" &.XoooooooXXXXXXooooooXX.. ", -" .XooooooXX.$...$XXoooooX*. ", -" $.XoooooX%.$ .*oooooo=.. ", -" .XooooooX.. -.XoooooX.. ", -" .XoooooX..+ .XoooooX;. ", -" ...XXXX..: .XoooooX;. ", -" ........ >.XoooooX;. ", -" +.XoooooX.. ", -" ,.Xoooooo<.. ", -" 1#XooooooXO.. ", -" &#XooooooX2.. ", -" $%XooooooXX.. ", -" $%XooooooXX.. ", -" $%XooooooXX.. ", -" &.XooooooXX.. ", -" .XooooooXX.. ", -" &.XoooooXX.. ", -" ..XooooXX.. ", -" ..XooooX... ", -" ..XXooXX..& ", -" ...XXXXX.. ", -" ........ ", -" ", -" ", -" ....... ", -" ..XXXXX.. ", -" ..XXoooXX.. ", -" ..XoooooX.. ", -" ..XoooooX.. ", -" ..XXoooXX.. ", -" ..XXXXX.. ", -" ....... ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char *const question_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 21 1", +". c Black", +"> c #696969", +"O c #1F1F00", +"+ c #181818", +"o c #F6F900", +"; c #3F3F00", +"$ c #111111", +" c None", +"& c #202020", +"X c #AAAA00", +"@ c #949400", +": c #303030", +"1 c #383838", +"% c #2A2A00", +", c #404040", +"= c #B4B400", +"- c #484848", +"# c #151500", +"< c #9F9F00", +"2 c #6A6A00", +"* c #353500", +/* pixels */ +" ", +" ", +" ", +" ", +" ......... ", +" ...XXXXXXX.. ", +" ..XXXXoooooXXXO+ ", +" ..XXooooooooooooX@.. ", +" ..XoooooooooooooooXX#. ", +" $%XoooooooooooooooooXX#. ", +" &.XoooooooXXXXXXooooooXX.. ", +" .XooooooXX.$...$XXoooooX*. ", +" $.XoooooX%.$ .*oooooo=.. ", +" .XooooooX.. -.XoooooX.. ", +" .XoooooX..+ .XoooooX;. ", +" ...XXXX..: .XoooooX;. ", +" ........ >.XoooooX;. ", +" +.XoooooX.. ", +" ,.Xoooooo<.. ", +" 1#XooooooXO.. ", +" &#XooooooX2.. ", +" $%XooooooXX.. ", +" $%XooooooXX.. ", +" $%XooooooXX.. ", +" &.XooooooXX.. ", +" .XooooooXX.. ", +" &.XoooooXX.. ", +" ..XooooXX.. ", +" ..XooooX... ", +" ..XXooXX..& ", +" ...XXXXX.. ", +" ........ ", +" ", +" ", +" ....... ", +" ..XXXXX.. ", +" ..XXoooXX.. ", +" ..XoooooX.. ", +" ..XoooooX.. ", +" ..XXoooXX.. ", +" ..XXXXX.. ", +" ....... ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/gtk/warning.xpm b/3rdparty/wxwidgets3.0/art/gtk/warning.xpm index 35e60316c3..58aee153fe 100644 --- a/3rdparty/wxwidgets3.0/art/gtk/warning.xpm +++ b/3rdparty/wxwidgets3.0/art/gtk/warning.xpm @@ -1,63 +1,63 @@ -/* XPM */ -static const char *const warning_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 9 1", -"@ c Black", -"o c #A6A800", -"+ c #8A8C00", -"$ c #B8BA00", -" c None", -"O c #6E7000", -"X c #DCDF00", -". c #C00000", -"# c #373800", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" . ", -" ... ", -" ... ", -" ..... ", -" ...X.. ", -" ..XXX.. ", -" ...XXX... ", -" ..XXXXX.. ", -" ..XXXXXX... ", -" ...XXoO+XX.. ", -" ..XXXO@#XXX.. ", -" ..XXXXO@#XXX... ", -" ...XXXXO@#XXXX.. ", -" ..XXXXXO@#XXXX... ", -" ...XXXXXo@OXXXXX.. ", -" ...XXXXXXo@OXXXXXX.. ", -" ..XXXXXXX$@OXXXXXX... ", -" ...XXXXXXXX@XXXXXXXX.. ", -" ...XXXXXXXXXXXXXXXXXX... ", -" ..XXXXXXXXXXOXXXXXXXXX.. ", -" ...XXXXXXXXXO@#XXXXXXXXX.. ", -" ..XXXXXXXXXXX#XXXXXXXXXX... ", -" ...XXXXXXXXXXXXXXXXXXXXXXX.. ", -" ...XXXXXXXXXXXXXXXXXXXXXXXX... ", -" .............................. ", -" .............................. ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char *const warning_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 9 1", +"@ c Black", +"o c #A6A800", +"+ c #8A8C00", +"$ c #B8BA00", +" c None", +"O c #6E7000", +"X c #DCDF00", +". c #C00000", +"# c #373800", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . ", +" ... ", +" ... ", +" ..... ", +" ...X.. ", +" ..XXX.. ", +" ...XXX... ", +" ..XXXXX.. ", +" ..XXXXXX... ", +" ...XXoO+XX.. ", +" ..XXXO@#XXX.. ", +" ..XXXXO@#XXX... ", +" ...XXXXO@#XXXX.. ", +" ..XXXXXO@#XXXX... ", +" ...XXXXXo@OXXXXX.. ", +" ...XXXXXXo@OXXXXXX.. ", +" ..XXXXXXX$@OXXXXXX... ", +" ...XXXXXXXX@XXXXXXXX.. ", +" ...XXXXXXXXXXXXXXXXXX... ", +" ..XXXXXXXXXXOXXXXXXXXX.. ", +" ...XXXXXXXXXO@#XXXXXXXXX.. ", +" ..XXXXXXXXXXX#XXXXXXXXXX... ", +" ...XXXXXXXXXXXXXXXXXXXXXXX.. ", +" ...XXXXXXXXXXXXXXXXXXXXXXXX... ", +" .............................. ", +" .............................. ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/harddisk.xpm b/3rdparty/wxwidgets3.0/art/harddisk.xpm index 3151a7f308..d21ebf3c3b 100644 --- a/3rdparty/wxwidgets3.0/art/harddisk.xpm +++ b/3rdparty/wxwidgets3.0/art/harddisk.xpm @@ -1,60 +1,60 @@ -/* XPM */ -static const char *const harddisk_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 39 1", -"7 c #E3E4E6", -"4 c #FFFFFF", -"5 c #839CB5", -". c #547897", -"1 c #4D7492", -"@ c #376485", -"o c #7A92A3", -"u c #D1D9E5", -"y c #446A8C", -"i c #51B03D", -"> c #CAD2DC", -"O c #718BA7", -"2 c #65839D", -"6 c #DCE2EA", -"0 c #C3C5C8", -"9 c #F5F6F7", -": c #EBEBEC", -"< c #597B9A", -"t c #C6CCD3", -" c None", -"* c #DFE0E2", -"e c #467291", -"a c #526E8B", -", c #7393AB", -"p c #130A0B", -"# c #AABFCD", -"r c #B4C4D3", -"; c #CFCFD0", -"X c #6F90A6", -"+ c #6A89A2", -"- c #D2D3D4", -"= c #DCDBDA", -"w c #E4E9ED", -"q c #C6C8CA", -"% c #215579", -"$ c #E7E7E7", -"3 c #7F97B0", -"8 c #C0D1DC", -"& c #5D7C93", -/* pixels */ -" ", -" .XoooXO+@ ", -" #$$%%%%$$$X ", -" &$*==-;$$$& ", -" &:>+,<1234o5 ", -" ###+67;;78242 ", -" &4,49*0q*9we4. ", -" &4+49*,,*9wo4. ", -"&4%r,67;;782t%4.", -"&44468rrrr84444,", -"y11111111111111e", -"1uu1:::::::::::1", -"1uu1::::::::ip:1", -"auu&:::::::::::1", -"1111111111111111" -}; +/* XPM */ +static const char *const harddisk_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 39 1", +"7 c #E3E4E6", +"4 c #FFFFFF", +"5 c #839CB5", +". c #547897", +"1 c #4D7492", +"@ c #376485", +"o c #7A92A3", +"u c #D1D9E5", +"y c #446A8C", +"i c #51B03D", +"> c #CAD2DC", +"O c #718BA7", +"2 c #65839D", +"6 c #DCE2EA", +"0 c #C3C5C8", +"9 c #F5F6F7", +": c #EBEBEC", +"< c #597B9A", +"t c #C6CCD3", +" c None", +"* c #DFE0E2", +"e c #467291", +"a c #526E8B", +", c #7393AB", +"p c #130A0B", +"# c #AABFCD", +"r c #B4C4D3", +"; c #CFCFD0", +"X c #6F90A6", +"+ c #6A89A2", +"- c #D2D3D4", +"= c #DCDBDA", +"w c #E4E9ED", +"q c #C6C8CA", +"% c #215579", +"$ c #E7E7E7", +"3 c #7F97B0", +"8 c #C0D1DC", +"& c #5D7C93", +/* pixels */ +" ", +" .XoooXO+@ ", +" #$$%%%%$$$X ", +" &$*==-;$$$& ", +" &:>+,<1234o5 ", +" ###+67;;78242 ", +" &4,49*0q*9we4. ", +" &4+49*,,*9wo4. ", +"&4%r,67;;782t%4.", +"&44468rrrr84444,", +"y11111111111111e", +"1uu1:::::::::::1", +"1uu1::::::::ip:1", +"auu&:::::::::::1", +"1111111111111111" +}; diff --git a/3rdparty/wxwidgets3.0/art/helpicon.xpm b/3rdparty/wxwidgets3.0/art/helpicon.xpm index 356c452399..9b4cd44450 100644 --- a/3rdparty/wxwidgets3.0/art/helpicon.xpm +++ b/3rdparty/wxwidgets3.0/art/helpicon.xpm @@ -1,44 +1,44 @@ -/* XPM */ -static const char *const helpicon_xpm[] = { -/* columns rows colors chars-per-pixel */ -"32 32 6 1", -" c Gray0", -". c Blue", -"X c #808080808080", -"o c #c0c0c0c0c0c0", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++XXXXXXXX+++++++++++++", -"++++++++XXXoOOOOOOoXXX++++++++++", -"++++++XXoOOOOOOOOOOOOoXX++++++++", -"+++++XoOOOOOOOOOOOOOOOOoX+++++++", -"++++XOOOOOOOOOOOOOOOOOOOO ++++++", -"+++XOOOOOOOo......oOOOOOOO +++++", -"++XOOOOOOOo.oOO....oOOOOOOO ++++", -"+XoOOOOOOO..OOOO....OOOOOOOo +++", -"+XOOOOOOOO....OO....OOOOOOOO X++", -"XoOOOOOOOO....Oo....OOOOOOOOo X+", -"XOOOOOOOOOo..oO....OOOOOOOOOO X+", -"XOOOOOOOOOOOOOo...OOOOOOOOOOO XX", -"XOOOOOOOOOOOOO...OOOOOOOOOOOO XX", -"XOOOOOOOOOOOOO..oOOOOOOOOOOOO XX", -"XOOOOOOOOOOOOO..OOOOOOOOOOOOO XX", -"XoOOOOOOOOOOOOOOOOOOOOOOOOOOo XX", -"+XOOOOOOOOOOOo..oOOOOOOOOOOO XXX", -"+XoOOOOOOOOOO....OOOOOOOOOOo XXX", -"++XOOOOOOOOOO....OOOOOOOOOO XXX+", -"+++ OOOOOOOOOo..oOOOOOOOOO XXXX+", -"++++ OOOOOOOOOOOOOOOOOOOO XXXX++", -"+++++ oOOOOOOOOOOOOOOOOo XXXX+++", -"++++++ oOOOOOOOOOOOOo XXXX++++", -"+++++++X oOOOOOOo XXXXX+++++", -"++++++++XXX oOOO XXXXXXX++++++", -"++++++++++XXXX OOO XXXXX++++++++", -"+++++++++++++X OOO XX+++++++++++", -"+++++++++++++++ OO XX+++++++++++", -"++++++++++++++++ O XX+++++++++++", -"+++++++++++++++++ XX+++++++++++", -"++++++++++++++++++XXX+++++++++++", -"+++++++++++++++++++XX+++++++++++" -}; +/* XPM */ +static const char *const helpicon_xpm[] = { +/* columns rows colors chars-per-pixel */ +"32 32 6 1", +" c Gray0", +". c Blue", +"X c #808080808080", +"o c #c0c0c0c0c0c0", +"O c Gray100", +"+ c None", +/* pixels */ +"+++++++++++XXXXXXXX+++++++++++++", +"++++++++XXXoOOOOOOoXXX++++++++++", +"++++++XXoOOOOOOOOOOOOoXX++++++++", +"+++++XoOOOOOOOOOOOOOOOOoX+++++++", +"++++XOOOOOOOOOOOOOOOOOOOO ++++++", +"+++XOOOOOOOo......oOOOOOOO +++++", +"++XOOOOOOOo.oOO....oOOOOOOO ++++", +"+XoOOOOOOO..OOOO....OOOOOOOo +++", +"+XOOOOOOOO....OO....OOOOOOOO X++", +"XoOOOOOOOO....Oo....OOOOOOOOo X+", +"XOOOOOOOOOo..oO....OOOOOOOOOO X+", +"XOOOOOOOOOOOOOo...OOOOOOOOOOO XX", +"XOOOOOOOOOOOOO...OOOOOOOOOOOO XX", +"XOOOOOOOOOOOOO..oOOOOOOOOOOOO XX", +"XOOOOOOOOOOOOO..OOOOOOOOOOOOO XX", +"XoOOOOOOOOOOOOOOOOOOOOOOOOOOo XX", +"+XOOOOOOOOOOOo..oOOOOOOOOOOO XXX", +"+XoOOOOOOOOOO....OOOOOOOOOOo XXX", +"++XOOOOOOOOOO....OOOOOOOOOO XXX+", +"+++ OOOOOOOOOo..oOOOOOOOOO XXXX+", +"++++ OOOOOOOOOOOOOOOOOOOO XXXX++", +"+++++ oOOOOOOOOOOOOOOOOo XXXX+++", +"++++++ oOOOOOOOOOOOOo XXXX++++", +"+++++++X oOOOOOOo XXXXX+++++", +"++++++++XXX oOOO XXXXXXX++++++", +"++++++++++XXXX OOO XXXXX++++++++", +"+++++++++++++X OOO XX+++++++++++", +"+++++++++++++++ OO XX+++++++++++", +"++++++++++++++++ O XX+++++++++++", +"+++++++++++++++++ XX+++++++++++", +"++++++++++++++++++XXX+++++++++++", +"+++++++++++++++++++XX+++++++++++" +}; diff --git a/3rdparty/wxwidgets3.0/art/home.xpm b/3rdparty/wxwidgets3.0/art/home.xpm index d246b1d72e..d0da8d26b8 100644 --- a/3rdparty/wxwidgets3.0/art/home.xpm +++ b/3rdparty/wxwidgets3.0/art/home.xpm @@ -1,24 +1,24 @@ -/* XPM */ -static const char *const home_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -". c Black", -"X c #FFFFFF", -" c None", -/* pixels */ -" .... ", -" .XXXX. ", -" .XXXXXX. ", -" .XXXXXXXX. ", -" .XXXXXXXXXX. ", -" .............. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .X.....X....X. ", -" .X. .X. .X. ", -" .X. .X. .X. ", -" .X.....X. .X. ", -" .XXXXXXX. .X. ", -" ......... ... " -}; +/* XPM */ +static const char *const home_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 3 1", +". c Black", +"X c #FFFFFF", +" c None", +/* pixels */ +" .... ", +" .XXXX. ", +" .XXXXXX. ", +" .XXXXXXXX. ", +" .XXXXXXXXXX. ", +" .............. ", +" .XXXXXXXXXXXX. ", +" .XXXXXXXXXXXX. ", +" .XXXXXXXXXXXX. ", +" .X.....X....X. ", +" .X. .X. .X. ", +" .X. .X. .X. ", +" .X.....X. .X. ", +" .XXXXXXX. .X. ", +" ......... ... " +}; diff --git a/3rdparty/wxwidgets3.0/art/htmbook.xpm b/3rdparty/wxwidgets3.0/art/htmbook.xpm index e49b4685f9..d0456ee6d5 100644 --- a/3rdparty/wxwidgets3.0/art/htmbook.xpm +++ b/3rdparty/wxwidgets3.0/art/htmbook.xpm @@ -1,25 +1,25 @@ -/* XPM */ -static const char *const htmbook_xpm[] = { -"16 16 6 1", -" c None", -". c Black", -"X c #000080", -"o c #c0c0c0", -"O c #808080", -"+ c Gray100", -" ", -" .. ", -" ..XX. ", -" ..XXXXX. ", -" ..XXXXXXXX. ", -".oXXXXXXXXXX. ", -".XoXXXXXXXXXX. ", -".XXoXXXXXXXXXX. ", -".XXXoXXXXXXXXX..", -".XXXXoXXXXXX..O ", -" .XXXXoXXX..O+O ", -" .XXXXo..O++o..", -" .XXX.O+++o.. ", -" .XX.o+o.. ", -" .X.o.. ", -" ... "}; +/* XPM */ +static const char *const htmbook_xpm[] = { +"16 16 6 1", +" c None", +". c Black", +"X c #000080", +"o c #c0c0c0", +"O c #808080", +"+ c Gray100", +" ", +" .. ", +" ..XX. ", +" ..XXXXX. ", +" ..XXXXXXXX. ", +".oXXXXXXXXXX. ", +".XoXXXXXXXXXX. ", +".XXoXXXXXXXXXX. ", +".XXXoXXXXXXXXX..", +".XXXXoXXXXXX..O ", +" .XXXXoXXX..O+O ", +" .XXXXo..O++o..", +" .XXX.O+++o.. ", +" .XX.o+o.. ", +" .X.o.. ", +" ... "}; diff --git a/3rdparty/wxwidgets3.0/art/htmfoldr.xpm b/3rdparty/wxwidgets3.0/art/htmfoldr.xpm index dacef687b1..4f84e8aeff 100644 --- a/3rdparty/wxwidgets3.0/art/htmfoldr.xpm +++ b/3rdparty/wxwidgets3.0/art/htmfoldr.xpm @@ -1,25 +1,25 @@ -/* XPM */ -static const char *const htmfoldr_xpm[] = { -"16 16 6 1", -" c None", -". c Black", -"X c #000080", -"o c #c0c0c0", -"O c #808080", -"+ c Gray100", -" ", -" .. ", -" ..XX. ", -" ..XXXXX. ", -" ..XXXXXXXX. ", -".oXXXXXXXXXX. ", -".XoXXXXXXXXXX. ", -".XXoXXXXXXXXXX. ", -".XXXoXXXXXXXXX..", -".XXXXoXXXXXX..O ", -" .XXXXoXXX..O+O ", -" .XXXXo..O++o..", -" .XXX.O+++o.. ", -" .XX.o+o.. ", -" .X.o.. ", -" ... "}; +/* XPM */ +static const char *const htmfoldr_xpm[] = { +"16 16 6 1", +" c None", +". c Black", +"X c #000080", +"o c #c0c0c0", +"O c #808080", +"+ c Gray100", +" ", +" .. ", +" ..XX. ", +" ..XXXXX. ", +" ..XXXXXXXX. ", +".oXXXXXXXXXX. ", +".XoXXXXXXXXXX. ", +".XXoXXXXXXXXXX. ", +".XXXoXXXXXXXXX..", +".XXXXoXXXXXX..O ", +" .XXXXoXXX..O+O ", +" .XXXXo..O++o..", +" .XXX.O+++o.. ", +" .XX.o+o.. ", +" .X.o.. ", +" ... "}; diff --git a/3rdparty/wxwidgets3.0/art/htmoptns.xpm b/3rdparty/wxwidgets3.0/art/htmoptns.xpm index 8806749ea4..0d178ab2e1 100644 --- a/3rdparty/wxwidgets3.0/art/htmoptns.xpm +++ b/3rdparty/wxwidgets3.0/art/htmoptns.xpm @@ -1,20 +1,20 @@ -/* XPM */ -static const char *const htmoptns_xpm[] = { -"16 15 2 1", -" c None", -". c #000000", -" ", -" .. ", -" ... ", -" .... ", -" . ... ", -" .. ... ", -" . .. ", -" .. ... ", -" . .. ", -" ......... ", -" .. ... ", -" . ... ", -" .. ... ", -" .... ....... ", -" "}; +/* XPM */ +static const char *const htmoptns_xpm[] = { +"16 15 2 1", +" c None", +". c #000000", +" ", +" .. ", +" ... ", +" .... ", +" . ... ", +" .. ... ", +" . .. ", +" .. ... ", +" . .. ", +" ......... ", +" .. ... ", +" . ... ", +" .. ... ", +" .... ....... ", +" "}; diff --git a/3rdparty/wxwidgets3.0/art/htmpage.xpm b/3rdparty/wxwidgets3.0/art/htmpage.xpm index e4fa3fbc71..f7d9f472ab 100644 --- a/3rdparty/wxwidgets3.0/art/htmpage.xpm +++ b/3rdparty/wxwidgets3.0/art/htmpage.xpm @@ -1,23 +1,23 @@ -/* XPM */ -static const char *const htmpage_xpm[] = { -"16 16 4 1", -" c None", -". c #808080", -"X c Gray100", -"o c Black", -" ", -" .......... ", -" .XXXXXXXX.. ", -" .XXXXXXXXooo ", -" .X......XXXo ", -" .XXXXXXXXXXo ", -" .X........Xo ", -" .XXXXXXXXXXo ", -" .X........Xo ", -" .XXXXXXXXXXo ", -" .X........Xo ", -" .XXXXXXXXXXo ", -" .X........Xo ", -" .XXXXXXXXXXo ", -" .XXXXXXXXXXo ", -" oooooooooooo "}; +/* XPM */ +static const char *const htmpage_xpm[] = { +"16 16 4 1", +" c None", +". c #808080", +"X c Gray100", +"o c Black", +" ", +" .......... ", +" .XXXXXXXX.. ", +" .XXXXXXXXooo ", +" .X......XXXo ", +" .XXXXXXXXXXo ", +" .X........Xo ", +" .XXXXXXXXXXo ", +" .X........Xo ", +" .XXXXXXXXXXo ", +" .X........Xo ", +" .XXXXXXXXXXo ", +" .X........Xo ", +" .XXXXXXXXXXo ", +" .XXXXXXXXXXo ", +" oooooooooooo "}; diff --git a/3rdparty/wxwidgets3.0/art/htmsidep.xpm b/3rdparty/wxwidgets3.0/art/htmsidep.xpm index 30f6a92392..19bb863730 100644 --- a/3rdparty/wxwidgets3.0/art/htmsidep.xpm +++ b/3rdparty/wxwidgets3.0/art/htmsidep.xpm @@ -1,27 +1,27 @@ -/* XPM */ -static const char *const htmsidep_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 6 1", -". c Black", -"X c #FFFFFF", -"+ c #808080", -" c None", -"O c #0000C0", -"o c #C0C0C0", -/* pixels */ -" ", -" .............. ", -" .XXXX.ooooooo. ", -" .XOXX.oo...oo. ", -" .XXOX.ooooooo. ", -" .OOOO.o...+.o. ", -" .XXOX.ooooooo. ", -" .XOXX.ooooooo. ", -" .XXXX.o..+ooo. ", -" .XXOX.ooooooo. ", -" .XOXX.o...+.o. ", -" .OOOO.ooooooo. ", -" .XOXX.o.+...o. ", -" .XXOX.ooooooo. ", -" .............. " -}; +/* XPM */ +static const char *const htmsidep_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 6 1", +". c Black", +"X c #FFFFFF", +"+ c #808080", +" c None", +"O c #0000C0", +"o c #C0C0C0", +/* pixels */ +" ", +" .............. ", +" .XXXX.ooooooo. ", +" .XOXX.oo...oo. ", +" .XXOX.ooooooo. ", +" .OOOO.o...+.o. ", +" .XXOX.ooooooo. ", +" .XOXX.ooooooo. ", +" .XXXX.o..+ooo. ", +" .XXOX.ooooooo. ", +" .XOXX.o...+.o. ", +" .OOOO.ooooooo. ", +" .XOXX.o.+...o. ", +" .XXOX.ooooooo. ", +" .............. " +}; diff --git a/3rdparty/wxwidgets3.0/art/listview.xpm b/3rdparty/wxwidgets3.0/art/listview.xpm index 30f748abb4..2d8afc4198 100644 --- a/3rdparty/wxwidgets3.0/art/listview.xpm +++ b/3rdparty/wxwidgets3.0/art/listview.xpm @@ -1,25 +1,25 @@ -/* XPM */ -static const char *const listview_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 4 1", -" c Black", -". c #FFFFFF", -"X c #000084", -"o c #848484", -/* pixels */ -" ", -" .............. ", -" .XXX.......... ", -" .XXX. o o . ", -" .XXX.......... ", -" .............. ", -" .XXX.......... ", -" .XXX. o . ", -" .XXX.......... ", -" .............. ", -" .XXX.......... ", -" .XXX. o o . ", -" .XXX.......... ", -" .............. ", -" " -}; +/* XPM */ +static const char *const listview_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 4 1", +" c Black", +". c #FFFFFF", +"X c #000084", +"o c #848484", +/* pixels */ +" ", +" .............. ", +" .XXX.......... ", +" .XXX. o o . ", +" .XXX.......... ", +" .............. ", +" .XXX.......... ", +" .XXX. o . ", +" .XXX.......... ", +" .............. ", +" .XXX.......... ", +" .XXX. o o . ", +" .XXX.......... ", +" .............. ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/missimg.xpm b/3rdparty/wxwidgets3.0/art/missimg.xpm index 80eecbcf2a..599aca7896 100644 --- a/3rdparty/wxwidgets3.0/art/missimg.xpm +++ b/3rdparty/wxwidgets3.0/art/missimg.xpm @@ -1,43 +1,43 @@ -/* XPM */ -static const char *const missimg_xpm[] = { -/* columns rows colors chars-per-pixel */ -"32 32 5 1", -"X c Black", -"o c #FFFFFF", -" c None", -". c #C0C0C0", -"O c #E0E0E0", -/* pixels */ -" .............................X ", -" .ooooooooooooooooooooooooooooX ", -" .ooooooooooooooooooooooooooooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOXOOOOOOOOOOOOOOOOooX ", -" XXXOOOOOXX XOOOOOOOOOOOOOOOooX ", -" XXXXX XOOOOOOOOOOOOOOooX ", -" XOOOXXXOOOOOOOooX ", -" XXX XXOOOOOooX ", -" XOOOOooX ", -" . XOOOooX ", -" .. XXOooX ", -" .o.. XooX ", -" .ooO... XXX ", -" .ooOOOO.......... ", -" .ooOOOOOOOOOOOOOO.. ", -" .ooOOOOOOOOOOOOOOOO.. ", -" .ooOOOOOOOOOOOOOOOOOO......... ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", -" .ooooooooooooooooooooooooooooX ", -" .ooooooooooooooooooooooooooooX ", -" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " -}; +/* XPM */ +static const char *const missimg_xpm[] = { +/* columns rows colors chars-per-pixel */ +"32 32 5 1", +"X c Black", +"o c #FFFFFF", +" c None", +". c #C0C0C0", +"O c #E0E0E0", +/* pixels */ +" .............................X ", +" .ooooooooooooooooooooooooooooX ", +" .ooooooooooooooooooooooooooooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOXOOOOOOOOOOOOOOOOooX ", +" XXXOOOOOXX XOOOOOOOOOOOOOOOooX ", +" XXXXX XOOOOOOOOOOOOOOooX ", +" XOOOXXXOOOOOOOooX ", +" XXX XXOOOOOooX ", +" XOOOOooX ", +" . XOOOooX ", +" .. XXOooX ", +" .o.. XooX ", +" .ooO... XXX ", +" .ooOOOO.......... ", +" .ooOOOOOOOOOOOOOO.. ", +" .ooOOOOOOOOOOOOOOOO.. ", +" .ooOOOOOOOOOOOOOOOOOO......... ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ", +" .ooooooooooooooooooooooooooooX ", +" .ooooooooooooooooooooooooooooX ", +" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " +}; diff --git a/3rdparty/wxwidgets3.0/art/motif/error.xpm b/3rdparty/wxwidgets3.0/art/motif/error.xpm index 2505d3d4a8..559715c64c 100644 --- a/3rdparty/wxwidgets3.0/art/motif/error.xpm +++ b/3rdparty/wxwidgets3.0/art/motif/error.xpm @@ -1,58 +1,58 @@ -/* XPM */ -static const char *const error_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 4 1", -" c None", -"X c #242424", -"o c #DCDF00", -". c #C00000", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ..... ", -" ............. ", -" ................. ", -" ................... ", -" ....................... ", -" ......................... ", -" ........................... ", -" ...........................X ", -" .............................X ", -" ............................... ", -" ...............................X ", -" .................................X ", -" .................................X ", -" .................................XX ", -" ...ooooooooooooooooooooooooooo...XX ", -" ....ooooooooooooooooooooooooooo....X ", -" ....ooooooooooooooooooooooooooo....X ", -" ....ooooooooooooooooooooooooooo....XX ", -" ....ooooooooooooooooooooooooooo....XX ", -" ....ooooooooooooooooooooooooooo....XX ", -" ...ooooooooooooooooooooooooooo...XXX ", -" ...ooooooooooooooooooooooooooo...XXX ", -" .................................XX ", -" .................................XX ", -" ...............................XXX ", -" ...............................XXX ", -" .............................XXX ", -" ...........................XXXX ", -" ...........................XXX ", -" .........................XXX ", -" .......................XXXX ", -" X...................XXXXX ", -" X.................XXXXX ", -" X.............XXXXX ", -" XXXX.....XXXXXXXX ", -" XXXXXXXXXXXXX ", -" XXXXX ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char *const error_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 4 1", +" c None", +"X c #242424", +"o c #DCDF00", +". c #C00000", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ..... ", +" ............. ", +" ................. ", +" ................... ", +" ....................... ", +" ......................... ", +" ........................... ", +" ...........................X ", +" .............................X ", +" ............................... ", +" ...............................X ", +" .................................X ", +" .................................X ", +" .................................XX ", +" ...ooooooooooooooooooooooooooo...XX ", +" ....ooooooooooooooooooooooooooo....X ", +" ....ooooooooooooooooooooooooooo....X ", +" ....ooooooooooooooooooooooooooo....XX ", +" ....ooooooooooooooooooooooooooo....XX ", +" ....ooooooooooooooooooooooooooo....XX ", +" ...ooooooooooooooooooooooooooo...XXX ", +" ...ooooooooooooooooooooooooooo...XXX ", +" .................................XX ", +" .................................XX ", +" ...............................XXX ", +" ...............................XXX ", +" .............................XXX ", +" ...........................XXXX ", +" ...........................XXX ", +" .........................XXX ", +" .......................XXXX ", +" X...................XXXXX ", +" X.................XXXXX ", +" X.............XXXXX ", +" XXXX.....XXXXXXXX ", +" XXXXXXXXXXXXX ", +" XXXXX ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/motif/info.xpm b/3rdparty/wxwidgets3.0/art/motif/info.xpm index 8883955448..fe32e61982 100644 --- a/3rdparty/wxwidgets3.0/art/motif/info.xpm +++ b/3rdparty/wxwidgets3.0/art/motif/info.xpm @@ -1,63 +1,63 @@ -/* XPM */ -static const char *const info_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 9 1", -"$ c Black", -"O c #FFFFFF", -"@ c #808080", -"+ c #000080", -"o c #E8EB01", -" c None", -"X c #FFFF40", -"# c #C0C0C0", -". c #ABAD01", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ..... ", -" ..XXXXX.. ", -" ..XXXXXXXXo.. ", -" .XXXOXXXXXXXoo. ", -" .XOOXXX+XXXXXo. ", -" .XOOOXX+++XXXXoo. ", -" .XOOXXX+++XXXXXo. ", -" .XOOOXXX+++XXXXXXo. ", -" .XOOXXXX+++XXXXXXo. ", -" .XXXXXXX+++XXXXXXX. ", -" .XXXXXXX+++XXXXXXo. ", -" .XXXXXXX+++XXXXXoo. ", -" .XXXXXX+++XXXXXo. ", -" .XXXXXXX+XXXXXXo. ", -" .XXXXXXXXXXXXo. ", -" .XXXXX+++XXXoo. ", -" .XXXX+++XXoo. ", -" .XXXXXXXXo. ", -" ..XXXXXXo.. ", -" .XXXXXo.. ", -" @#######@ ", -" @@@@@@@@@ ", -" @#######@ ", -" @@@@@@@@@ ", -" @#######@ ", -" @@@@@@@ ", -" ### ", -" $$$ ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char *const info_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 9 1", +"$ c Black", +"O c #FFFFFF", +"@ c #808080", +"+ c #000080", +"o c #E8EB01", +" c None", +"X c #FFFF40", +"# c #C0C0C0", +". c #ABAD01", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ..... ", +" ..XXXXX.. ", +" ..XXXXXXXXo.. ", +" .XXXOXXXXXXXoo. ", +" .XOOXXX+XXXXXo. ", +" .XOOOXX+++XXXXoo. ", +" .XOOXXX+++XXXXXo. ", +" .XOOOXXX+++XXXXXXo. ", +" .XOOXXXX+++XXXXXXo. ", +" .XXXXXXX+++XXXXXXX. ", +" .XXXXXXX+++XXXXXXo. ", +" .XXXXXXX+++XXXXXoo. ", +" .XXXXXX+++XXXXXo. ", +" .XXXXXXX+XXXXXXo. ", +" .XXXXXXXXXXXXo. ", +" .XXXXX+++XXXoo. ", +" .XXXX+++XXoo. ", +" .XXXXXXXXo. ", +" ..XXXXXXo.. ", +" .XXXXXo.. ", +" @#######@ ", +" @@@@@@@@@ ", +" @#######@ ", +" @@@@@@@@@ ", +" @#######@ ", +" @@@@@@@ ", +" ### ", +" $$$ ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/motif/question.xpm b/3rdparty/wxwidgets3.0/art/motif/question.xpm index 701f4457ba..cb0001ec80 100644 --- a/3rdparty/wxwidgets3.0/art/motif/question.xpm +++ b/3rdparty/wxwidgets3.0/art/motif/question.xpm @@ -1,75 +1,75 @@ -/* XPM */ -static const char *const question_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 21 1", -". c Black", -"> c #696969", -"O c #1F1F00", -"+ c #181818", -"o c #F6F900", -"; c #3F3F00", -"$ c #111111", -" c None", -"& c #202020", -"X c #AAAA00", -"@ c #949400", -": c #303030", -"1 c #383838", -"% c #2A2A00", -", c #404040", -"= c #B4B400", -"- c #484848", -"# c #151500", -"< c #9F9F00", -"2 c #6A6A00", -"* c #353500", -/* pixels */ -" ", -" ", -" ", -" ", -" ......... ", -" ...XXXXXXX.. ", -" ..XXXXoooooXXXO+ ", -" ..XXooooooooooooX@.. ", -" ..XoooooooooooooooXX#. ", -" $%XoooooooooooooooooXX#. ", -" &.XoooooooXXXXXXooooooXX.. ", -" .XooooooXX.$...$XXoooooX*. ", -" $.XoooooX%.$ .*oooooo=.. ", -" .XooooooX.. -.XoooooX.. ", -" .XoooooX..+ .XoooooX;. ", -" ...XXXX..: .XoooooX;. ", -" ........ >.XoooooX;. ", -" +.XoooooX.. ", -" ,.Xoooooo<.. ", -" 1#XooooooXO.. ", -" &#XooooooX2.. ", -" $%XooooooXX.. ", -" $%XooooooXX.. ", -" $%XooooooXX.. ", -" &.XooooooXX.. ", -" .XooooooXX.. ", -" &.XoooooXX.. ", -" ..XooooXX.. ", -" ..XooooX... ", -" ..XXooXX..& ", -" ...XXXXX.. ", -" ........ ", -" ", -" ", -" ....... ", -" ..XXXXX.. ", -" ..XXoooXX.. ", -" ..XoooooX.. ", -" ..XoooooX.. ", -" ..XXoooXX.. ", -" ..XXXXX.. ", -" ....... ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char *const question_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 21 1", +". c Black", +"> c #696969", +"O c #1F1F00", +"+ c #181818", +"o c #F6F900", +"; c #3F3F00", +"$ c #111111", +" c None", +"& c #202020", +"X c #AAAA00", +"@ c #949400", +": c #303030", +"1 c #383838", +"% c #2A2A00", +", c #404040", +"= c #B4B400", +"- c #484848", +"# c #151500", +"< c #9F9F00", +"2 c #6A6A00", +"* c #353500", +/* pixels */ +" ", +" ", +" ", +" ", +" ......... ", +" ...XXXXXXX.. ", +" ..XXXXoooooXXXO+ ", +" ..XXooooooooooooX@.. ", +" ..XoooooooooooooooXX#. ", +" $%XoooooooooooooooooXX#. ", +" &.XoooooooXXXXXXooooooXX.. ", +" .XooooooXX.$...$XXoooooX*. ", +" $.XoooooX%.$ .*oooooo=.. ", +" .XooooooX.. -.XoooooX.. ", +" .XoooooX..+ .XoooooX;. ", +" ...XXXX..: .XoooooX;. ", +" ........ >.XoooooX;. ", +" +.XoooooX.. ", +" ,.Xoooooo<.. ", +" 1#XooooooXO.. ", +" &#XooooooX2.. ", +" $%XooooooXX.. ", +" $%XooooooXX.. ", +" $%XooooooXX.. ", +" &.XooooooXX.. ", +" .XooooooXX.. ", +" &.XoooooXX.. ", +" ..XooooXX.. ", +" ..XooooX... ", +" ..XXooXX..& ", +" ...XXXXX.. ", +" ........ ", +" ", +" ", +" ....... ", +" ..XXXXX.. ", +" ..XXoooXX.. ", +" ..XoooooX.. ", +" ..XoooooX.. ", +" ..XXoooXX.. ", +" ..XXXXX.. ", +" ....... ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/motif/warning.xpm b/3rdparty/wxwidgets3.0/art/motif/warning.xpm index 35e60316c3..58aee153fe 100644 --- a/3rdparty/wxwidgets3.0/art/motif/warning.xpm +++ b/3rdparty/wxwidgets3.0/art/motif/warning.xpm @@ -1,63 +1,63 @@ -/* XPM */ -static const char *const warning_xpm[] = { -/* columns rows colors chars-per-pixel */ -"48 48 9 1", -"@ c Black", -"o c #A6A800", -"+ c #8A8C00", -"$ c #B8BA00", -" c None", -"O c #6E7000", -"X c #DCDF00", -". c #C00000", -"# c #373800", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" . ", -" ... ", -" ... ", -" ..... ", -" ...X.. ", -" ..XXX.. ", -" ...XXX... ", -" ..XXXXX.. ", -" ..XXXXXX... ", -" ...XXoO+XX.. ", -" ..XXXO@#XXX.. ", -" ..XXXXO@#XXX... ", -" ...XXXXO@#XXXX.. ", -" ..XXXXXO@#XXXX... ", -" ...XXXXXo@OXXXXX.. ", -" ...XXXXXXo@OXXXXXX.. ", -" ..XXXXXXX$@OXXXXXX... ", -" ...XXXXXXXX@XXXXXXXX.. ", -" ...XXXXXXXXXXXXXXXXXX... ", -" ..XXXXXXXXXXOXXXXXXXXX.. ", -" ...XXXXXXXXXO@#XXXXXXXXX.. ", -" ..XXXXXXXXXXX#XXXXXXXXXX... ", -" ...XXXXXXXXXXXXXXXXXXXXXXX.. ", -" ...XXXXXXXXXXXXXXXXXXXXXXXX... ", -" .............................. ", -" .............................. ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" " -}; +/* XPM */ +static const char *const warning_xpm[] = { +/* columns rows colors chars-per-pixel */ +"48 48 9 1", +"@ c Black", +"o c #A6A800", +"+ c #8A8C00", +"$ c #B8BA00", +" c None", +"O c #6E7000", +"X c #DCDF00", +". c #C00000", +"# c #373800", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . ", +" ... ", +" ... ", +" ..... ", +" ...X.. ", +" ..XXX.. ", +" ...XXX... ", +" ..XXXXX.. ", +" ..XXXXXX... ", +" ...XXoO+XX.. ", +" ..XXXO@#XXX.. ", +" ..XXXXO@#XXX... ", +" ...XXXXO@#XXXX.. ", +" ..XXXXXO@#XXXX... ", +" ...XXXXXo@OXXXXX.. ", +" ...XXXXXXo@OXXXXXX.. ", +" ..XXXXXXX$@OXXXXXX... ", +" ...XXXXXXXX@XXXXXXXX.. ", +" ...XXXXXXXXXXXXXXXXXX... ", +" ..XXXXXXXXXXOXXXXXXXXX.. ", +" ...XXXXXXXXXO@#XXXXXXXXX.. ", +" ..XXXXXXXXXXX#XXXXXXXXXX... ", +" ...XXXXXXXXXXXXXXXXXXXXXXX.. ", +" ...XXXXXXXXXXXXXXXXXXXXXXXX... ", +" .............................. ", +" .............................. ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/new.xpm b/3rdparty/wxwidgets3.0/art/new.xpm index 6a0b133350..15826c8d22 100644 --- a/3rdparty/wxwidgets3.0/art/new.xpm +++ b/3rdparty/wxwidgets3.0/art/new.xpm @@ -1,50 +1,50 @@ -/* XPM */ -static const char *const new_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 29 1", -"* c #97C4E7", -"- c #72A8D2", -": c #FFFFFF", -"9 c #839CB5", -"o c #6B98B8", -"X c #5A89A6", -"# c #3A749C", -", c #D1E5F5", -"0 c #85A7BC", -"$ c #C3DDF1", -"8 c #749BB4", -"; c #5F9BC8", -" c None", -"+ c #538DB3", -"= c #85BBE2", -"3 c #EFF6FC", -"O c #6591AE", -"5 c #F7FBFD", -"7 c #FAFCFE", -"< c #DAEAF7", -"4 c #E9F3FA", -"6 c #FDFDFE", -"1 c #E2EFF8", -". c #8EA9BC", -"% c #B6D5EE", -"& c #A5CCEA", -"> c #ACE95B", -"2 c #F4F9FD", -"@ c #4581AA", -/* pixels */ -" .XoOO+@#. ", -" .$$%&*=O-; ", -" @@@@$%&*O:*o ", -" @>>@$$%&O::*o ", -"@@@>>@@@$%OOoO+ ", -"@>>>>>>@,$%&*=+ ", -"@>>>>>>@<,$%&*+ ", -"@@@>>@@@1<,$%&O ", -" @>>@2341<,$%O ", -" @@@@52341<,$o ", -" .:6752341<,8 ", -" .::6752341<8 ", -" .:::67523419 ", -" .::::6752340 ", -" ............ " -}; +/* XPM */ +static const char *const new_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 29 1", +"* c #97C4E7", +"- c #72A8D2", +": c #FFFFFF", +"9 c #839CB5", +"o c #6B98B8", +"X c #5A89A6", +"# c #3A749C", +", c #D1E5F5", +"0 c #85A7BC", +"$ c #C3DDF1", +"8 c #749BB4", +"; c #5F9BC8", +" c None", +"+ c #538DB3", +"= c #85BBE2", +"3 c #EFF6FC", +"O c #6591AE", +"5 c #F7FBFD", +"7 c #FAFCFE", +"< c #DAEAF7", +"4 c #E9F3FA", +"6 c #FDFDFE", +"1 c #E2EFF8", +". c #8EA9BC", +"% c #B6D5EE", +"& c #A5CCEA", +"> c #ACE95B", +"2 c #F4F9FD", +"@ c #4581AA", +/* pixels */ +" .XoOO+@#. ", +" .$$%&*=O-; ", +" @@@@$%&*O:*o ", +" @>>@$$%&O::*o ", +"@@@>>@@@$%OOoO+ ", +"@>>>>>>@,$%&*=+ ", +"@>>>>>>@<,$%&*+ ", +"@@@>>@@@1<,$%&O ", +" @>>@2341<,$%O ", +" @@@@52341<,$o ", +" .:6752341<,8 ", +" .::6752341<8 ", +" .:::67523419 ", +" .::::6752340 ", +" ............ " +}; diff --git a/3rdparty/wxwidgets3.0/art/new_dir.xpm b/3rdparty/wxwidgets3.0/art/new_dir.xpm index d100eea753..f49515e71b 100644 --- a/3rdparty/wxwidgets3.0/art/new_dir.xpm +++ b/3rdparty/wxwidgets3.0/art/new_dir.xpm @@ -1,43 +1,43 @@ -/* XPM */ -static const char *const new_dir_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 22 1", -"X c Black", -"> c #9BACC2", -"o c #547897", -"1 c #7F99B4", -"O c #D1D9E5", -"< c #EAEDF3", -"# c #CAD2DC", -"3 c #718BA7", -"@ c #BECAD9", -"& c #E1E6EE", -"; c #F5F6F7", -". c #FFFF00", -", c #8DA0B9", -" c None", -"% c #D6DFE7", -"$ c #D2D9E0", -"- c #ADBACE", -"= c #EEF1F3", -"+ c #B3BFD1", -"2 c #7A90AC", -": c #A2B3C5", -"* c #E5EAF1", -/* pixels */ -" .X .XX.", -" ooooo .X.X. ", -" oOOOOo XX...XX", -" oooooooo.......", -" o+@#$%&*XX...XX", -" o+@#$%&*=.X.X. ", -" o-+@#O%&.X;.X .", -" o:-+@#O%&*=;o ", -" o>:-+@#O%&*=o ", -" o,>:-+@#O%&:-+@#O%&o ", -" o21,>:-+@#O%o ", -" o321,>:-+@#Oo ", -" ooooooooooooo ", -" " -}; +/* XPM */ +static const char *const new_dir_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 22 1", +"X c Black", +"> c #9BACC2", +"o c #547897", +"1 c #7F99B4", +"O c #D1D9E5", +"< c #EAEDF3", +"# c #CAD2DC", +"3 c #718BA7", +"@ c #BECAD9", +"& c #E1E6EE", +"; c #F5F6F7", +". c #FFFF00", +", c #8DA0B9", +" c None", +"% c #D6DFE7", +"$ c #D2D9E0", +"- c #ADBACE", +"= c #EEF1F3", +"+ c #B3BFD1", +"2 c #7A90AC", +": c #A2B3C5", +"* c #E5EAF1", +/* pixels */ +" .X .XX.", +" ooooo .X.X. ", +" oOOOOo XX...XX", +" oooooooo.......", +" o+@#$%&*XX...XX", +" o+@#$%&*=.X.X. ", +" o-+@#O%&.X;.X .", +" o:-+@#O%&*=;o ", +" o>:-+@#O%&*=o ", +" o,>:-+@#O%&:-+@#O%&o ", +" o21,>:-+@#O%o ", +" o321,>:-+@#Oo ", +" ooooooooooooo ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/paste.xpm b/3rdparty/wxwidgets3.0/art/paste.xpm index 2458378f86..a2155a3e9b 100644 --- a/3rdparty/wxwidgets3.0/art/paste.xpm +++ b/3rdparty/wxwidgets3.0/art/paste.xpm @@ -1,46 +1,46 @@ -/* XPM */ -static const char *const paste_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 25 1", -"< c #FEECE4", -"> c #FEE3D7", -"O c #FFFFFF", -"o c #7B767D", -"% c #F79586", -"& c #CAE1F3", -"@ c #F08B62", -"# c #FCCBB8", -"- c #FDD8C9", -"4 c #FFF8F4", -"5 c #FFF5F0", -" c None", -"$ c #F8AA8F", -", c #EFF6FC", -"1 c #F7FBFD", -"2 c #FAFCFE", -"; c #DAEAF7", -": c #E9F3FA", -"6 c #FFFAF8", -". c #3C78A6", -"3 c #FFF1ED", -"X c #9B8687", -"+ c #FBBCA4", -"* c #B6D5EE", -"= c #F4F9FD", -/* pixels */ -" ...... ", -" .XoOOOOoo. ", -".+XOOOOOOX@. ", -".+XXXXXXXX@. ", -".#++$$%@..... ", -".##++$$%.&*.=. ", -".-##++$$.;&.==. ", -".--##++$.:;.... ", -".>--##++.,:;&*. ", -".<>--##+.1,:;&. ", -".<<>--##.21,:;. ", -".3<<>--#.O21=:. ", -".45<<>--....... ", -".6453<>----. ", -"............ " -}; +/* XPM */ +static const char *const paste_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 25 1", +"< c #FEECE4", +"> c #FEE3D7", +"O c #FFFFFF", +"o c #7B767D", +"% c #F79586", +"& c #CAE1F3", +"@ c #F08B62", +"# c #FCCBB8", +"- c #FDD8C9", +"4 c #FFF8F4", +"5 c #FFF5F0", +" c None", +"$ c #F8AA8F", +", c #EFF6FC", +"1 c #F7FBFD", +"2 c #FAFCFE", +"; c #DAEAF7", +": c #E9F3FA", +"6 c #FFFAF8", +". c #3C78A6", +"3 c #FFF1ED", +"X c #9B8687", +"+ c #FBBCA4", +"* c #B6D5EE", +"= c #F4F9FD", +/* pixels */ +" ...... ", +" .XoOOOOoo. ", +".+XOOOOOOX@. ", +".+XXXXXXXX@. ", +".#++$$%@..... ", +".##++$$%.&*.=. ", +".-##++$$.;&.==. ", +".--##++$.:;.... ", +".>--##++.,:;&*. ", +".<>--##+.1,:;&. ", +".<<>--##.21,:;. ", +".3<<>--#.O21=:. ", +".45<<>--....... ", +".6453<>----. ", +"............ " +}; diff --git a/3rdparty/wxwidgets3.0/art/print.xpm b/3rdparty/wxwidgets3.0/art/print.xpm index dbdfe6b4d9..9afe540134 100644 --- a/3rdparty/wxwidgets3.0/art/print.xpm +++ b/3rdparty/wxwidgets3.0/art/print.xpm @@ -1,60 +1,60 @@ -/* XPM */ -static const char *const print_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 39 1", -"< c #E3E4E6", -"+ c #C3C3C4", -"i c #FFFFFF", -": c #74879B", -"# c #5A89A6", -"a c #F1F4F7", -"r c #5A809C", -"@ c #BDCCD9", -"e c #7A92A4", -"% c #3F6F93", -"t c #9FA2A6", -"3 c #939495", -"w c #5F666D", -"9 c #65839E", -"5 c #4A7291", -"$ c #4B7F9E", -" c None", -"O c #DFE0E2", -"o c #F3F3F3", -"; c #84A5BB", -"& c #467291", -". c #7897AD", -"* c #407598", -"4 c #CFCFD0", -"7 c #6F90A6", -"y c #6A89A2", -"0 c #AAADB2", -"1 c #D2D3D4", -"u c #4F7592", -", c #BCBDBE", -"p c #57778E", -"q c #979BA0", -"2 c #ABABAC", -"- c #E7E7E7", -"= c #D6DEE6", -"> c #9FA0A0", -"8 c #829EB5", -"X c #8FB0C3", -"6 c #5D7C93", -/* pixels */ -" .XXXXXXXX ", -" .oooooooX ", -" .OOOOOOOX ", -" .+++++++X ", -"@##$%&&&&&%*##@ ", -"$=-;:>,<123$-=$ ", -".44.5678.96$44. ", -"7,,,,,,,,,,,,,7 ", -"900qwwwwwwwe009 ", -"rtt9ryyyyyyuttr ", -"6qq6iiiiiii%qq6 ", -"633paiiiiii%336 ", -"XXX*iiiiiii%XXX ", -" 6iiiiiii% ", -" $XXXXXXX# " -}; +/* XPM */ +static const char *const print_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 39 1", +"< c #E3E4E6", +"+ c #C3C3C4", +"i c #FFFFFF", +": c #74879B", +"# c #5A89A6", +"a c #F1F4F7", +"r c #5A809C", +"@ c #BDCCD9", +"e c #7A92A4", +"% c #3F6F93", +"t c #9FA2A6", +"3 c #939495", +"w c #5F666D", +"9 c #65839E", +"5 c #4A7291", +"$ c #4B7F9E", +" c None", +"O c #DFE0E2", +"o c #F3F3F3", +"; c #84A5BB", +"& c #467291", +". c #7897AD", +"* c #407598", +"4 c #CFCFD0", +"7 c #6F90A6", +"y c #6A89A2", +"0 c #AAADB2", +"1 c #D2D3D4", +"u c #4F7592", +", c #BCBDBE", +"p c #57778E", +"q c #979BA0", +"2 c #ABABAC", +"- c #E7E7E7", +"= c #D6DEE6", +"> c #9FA0A0", +"8 c #829EB5", +"X c #8FB0C3", +"6 c #5D7C93", +/* pixels */ +" .XXXXXXXX ", +" .oooooooX ", +" .OOOOOOOX ", +" .+++++++X ", +"@##$%&&&&&%*##@ ", +"$=-;:>,<123$-=$ ", +".44.5678.96$44. ", +"7,,,,,,,,,,,,,7 ", +"900qwwwwwwwe009 ", +"rtt9ryyyyyyuttr ", +"6qq6iiiiiii%qq6 ", +"633paiiiiii%336 ", +"XXX*iiiiiii%XXX ", +" 6iiiiiii% ", +" $XXXXXXX# " +}; diff --git a/3rdparty/wxwidgets3.0/art/quit.xpm b/3rdparty/wxwidgets3.0/art/quit.xpm index 885bbd0fa4..df8abd675d 100644 --- a/3rdparty/wxwidgets3.0/art/quit.xpm +++ b/3rdparty/wxwidgets3.0/art/quit.xpm @@ -1,90 +1,90 @@ -/* XPM */ -static const char *const quit_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 69 1", -"@ c Black", -"i c #9AEA53", -"D c #7E9BB1", -"H c #839FB4", -", c #B7C7D3", -"8 c #BCCBD6", -"7 c #C1CFDA", -"v c #92ABBD", -"- c #D0DBE2", -"O c #547897", -"+ c #376485", -"L c #7090A8", -"t c #AEC0CE", -"g c #B3C4D1", -"S c #84A0B4", -"G c #89A4B8", -"> c #BDCCD7", -"F c #5A809C", -"2 c #C2D0DA", -"k c #93ACBE", -"= c #D6E0E6", -"* c #446A8C", -"z c #A5B9C8", -"# c #DEE5EB", -"0 c #AFC1CE", -"r c #B4C5D2", -"p c #B9C9D5", -"A c #8AA5B8", -"M c #92AABD", -"j c #A6BAC9", -"K c #7796AC", -"l c #ABBECC", -"o c #E4EAEF", -"9 c #B5C6D2", -" c None", -"; c #C9D6DF", -"X c #305F81", -"m c #98AFC0", -"V c #9DB3C3", -"% c #D1DBE3", -"u c #A2B7C6", -"y c #A7BBCA", -"h c #ACBFCD", -"4 c #B6C7D3", -"w c #C0CFD9", -"d c #982106", -"B c #85A0B5", -"6 c #C8D4DE", -"c c #99B0C1", -"x c #9EB4C4", -"$ c #D7E0E7", -"q c #A8BCCA", -"s c #ADC0CD", -"3 c #BCCCD7", -"N c #8BA5B9", -": c #C4D1DB", -"1 c #C9D5DE", -"f c #9AB1C2", -"n c #A4B9C8", -"a c #B3C5D1", -". c #215579", -"J c #7D9AB0", -"& c #829EB5", -"e c #BBCAD6", -"b c #8CA6B9", -"Z c #91AABC", -"C c #96AEC0", -"< c #CFDAE2", -"5 c #AFC2CF", -/* pixels */ -" ..XXXXXXXXXX ", -" XoO+X@@@@@@X ", -" X#$%&X*@@@@X ", -" X=-;:>,X@@@X ", -" X<12345X@@@X ", -" X67890qX@XXX ", -" XwertyuX@XiX ", -" XpasddfX++iiX ", -" XghjddkXiiiiiX ", -" XlzxcvbXiiiiiiX", -" XnxmMNBXiiiiiX ", -" XVCZASDXXXiiX ", -" XXFGHJKX XiX ", -" FXXFLX XX ", -" XX* " -}; +/* XPM */ +static const char *const quit_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 69 1", +"@ c Black", +"i c #9AEA53", +"D c #7E9BB1", +"H c #839FB4", +", c #B7C7D3", +"8 c #BCCBD6", +"7 c #C1CFDA", +"v c #92ABBD", +"- c #D0DBE2", +"O c #547897", +"+ c #376485", +"L c #7090A8", +"t c #AEC0CE", +"g c #B3C4D1", +"S c #84A0B4", +"G c #89A4B8", +"> c #BDCCD7", +"F c #5A809C", +"2 c #C2D0DA", +"k c #93ACBE", +"= c #D6E0E6", +"* c #446A8C", +"z c #A5B9C8", +"# c #DEE5EB", +"0 c #AFC1CE", +"r c #B4C5D2", +"p c #B9C9D5", +"A c #8AA5B8", +"M c #92AABD", +"j c #A6BAC9", +"K c #7796AC", +"l c #ABBECC", +"o c #E4EAEF", +"9 c #B5C6D2", +" c None", +"; c #C9D6DF", +"X c #305F81", +"m c #98AFC0", +"V c #9DB3C3", +"% c #D1DBE3", +"u c #A2B7C6", +"y c #A7BBCA", +"h c #ACBFCD", +"4 c #B6C7D3", +"w c #C0CFD9", +"d c #982106", +"B c #85A0B5", +"6 c #C8D4DE", +"c c #99B0C1", +"x c #9EB4C4", +"$ c #D7E0E7", +"q c #A8BCCA", +"s c #ADC0CD", +"3 c #BCCCD7", +"N c #8BA5B9", +": c #C4D1DB", +"1 c #C9D5DE", +"f c #9AB1C2", +"n c #A4B9C8", +"a c #B3C5D1", +". c #215579", +"J c #7D9AB0", +"& c #829EB5", +"e c #BBCAD6", +"b c #8CA6B9", +"Z c #91AABC", +"C c #96AEC0", +"< c #CFDAE2", +"5 c #AFC2CF", +/* pixels */ +" ..XXXXXXXXXX ", +" XoO+X@@@@@@X ", +" X#$%&X*@@@@X ", +" X=-;:>,X@@@X ", +" X<12345X@@@X ", +" X67890qX@XXX ", +" XwertyuX@XiX ", +" XpasddfX++iiX ", +" XghjddkXiiiiiX ", +" XlzxcvbXiiiiiiX", +" XnxmMNBXiiiiiX ", +" XVCZASDXXXiiX ", +" XXFGHJKX XiX ", +" FXXFLX XX ", +" XX* " +}; diff --git a/3rdparty/wxwidgets3.0/art/redo.xpm b/3rdparty/wxwidgets3.0/art/redo.xpm index 84ed3553ca..d20afdcc8c 100644 --- a/3rdparty/wxwidgets3.0/art/redo.xpm +++ b/3rdparty/wxwidgets3.0/art/redo.xpm @@ -1,58 +1,58 @@ -/* XPM */ -static const char *const redo_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 37 1", -"4 c #9BACC2", -"; c #4C7398", -"3 c #547B99", -"* c #547897", -"# c #5A89A6", -"8 c #3A749C", -"5 c #5A809C", -", c #7F99B4", -"& c #3F6F93", -"9 c #85A7BC", -"+ c #749BB4", -"> c #718BA7", -"e c #A5B3C8", -"w c #BECAD9", -": c #65839D", -"u c #E1E6EE", -"o c #236289", -"r c #ADBED2", -"= c #597B9A", -"2 c #8DA0B9", -" c None", -"% c #467291", -"1 c #7393AB", -"i c #4C809F", -"- c #A0BACB", -"O c #6591AE", -"X c #407598", -"6 c #6F90A6", -"t c #D2D9E0", -"7 c #ADBACE", -"@ c #326A8F", -"0 c #467A9C", -". c #ACC4D3", -"< c #7F97B0", -"y c #B3BFD1", -"q c #A2B3C5", -"$ c #8FB0C3", -/* pixels */ -" .XoooO ", -" +o@@@@@o# +", -" $@%%&@&%%&@ +o", -" X*=@+-+@*=;@#&@", -" @:=+ @=:=*:@", -" &>:$ @:>>>@", -" &,,,,&", -" +123 @<2222&", -" X44X #@56<44X", -" O1748 .9#&o", -" 0qwe8 ", -" 8rty8 ", -" 8wu+ ", -" i## ", -" " -}; +/* XPM */ +static const char *const redo_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 37 1", +"4 c #9BACC2", +"; c #4C7398", +"3 c #547B99", +"* c #547897", +"# c #5A89A6", +"8 c #3A749C", +"5 c #5A809C", +", c #7F99B4", +"& c #3F6F93", +"9 c #85A7BC", +"+ c #749BB4", +"> c #718BA7", +"e c #A5B3C8", +"w c #BECAD9", +": c #65839D", +"u c #E1E6EE", +"o c #236289", +"r c #ADBED2", +"= c #597B9A", +"2 c #8DA0B9", +" c None", +"% c #467291", +"1 c #7393AB", +"i c #4C809F", +"- c #A0BACB", +"O c #6591AE", +"X c #407598", +"6 c #6F90A6", +"t c #D2D9E0", +"7 c #ADBACE", +"@ c #326A8F", +"0 c #467A9C", +". c #ACC4D3", +"< c #7F97B0", +"y c #B3BFD1", +"q c #A2B3C5", +"$ c #8FB0C3", +/* pixels */ +" .XoooO ", +" +o@@@@@o# +", +" $@%%&@&%%&@ +o", +" X*=@+-+@*=;@#&@", +" @:=+ @=:=*:@", +" &>:$ @:>>>@", +" &,,,,&", +" +123 @<2222&", +" X44X #@56<44X", +" O1748 .9#&o", +" 0qwe8 ", +" 8rty8 ", +" 8wu+ ", +" i## ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/removable.xpm b/3rdparty/wxwidgets3.0/art/removable.xpm index e066fd4df7..5b1d46b7dd 100644 --- a/3rdparty/wxwidgets3.0/art/removable.xpm +++ b/3rdparty/wxwidgets3.0/art/removable.xpm @@ -1,44 +1,44 @@ -/* XPM */ -static const char *const removable_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 23 1", -"@ c #C3C3C4", -"4 c #FFFFFF", -"o c #D5D6D8", -"> c #7A92A3", -". c #8497A5", -"% c #ACAEB2", -"2 c #4A7898", -": c #DCE2EA", -", c #F5F6F7", -"= c #EBEBEC", -"$ c #B7B7B8", -" c None", -"X c #DFE0E2", -"* c #A6A8AD", -"1 c #4C809F", -"3 c #407598", -"O c #CFCFD0", -"; c #9EA2A8", -"# c #BCBDBE", -"+ c #C6C8CA", -"- c #979BA0", -"& c #E7E7E7", -"< c #8FB0C3", -/* pixels */ -" ......... ", -" .XoO+@#$%. ", -" .XoO+@#$%. ", -" .&XoO+@#$%*. ", -" .&XoO+@#$%*. ", -" .=&XoO+@#$%*-. ", -" .=&XoO+@#$%*;. ", -".:=&XoO+@#$%*;>.", -".,=&XoO+@#$%*;-.", -"<..............<", -"<,=&XoO+@#$%%%%.", -" c #7A92A3", +". c #8497A5", +"% c #ACAEB2", +"2 c #4A7898", +": c #DCE2EA", +", c #F5F6F7", +"= c #EBEBEC", +"$ c #B7B7B8", +" c None", +"X c #DFE0E2", +"* c #A6A8AD", +"1 c #4C809F", +"3 c #407598", +"O c #CFCFD0", +"; c #9EA2A8", +"# c #BCBDBE", +"+ c #C6C8CA", +"- c #979BA0", +"& c #E7E7E7", +"< c #8FB0C3", +/* pixels */ +" ......... ", +" .XoO+@#$%. ", +" .XoO+@#$%. ", +" .&XoO+@#$%*. ", +" .&XoO+@#$%*. ", +" .=&XoO+@#$%*-. ", +" .=&XoO+@#$%*;. ", +".:=&XoO+@#$%*;>.", +".,=&XoO+@#$%*;-.", +"<..............<", +"<,=&XoO+@#$%%%%.", +" c #718BA7", -"0 c #A5B3C8", -"q c #BECAD9", -": c #65839D", -"u c #E1E6EE", -"X c #236289", -"y c #ADBED2", -"= c #597B9A", -"1 c #8DA0B9", -" c None", -"% c #467291", -"3 c #7393AB", -"i c #4C809F", -"; c #A0BACB", -". c #6591AE", -"o c #407598", -"5 c #6F90A6", -"t c #D2D9E0", -"9 c #ADBACE", -"# c #326A8F", -"e c #467A9C", -"O c #ACC4D3", -"< c #7F97B0", -"r c #B3BFD1", -"w c #A2B3C5", -"& c #8FB0C3", -/* pixels */ -" .XXXoO ", -"+ @X#####X+ ", -"X+ #$%%$#$%%#& ", -"#$@#*=-#+;+#=-o ", -"#:-=:=# +=:# ", -"#>>>:# &:>$ ", -"$,,,>o o<,$ ", -"$1111<# 213+ ", -"o44<56#@ o44o ", -"X$@7O 8493. ", -" 80qwe ", -" 8rty8 ", -" +uq8 ", -" @@i ", -" " -}; +/* XPM */ +static const char *const undo_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 37 1", +"4 c #9BACC2", +"* c #4C7398", +"2 c #547B99", +"- c #547897", +"@ c #5A89A6", +"8 c #3A749C", +"6 c #5A809C", +", c #7F99B4", +"$ c #3F6F93", +"7 c #85A7BC", +"+ c #749BB4", +"> c #718BA7", +"0 c #A5B3C8", +"q c #BECAD9", +": c #65839D", +"u c #E1E6EE", +"X c #236289", +"y c #ADBED2", +"= c #597B9A", +"1 c #8DA0B9", +" c None", +"% c #467291", +"3 c #7393AB", +"i c #4C809F", +"; c #A0BACB", +". c #6591AE", +"o c #407598", +"5 c #6F90A6", +"t c #D2D9E0", +"9 c #ADBACE", +"# c #326A8F", +"e c #467A9C", +"O c #ACC4D3", +"< c #7F97B0", +"r c #B3BFD1", +"w c #A2B3C5", +"& c #8FB0C3", +/* pixels */ +" .XXXoO ", +"+ @X#####X+ ", +"X+ #$%%$#$%%#& ", +"#$@#*=-#+;+#=-o ", +"#:-=:=# +=:# ", +"#>>>:# &:>$ ", +"$,,,>o o<,$ ", +"$1111<# 213+ ", +"o44<56#@ o44o ", +"X$@7O 8493. ", +" 80qwe ", +" 8rty8 ", +" +uq8 ", +" @@i ", +" " +}; diff --git a/3rdparty/wxwidgets3.0/art/up.xpm b/3rdparty/wxwidgets3.0/art/up.xpm index f29ed3d386..a93009f95c 100644 --- a/3rdparty/wxwidgets3.0/art/up.xpm +++ b/3rdparty/wxwidgets3.0/art/up.xpm @@ -1,21 +1,21 @@ -/* XPM */ -static const char *const up_xpm[] = { -"16 15 3 1", -" c None", -". c Black", -"X c Gray100", -" ", -" .. ", -" .XX. ", -" .XXXX. ", -" .XXXXXX. ", -" .XXXXXXXX. ", -" ....XXXX.... ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" ...... ", -" "}; +/* XPM */ +static const char *const up_xpm[] = { +"16 15 3 1", +" c None", +". c Black", +"X c Gray100", +" ", +" .. ", +" .XX. ", +" .XXXX. ", +" .XXXXXX. ", +" .XXXXXXXX. ", +" ....XXXX.... ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" .XXXX. ", +" ...... ", +" "}; diff --git a/3rdparty/wxwidgets3.0/art/wxwin16x16.xpm b/3rdparty/wxwidgets3.0/art/wxwin16x16.xpm index 119185329a..ed1848ea75 100644 --- a/3rdparty/wxwidgets3.0/art/wxwin16x16.xpm +++ b/3rdparty/wxwidgets3.0/art/wxwin16x16.xpm @@ -1,161 +1,161 @@ -/* XPM */ -static const char *const wxwin16x16_xpm[] = { -"16 16 142 2", -" c None", -". c #7171C0", -"+ c #7D7DC7", -"@ c #8181CE", -"# c #7979CE", -"$ c #7171CE", -"% c #6868CD", -"& c #5050C0", -"* c #7C7CCB", -"= c #D3D3FC", -"- c #C0C0FF", -"; c #B1B1FF", -"> c #A4A4FF", -", c #9696FF", -"' c #6B6BE3", -") c #3E3EC0", -"! c #7B7BD3", -"~ c #CFCFFF", -"{ c #A7A7FF", -"] c #8989FF", -"^ c #7B7BFF", -"/ c #5E5EEB", -"( c #3333BF", -"_ c #6969D3", -": c #BEBEFF", -"< c #8E8EFF", -"[ c #5E5EFF", -"} c #4C4CFD", -"| c #6464C6", -"1 c #A4A478", -"2 c #BFBF63", -"3 c #BFBF5C", -"4 c #BFBF56", -"5 c #BFBF51", -"6 c #C17474", -"7 c #BF7070", -"8 c #BF6969", -"9 c #BF6363", -"0 c #544AC7", -"a c #A8A8FF", -"b c #7070FF", -"c c #5050FF", -"d c #3F3FFF", -"e c #8C8CBA", -"f c #F6F6C8", -"g c #FBFBBB", -"h c #FBFBAE", -"i c #FBFBA1", -"j c #F9F993", -"k c #D7D760", -"l c #D28D8D", -"m c #EEB8B8", -"n c #EFAAAA", -"o c #EF9E9E", -"p c #7C5ABC", -"q c #8D8DFF", -"r c #4747FF", -"s c #3535FF", -"t c #2B2BFF", -"u c #AAAAA7", -"v c #FFFFD2", -"w c #FFFFA9", -"x c #FFFF9A", -"y c #FFFF8D", -"z c #FFFF80", -"A c #E4E45B", -"B c #E39F9F", -"C c #FFCCCC", -"D c #FFA9A9", -"E c #FF9C9C", -"F c #B469A0", -"G c #3E3DE7", -"H c #2828EF", -"I c #1E1EEF", -"J c #1515EF", -"K c #A5A595", -"L c #FFFFC2", -"M c #FFFF8F", -"N c #F7F765", -"O c #F2F251", -"P c #DBDB3A", -"Q c #E48E8E", -"R c #FFBABA", -"S c #FF8E8E", -"T c #FF8181", -"U c #FF6868", -"V c #E54D60", -"W c #AC2E56", -"X c #0B0BBF", -"Y c #0606BF", -"Z c #C8C85D", -"` c #FEFEB1", -" . c #FEFE74", -".. c #F4F456", -"+. c #EFEF42", -"@. c #EFEF38", -"#. c #D7D725", -"$. c #E47676", -"%. c #FFA8A8", -"&. c #FF7373", -"*. c #FF5555", -"=. c #FF4343", -"-. c #FF3939", -";. c #DA2323", -">. c #CFCF3C", -",. c #F6F694", -"'. c #F0F047", -"). c #EFEF2E", -"!. c #EFEF24", -"~. c #D7D715", -"{. c #E45757", -"]. c #FF8888", -"^. c #FF4646", -"/. c #FF2F2F", -"(. c #FF2525", -"_. c #DA1414", -":. c #C3C328", -"<. c #EBEB55", -"[. c #ECEC2F", -"}. c #ECEC24", -"|. c #ECEC1A", -"1. c #EBEB10", -"2. c #CDCD06", -"3. c #DD3A3A", -"4. c #FF6060", -"5. c #FF1B1B", -"6. c #FE1111", -"7. c #D10707", -"8. c #B8B819", -"9. c #B7B715", -"0. c #B7B710", -"a. c #B7B70B", -"b. c #B7B706", -"c. c #B7B701", -"d. c #B7B700", -"e. c #BF1A1A", -"f. c #CC1919", -"g. c #CE1414", -"h. c #CE0E0E", -"i. c #CE0808", -"j. c #C90202", -"k. c #C00000", -" ", -" ", -" . + @ # $ % & ", -" * = - ; > , ' ) ", -" ! ~ { , ] ^ / ( ", -" _ : < ^ [ } | 1 2 3 4 5 ", -"6 7 8 9 0 a b c d e f g h i j k ", -"l m n o p q r s t u v w x y z A ", -"B C D E F G H I J K L M z N O P ", -"Q R S T U V W X Y Z ` ...+.@.#.", -"$.%.&.*.=.-.;. >.,.'.@.).!.~.", -"{.].^.-./.(._. :.<.[.}.|.1.2.", -"3.4./.(.5.6.7. 8.9.0.a.b.c.d.", -"e.f.g.h.i.j.k. ", -" ", -" "}; +/* XPM */ +static const char *const wxwin16x16_xpm[] = { +"16 16 142 2", +" c None", +". c #7171C0", +"+ c #7D7DC7", +"@ c #8181CE", +"# c #7979CE", +"$ c #7171CE", +"% c #6868CD", +"& c #5050C0", +"* c #7C7CCB", +"= c #D3D3FC", +"- c #C0C0FF", +"; c #B1B1FF", +"> c #A4A4FF", +", c #9696FF", +"' c #6B6BE3", +") c #3E3EC0", +"! c #7B7BD3", +"~ c #CFCFFF", +"{ c #A7A7FF", +"] c #8989FF", +"^ c #7B7BFF", +"/ c #5E5EEB", +"( c #3333BF", +"_ c #6969D3", +": c #BEBEFF", +"< c #8E8EFF", +"[ c #5E5EFF", +"} c #4C4CFD", +"| c #6464C6", +"1 c #A4A478", +"2 c #BFBF63", +"3 c #BFBF5C", +"4 c #BFBF56", +"5 c #BFBF51", +"6 c #C17474", +"7 c #BF7070", +"8 c #BF6969", +"9 c #BF6363", +"0 c #544AC7", +"a c #A8A8FF", +"b c #7070FF", +"c c #5050FF", +"d c #3F3FFF", +"e c #8C8CBA", +"f c #F6F6C8", +"g c #FBFBBB", +"h c #FBFBAE", +"i c #FBFBA1", +"j c #F9F993", +"k c #D7D760", +"l c #D28D8D", +"m c #EEB8B8", +"n c #EFAAAA", +"o c #EF9E9E", +"p c #7C5ABC", +"q c #8D8DFF", +"r c #4747FF", +"s c #3535FF", +"t c #2B2BFF", +"u c #AAAAA7", +"v c #FFFFD2", +"w c #FFFFA9", +"x c #FFFF9A", +"y c #FFFF8D", +"z c #FFFF80", +"A c #E4E45B", +"B c #E39F9F", +"C c #FFCCCC", +"D c #FFA9A9", +"E c #FF9C9C", +"F c #B469A0", +"G c #3E3DE7", +"H c #2828EF", +"I c #1E1EEF", +"J c #1515EF", +"K c #A5A595", +"L c #FFFFC2", +"M c #FFFF8F", +"N c #F7F765", +"O c #F2F251", +"P c #DBDB3A", +"Q c #E48E8E", +"R c #FFBABA", +"S c #FF8E8E", +"T c #FF8181", +"U c #FF6868", +"V c #E54D60", +"W c #AC2E56", +"X c #0B0BBF", +"Y c #0606BF", +"Z c #C8C85D", +"` c #FEFEB1", +" . c #FEFE74", +".. c #F4F456", +"+. c #EFEF42", +"@. c #EFEF38", +"#. c #D7D725", +"$. c #E47676", +"%. c #FFA8A8", +"&. c #FF7373", +"*. c #FF5555", +"=. c #FF4343", +"-. c #FF3939", +";. c #DA2323", +">. c #CFCF3C", +",. c #F6F694", +"'. c #F0F047", +"). c #EFEF2E", +"!. c #EFEF24", +"~. c #D7D715", +"{. c #E45757", +"]. c #FF8888", +"^. c #FF4646", +"/. c #FF2F2F", +"(. c #FF2525", +"_. c #DA1414", +":. c #C3C328", +"<. c #EBEB55", +"[. c #ECEC2F", +"}. c #ECEC24", +"|. c #ECEC1A", +"1. c #EBEB10", +"2. c #CDCD06", +"3. c #DD3A3A", +"4. c #FF6060", +"5. c #FF1B1B", +"6. c #FE1111", +"7. c #D10707", +"8. c #B8B819", +"9. c #B7B715", +"0. c #B7B710", +"a. c #B7B70B", +"b. c #B7B706", +"c. c #B7B701", +"d. c #B7B700", +"e. c #BF1A1A", +"f. c #CC1919", +"g. c #CE1414", +"h. c #CE0E0E", +"i. c #CE0808", +"j. c #C90202", +"k. c #C00000", +" ", +" ", +" . + @ # $ % & ", +" * = - ; > , ' ) ", +" ! ~ { , ] ^ / ( ", +" _ : < ^ [ } | 1 2 3 4 5 ", +"6 7 8 9 0 a b c d e f g h i j k ", +"l m n o p q r s t u v w x y z A ", +"B C D E F G H I J K L M z N O P ", +"Q R S T U V W X Y Z ` ...+.@.#.", +"$.%.&.*.=.-.;. >.,.'.@.).!.~.", +"{.].^.-./.(._. :.<.[.}.|.1.2.", +"3.4./.(.5.6.7. 8.9.0.a.b.c.d.", +"e.f.g.h.i.j.k. ", +" ", +" "}; diff --git a/3rdparty/wxwidgets3.0/art/wxwin32x32.xpm b/3rdparty/wxwidgets3.0/art/wxwin32x32.xpm index d318f0aadb..25aed5e590 100644 --- a/3rdparty/wxwidgets3.0/art/wxwin32x32.xpm +++ b/3rdparty/wxwidgets3.0/art/wxwin32x32.xpm @@ -1,442 +1,442 @@ -/* XPM */ -static const char *const wxwin32x32_xpm[] = { -"32 32 407 2", -" c None", -". c #7373C1", -"+ c #6E6EBF", -"@ c #6B6BBF", -"# c #6868BF", -"$ c #6464BF", -"% c #6161BF", -"& c #5E5EBF", -"* c #5A5ABF", -"= c #5959C0", -"- c #7171C0", -"; c #7272C1", -"> c #8686CE", -", c #8686D0", -"' c #8282D0", -") c #7D7DD0", -"! c #7979D0", -"~ c #7575D0", -"{ c #7171D0", -"] c #6D6DD0", -"^ c #6666CD", -"/ c #5151C1", -"( c #4C4CBF", -"_ c #7171C1", -": c #7272C2", -"< c #C1C1F2", -"[ c #D7D7FF", -"} c #C9C9FF", -"| c #C2C2FF", -"1 c #BBBBFF", -"2 c #B4B4FF", -"3 c #AEAEFF", -"4 c #A7A7FF", -"5 c #A0A0FF", -"6 c #9A9AFF", -"7 c #8484F2", -"8 c #4949C2", -"9 c #4444C1", -"0 c #6A6AC0", -"a c #8989D4", -"b c #DADAFF", -"c c #C0C0FF", -"d c #9393FF", -"e c #8C8CFF", -"f c #8686FF", -"g c #5454D4", -"h c #3E3EC0", -"i c #6363BF", -"j c #8686D8", -"k c #D4D4FF", -"l c #D2D2FF", -"m c #7F7FFF", -"n c #7878FF", -"o c #4F4FD7", -"p c #3737BF", -"q c #5C5CBF", -"r c #7D7DD8", -"s c #CCCCFF", -"t c #CACAFF", -"u c #A8A8FF", -"v c #7070FF", -"w c #6B6BFF", -"x c #4545D7", -"y c #3030BF", -"z c #5555BF", -"A c #7373D8", -"B c #C3C3FF", -"C c #9C9CFF", -"D c #8D8DFF", -"E c #7777FF", -"F c #6262FF", -"G c #5252FF", -"H c #4B4BFF", -"I c #4848FF", -"J c #3232D7", -"K c #2626BF", -"L c #4E4EBF", -"M c #6A6AD8", -"N c #B9B9FF", -"O c #9090FF", -"P c #6F6FFF", -"Q c #5555FF", -"R c #4646FF", -"S c #4B4BF5", -"T c #8282B4", -"U c #93938E", -"V c #B1B173", -"W c #BFBF68", -"X c #BFBF65", -"Y c #BFBF62", -"Z c #BFBF5E", -"` c #BFBF5B", -" . c #BFBF57", -".. c #BFBF54", -"+. c #BFBF51", -"@. c #5858D8", -"#. c #B2B2FF", -"$. c #B1B1FF", -"%. c #8484FF", -"&. c #7272FF", -"*. c #6767FF", -"=. c #4F4FFF", -"-. c #4747FF", -";. c #4242FF", -">. c #4141FA", -",. c #ABAB8A", -"'. c #E4E4AA", -"). c #F5F5C3", -"!. c #F6F6BE", -"~. c #F6F6B7", -"{. c #F6F6B1", -"]. c #F6F6AB", -"^. c #F6F6A5", -"/. c #F6F69E", -"(. c #F6F698", -"_. c #F1F18C", -":. c #D0D05F", -"<. c #BFBF48", -"[. c #C17474", -"}. c #C07171", -"|. c #BF6E6E", -"1. c #BF6B6B", -"2. c #BF6868", -"3. c #BF6464", -"4. c #BF6161", -"5. c #7C498C", -"6. c #4242D8", -"7. c #A4A4FF", -"8. c #5959FF", -"9. c #3D3DFF", -"0. c #3838FF", -"a. c #6666CA", -"b. c #DCDC98", -"c. c #FFFFDD", -"d. c #FFFFD7", -"e. c #FFFFC0", -"f. c #FFFFB8", -"g. c #FFFFB2", -"h. c #FFFFAB", -"i. c #FFFFA4", -"j. c #FFFF9D", -"k. c #FFFF97", -"l. c #FFFF90", -"m. c #FBFB85", -"n. c #C2C244", -"o. c #C37676", -"p. c #DA9B9B", -"q. c #DF9F9F", -"r. c #DF9A9A", -"s. c #DF9494", -"t. c #DF8F8F", -"u. c #DF8A8A", -"v. c #B47094", -"w. c #3B3BD8", -"x. c #9292FF", -"y. c #5656FF", -"z. c #3333FF", -"A. c #2E2EFF", -"B. c #7070B6", -"C. c #E7E79F", -"D. c #FFFFDE", -"E. c #FFFFCF", -"F. c #FFFFB5", -"G. c #FFFF9E", -"H. c #FFFF8A", -"I. c #FFFF83", -"J. c #FFFF7C", -"K. c #C8C843", -"L. c #C06D6D", -"M. c #F1BEBE", -"N. c #FFDBDB", -"O. c #FFCBCB", -"P. c #FFC0C0", -"Q. c #FFBABA", -"R. c #FFB3B3", -"S. c #FFACAC", -"T. c #CE89AC", -"U. c #3333D7", -"V. c #8787FF", -"W. c #4D4DFF", -"X. c #2929FF", -"Y. c #2424FF", -"Z. c #6B6BB3", -"`. c #E7E795", -" + c #FFFFC6", -".+ c #FFFFA8", -"++ c #FFFF76", -"@+ c #FFFF6F", -"#+ c #C8C83C", -"$+ c #C77474", -"%+ c #FFD3D3", -"&+ c #FFDEDE", -"*+ c #FFC4C4", -"=+ c #FFA6A6", -"-+ c #FF9F9F", -";+ c #F3929A", -">+ c #2F29C3", -",+ c #4C4CFB", -"'+ c #6868FF", -")+ c #3939FF", -"!+ c #1F1FFF", -"~+ c #1A1AFF", -"{+ c #6666B0", -"]+ c #E7E78A", -"^+ c #FFFFD0", -"/+ c #FFFFBD", -"(+ c #FFFF9B", -"_+ c #FFFF91", -":+ c #FAFA6E", -"<+ c #F5F55F", -"[+ c #F5F558", -"}+ c #F7F756", -"|+ c #C7C732", -"1+ c #C86E6E", -"2+ c #FFC9C9", -"3+ c #FFD7D7", -"4+ c #FFB8B8", -"5+ c #FF9898", -"6+ c #FF9292", -"7+ c #FF8B8B", -"8+ c #B16098", -"9+ c #2420C6", -"0+ c #2222DD", -"a+ c #1F1FDF", -"b+ c #1B1BDF", -"c+ c #1818DF", -"d+ c #1414DF", -"e+ c #1010DF", -"f+ c #0C0CDF", -"g+ c #5F5F9C", -"h+ c #E7E77F", -"i+ c #FFFFC9", -"j+ c #FFFFB4", -"k+ c #FFFF8E", -"l+ c #FFFF7D", -"m+ c #FEFE75", -"n+ c #F4F45D", -"o+ c #EFEF4F", -"p+ c #EFEF4A", -"q+ c #EFEF44", -"r+ c #EFEF3F", -"s+ c #BFBF22", -"t+ c #C86666", -"u+ c #FFBFBF", -"v+ c #FFD0D0", -"w+ c #FFADAD", -"x+ c #FF8484", -"y+ c #FF7E7E", -"z+ c #FF7373", -"A+ c #E75F70", -"B+ c #B0457F", -"C+ c #9A3776", -"D+ c #5F1D7C", -"E+ c #0C0CBF", -"F+ c #0909BF", -"G+ c #0707BF", -"H+ c #0404BF", -"I+ c #878766", -"J+ c #E6E674", -"K+ c #FFFFC2", -"L+ c #FFFF82", -"M+ c #FEFE6E", -"N+ c #F3F355", -"O+ c #EFEF45", -"P+ c #EFEF40", -"Q+ c #EFEF3B", -"R+ c #EFEF36", -"S+ c #BFBF1C", -"T+ c #C85F5F", -"U+ c #FFB4B4", -"V+ c #FFA2A2", -"W+ c #FF7575", -"X+ c #FF5E5E", -"Y+ c #FF5050", -"Z+ c #FF4A4A", -"`+ c #FF4545", -" @ c #E73535", -".@ c #BF2121", -"+@ c #B7B733", -"@@ c #DCDC55", -"#@ c #FDFDB7", -"$@ c #FFFFA2", -"%@ c #FFFF75", -"&@ c #FCFC64", -"*@ c #F2F24E", -"=@ c #EFEF31", -"-@ c #EFEF2C", -";@ c #BFBF16", -">@ c #C85656", -",@ c #FFAAAA", -"'@ c #FFC2C2", -")@ c #FF9797", -"!@ c #FF7777", -"~@ c #FF6E6E", -"{@ c #FF5454", -"]@ c #FF4040", -"^@ c #FF3B3B", -"/@ c #E72C2C", -"(@ c #BF1919", -"_@ c #B7B72E", -":@ c #DADA48", -"<@ c #F7F7A6", -"[@ c #F6F689", -"}@ c #F2F254", -"|@ c #EFEF27", -"1@ c #EFEF22", -"2@ c #BFBF10", -"3@ c #C84040", -"4@ c #FF9A9A", -"5@ c #FFBBBB", -"6@ c #FF7171", -"7@ c #FF6666", -"8@ c #FF4E4E", -"9@ c #FF4646", -"0@ c #FF4141", -"a@ c #FF3C3C", -"b@ c #FF3737", -"c@ c #FF3232", -"d@ c #E72424", -"e@ c #BF1414", -"f@ c #B7B729", -"g@ c #DADA3F", -"h@ c #F7F7A1", -"i@ c #F4F480", -"j@ c #F0F047", -"k@ c #EFEF1D", -"l@ c #EFEF18", -"m@ c #BFBF0B", -"n@ c #C83636", -"o@ c #FFABAB", -"p@ c #FF7676", -"q@ c #FF2D2D", -"r@ c #FF2828", -"s@ c #E71C1C", -"t@ c #BF0F0F", -"u@ c #B7B724", -"v@ c #D1D132", -"w@ c #F4F478", -"x@ c #EFEF13", -"y@ c #ECEC0E", -"z@ c #BABA05", -"A@ c #C83030", -"B@ c #FF6161", -"C@ c #FF2323", -"D@ c #FF1E1E", -"E@ c #E71414", -"F@ c #BF0A0A", -"G@ c #B8B820", -"H@ c #B9B91F", -"I@ c #DADA2C", -"J@ c #E9E931", -"K@ c #EAEA2A", -"L@ c #EAEA25", -"M@ c #EAEA20", -"N@ c #EAEA1C", -"O@ c #EAEA17", -"P@ c #EAEA12", -"Q@ c #EAEA0D", -"R@ c #E5E508", -"S@ c #C7C703", -"T@ c #B7B701", -"U@ c #C52929", -"V@ c #FF5858", -"W@ c #FF1919", -"X@ c #FF1414", -"Y@ c #E30C0C", -"Z@ c #BF0606", -"`@ c #B8B819", -" # c #B7B717", -".# c #B7B714", -"+# c #B7B711", -"@# c #B7B70F", -"## c #B7B70C", -"$# c #B7B70A", -"%# c #B7B707", -"&# c #B7B705", -"*# c #B7B702", -"=# c #B7B700", -"-# c #BF2020", -";# c #E63131", -"># c #FF5555", -",# c #FF3A3A", -"'# c #FF0F0F", -")# c #FA0A0A", -"!# c #C90303", -"~# c #C00202", -"{# c #C01C1C", -"]# c #CB1B1B", -"^# c #D01A1A", -"/# c #D01616", -"(# c #D01313", -"_# c #D01010", -":# c #D00D0D", -"<# c #D00A0A", -"[# c #D00707", -"}# c #CF0303", -"|# c #C30101", -"1# c #C00000", -"2# c #C21414", -"3# c #BF1111", -"4# c #BF0E0E", -"5# c #BF0C0C", -"6# c #BF0909", -"7# c #BF0707", -"8# c #BF0404", -"9# c #BF0202", -"0# c #C50000", -" ", -" ", -" ", -" ", -" . + @ # $ % & * = ", -" - ; > , ' ) ! ~ { ] ^ / ( ", -" _ : < [ } | 1 2 3 4 5 6 7 8 9 ", -" 0 a b b c 2 3 4 5 6 d e f g h ", -" i j k l 2 4 5 6 d e f m n o p ", -" q r s t u 6 d e f m n v w x y ", -" z A B | C D f m E F G H I J K ", -" L M 1 N O m n P Q H R S T U V W X Y Z ` ...+. ", -" p @.#.$.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<.", -" [.}.|.1.2.3.4.5.6.6 7.&.8.I ;.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.", -"}.o.p.q.r.s.t.u.v.w.O x.y.;.9.0.z.A.B.C.D.E.F.h.i.G.k.l.H.I.J.K.", -"L.M.N.O.P.Q.R.S.T.U.V.e W.0.z.A.X.Y.Z.`.d. +.+G.k.l.H.I.J.++@+#+", -"$+%+&+*+R.S.=+-+;+>+,+'+)+A.X.Y.!+~+{+]+^+/+(+_+H.I.J.:+<+[+}+|+", -"1+2+3+4+=+-+5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+I.l+m+n+o+p+q+r+s+", -"t+u+v+w+5+6+7+x+y+z+A+B+C+D+E+F+G+H+I+J+K+h.L+++M+N+p+O+P+Q+R+S+", -"T+U+2+V+7+x+y+W+X+Y+Z+`+ @.@ +@@@#@$@%@&@*@O+P+Q+R+=@-@;@", -">@,@'@)@y+!@~@{@Z+`+]@^@/@(@ _@:@<@[@}@O+P+Q+R+=@-@|@1@2@", -"3@4@5@7+6@7@8@9@0@a@b@c@d@e@ f@g@h@i@j@Q+R+=@-@|@1@k@l@m@", -"n@y+o@p@{@9@0@a@b@c@q@r@s@t@ u@v@i@w@Q+=@-@|@1@k@l@x@y@z@", -"A@p@-+B@0@a@b@c@q@r@C@D@E@F@ G@H@I@J@K@L@M@N@O@P@Q@R@S@T@", -"U@7@4@V@b@c@q@r@C@D@W@X@Y@Z@ `@ #.#+#@###$#%#&#*#=#=# ", -"-#;#>#,#q@r@C@D@W@X@'#)#!#~# ", -"{#(@]#^#/#(#_#:#<#[#}#|#1# ", -" 2#3#4#5#6#7#8#9#1#0# ", -" ", -" ", -" ", -" "}; +/* XPM */ +static const char *const wxwin32x32_xpm[] = { +"32 32 407 2", +" c None", +". c #7373C1", +"+ c #6E6EBF", +"@ c #6B6BBF", +"# c #6868BF", +"$ c #6464BF", +"% c #6161BF", +"& c #5E5EBF", +"* c #5A5ABF", +"= c #5959C0", +"- c #7171C0", +"; c #7272C1", +"> c #8686CE", +", c #8686D0", +"' c #8282D0", +") c #7D7DD0", +"! c #7979D0", +"~ c #7575D0", +"{ c #7171D0", +"] c #6D6DD0", +"^ c #6666CD", +"/ c #5151C1", +"( c #4C4CBF", +"_ c #7171C1", +": c #7272C2", +"< c #C1C1F2", +"[ c #D7D7FF", +"} c #C9C9FF", +"| c #C2C2FF", +"1 c #BBBBFF", +"2 c #B4B4FF", +"3 c #AEAEFF", +"4 c #A7A7FF", +"5 c #A0A0FF", +"6 c #9A9AFF", +"7 c #8484F2", +"8 c #4949C2", +"9 c #4444C1", +"0 c #6A6AC0", +"a c #8989D4", +"b c #DADAFF", +"c c #C0C0FF", +"d c #9393FF", +"e c #8C8CFF", +"f c #8686FF", +"g c #5454D4", +"h c #3E3EC0", +"i c #6363BF", +"j c #8686D8", +"k c #D4D4FF", +"l c #D2D2FF", +"m c #7F7FFF", +"n c #7878FF", +"o c #4F4FD7", +"p c #3737BF", +"q c #5C5CBF", +"r c #7D7DD8", +"s c #CCCCFF", +"t c #CACAFF", +"u c #A8A8FF", +"v c #7070FF", +"w c #6B6BFF", +"x c #4545D7", +"y c #3030BF", +"z c #5555BF", +"A c #7373D8", +"B c #C3C3FF", +"C c #9C9CFF", +"D c #8D8DFF", +"E c #7777FF", +"F c #6262FF", +"G c #5252FF", +"H c #4B4BFF", +"I c #4848FF", +"J c #3232D7", +"K c #2626BF", +"L c #4E4EBF", +"M c #6A6AD8", +"N c #B9B9FF", +"O c #9090FF", +"P c #6F6FFF", +"Q c #5555FF", +"R c #4646FF", +"S c #4B4BF5", +"T c #8282B4", +"U c #93938E", +"V c #B1B173", +"W c #BFBF68", +"X c #BFBF65", +"Y c #BFBF62", +"Z c #BFBF5E", +"` c #BFBF5B", +" . c #BFBF57", +".. c #BFBF54", +"+. c #BFBF51", +"@. c #5858D8", +"#. c #B2B2FF", +"$. c #B1B1FF", +"%. c #8484FF", +"&. c #7272FF", +"*. c #6767FF", +"=. c #4F4FFF", +"-. c #4747FF", +";. c #4242FF", +">. c #4141FA", +",. c #ABAB8A", +"'. c #E4E4AA", +"). c #F5F5C3", +"!. c #F6F6BE", +"~. c #F6F6B7", +"{. c #F6F6B1", +"]. c #F6F6AB", +"^. c #F6F6A5", +"/. c #F6F69E", +"(. c #F6F698", +"_. c #F1F18C", +":. c #D0D05F", +"<. c #BFBF48", +"[. c #C17474", +"}. c #C07171", +"|. c #BF6E6E", +"1. c #BF6B6B", +"2. c #BF6868", +"3. c #BF6464", +"4. c #BF6161", +"5. c #7C498C", +"6. c #4242D8", +"7. c #A4A4FF", +"8. c #5959FF", +"9. c #3D3DFF", +"0. c #3838FF", +"a. c #6666CA", +"b. c #DCDC98", +"c. c #FFFFDD", +"d. c #FFFFD7", +"e. c #FFFFC0", +"f. c #FFFFB8", +"g. c #FFFFB2", +"h. c #FFFFAB", +"i. c #FFFFA4", +"j. c #FFFF9D", +"k. c #FFFF97", +"l. c #FFFF90", +"m. c #FBFB85", +"n. c #C2C244", +"o. c #C37676", +"p. c #DA9B9B", +"q. c #DF9F9F", +"r. c #DF9A9A", +"s. c #DF9494", +"t. c #DF8F8F", +"u. c #DF8A8A", +"v. c #B47094", +"w. c #3B3BD8", +"x. c #9292FF", +"y. c #5656FF", +"z. c #3333FF", +"A. c #2E2EFF", +"B. c #7070B6", +"C. c #E7E79F", +"D. c #FFFFDE", +"E. c #FFFFCF", +"F. c #FFFFB5", +"G. c #FFFF9E", +"H. c #FFFF8A", +"I. c #FFFF83", +"J. c #FFFF7C", +"K. c #C8C843", +"L. c #C06D6D", +"M. c #F1BEBE", +"N. c #FFDBDB", +"O. c #FFCBCB", +"P. c #FFC0C0", +"Q. c #FFBABA", +"R. c #FFB3B3", +"S. c #FFACAC", +"T. c #CE89AC", +"U. c #3333D7", +"V. c #8787FF", +"W. c #4D4DFF", +"X. c #2929FF", +"Y. c #2424FF", +"Z. c #6B6BB3", +"`. c #E7E795", +" + c #FFFFC6", +".+ c #FFFFA8", +"++ c #FFFF76", +"@+ c #FFFF6F", +"#+ c #C8C83C", +"$+ c #C77474", +"%+ c #FFD3D3", +"&+ c #FFDEDE", +"*+ c #FFC4C4", +"=+ c #FFA6A6", +"-+ c #FF9F9F", +";+ c #F3929A", +">+ c #2F29C3", +",+ c #4C4CFB", +"'+ c #6868FF", +")+ c #3939FF", +"!+ c #1F1FFF", +"~+ c #1A1AFF", +"{+ c #6666B0", +"]+ c #E7E78A", +"^+ c #FFFFD0", +"/+ c #FFFFBD", +"(+ c #FFFF9B", +"_+ c #FFFF91", +":+ c #FAFA6E", +"<+ c #F5F55F", +"[+ c #F5F558", +"}+ c #F7F756", +"|+ c #C7C732", +"1+ c #C86E6E", +"2+ c #FFC9C9", +"3+ c #FFD7D7", +"4+ c #FFB8B8", +"5+ c #FF9898", +"6+ c #FF9292", +"7+ c #FF8B8B", +"8+ c #B16098", +"9+ c #2420C6", +"0+ c #2222DD", +"a+ c #1F1FDF", +"b+ c #1B1BDF", +"c+ c #1818DF", +"d+ c #1414DF", +"e+ c #1010DF", +"f+ c #0C0CDF", +"g+ c #5F5F9C", +"h+ c #E7E77F", +"i+ c #FFFFC9", +"j+ c #FFFFB4", +"k+ c #FFFF8E", +"l+ c #FFFF7D", +"m+ c #FEFE75", +"n+ c #F4F45D", +"o+ c #EFEF4F", +"p+ c #EFEF4A", +"q+ c #EFEF44", +"r+ c #EFEF3F", +"s+ c #BFBF22", +"t+ c #C86666", +"u+ c #FFBFBF", +"v+ c #FFD0D0", +"w+ c #FFADAD", +"x+ c #FF8484", +"y+ c #FF7E7E", +"z+ c #FF7373", +"A+ c #E75F70", +"B+ c #B0457F", +"C+ c #9A3776", +"D+ c #5F1D7C", +"E+ c #0C0CBF", +"F+ c #0909BF", +"G+ c #0707BF", +"H+ c #0404BF", +"I+ c #878766", +"J+ c #E6E674", +"K+ c #FFFFC2", +"L+ c #FFFF82", +"M+ c #FEFE6E", +"N+ c #F3F355", +"O+ c #EFEF45", +"P+ c #EFEF40", +"Q+ c #EFEF3B", +"R+ c #EFEF36", +"S+ c #BFBF1C", +"T+ c #C85F5F", +"U+ c #FFB4B4", +"V+ c #FFA2A2", +"W+ c #FF7575", +"X+ c #FF5E5E", +"Y+ c #FF5050", +"Z+ c #FF4A4A", +"`+ c #FF4545", +" @ c #E73535", +".@ c #BF2121", +"+@ c #B7B733", +"@@ c #DCDC55", +"#@ c #FDFDB7", +"$@ c #FFFFA2", +"%@ c #FFFF75", +"&@ c #FCFC64", +"*@ c #F2F24E", +"=@ c #EFEF31", +"-@ c #EFEF2C", +";@ c #BFBF16", +">@ c #C85656", +",@ c #FFAAAA", +"'@ c #FFC2C2", +")@ c #FF9797", +"!@ c #FF7777", +"~@ c #FF6E6E", +"{@ c #FF5454", +"]@ c #FF4040", +"^@ c #FF3B3B", +"/@ c #E72C2C", +"(@ c #BF1919", +"_@ c #B7B72E", +":@ c #DADA48", +"<@ c #F7F7A6", +"[@ c #F6F689", +"}@ c #F2F254", +"|@ c #EFEF27", +"1@ c #EFEF22", +"2@ c #BFBF10", +"3@ c #C84040", +"4@ c #FF9A9A", +"5@ c #FFBBBB", +"6@ c #FF7171", +"7@ c #FF6666", +"8@ c #FF4E4E", +"9@ c #FF4646", +"0@ c #FF4141", +"a@ c #FF3C3C", +"b@ c #FF3737", +"c@ c #FF3232", +"d@ c #E72424", +"e@ c #BF1414", +"f@ c #B7B729", +"g@ c #DADA3F", +"h@ c #F7F7A1", +"i@ c #F4F480", +"j@ c #F0F047", +"k@ c #EFEF1D", +"l@ c #EFEF18", +"m@ c #BFBF0B", +"n@ c #C83636", +"o@ c #FFABAB", +"p@ c #FF7676", +"q@ c #FF2D2D", +"r@ c #FF2828", +"s@ c #E71C1C", +"t@ c #BF0F0F", +"u@ c #B7B724", +"v@ c #D1D132", +"w@ c #F4F478", +"x@ c #EFEF13", +"y@ c #ECEC0E", +"z@ c #BABA05", +"A@ c #C83030", +"B@ c #FF6161", +"C@ c #FF2323", +"D@ c #FF1E1E", +"E@ c #E71414", +"F@ c #BF0A0A", +"G@ c #B8B820", +"H@ c #B9B91F", +"I@ c #DADA2C", +"J@ c #E9E931", +"K@ c #EAEA2A", +"L@ c #EAEA25", +"M@ c #EAEA20", +"N@ c #EAEA1C", +"O@ c #EAEA17", +"P@ c #EAEA12", +"Q@ c #EAEA0D", +"R@ c #E5E508", +"S@ c #C7C703", +"T@ c #B7B701", +"U@ c #C52929", +"V@ c #FF5858", +"W@ c #FF1919", +"X@ c #FF1414", +"Y@ c #E30C0C", +"Z@ c #BF0606", +"`@ c #B8B819", +" # c #B7B717", +".# c #B7B714", +"+# c #B7B711", +"@# c #B7B70F", +"## c #B7B70C", +"$# c #B7B70A", +"%# c #B7B707", +"&# c #B7B705", +"*# c #B7B702", +"=# c #B7B700", +"-# c #BF2020", +";# c #E63131", +"># c #FF5555", +",# c #FF3A3A", +"'# c #FF0F0F", +")# c #FA0A0A", +"!# c #C90303", +"~# c #C00202", +"{# c #C01C1C", +"]# c #CB1B1B", +"^# c #D01A1A", +"/# c #D01616", +"(# c #D01313", +"_# c #D01010", +":# c #D00D0D", +"<# c #D00A0A", +"[# c #D00707", +"}# c #CF0303", +"|# c #C30101", +"1# c #C00000", +"2# c #C21414", +"3# c #BF1111", +"4# c #BF0E0E", +"5# c #BF0C0C", +"6# c #BF0909", +"7# c #BF0707", +"8# c #BF0404", +"9# c #BF0202", +"0# c #C50000", +" ", +" ", +" ", +" ", +" . + @ # $ % & * = ", +" - ; > , ' ) ! ~ { ] ^ / ( ", +" _ : < [ } | 1 2 3 4 5 6 7 8 9 ", +" 0 a b b c 2 3 4 5 6 d e f g h ", +" i j k l 2 4 5 6 d e f m n o p ", +" q r s t u 6 d e f m n v w x y ", +" z A B | C D f m E F G H I J K ", +" L M 1 N O m n P Q H R S T U V W X Y Z ` ...+. ", +" p @.#.$.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<.", +" [.}.|.1.2.3.4.5.6.6 7.&.8.I ;.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.", +"}.o.p.q.r.s.t.u.v.w.O x.y.;.9.0.z.A.B.C.D.E.F.h.i.G.k.l.H.I.J.K.", +"L.M.N.O.P.Q.R.S.T.U.V.e W.0.z.A.X.Y.Z.`.d. +.+G.k.l.H.I.J.++@+#+", +"$+%+&+*+R.S.=+-+;+>+,+'+)+A.X.Y.!+~+{+]+^+/+(+_+H.I.J.:+<+[+}+|+", +"1+2+3+4+=+-+5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+I.l+m+n+o+p+q+r+s+", +"t+u+v+w+5+6+7+x+y+z+A+B+C+D+E+F+G+H+I+J+K+h.L+++M+N+p+O+P+Q+R+S+", +"T+U+2+V+7+x+y+W+X+Y+Z+`+ @.@ +@@@#@$@%@&@*@O+P+Q+R+=@-@;@", +">@,@'@)@y+!@~@{@Z+`+]@^@/@(@ _@:@<@[@}@O+P+Q+R+=@-@|@1@2@", +"3@4@5@7+6@7@8@9@0@a@b@c@d@e@ f@g@h@i@j@Q+R+=@-@|@1@k@l@m@", +"n@y+o@p@{@9@0@a@b@c@q@r@s@t@ u@v@i@w@Q+=@-@|@1@k@l@x@y@z@", +"A@p@-+B@0@a@b@c@q@r@C@D@E@F@ G@H@I@J@K@L@M@N@O@P@Q@R@S@T@", +"U@7@4@V@b@c@q@r@C@D@W@X@Y@Z@ `@ #.#+#@###$#%#&#*#=#=# ", +"-#;#>#,#q@r@C@D@W@X@'#)#!#~# ", +"{#(@]#^#/#(#_#:#<#[#}#|#1# ", +" 2#3#4#5#6#7#8#9#1#0# ", +" ", +" ", +" ", +" "}; diff --git a/3rdparty/wxwidgets3.0/build/msw/wx30_adv_vs2012.vcxproj b/3rdparty/wxwidgets3.0/build/msw/wx30_adv_vs2012.vcxproj index c96bbb81d6..f5c4062b33 100644 --- a/3rdparty/wxwidgets3.0/build/msw/wx30_adv_vs2012.vcxproj +++ b/3rdparty/wxwidgets3.0/build/msw/wx30_adv_vs2012.vcxproj @@ -1,451 +1,451 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Devel - Win32 - - - Devel - x64 - - - Release - Win32 - - - Release - x64 - - - - wxAdv30 - {24C45343-FD20-5C92-81C1-35A2AE841E79} - - - - StaticLibrary - false - Unicode - v110_xp - true - - - StaticLibrary - false - Unicode - v110_xp - true - - - StaticLibrary - false - Unicode - v110_xp - true - - - StaticLibrary - false - Unicode - v110_xp - true - - - StaticLibrary - false - Unicode - v110_xp - - - StaticLibrary - false - Unicode - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - - - - WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - Disabled - _DEBUG;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - - - _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - 0x0409 - - - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - Disabled - _DEBUG;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - - - _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - AnySuitable - true - Speed - ProgramDatabase - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - AnySuitable - true - Speed - ProgramDatabase - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - - - - - Create - Create - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - true - true - true - true - true - true - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {01f4ce10-2cfb-41a8-b41f-e54337868a1d} - - - - - + + + + + Debug + Win32 + + + Debug + x64 + + + Devel + Win32 + + + Devel + x64 + + + Release + Win32 + + + Release + x64 + + + + wxAdv30 + {24C45343-FD20-5C92-81C1-35A2AE841E79} + + + + StaticLibrary + false + Unicode + v110_xp + true + + + StaticLibrary + false + Unicode + v110_xp + true + + + StaticLibrary + false + Unicode + v110_xp + true + + + StaticLibrary + false + Unicode + v110_xp + true + + + StaticLibrary + false + Unicode + v110_xp + + + StaticLibrary + false + Unicode + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + + + WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + + + _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + 0x0409 + + + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + Disabled + _DEBUG;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + + + _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + AnySuitable + true + Speed + ProgramDatabase + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + AnySuitable + true + Speed + ProgramDatabase + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + + + + + Create + Create + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {01f4ce10-2cfb-41a8-b41f-e54337868a1d} + + + + + \ No newline at end of file diff --git a/3rdparty/wxwidgets3.0/build/msw/wx30_adv_vs2013.vcxproj b/3rdparty/wxwidgets3.0/build/msw/wx30_adv_vs2013.vcxproj index 9b39d1100c..b8067a3e66 100644 --- a/3rdparty/wxwidgets3.0/build/msw/wx30_adv_vs2013.vcxproj +++ b/3rdparty/wxwidgets3.0/build/msw/wx30_adv_vs2013.vcxproj @@ -1,451 +1,451 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Devel - Win32 - - - Devel - x64 - - - Release - Win32 - - - Release - x64 - - - - wxAdv30 - {24C45343-FD20-5C92-81C1-35A2AE841E79} - - - - StaticLibrary - false - Unicode - v120_xp - true - - - StaticLibrary - false - Unicode - v120_xp - true - - - StaticLibrary - false - Unicode - v120_xp - true - - - StaticLibrary - false - Unicode - v120_xp - true - - - StaticLibrary - false - Unicode - v120_xp - - - StaticLibrary - false - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - - - - WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - Disabled - _DEBUG;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - - - _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - 0x0409 - - - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - Disabled - _DEBUG;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - - - _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - AnySuitable - true - Speed - ProgramDatabase - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - AnySuitable - true - Speed - ProgramDatabase - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - - - - - Create - Create - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - true - true - true - true - true - true - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {01f4ce10-2cfb-41a8-b41f-e54337868a1d} - - - - - + + + + + Debug + Win32 + + + Debug + x64 + + + Devel + Win32 + + + Devel + x64 + + + Release + Win32 + + + Release + x64 + + + + wxAdv30 + {24C45343-FD20-5C92-81C1-35A2AE841E79} + + + + StaticLibrary + false + Unicode + v120_xp + true + + + StaticLibrary + false + Unicode + v120_xp + true + + + StaticLibrary + false + Unicode + v120_xp + true + + + StaticLibrary + false + Unicode + v120_xp + true + + + StaticLibrary + false + Unicode + v120_xp + + + StaticLibrary + false + Unicode + v120_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + + + WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + + + _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + 0x0409 + + + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + Disabled + _DEBUG;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + + + _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + AnySuitable + true + Speed + ProgramDatabase + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + AnySuitable + true + Speed + ProgramDatabase + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + + + + + Create + Create + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {01f4ce10-2cfb-41a8-b41f-e54337868a1d} + + + + + \ No newline at end of file diff --git a/3rdparty/wxwidgets3.0/build/msw/wx30_base_vs2012.vcxproj b/3rdparty/wxwidgets3.0/build/msw/wx30_base_vs2012.vcxproj index 1887900d5f..f84683bc6f 100644 --- a/3rdparty/wxwidgets3.0/build/msw/wx30_base_vs2012.vcxproj +++ b/3rdparty/wxwidgets3.0/build/msw/wx30_base_vs2012.vcxproj @@ -1,656 +1,656 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Devel - Win32 - - - Devel - x64 - - - Release - Win32 - - - Release - x64 - - - - wxBase30 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1} - - - - StaticLibrary - false - Unicode - v110_xp - true - - - StaticLibrary - false - Unicode - v110_xp - true - - - StaticLibrary - false - Unicode - v110_xp - true - - - StaticLibrary - false - Unicode - v110_xp - true - - - StaticLibrary - false - Unicode - v110_xp - - - StaticLibrary - false - Unicode - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - - - - WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - Disabled - _DEBUG;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - - - _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - 0x0409 - - - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - Disabled - _DEBUG;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - - - _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - - - - - - - - - - - - - - - - Create - Create - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - true - true - true - true - true - true - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {01f4ce10-2cfb-41a8-b41f-e54337868a1d} - - - - - + + + + + Debug + Win32 + + + Debug + x64 + + + Devel + Win32 + + + Devel + x64 + + + Release + Win32 + + + Release + x64 + + + + wxBase30 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1} + + + + StaticLibrary + false + Unicode + v110_xp + true + + + StaticLibrary + false + Unicode + v110_xp + true + + + StaticLibrary + false + Unicode + v110_xp + true + + + StaticLibrary + false + Unicode + v110_xp + true + + + StaticLibrary + false + Unicode + v110_xp + + + StaticLibrary + false + Unicode + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + + + WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + Disabled + _DEBUG;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + + + _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + 0x0409 + + + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + Disabled + _DEBUG;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + + + _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + + + + + + + + + + + + + + + + Create + Create + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {01f4ce10-2cfb-41a8-b41f-e54337868a1d} + + + + + \ No newline at end of file diff --git a/3rdparty/wxwidgets3.0/build/msw/wx30_base_vs2013.vcxproj b/3rdparty/wxwidgets3.0/build/msw/wx30_base_vs2013.vcxproj index 6dad23ad49..48ac4b6341 100644 --- a/3rdparty/wxwidgets3.0/build/msw/wx30_base_vs2013.vcxproj +++ b/3rdparty/wxwidgets3.0/build/msw/wx30_base_vs2013.vcxproj @@ -1,656 +1,656 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Devel - Win32 - - - Devel - x64 - - - Release - Win32 - - - Release - x64 - - - - wxBase30 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1} - - - - StaticLibrary - false - Unicode - v120_xp - true - - - StaticLibrary - false - Unicode - v120_xp - true - - - StaticLibrary - false - Unicode - v120_xp - true - - - StaticLibrary - false - Unicode - v120_xp - true - - - StaticLibrary - false - Unicode - v120_xp - - - StaticLibrary - false - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - - - - WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - Disabled - _DEBUG;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - - - _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - 0x0409 - - - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - Disabled - _DEBUG;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - - - _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - - - - - - - - - - - - - - - - Create - Create - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - true - true - true - true - true - true - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {01f4ce10-2cfb-41a8-b41f-e54337868a1d} - - - - - + + + + + Debug + Win32 + + + Debug + x64 + + + Devel + Win32 + + + Devel + x64 + + + Release + Win32 + + + Release + x64 + + + + wxBase30 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1} + + + + StaticLibrary + false + Unicode + v120_xp + true + + + StaticLibrary + false + Unicode + v120_xp + true + + + StaticLibrary + false + Unicode + v120_xp + true + + + StaticLibrary + false + Unicode + v120_xp + true + + + StaticLibrary + false + Unicode + v120_xp + + + StaticLibrary + false + Unicode + v120_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + + + WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + Disabled + _DEBUG;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + + + _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + 0x0409 + + + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + Disabled + _DEBUG;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + + + _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + + + + + + + + + + + + + + + + Create + Create + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {01f4ce10-2cfb-41a8-b41f-e54337868a1d} + + + + + \ No newline at end of file diff --git a/3rdparty/wxwidgets3.0/build/msw/wx30_config_vs2012.vcxproj.filters b/3rdparty/wxwidgets3.0/build/msw/wx30_config_vs2012.vcxproj.filters index 03d7e9b387..a0a26ec8cd 100644 --- a/3rdparty/wxwidgets3.0/build/msw/wx30_config_vs2012.vcxproj.filters +++ b/3rdparty/wxwidgets3.0/build/msw/wx30_config_vs2012.vcxproj.filters @@ -1,19 +1,19 @@ - - - - - {63537534-1833-5C1F-8DBD-359A84F294C8} - - - {5AFFF20E-29F9-512B-B80A-7DC45976CDAC} - - - - - Setup Headers - - - MSW Headers - - + + + + + {63537534-1833-5C1F-8DBD-359A84F294C8} + + + {5AFFF20E-29F9-512B-B80A-7DC45976CDAC} + + + + + Setup Headers + + + MSW Headers + + \ No newline at end of file diff --git a/3rdparty/wxwidgets3.0/build/msw/wx30_config_vs2013.vcxproj.filters b/3rdparty/wxwidgets3.0/build/msw/wx30_config_vs2013.vcxproj.filters index 03d7e9b387..a0a26ec8cd 100644 --- a/3rdparty/wxwidgets3.0/build/msw/wx30_config_vs2013.vcxproj.filters +++ b/3rdparty/wxwidgets3.0/build/msw/wx30_config_vs2013.vcxproj.filters @@ -1,19 +1,19 @@ - - - - - {63537534-1833-5C1F-8DBD-359A84F294C8} - - - {5AFFF20E-29F9-512B-B80A-7DC45976CDAC} - - - - - Setup Headers - - - MSW Headers - - + + + + + {63537534-1833-5C1F-8DBD-359A84F294C8} + + + {5AFFF20E-29F9-512B-B80A-7DC45976CDAC} + + + + + Setup Headers + + + MSW Headers + + \ No newline at end of file diff --git a/3rdparty/wxwidgets3.0/build/msw/wx30_core_vs2012.vcxproj b/3rdparty/wxwidgets3.0/build/msw/wx30_core_vs2012.vcxproj index 11785110dc..d948b98eee 100644 --- a/3rdparty/wxwidgets3.0/build/msw/wx30_core_vs2012.vcxproj +++ b/3rdparty/wxwidgets3.0/build/msw/wx30_core_vs2012.vcxproj @@ -1,2344 +1,2344 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Devel - Win32 - - - Devel - x64 - - - Release - Win32 - - - Release - x64 - - - - wxCore30 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75} - - - - StaticLibrary - false - Unicode - v110_xp - true - - - StaticLibrary - false - Unicode - v110_xp - true - - - StaticLibrary - false - Unicode - v110_xp - true - - - StaticLibrary - false - Unicode - v110_xp - true - - - StaticLibrary - false - Unicode - v110_xp - - - StaticLibrary - false - Unicode - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - - - - WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - Disabled - _DEBUG;wxUSE_BASE=0;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - - - _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - 0x0409 - - - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - Disabled - _DEBUG;wxUSE_BASE=0;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - - - _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_BASE=0;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_BASE=0;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - wxUSE_BASE=0;%(PreprocessorDefinitions) - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - wxUSE_BASE=0;%(PreprocessorDefinitions) - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - true - true - true - true - true - true - - - - - - true - true - true - true - true - true - - - - true - true - true - true - true - true - - - - true - true - true - true - true - true - - - - true - true - true - true - true - true - - - - - - - - true - true - true - true - true - true - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - $(IntDir)generic_%(Filename).obj - $(IntDir)generic_%(Filename).obj - $(IntDir)generic_%(Filename).obj - $(IntDir)generic_%(Filename).obj - $(IntDir)generic_%(Filename).obj - $(IntDir)generic_%(Filename).obj - - - - - - - - - - true - true - true - true - true - true - - - - - true - true - true - true - true - true - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - true - true - true - true - true - true - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - true - true - true - true - true - true - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - - {bc236261-77e8-4567-8d09-45cd02965eb6} - - - {d6973076-9317-4ef2-a0b8-b7a18ac0713e} - - - {01f4ce10-2cfb-41a8-b41f-e54337868a1d} - - - - - - + + + + + Debug + Win32 + + + Debug + x64 + + + Devel + Win32 + + + Devel + x64 + + + Release + Win32 + + + Release + x64 + + + + wxCore30 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75} + + + + StaticLibrary + false + Unicode + v110_xp + true + + + StaticLibrary + false + Unicode + v110_xp + true + + + StaticLibrary + false + Unicode + v110_xp + true + + + StaticLibrary + false + Unicode + v110_xp + true + + + StaticLibrary + false + Unicode + v110_xp + + + StaticLibrary + false + Unicode + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + + + WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + Disabled + _DEBUG;wxUSE_BASE=0;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + + + _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + 0x0409 + + + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + Disabled + _DEBUG;wxUSE_BASE=0;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + + + _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_BASE=0;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_BASE=0;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + wxUSE_BASE=0;%(PreprocessorDefinitions) + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + wxUSE_BASE=0;%(PreprocessorDefinitions) + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + true + true + true + true + true + true + + + + + + true + true + true + true + true + true + + + + true + true + true + true + true + true + + + + true + true + true + true + true + true + + + + true + true + true + true + true + true + + + + + + + + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + $(IntDir)generic_%(Filename).obj + $(IntDir)generic_%(Filename).obj + $(IntDir)generic_%(Filename).obj + $(IntDir)generic_%(Filename).obj + $(IntDir)generic_%(Filename).obj + $(IntDir)generic_%(Filename).obj + + + + + + + + + + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + true + true + true + true + true + true + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + true + true + true + true + true + true + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + {bc236261-77e8-4567-8d09-45cd02965eb6} + + + {d6973076-9317-4ef2-a0b8-b7a18ac0713e} + + + {01f4ce10-2cfb-41a8-b41f-e54337868a1d} + + + + + + diff --git a/3rdparty/wxwidgets3.0/build/msw/wx30_core_vs2013.vcxproj b/3rdparty/wxwidgets3.0/build/msw/wx30_core_vs2013.vcxproj index e75b926f5b..e0b7fabaa3 100644 --- a/3rdparty/wxwidgets3.0/build/msw/wx30_core_vs2013.vcxproj +++ b/3rdparty/wxwidgets3.0/build/msw/wx30_core_vs2013.vcxproj @@ -1,2344 +1,2344 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Devel - Win32 - - - Devel - x64 - - - Release - Win32 - - - Release - x64 - - - - wxCore30 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75} - - - - StaticLibrary - false - Unicode - v120_xp - true - - - StaticLibrary - false - Unicode - v120_xp - true - - - StaticLibrary - false - Unicode - v120_xp - true - - - StaticLibrary - false - Unicode - v120_xp - true - - - StaticLibrary - false - Unicode - v120_xp - - - StaticLibrary - false - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - - - - WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - Disabled - _DEBUG;wxUSE_BASE=0;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - - - _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - 0x0409 - - - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - Disabled - _DEBUG;wxUSE_BASE=0;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - - - _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_BASE=0;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_BASE=0;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_BASE=0;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) - - - /MP %(AdditionalOptions) - MaxSpeed - wxUSE_BASE=0;%(PreprocessorDefinitions) - Use - wx/wxprec.h - $(IntDir)..\wxprec_$(ProjectName)lib.pch - Level4 - true - ProgramDatabase - AnySuitable - true - Speed - - - _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - $(IntDir)msw_%(Filename).obj - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - true - true - true - true - true - true - - - - - - true - true - true - true - true - true - - - - true - true - true - true - true - true - - - - true - true - true - true - true - true - - - - true - true - true - true - true - true - - - - - - - - true - true - true - true - true - true - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - $(IntDir)generic_%(Filename).obj - $(IntDir)generic_%(Filename).obj - $(IntDir)generic_%(Filename).obj - $(IntDir)generic_%(Filename).obj - $(IntDir)generic_%(Filename).obj - $(IntDir)generic_%(Filename).obj - - - - - - - - - - true - true - true - true - true - true - - - - - true - true - true - true - true - true - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - true - true - true - true - true - true - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - true - true - true - true - true - true - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - - {bc236261-77e8-4567-8d09-45cd02965eb6} - - - {d6973076-9317-4ef2-a0b8-b7a18ac0713e} - - - {01f4ce10-2cfb-41a8-b41f-e54337868a1d} - - - - - - + + + + + Debug + Win32 + + + Debug + x64 + + + Devel + Win32 + + + Devel + x64 + + + Release + Win32 + + + Release + x64 + + + + wxCore30 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75} + + + + StaticLibrary + false + Unicode + v120_xp + true + + + StaticLibrary + false + Unicode + v120_xp + true + + + StaticLibrary + false + Unicode + v120_xp + true + + + StaticLibrary + false + Unicode + v120_xp + true + + + StaticLibrary + false + Unicode + v120_xp + + + StaticLibrary + false + Unicode + v120_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + + + WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + Disabled + _DEBUG;wxUSE_BASE=0;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + + + _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + 0x0409 + + + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + Disabled + _DEBUG;wxUSE_BASE=0;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + + + _DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_BASE=0;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_BASE=0;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + 0x0409 + + + true + MachineX86 + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_BASE=0;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + $(OutDir)$(wxIncSubDir);..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib;%(AdditionalIncludeDirectories) + + + /MP %(AdditionalOptions) + MaxSpeed + wxUSE_BASE=0;%(PreprocessorDefinitions) + Use + wx/wxprec.h + $(IntDir)..\wxprec_$(ProjectName)lib.pch + Level4 + true + ProgramDatabase + AnySuitable + true + Speed + + + _CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXBUILDING;wxUSE_BASE=0;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + $(OutDir)wx_$(wxCompilerPrefix)_$(ProjectName).bsc + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + $(IntDir)msw_%(Filename).obj + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + true + true + true + true + true + true + + + + + + true + true + true + true + true + true + + + + true + true + true + true + true + true + + + + true + true + true + true + true + true + + + + true + true + true + true + true + true + + + + + + + + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + $(IntDir)generic_%(Filename).obj + $(IntDir)generic_%(Filename).obj + $(IntDir)generic_%(Filename).obj + $(IntDir)generic_%(Filename).obj + $(IntDir)generic_%(Filename).obj + $(IntDir)generic_%(Filename).obj + + + + + + + + + + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + true + true + true + true + true + true + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + true + true + true + true + true + true + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + {bc236261-77e8-4567-8d09-45cd02965eb6} + + + {d6973076-9317-4ef2-a0b8-b7a18ac0713e} + + + {01f4ce10-2cfb-41a8-b41f-e54337868a1d} + + + + + + diff --git a/3rdparty/wxwidgets3.0/build/msw/wx_vc12_wx_setup.props b/3rdparty/wxwidgets3.0/build/msw/wx_vc12_wx_setup.props index 0e617f52d7..8120294835 100644 --- a/3rdparty/wxwidgets3.0/build/msw/wx_vc12_wx_setup.props +++ b/3rdparty/wxwidgets3.0/build/msw/wx_vc12_wx_setup.props @@ -1,103 +1,103 @@ - - - - 30 - msw - vc - - - custom - - - - - - - _x64 - - - _ia64 - - - ud - - - d - - - u - - - - - - - d - - - - - - - ..\..\lib\$(wxCompilerPrefix)$(wxArchSuffix)_dll$(wxCfg)\ - - - ..\..\lib\$(wxCompilerPrefix)$(wxArchSuffix)_dll$(wxCfg)\ - - - ..\..\lib\$(wxCompilerPrefix)$(wxArchSuffix)_lib$(wxCfg)\ - - - ..\..\lib\$(wxCompilerPrefix)$(wxArchSuffix)_lib$(wxCfg)\ - - - $(wxCompilerPrefix)$(wxArchSuffix)_$(wxToolkitPrefix)$(wxSuffix)dll\ - - - $(wxCompilerPrefix)$(wxArchSuffix)_$(wxToolkitPrefix)$(wxSuffix)dll\ - - - $(wxCompilerPrefix)$(wxArchSuffix)_$(wxToolkitPrefix)$(wxSuffix)\ - - - $(wxCompilerPrefix)$(wxArchSuffix)_$(wxToolkitPrefix)$(wxSuffix)\ - - - $(wxToolkitPrefix)$(wxSuffix) - wx$(wxToolkitPrefix)$(wxShortVersionString)$(wxSuffix)_ - _$(wxCompilerPrefix)$(wxArchSuffix)_$(wxVendor) - wx$(wxToolkitPrefix)$(wxShortVersionString)$(wxSuffix)_ - wxbase$(wxShortVersionString)$(wxSuffix) - - - - kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;advapi32.lib;comctl32.lib;rpcrt4.lib;wsock32.lib;wininet.lib;winmm.lib;%(AdditionalDependencies) - - - - - $(wxShortVersionString) - - - $(wxArchSuffix) - - - $(wxToolkitPrefix) - - - $(wxCompilerPrefix) - - - $(wxCfg) - - - $(wxVendor) - - - $(wxOutDir) - - - $(wxIntRootDir) - - - + + + + 30 + msw + vc + + + custom + + + + + + + _x64 + + + _ia64 + + + ud + + + d + + + u + + + + + + + d + + + + + + + ..\..\lib\$(wxCompilerPrefix)$(wxArchSuffix)_dll$(wxCfg)\ + + + ..\..\lib\$(wxCompilerPrefix)$(wxArchSuffix)_dll$(wxCfg)\ + + + ..\..\lib\$(wxCompilerPrefix)$(wxArchSuffix)_lib$(wxCfg)\ + + + ..\..\lib\$(wxCompilerPrefix)$(wxArchSuffix)_lib$(wxCfg)\ + + + $(wxCompilerPrefix)$(wxArchSuffix)_$(wxToolkitPrefix)$(wxSuffix)dll\ + + + $(wxCompilerPrefix)$(wxArchSuffix)_$(wxToolkitPrefix)$(wxSuffix)dll\ + + + $(wxCompilerPrefix)$(wxArchSuffix)_$(wxToolkitPrefix)$(wxSuffix)\ + + + $(wxCompilerPrefix)$(wxArchSuffix)_$(wxToolkitPrefix)$(wxSuffix)\ + + + $(wxToolkitPrefix)$(wxSuffix) + wx$(wxToolkitPrefix)$(wxShortVersionString)$(wxSuffix)_ + _$(wxCompilerPrefix)$(wxArchSuffix)_$(wxVendor) + wx$(wxToolkitPrefix)$(wxShortVersionString)$(wxSuffix)_ + wxbase$(wxShortVersionString)$(wxSuffix) + + + + kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;advapi32.lib;comctl32.lib;rpcrt4.lib;wsock32.lib;wininet.lib;winmm.lib;%(AdditionalDependencies) + + + + + $(wxShortVersionString) + + + $(wxArchSuffix) + + + $(wxToolkitPrefix) + + + $(wxCompilerPrefix) + + + $(wxCfg) + + + $(wxVendor) + + + $(wxOutDir) + + + $(wxIntRootDir) + + + diff --git a/3rdparty/zlib/zlib_vs2012.vcxproj b/3rdparty/zlib/zlib_vs2012.vcxproj index 4eac5c3007..faa9a6252f 100644 --- a/3rdparty/zlib/zlib_vs2012.vcxproj +++ b/3rdparty/zlib/zlib_vs2012.vcxproj @@ -1,127 +1,127 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47} - zlib - zlib - - - - StaticLibrary - MultiByte - false - v110_xp - - - StaticLibrary - MultiByte - true - v110_xp - - - StaticLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName)-dev - - - - _CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - Level3 - - - - - _CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - Level3 - - - - - _CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - Level3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47} + zlib + zlib + + + + StaticLibrary + MultiByte + false + v110_xp + + + StaticLibrary + MultiByte + true + v110_xp + + + StaticLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)-dev + + + + _CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Level3 + + + + + _CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Level3 + + + + + _CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Level3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/3rdparty/zlib/zlib_vs2012.vcxproj.filters b/3rdparty/zlib/zlib_vs2012.vcxproj.filters index 3c69f7f9f0..b5d88d6361 100644 --- a/3rdparty/zlib/zlib_vs2012.vcxproj.filters +++ b/3rdparty/zlib/zlib_vs2012.vcxproj.filters @@ -1,92 +1,92 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + \ No newline at end of file diff --git a/bin/PCSX2_keys.ini.default b/bin/PCSX2_keys.ini.default index a3a17e5313..9944fcb2dc 100644 --- a/bin/PCSX2_keys.ini.default +++ b/bin/PCSX2_keys.ini.default @@ -1,81 +1,81 @@ -# IMPORTANT: PCSX2 only looks for PCSX2_keys.ini at the inis folder. -# You should first copy PCSX2_keys.ini.default to the inis folder, then -# rename it to PCSX2_keys.ini, and then edit it. - -# Important: keys which are defined at the input plugin (LilyPad) will override -# shortcuts at this file. - -# IMPORTANT: GSdx has fixed shortcuts. Make sure your shortcuts don't conflict. -# Also, they will affect GSdx also when alt/ctrl/shift are pressed, so it's -# best to completely avoid them at this file. GSdx uses: -# F5 - Deinterlace modes -# F7 - Internal "TV-like" shaders -# PAGE_UP - FXAA antialiasing (HW and SW) -# DELETE - Software Antialiasing (AA1) -# HOME - FX shader -# INSERT - Software mipmapping - -# Note: some "normal" keys may not display correctly at the log console message -# but still work correctly (e.g. ']'). - -# ----------------------------------------------------------------------------- -# The KB shortcuts can be a normal key (e.g. f or ] etc) or a combination of -# ALT/SHIFT/CTRL and a key, separated with a - (e.g. m or alt-m or alt-ctrl-m). -# Number (key) pad names start with KP_ (e.g. KP_0 to KP_9, KP_ADD, etc) - -# List of special key names (beyond KP_0 to KP_9 and normal keys): -# DEL DELETE BACK INS INSERT ENTER RETURN PGUP PGDN LEFT RIGHT UP DOWN HOME END -# SPACE TAB ESC ESCAPE CANCEL CLEAR MENU PAUSE CAPITAL SELECT PRINT EXECUTE -# SNAPSHOT HELP ADD SEPARATOR SUBTRACT DECIMAL DIVIDE NUM_LOCK SCROLL_LOCK -# PAGEUP PAGEDOWN KP_SPACE KP_TAB KP_ENTER KP_HOME KP_LEFT KP_UP KP_RIGHT -# KP_DOWN KP_PRIOR KP_PAGEUP KP_NEXT KP_PAGEDOWN KP_END KP_BEGIN KP_INSERT -# KP_DELETE KP_EQUAL KP_MULTIPLY KP_ADD KP_SEPARATOR KP_SUBTRACT KP_DECIMAL -# KP_DIVIDE WINDOWS_LEFT WINDOWS_RIGHT WINDOWS_MENU COMMAND - -# save state: freeze is save state, defrost is load state. -States_FreezeCurrentSlot = F1 -States_DefrostCurrentSlot = F3 -States_DefrostCurrentSlotBackup = Shift-F3 -States_CycleSlotForward = F2 -States_CycleSlotBackward = Shift-F2 - -Frameskip_Toggle = Shift-F4 -Framelimiter_TurboToggle = TAB -Framelimiter_SlomoToggle = Shift-TAB -Framelimiter_MasterToggle = F4 - -FullscreenToggle = Alt-ENTER - -Sys_Suspend = ESC - -# PCSX2 binds F8, shift-F8 and ctrl-shift-f8 to Sys_TakeSnapshot. -# This ini file supports only one key per function, so if you override -# it then it will override all 3 original bindings (and show some warnings). -# Sys_TakeSnapshot = F8 - -# Hardware/software rendering toggle -Sys_RenderswitchToggle = F9 - -Sys_LoggingToggle = F10 -# The FreezeGS function is currently disabled internally. -Sys_FreezeGS = F11 -Sys_RecordingToggle = F12 - -GSwindow_CycleAspectRatio = F6 - -# Whole picture zoom in/out -GSwindow_ZoomIn = Ctrl-KP_ADD -GSwindow_ZoomOut = Ctrl-KP_SUBTRACT -GSwindow_ZoomToggle = Ctrl-KP_MULTIPLY - -# Vertical stretch/squash -GSwindow_ZoomInY = Alt-Ctrl-KP_ADD -GSwindow_ZoomOutY = Alt-Ctrl-KP_SUBTRACT -GSwindow_ZoomResetY = Alt-Ctrl-KP_MULTIPLY - -# Move the whole image -GSwindow_OffsetYminus = Alt-Ctrl-UP -GSwindow_OffsetYplus = Alt-Ctrl-DOWN -GSwindow_OffsetXminus = Alt-Ctrl-LEFT -GSwindow_OffsetXplus = Alt-Ctrl-RIGHT -GSwindow_OffsetReset = Alt-Ctrl-KP_DIVIDE +# IMPORTANT: PCSX2 only looks for PCSX2_keys.ini at the inis folder. +# You should first copy PCSX2_keys.ini.default to the inis folder, then +# rename it to PCSX2_keys.ini, and then edit it. + +# Important: keys which are defined at the input plugin (LilyPad) will override +# shortcuts at this file. + +# IMPORTANT: GSdx has fixed shortcuts. Make sure your shortcuts don't conflict. +# Also, they will affect GSdx also when alt/ctrl/shift are pressed, so it's +# best to completely avoid them at this file. GSdx uses: +# F5 - Deinterlace modes +# F7 - Internal "TV-like" shaders +# PAGE_UP - FXAA antialiasing (HW and SW) +# DELETE - Software Antialiasing (AA1) +# HOME - FX shader +# INSERT - Software mipmapping + +# Note: some "normal" keys may not display correctly at the log console message +# but still work correctly (e.g. ']'). + +# ----------------------------------------------------------------------------- +# The KB shortcuts can be a normal key (e.g. f or ] etc) or a combination of +# ALT/SHIFT/CTRL and a key, separated with a - (e.g. m or alt-m or alt-ctrl-m). +# Number (key) pad names start with KP_ (e.g. KP_0 to KP_9, KP_ADD, etc) + +# List of special key names (beyond KP_0 to KP_9 and normal keys): +# DEL DELETE BACK INS INSERT ENTER RETURN PGUP PGDN LEFT RIGHT UP DOWN HOME END +# SPACE TAB ESC ESCAPE CANCEL CLEAR MENU PAUSE CAPITAL SELECT PRINT EXECUTE +# SNAPSHOT HELP ADD SEPARATOR SUBTRACT DECIMAL DIVIDE NUM_LOCK SCROLL_LOCK +# PAGEUP PAGEDOWN KP_SPACE KP_TAB KP_ENTER KP_HOME KP_LEFT KP_UP KP_RIGHT +# KP_DOWN KP_PRIOR KP_PAGEUP KP_NEXT KP_PAGEDOWN KP_END KP_BEGIN KP_INSERT +# KP_DELETE KP_EQUAL KP_MULTIPLY KP_ADD KP_SEPARATOR KP_SUBTRACT KP_DECIMAL +# KP_DIVIDE WINDOWS_LEFT WINDOWS_RIGHT WINDOWS_MENU COMMAND + +# save state: freeze is save state, defrost is load state. +States_FreezeCurrentSlot = F1 +States_DefrostCurrentSlot = F3 +States_DefrostCurrentSlotBackup = Shift-F3 +States_CycleSlotForward = F2 +States_CycleSlotBackward = Shift-F2 + +Frameskip_Toggle = Shift-F4 +Framelimiter_TurboToggle = TAB +Framelimiter_SlomoToggle = Shift-TAB +Framelimiter_MasterToggle = F4 + +FullscreenToggle = Alt-ENTER + +Sys_Suspend = ESC + +# PCSX2 binds F8, shift-F8 and ctrl-shift-f8 to Sys_TakeSnapshot. +# This ini file supports only one key per function, so if you override +# it then it will override all 3 original bindings (and show some warnings). +# Sys_TakeSnapshot = F8 + +# Hardware/software rendering toggle +Sys_RenderswitchToggle = F9 + +Sys_LoggingToggle = F10 +# The FreezeGS function is currently disabled internally. +Sys_FreezeGS = F11 +Sys_RecordingToggle = F12 + +GSwindow_CycleAspectRatio = F6 + +# Whole picture zoom in/out +GSwindow_ZoomIn = Ctrl-KP_ADD +GSwindow_ZoomOut = Ctrl-KP_SUBTRACT +GSwindow_ZoomToggle = Ctrl-KP_MULTIPLY + +# Vertical stretch/squash +GSwindow_ZoomInY = Alt-Ctrl-KP_ADD +GSwindow_ZoomOutY = Alt-Ctrl-KP_SUBTRACT +GSwindow_ZoomResetY = Alt-Ctrl-KP_MULTIPLY + +# Move the whole image +GSwindow_OffsetYminus = Alt-Ctrl-UP +GSwindow_OffsetYplus = Alt-Ctrl-DOWN +GSwindow_OffsetXminus = Alt-Ctrl-LEFT +GSwindow_OffsetXplus = Alt-Ctrl-RIGHT +GSwindow_OffsetReset = Alt-Ctrl-KP_DIVIDE diff --git a/bin/cheats/DE37E046.pnach b/bin/cheats/DE37E046.pnach index 7eec098dc9..67694e7a28 100644 --- a/bin/cheats/DE37E046.pnach +++ b/bin/cheats/DE37E046.pnach @@ -1,15 +1,15 @@ -comment=Persona 4 Cheats - -// Max Courage -//patch=1,EE,007973F4,word,000000FF - -// Inf Money -//patch=1,EE,2079B68C,word,05F5E0FF - -// Inf Health -patch=1,EE,207973CC,word,000003E7 -patch=1,EE,007973CC,word,000003E7 - -// Inf Spirit -patch=1,EE,207973CE,word,000003E7 -patch=1,EE,007973CE,word,000003E7 +comment=Persona 4 Cheats + +// Max Courage +//patch=1,EE,007973F4,word,000000FF + +// Inf Money +//patch=1,EE,2079B68C,word,05F5E0FF + +// Inf Health +patch=1,EE,207973CC,word,000003E7 +patch=1,EE,007973CC,word,000003E7 + +// Inf Spirit +patch=1,EE,207973CE,word,000003E7 +patch=1,EE,007973CE,word,000003E7 diff --git a/bin/run_spu2_replay.cmd b/bin/run_spu2_replay.cmd index 82132d3859..004ae23340 100644 --- a/bin/run_spu2_replay.cmd +++ b/bin/run_spu2_replay.cmd @@ -1 +1 @@ -%systemroot%\syswow64\rundll32 plugins\SPU2-X-dev.dll,_s2r_replay@16 replay_dump.s2r +%systemroot%\syswow64\rundll32 plugins\SPU2-X-dev.dll,_s2r_replay@16 replay_dump.s2r diff --git a/clean_msvc.cmd b/clean_msvc.cmd index 532eadc973..4b66ac2822 100644 --- a/clean_msvc.cmd +++ b/clean_msvc.cmd @@ -1,29 +1,29 @@ -:: clean_msvc.cmd -:: -:: This batch file cleans up some files that MSVC's Clean/Rebuild commands tend to miss. In -:: particular the .ilk and .pdb files are known to get corrupted and cause all sorts of odd linker -:: linker errors, and the .ncb files can also get corrupted and cause intellisense breakges. -:: -:: Safety: This tool should be pretty safe. It uses the command path to perform the deletion, -:: instead of relying on the CWD (which can sometimes fail to be set when working with UNCs across -:: network shares). Furthermore, none of the files it deletes are important. That is, they're -:: all files MSVC just rebuilds automatically next time you run/recompile. The one minor -:: exception is *.pdb, since windows and a lot of developer tools include PDB sets to assist in -:: application debugging (however these files are by no means required by any software). - -del /s "%~dp0\*.ncb" -del /s "%~dp0\*.obj" -del /s "%~dp0\bin\*.ilk" -del /s "%~dp0\*.idb" -del /s "%~dp0\*.bsc" -del /s "%~dp0\*.sbr" -del /s "%~dp0\*.pch" -del /s "%~dp0\*.pdb" - -del /s /q "%~dp0\deps" - -:: These two can't be used currently because they match unwanted 4+ letter extensions, such -:: as *.resx and *.tmpl ... wow, stupid. >_< - -:: del /s "%~dp0\*.tmp" -:: del /s "%~dp0\*.res" +:: clean_msvc.cmd +:: +:: This batch file cleans up some files that MSVC's Clean/Rebuild commands tend to miss. In +:: particular the .ilk and .pdb files are known to get corrupted and cause all sorts of odd linker +:: linker errors, and the .ncb files can also get corrupted and cause intellisense breakges. +:: +:: Safety: This tool should be pretty safe. It uses the command path to perform the deletion, +:: instead of relying on the CWD (which can sometimes fail to be set when working with UNCs across +:: network shares). Furthermore, none of the files it deletes are important. That is, they're +:: all files MSVC just rebuilds automatically next time you run/recompile. The one minor +:: exception is *.pdb, since windows and a lot of developer tools include PDB sets to assist in +:: application debugging (however these files are by no means required by any software). + +del /s "%~dp0\*.ncb" +del /s "%~dp0\*.obj" +del /s "%~dp0\bin\*.ilk" +del /s "%~dp0\*.idb" +del /s "%~dp0\*.bsc" +del /s "%~dp0\*.sbr" +del /s "%~dp0\*.pch" +del /s "%~dp0\*.pdb" + +del /s /q "%~dp0\deps" + +:: These two can't be used currently because they match unwanted 4+ letter extensions, such +:: as *.resx and *.tmpl ... wow, stupid. >_< + +:: del /s "%~dp0\*.tmp" +:: del /s "%~dp0\*.res" diff --git a/common/build/Utilities/utilities_vs2012.vcxproj b/common/build/Utilities/utilities_vs2012.vcxproj index 6ebcf61968..cfff6843f3 100644 --- a/common/build/Utilities/utilities_vs2012.vcxproj +++ b/common/build/Utilities/utilities_vs2012.vcxproj @@ -1,199 +1,199 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - {4639972E-424E-4E13-8B07-CA403C481346} - x86emitter - Win32Proj - utilities - - - - StaticLibrary - Unicode - true - v110_xp - - - StaticLibrary - Unicode - true - v110_xp - - - StaticLibrary - Unicode - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - _LIB;%(PreprocessorDefinitions) - Async - Use - PrecompiledHeader.h - - - - - _LIB;%(PreprocessorDefinitions) - Async - Use - PrecompiledHeader.h - - - - - _LIB;%(PreprocessorDefinitions) - Async - Use - PrecompiledHeader.h - - - - - - - - - - - - - - - - - - - Create - Create - Create - - - - - - - - - - - true - true - true - - - true - true - true - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {3fcc50c2-81e9-5db2-b8d8-2129427568b1} - - - {6744dad8-9c70-574a-bff2-9f8dddb24a75} - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + {4639972E-424E-4E13-8B07-CA403C481346} + x86emitter + Win32Proj + utilities + + + + StaticLibrary + Unicode + true + v110_xp + + + StaticLibrary + Unicode + true + v110_xp + + + StaticLibrary + Unicode + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _LIB;%(PreprocessorDefinitions) + Async + Use + PrecompiledHeader.h + + + + + _LIB;%(PreprocessorDefinitions) + Async + Use + PrecompiledHeader.h + + + + + _LIB;%(PreprocessorDefinitions) + Async + Use + PrecompiledHeader.h + + + + + + + + + + + + + + + + + + + Create + Create + Create + + + + + + + + + + + true + true + true + + + true + true + true + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {3fcc50c2-81e9-5db2-b8d8-2129427568b1} + + + {6744dad8-9c70-574a-bff2-9f8dddb24a75} + + + + + diff --git a/common/build/Utilities/utilities_vs2012.vcxproj.filters b/common/build/Utilities/utilities_vs2012.vcxproj.filters index d0e937a35c..961b6a7d18 100644 --- a/common/build/Utilities/utilities_vs2012.vcxproj.filters +++ b/common/build/Utilities/utilities_vs2012.vcxproj.filters @@ -1,226 +1,226 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {54fbf775-c53a-4e27-8903-2f68688d7764} - - - {903e4e1a-fc21-4f41-83c6-fb70d90cbb58} - - - {b7963f4a-9718-4852-bb0a-62dc0931f98e} - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {a3d21581-efe9-4749-a801-0ae50cbed855} - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files\Linux - - - Source Files\Linux - - - Source Files\Linux - - - Source Files\Windows - - - Source Files\Windows - - - Source Files\Windows - - - Source Files\Threading - - - Source Files\Threading - - - Source Files\Threading - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files\Threading - - - - - Source Files\Threading - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files\Threading - - - Header Files - - - Header Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {54fbf775-c53a-4e27-8903-2f68688d7764} + + + {903e4e1a-fc21-4f41-83c6-fb70d90cbb58} + + + {b7963f4a-9718-4852-bb0a-62dc0931f98e} + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {a3d21581-efe9-4749-a801-0ae50cbed855} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\Linux + + + Source Files\Linux + + + Source Files\Linux + + + Source Files\Windows + + + Source Files\Windows + + + Source Files\Windows + + + Source Files\Threading + + + Source Files\Threading + + + Source Files\Threading + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files\Threading + + + + + Source Files\Threading + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files\Threading + + + Header Files + + + Header Files + + diff --git a/common/build/x86emitter/x86emitter_vs2012.vcxproj b/common/build/x86emitter/x86emitter_vs2012.vcxproj index 06ed2f64e5..40e39ab2b8 100644 --- a/common/build/x86emitter/x86emitter_vs2012.vcxproj +++ b/common/build/x86emitter/x86emitter_vs2012.vcxproj @@ -1,156 +1,156 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - {A51123F5-9505-4EAE-85E7-D320290A272C} - x86emitter - Win32Proj - x86emitter - - - - StaticLibrary - Unicode - true - v110_xp - - - StaticLibrary - Unicode - true - v110_xp - - - StaticLibrary - Unicode - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) - Use - PrecompiledHeader.h - - - - - MaxSpeed - true - WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) - Use - PrecompiledHeader.h - - - - - MaxSpeed - true - WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) - Use - PrecompiledHeader.h - - - - - - - - - - - - Create - Create - Create - - - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + {A51123F5-9505-4EAE-85E7-D320290A272C} + x86emitter + Win32Proj + x86emitter + + + + StaticLibrary + Unicode + true + v110_xp + + + StaticLibrary + Unicode + true + v110_xp + + + StaticLibrary + Unicode + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + Use + PrecompiledHeader.h + + + + + MaxSpeed + true + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + Use + PrecompiledHeader.h + + + + + MaxSpeed + true + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + Use + PrecompiledHeader.h + + + + + + + + + + + + Create + Create + Create + + + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/common/build/x86emitter/x86emitter_vs2012.vcxproj.filters b/common/build/x86emitter/x86emitter_vs2012.vcxproj.filters index 9c156c3005..cebe36529e 100644 --- a/common/build/x86emitter/x86emitter_vs2012.vcxproj.filters +++ b/common/build/x86emitter/x86emitter_vs2012.vcxproj.filters @@ -1,147 +1,147 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {349ada14-68b6-4be5-8232-b162efb0a5aa} - - - {12d7c7d4-d7f1-43cb-86c3-585dad794bf6} - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {66921012-17b3-45f6-aa8c-82e845c489f8} - - - {ae9884f6-cbd3-4fb6-a011-c776dce9b6ee} - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files\Linux - - - Source Files\Windows - - - - - Source Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files\Implement - - - Header Files\Implement - - - Header Files\Implement - - - Header Files\Implement - - - Header Files\Implement - - - Header Files\Implement - - - Header Files\Implement - - - Header Files\Implement - - - Header Files\Implement - - - Header Files\Implement - - - Header Files\Implement_Simd - - - Header Files\Implement_Simd - - - Header Files\Implement_Simd - - - Header Files\Implement_Simd - - - Header Files\Implement_Simd - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {349ada14-68b6-4be5-8232-b162efb0a5aa} + + + {12d7c7d4-d7f1-43cb-86c3-585dad794bf6} + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {66921012-17b3-45f6-aa8c-82e845c489f8} + + + {ae9884f6-cbd3-4fb6-a011-c776dce9b6ee} + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\Linux + + + Source Files\Windows + + + + + Source Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files\Implement + + + Header Files\Implement + + + Header Files\Implement + + + Header Files\Implement + + + Header Files\Implement + + + Header Files\Implement + + + Header Files\Implement + + + Header Files\Implement + + + Header Files\Implement + + + Header Files\Implement + + + Header Files\Implement_Simd + + + Header Files\Implement_Simd + + + Header Files\Implement_Simd + + + Header Files\Implement_Simd + + + Header Files\Implement_Simd + + diff --git a/common/include/comptr.h b/common/include/comptr.h index 4d696f3da2..f068c40c38 100644 --- a/common/include/comptr.h +++ b/common/include/comptr.h @@ -1,419 +1,419 @@ -#pragma once - -#ifndef ASSERT - -#ifdef _DEBUG - #include - #define ASSERT assert -#else - #define ASSERT(exp) ((void)0) -#endif - -#endif - -inline IUnknown* AtlComPtrAssign(IUnknown** pp, IUnknown* lp) -{ - if(pp == NULL) return NULL; - - if(lp != NULL) lp->AddRef(); - - if(*pp) (*pp)->Release(); - - *pp = lp; - - return lp; -} - -inline IUnknown* AtlComQIPtrAssign(IUnknown** pp, IUnknown* lp, REFIID riid) -{ - if(pp == NULL) return NULL; - - IUnknown* pTemp = *pp; - - if(lp == NULL || FAILED(lp->QueryInterface(riid, (void**)pp))) *pp = NULL; - - if(pTemp) pTemp->Release(); - - return *pp; -} - -template class _NoAddRefReleaseOnCComPtr : public T -{ -private: - STDMETHOD_(ULONG, AddRef)() = 0; - STDMETHOD_(ULONG, Release)() = 0; -}; - -template class CComPtrBase -{ -protected: - CComPtrBase() throw() - { - p = NULL; - } - - CComPtrBase(T* lp) throw() - { - p = lp; - - if(p != NULL) p->AddRef(); - } - - void Swap(CComPtrBase& other) - { - T* pTemp = p; - p = other.p; - other.p = pTemp; - } - -public: - typedef T _PtrClass; - - ~CComPtrBase() throw() - { - if(p) p->Release(); - } - - operator T*() const throw() - { - return p; - } - - T& operator*() const - { - ASSERT(p != NULL); - - return *p; - } - - T** operator&() throw() - { - ASSERT(p == NULL); - - return &p; - } - - _NoAddRefReleaseOnCComPtr* operator->() const throw() - { - ASSERT(p != NULL); - - return (_NoAddRefReleaseOnCComPtr*)p; - } - - bool operator!() const throw() - { - return p == NULL; - } - - bool operator < (T* pT) const throw() - { - return p < pT; - } - - bool operator != (T* pT) const - { - return !operator==(pT); - } - - bool operator == (T* pT) const throw() - { - return p == pT; - } - - void Release() throw() - { - T* pTemp = p; - - if(pTemp) - { - p = NULL; - pTemp->Release(); - } - } - - bool IsEqualObject(IUnknown* pOther) throw() - { - if(p == NULL && pOther == NULL) return true; - - if(p == NULL || pOther == NULL) return false; - - CComPtr punk1; - CComPtr punk2; - - p->QueryInterface(__uuidof(IUnknown), (void**)&punk1); - pOther->QueryInterface(__uuidof(IUnknown), (void**)&punk2); - - return punk1 == punk2; - } - - void Attach(T* p2) throw() - { - if(p) - { - ULONG ref = p->Release(); - - (ref); - - ASSERT(ref != 0 || p2 != p); - } - - p = p2; - } - - T* Detach() throw() - { - T* pt = p; - p = NULL; - return pt; - } - - HRESULT CopyTo(T** ppT) throw() - { - ASSERT(ppT != NULL); - - if(ppT == NULL) return E_POINTER; - - *ppT = p; - - if(p) p->AddRef(); - - return S_OK; - } - - HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter = NULL, DWORD dwClsContext = CLSCTX_ALL) throw() - { - ASSERT(p == NULL); - - return ::CoCreateInstance(rclsid, pUnkOuter, dwClsContext, __uuidof(T), (void**)&p); - } - - template HRESULT QueryInterface(Q** pp) const throw() - { - ASSERT(pp != NULL); - - return p->QueryInterface(__uuidof(Q), (void**)pp); - } - - T* p; -}; - -template class CComPtr : public CComPtrBase -{ -public: - CComPtr() throw() - { - } - - CComPtr(T* lp) throw() : CComPtrBase(lp) - { - } - - CComPtr(const CComPtr& lp) throw() : CComPtrBase(lp.p) - { - } - - T* operator = (T* lp) throw() - { - if(*this != lp) - { - CComPtr(lp).Swap(*this); - } - - return *this; - } - - template T* operator = (const CComPtr& lp) throw() - { - if(!IsEqualObject(lp)) - { - return static_cast(AtlComQIPtrAssign((IUnknown**)&p, lp, __uuidof(T))); - } - - return *this; - } - - T* operator = (const CComPtr& lp) throw() - { - if(*this != lp) - { - CComPtr(lp).Swap(*this); - } - - return *this; - } - - CComPtr(CComPtr&& lp) throw() : CComPtrBase() - { - lp.Swap(*this); - } - - T* operator = (CComPtr&& lp) throw() - { - if(*this != lp) - { - CComPtr(static_cast(lp)).Swap(*this); - } - - return *this; - } -}; - -template<> class CComPtr : public CComPtrBase -{ -public: - CComPtr() throw() - { - } - - CComPtr(IDispatch* lp) throw() : CComPtrBase(lp) - { - } - - CComPtr(const CComPtr& lp) throw() : CComPtrBase(lp.p) - { - } - - IDispatch* operator = (IDispatch* lp) throw() - { - if(*this != lp) - { - CComPtr(lp).Swap(*this); - } - - return *this; - } - - IDispatch* operator = (const CComPtr& lp) throw() - { - if(*this != lp) - { - CComPtr(lp).Swap(*this); - } - - return *this; - } - - CComPtr(CComPtr&& lp) throw() : CComPtrBase() - { - p = lp.p; - lp.p = NULL; - } - - IDispatch* operator = (CComPtr&& lp) throw() - { - CComPtr(static_cast(lp)).Swap(*this); - - return *this; - } -}; - -template class CComQIPtr : public CComPtr -{ -public: - CComQIPtr() throw() - { - } - /* - CComQIPtr(decltype(__nullptr)) throw() - { - } - */ - CComQIPtr(_Inout_opt_ T* lp) throw() : CComPtr(lp) - { - } - - CComQIPtr(_Inout_ const CComQIPtr& lp) throw() : CComPtr(lp.p) - { - } - - CComQIPtr(_Inout_opt_ IUnknown* lp) throw() - { - if(lp != NULL) - { - if(FAILED(lp->QueryInterface(*piid, (void **)&p))) - { - p = NULL; - } - } - } - /* - T* operator=(decltype(__nullptr)) throw() - { - CComQIPtr(nullptr).Swap(*this); - - return nullptr; - } - */ - T* operator = (T* lp) throw() - { - if(*this != lp) - { - CComQIPtr(lp).Swap(*this); - } - - return *this; - } - - T* operator = (const CComQIPtr& lp) throw() - { - if(*this != lp) - { - CComQIPtr(lp).Swap(*this); - } - - return *this; - } - - T* operator = (IUnknown* lp) throw() - { - if(*this != lp) - { - return static_cast(AtlComQIPtrAssign((IUnknown**)&p, lp, *piid)); - } - - return *this; - } -}; - -template<> class CComQIPtr : public CComPtr -{ -public: - CComQIPtr() throw() - { - } - - CComQIPtr(IUnknown* lp) throw() - { - if(lp != NULL) - { - if(FAILED(lp->QueryInterface(__uuidof(IUnknown), (void **)&p))) - { - p = NULL; - } - } - } - - CComQIPtr(const CComQIPtr& lp) throw() : CComPtr(lp.p) - { - } - - IUnknown* operator = (IUnknown* lp) throw() - { - if(*this != lp) - { - return AtlComQIPtrAssign((IUnknown**)&p, lp, __uuidof(IUnknown)); - } - - return *this; - } - - IUnknown* operator = (const CComQIPtr& lp) throw() - { - if(*this != lp) - { - CComQIPtr(lp).Swap(*this); - } - - return *this; - } -}; +#pragma once + +#ifndef ASSERT + +#ifdef _DEBUG + #include + #define ASSERT assert +#else + #define ASSERT(exp) ((void)0) +#endif + +#endif + +inline IUnknown* AtlComPtrAssign(IUnknown** pp, IUnknown* lp) +{ + if(pp == NULL) return NULL; + + if(lp != NULL) lp->AddRef(); + + if(*pp) (*pp)->Release(); + + *pp = lp; + + return lp; +} + +inline IUnknown* AtlComQIPtrAssign(IUnknown** pp, IUnknown* lp, REFIID riid) +{ + if(pp == NULL) return NULL; + + IUnknown* pTemp = *pp; + + if(lp == NULL || FAILED(lp->QueryInterface(riid, (void**)pp))) *pp = NULL; + + if(pTemp) pTemp->Release(); + + return *pp; +} + +template class _NoAddRefReleaseOnCComPtr : public T +{ +private: + STDMETHOD_(ULONG, AddRef)() = 0; + STDMETHOD_(ULONG, Release)() = 0; +}; + +template class CComPtrBase +{ +protected: + CComPtrBase() throw() + { + p = NULL; + } + + CComPtrBase(T* lp) throw() + { + p = lp; + + if(p != NULL) p->AddRef(); + } + + void Swap(CComPtrBase& other) + { + T* pTemp = p; + p = other.p; + other.p = pTemp; + } + +public: + typedef T _PtrClass; + + ~CComPtrBase() throw() + { + if(p) p->Release(); + } + + operator T*() const throw() + { + return p; + } + + T& operator*() const + { + ASSERT(p != NULL); + + return *p; + } + + T** operator&() throw() + { + ASSERT(p == NULL); + + return &p; + } + + _NoAddRefReleaseOnCComPtr* operator->() const throw() + { + ASSERT(p != NULL); + + return (_NoAddRefReleaseOnCComPtr*)p; + } + + bool operator!() const throw() + { + return p == NULL; + } + + bool operator < (T* pT) const throw() + { + return p < pT; + } + + bool operator != (T* pT) const + { + return !operator==(pT); + } + + bool operator == (T* pT) const throw() + { + return p == pT; + } + + void Release() throw() + { + T* pTemp = p; + + if(pTemp) + { + p = NULL; + pTemp->Release(); + } + } + + bool IsEqualObject(IUnknown* pOther) throw() + { + if(p == NULL && pOther == NULL) return true; + + if(p == NULL || pOther == NULL) return false; + + CComPtr punk1; + CComPtr punk2; + + p->QueryInterface(__uuidof(IUnknown), (void**)&punk1); + pOther->QueryInterface(__uuidof(IUnknown), (void**)&punk2); + + return punk1 == punk2; + } + + void Attach(T* p2) throw() + { + if(p) + { + ULONG ref = p->Release(); + + (ref); + + ASSERT(ref != 0 || p2 != p); + } + + p = p2; + } + + T* Detach() throw() + { + T* pt = p; + p = NULL; + return pt; + } + + HRESULT CopyTo(T** ppT) throw() + { + ASSERT(ppT != NULL); + + if(ppT == NULL) return E_POINTER; + + *ppT = p; + + if(p) p->AddRef(); + + return S_OK; + } + + HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter = NULL, DWORD dwClsContext = CLSCTX_ALL) throw() + { + ASSERT(p == NULL); + + return ::CoCreateInstance(rclsid, pUnkOuter, dwClsContext, __uuidof(T), (void**)&p); + } + + template HRESULT QueryInterface(Q** pp) const throw() + { + ASSERT(pp != NULL); + + return p->QueryInterface(__uuidof(Q), (void**)pp); + } + + T* p; +}; + +template class CComPtr : public CComPtrBase +{ +public: + CComPtr() throw() + { + } + + CComPtr(T* lp) throw() : CComPtrBase(lp) + { + } + + CComPtr(const CComPtr& lp) throw() : CComPtrBase(lp.p) + { + } + + T* operator = (T* lp) throw() + { + if(*this != lp) + { + CComPtr(lp).Swap(*this); + } + + return *this; + } + + template T* operator = (const CComPtr& lp) throw() + { + if(!IsEqualObject(lp)) + { + return static_cast(AtlComQIPtrAssign((IUnknown**)&p, lp, __uuidof(T))); + } + + return *this; + } + + T* operator = (const CComPtr& lp) throw() + { + if(*this != lp) + { + CComPtr(lp).Swap(*this); + } + + return *this; + } + + CComPtr(CComPtr&& lp) throw() : CComPtrBase() + { + lp.Swap(*this); + } + + T* operator = (CComPtr&& lp) throw() + { + if(*this != lp) + { + CComPtr(static_cast(lp)).Swap(*this); + } + + return *this; + } +}; + +template<> class CComPtr : public CComPtrBase +{ +public: + CComPtr() throw() + { + } + + CComPtr(IDispatch* lp) throw() : CComPtrBase(lp) + { + } + + CComPtr(const CComPtr& lp) throw() : CComPtrBase(lp.p) + { + } + + IDispatch* operator = (IDispatch* lp) throw() + { + if(*this != lp) + { + CComPtr(lp).Swap(*this); + } + + return *this; + } + + IDispatch* operator = (const CComPtr& lp) throw() + { + if(*this != lp) + { + CComPtr(lp).Swap(*this); + } + + return *this; + } + + CComPtr(CComPtr&& lp) throw() : CComPtrBase() + { + p = lp.p; + lp.p = NULL; + } + + IDispatch* operator = (CComPtr&& lp) throw() + { + CComPtr(static_cast(lp)).Swap(*this); + + return *this; + } +}; + +template class CComQIPtr : public CComPtr +{ +public: + CComQIPtr() throw() + { + } + /* + CComQIPtr(decltype(__nullptr)) throw() + { + } + */ + CComQIPtr(_Inout_opt_ T* lp) throw() : CComPtr(lp) + { + } + + CComQIPtr(_Inout_ const CComQIPtr& lp) throw() : CComPtr(lp.p) + { + } + + CComQIPtr(_Inout_opt_ IUnknown* lp) throw() + { + if(lp != NULL) + { + if(FAILED(lp->QueryInterface(*piid, (void **)&p))) + { + p = NULL; + } + } + } + /* + T* operator=(decltype(__nullptr)) throw() + { + CComQIPtr(nullptr).Swap(*this); + + return nullptr; + } + */ + T* operator = (T* lp) throw() + { + if(*this != lp) + { + CComQIPtr(lp).Swap(*this); + } + + return *this; + } + + T* operator = (const CComQIPtr& lp) throw() + { + if(*this != lp) + { + CComQIPtr(lp).Swap(*this); + } + + return *this; + } + + T* operator = (IUnknown* lp) throw() + { + if(*this != lp) + { + return static_cast(AtlComQIPtrAssign((IUnknown**)&p, lp, *piid)); + } + + return *this; + } +}; + +template<> class CComQIPtr : public CComPtr +{ +public: + CComQIPtr() throw() + { + } + + CComQIPtr(IUnknown* lp) throw() + { + if(lp != NULL) + { + if(FAILED(lp->QueryInterface(__uuidof(IUnknown), (void **)&p))) + { + p = NULL; + } + } + } + + CComQIPtr(const CComQIPtr& lp) throw() : CComPtr(lp.p) + { + } + + IUnknown* operator = (IUnknown* lp) throw() + { + if(*this != lp) + { + return AtlComQIPtrAssign((IUnknown**)&p, lp, __uuidof(IUnknown)); + } + + return *this; + } + + IUnknown* operator = (const CComQIPtr& lp) throw() + { + if(*this != lp) + { + CComQIPtr(lp).Swap(*this); + } + + return *this; + } +}; diff --git a/common/svn_readme.txt b/common/svn_readme.txt index 1fca022271..511ec8d323 100644 --- a/common/svn_readme.txt +++ b/common/svn_readme.txt @@ -1,17 +1,17 @@ - -Folder: vsprops/ - - Contains Win32-specific build scripts and .vsprops files for use by Win32 projects - of our many (many!) plugins. - -Folder: include/ - - Houses the common include files for various shared portions of Pcsx2 code. The most - significant are the PS2Edefs / PS2Etypes files (plugin APIs). Other code snippets\ - and generic usefuls may be added at a later date. - -Folder: src/ - - Source code for snippets and libs maintained by the Pcsx2 Team. Code is compiled into - libs, which are found in /deps. (automatically included into your plugin linker + +Folder: vsprops/ + + Contains Win32-specific build scripts and .vsprops files for use by Win32 projects + of our many (many!) plugins. + +Folder: include/ + + Houses the common include files for various shared portions of Pcsx2 code. The most + significant are the PS2Edefs / PS2Etypes files (plugin APIs). Other code snippets\ + and generic usefuls may be added at a later date. + +Folder: src/ + + Source code for snippets and libs maintained by the Pcsx2 Team. Code is compiled into + libs, which are found in /deps. (automatically included into your plugin linker search path if you use the common/vsprops/) \ No newline at end of file diff --git a/common/vsprops/3rdpartyDeps.props b/common/vsprops/3rdpartyDeps.props index 3b06fce54e..49f08104f2 100644 --- a/common/vsprops/3rdpartyDeps.props +++ b/common/vsprops/3rdpartyDeps.props @@ -1,15 +1,15 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - <_PropertySheetDisplayName>Pcsx3rdpartyDependencies - - - - $(SvnRootDir)\3rdparty\;%(AdditionalIncludeDirectories) - - - $(SvnRootDir)\deps\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) - - + + + + <_ProjectFileVersion>10.0.30128.1 + <_PropertySheetDisplayName>Pcsx3rdpartyDependencies + + + + $(SvnRootDir)\3rdparty\;%(AdditionalIncludeDirectories) + + + $(SvnRootDir)\deps\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + + \ No newline at end of file diff --git a/common/vsprops/BaseProperties.props b/common/vsprops/BaseProperties.props index 042987edcc..b872bd2607 100644 --- a/common/vsprops/BaseProperties.props +++ b/common/vsprops/BaseProperties.props @@ -1,37 +1,37 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - <_PropertySheetDisplayName>PcsxBaseProperties - $(SolutionDir)bin\$(PcsxSubsection)\ - $(PlatformName)\$(Configuration)\ - *.bsc;*.idb;*.sbr;*.res;*.pch;*.pdb;*.obj;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;*.meta;$(TargetPath);$(ExtensionsToDeleteOnClean) - - - - true - $(SvnRootDir)\common\include;$(SvnRootDir)\3rdparty\wxWidgets3.0\include;%(AdditionalIncludeDirectories) - __WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - 16Bytes - true - false - Level3 - ProgramDatabase - Default - 4063;4100;%(DisableSpecificWarnings) - - - true - Windows - - - .\postBuild.cmd "$(TargetPath)" "$(TargetName)" $(TargetExt) $(PcsxSubsection) - - - "$(SvnCommonDir)\vsprops\preBuild.cmd" "$(ProjectRootDir)" - - - $(SolutionDir)\common\include;$(SolutionDir)\3rdparty\wxwidgets3.0\include;%(AdditionalIncludeDirectories) - - + + + + <_ProjectFileVersion>10.0.30128.1 + <_PropertySheetDisplayName>PcsxBaseProperties + $(SolutionDir)bin\$(PcsxSubsection)\ + $(PlatformName)\$(Configuration)\ + *.bsc;*.idb;*.sbr;*.res;*.pch;*.pdb;*.obj;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;*.meta;$(TargetPath);$(ExtensionsToDeleteOnClean) + + + + true + $(SvnRootDir)\common\include;$(SvnRootDir)\3rdparty\wxWidgets3.0\include;%(AdditionalIncludeDirectories) + __WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + 16Bytes + true + false + Level3 + ProgramDatabase + Default + 4063;4100;%(DisableSpecificWarnings) + + + true + Windows + + + .\postBuild.cmd "$(TargetPath)" "$(TargetName)" $(TargetExt) $(PcsxSubsection) + + + "$(SvnCommonDir)\vsprops\preBuild.cmd" "$(ProjectRootDir)" + + + $(SolutionDir)\common\include;$(SolutionDir)\3rdparty\wxwidgets3.0\include;%(AdditionalIncludeDirectories) + + \ No newline at end of file diff --git a/common/vsprops/CodeGen_Debug.props b/common/vsprops/CodeGen_Debug.props index 9c9eb7e245..906a6d88a0 100644 --- a/common/vsprops/CodeGen_Debug.props +++ b/common/vsprops/CodeGen_Debug.props @@ -1,15 +1,15 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - $(ProjectName)-dbg - - - - Disabled - PCSX2_DEBUG;PCSX2_DEVBUILD;_SECURE_SCL_=1;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - - + + + + <_ProjectFileVersion>10.0.30128.1 + $(ProjectName)-dbg + + + + Disabled + PCSX2_DEBUG;PCSX2_DEVBUILD;_SECURE_SCL_=1;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + \ No newline at end of file diff --git a/common/vsprops/CodeGen_Devel.props b/common/vsprops/CodeGen_Devel.props index 2801c51be5..f77e8a7ed9 100644 --- a/common/vsprops/CodeGen_Devel.props +++ b/common/vsprops/CodeGen_Devel.props @@ -1,19 +1,19 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - $(ProjectName)-dev - - - - MaxSpeed - AnySuitable - true - Speed - true - PCSX2_DEVEL;PCSX2_DEVBUILD;NDEBUG;_SECURE_SCL_=1;%(PreprocessorDefinitions) - MultiThreadedDLL - false - - + + + + <_ProjectFileVersion>10.0.30128.1 + $(ProjectName)-dev + + + + MaxSpeed + AnySuitable + true + Speed + true + PCSX2_DEVEL;PCSX2_DEVBUILD;NDEBUG;_SECURE_SCL_=1;%(PreprocessorDefinitions) + MultiThreadedDLL + false + + \ No newline at end of file diff --git a/common/vsprops/CodeGen_Release.props b/common/vsprops/CodeGen_Release.props index cb89f871f6..851709b0c3 100644 --- a/common/vsprops/CodeGen_Release.props +++ b/common/vsprops/CodeGen_Release.props @@ -1,29 +1,29 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - $(ProjectName) - false - - - - MaxSpeed - AnySuitable - true - Speed - true - true - true - NDEBUG;_SECURE_SCL_=0;%(PreprocessorDefinitions) - true - MultiThreadedDLL - false - false - - - true - true - UseLinkTimeCodeGeneration - - + + + + <_ProjectFileVersion>10.0.30128.1 + $(ProjectName) + false + + + + MaxSpeed + AnySuitable + true + Speed + true + true + true + NDEBUG;_SECURE_SCL_=0;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + false + + + true + true + UseLinkTimeCodeGeneration + + \ No newline at end of file diff --git a/common/vsprops/CommonLibrary.props b/common/vsprops/CommonLibrary.props index 40da9b150c..4e33ef29a6 100644 --- a/common/vsprops/CommonLibrary.props +++ b/common/vsprops/CommonLibrary.props @@ -1,33 +1,33 @@ - - - - $(ProjectDir)..\.. - $(ProjectRootDir)\.. - - - <_ProjectFileVersion>10.0.30128.1 - $(SvnRootDir)\deps\$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - - - - $(SvnRootDir)\common\include\$(ProjectName);$(SvnRootDir)\common\include;$(SvnRootDir)\3rdparty\wxwidgets3.0\include;$(SvnRootDir)\3rdparty;%(AdditionalIncludeDirectories) - __WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - 16Bytes - true - false - Level3 - ProgramDatabase - Default - 4063;4100;%(DisableSpecificWarnings) - - - - - $(ProjectRootDir) - - - $(SvnRootDir) - - + + + + $(ProjectDir)..\.. + $(ProjectRootDir)\.. + + + <_ProjectFileVersion>10.0.30128.1 + $(SvnRootDir)\deps\$(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + $(SvnRootDir)\common\include\$(ProjectName);$(SvnRootDir)\common\include;$(SvnRootDir)\3rdparty\wxwidgets3.0\include;$(SvnRootDir)\3rdparty;%(AdditionalIncludeDirectories) + __WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + 16Bytes + true + false + Level3 + ProgramDatabase + Default + 4063;4100;%(DisableSpecificWarnings) + + + + + $(ProjectRootDir) + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/common/vsprops/IncrementalLinking.props b/common/vsprops/IncrementalLinking.props index f688d46009..44bb578b20 100644 --- a/common/vsprops/IncrementalLinking.props +++ b/common/vsprops/IncrementalLinking.props @@ -1,21 +1,21 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - true - $(ProjectName)-dbg - - - - false - true - true - ProgramDatabase - false - - - false - false - - + + + + <_ProjectFileVersion>10.0.30128.1 + true + $(ProjectName)-dbg + + + + false + true + true + ProgramDatabase + false + + + false + false + + \ No newline at end of file diff --git a/common/vsprops/common.props b/common/vsprops/common.props index 0862490bb1..42a0e309b1 100644 --- a/common/vsprops/common.props +++ b/common/vsprops/common.props @@ -1,42 +1,42 @@ - - - - - - - - <_PropertySheetDisplayName>common - $(SolutionDir)bin\$(PcsxSubsection) - $(Platform)\$(Configuration)\ - - - - ProgramDatabase - Level3 - true - false - 16Bytes - 4512;4996 - "$(SolutionDir)3rdparty";"$(SolutionDir)3rdparty\w32pthreads\include";"$(SolutionDir)common\include";%(AdditionalIncludeDirectories) - WIN32;_WIN32;_WIN32;__WIN32__;_WINDOWS;ENABLE_NLS;PACKAGE="pcsx2";TIXML_USE_STL;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true - true - - - Windows - true - false - "$(SolutionDir)deps\$(Platform)\$(Configuration)";%(AdditionalLibraryDirectories) - $(SolutionDir)deps\$(Platform)\$(Configuration)\$(ProjectName).lib - - - $(SolutionDir)common\include - - - - - - $(SSEtype) - - + + + + + + + + <_PropertySheetDisplayName>common + $(SolutionDir)bin\$(PcsxSubsection) + $(Platform)\$(Configuration)\ + + + + ProgramDatabase + Level3 + true + false + 16Bytes + 4512;4996 + "$(SolutionDir)3rdparty";"$(SolutionDir)3rdparty\w32pthreads\include";"$(SolutionDir)common\include";%(AdditionalIncludeDirectories) + WIN32;_WIN32;_WIN32;__WIN32__;_WINDOWS;ENABLE_NLS;PACKAGE="pcsx2";TIXML_USE_STL;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + true + + + Windows + true + false + "$(SolutionDir)deps\$(Platform)\$(Configuration)";%(AdditionalLibraryDirectories) + $(SolutionDir)deps\$(Platform)\$(Configuration)\$(ProjectName).lib + + + $(SolutionDir)common\include + + + + + + $(SSEtype) + + \ No newline at end of file diff --git a/common/vsprops/debug.props b/common/vsprops/debug.props index 8de1b94e01..b4dcbc4258 100644 --- a/common/vsprops/debug.props +++ b/common/vsprops/debug.props @@ -1,17 +1,17 @@ - - - - - <_PropertySheetDisplayName>debug - true - - - - Disabled - PCSX2_DEBUG;PCSX2_DEVBUILD;_DEBUG;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - true - - - + + + + + <_PropertySheetDisplayName>debug + true + + + + Disabled + PCSX2_DEBUG;PCSX2_DEVBUILD;_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + + + \ No newline at end of file diff --git a/common/vsprops/devel.props b/common/vsprops/devel.props index 7cf5df8655..212f926cd9 100644 --- a/common/vsprops/devel.props +++ b/common/vsprops/devel.props @@ -1,23 +1,23 @@ - - - - - <_PropertySheetDisplayName>devel - true - - - - MaxSpeed - AnySuitable - Speed - PCSX2_DEVBUILD;NDEBUG;_SECURE_SCL=0;%(PreprocessorDefinitions) - true - MultiThreadedDLL - false - Fast - false - - - - + + + + + <_PropertySheetDisplayName>devel + true + + + + MaxSpeed + AnySuitable + Speed + PCSX2_DEVBUILD;NDEBUG;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + Fast + false + + + + \ No newline at end of file diff --git a/common/vsprops/lib.props b/common/vsprops/lib.props index 0f272b4fd6..76ed837ad3 100644 --- a/common/vsprops/lib.props +++ b/common/vsprops/lib.props @@ -1,18 +1,18 @@ - - - - - <_PropertySheetDisplayName>lib - $(SolutionDir)deps\$(Platform)\$(Configuration)\ - - - - - - - - _LIB;%(PreprocessorDefinitions) - - - + + + + + <_PropertySheetDisplayName>lib + $(SolutionDir)deps\$(Platform)\$(Configuration)\ + + + + + + + + _LIB;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/common/vsprops/plugin.props b/common/vsprops/plugin.props index 40a19e02c8..6b5d76d750 100644 --- a/common/vsprops/plugin.props +++ b/common/vsprops/plugin.props @@ -1,18 +1,18 @@ - - - - plugins\ - - - <_PropertySheetDisplayName>plugin - - - - - - - - - - + + + + plugins\ + + + <_PropertySheetDisplayName>plugin + + + + + + + + + + \ No newline at end of file diff --git a/common/vsprops/plugin_svnroot.props b/common/vsprops/plugin_svnroot.props index a639995f72..57bdc24741 100644 --- a/common/vsprops/plugin_svnroot.props +++ b/common/vsprops/plugin_svnroot.props @@ -1,32 +1,32 @@ - - - - plugins - $(ProjectDir).. - $(ProjectRootDir)\..\..\.. - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - <_PropertySheetDisplayName>PluginSvnRoot - - - - $(ProjectDir);$(ProjectDir)\..\3rdparty;%(AdditionalIncludeDirectories) - - - - - $(PcsxSubsection) - - - $(ProjectRootDir) - - - $(SvnRootDir) - - - $(SvnCommonDir) - - + + + + plugins + $(ProjectDir).. + $(ProjectRootDir)\..\..\.. + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + <_PropertySheetDisplayName>PluginSvnRoot + + + + $(ProjectDir);$(ProjectDir)\..\3rdparty;%(AdditionalIncludeDirectories) + + + + + $(PcsxSubsection) + + + $(ProjectRootDir) + + + $(SvnRootDir) + + + $(SvnCommonDir) + + \ No newline at end of file diff --git a/common/vsprops/postBuild.unknown b/common/vsprops/postBuild.unknown index 4bdb3f2f0d..6ac7841887 100644 --- a/common/vsprops/postBuild.unknown +++ b/common/vsprops/postBuild.unknown @@ -1,49 +1,49 @@ -::@echo off -:: -:: Usage: postBuild.cmd SourcePath DestFile DestExt {plugins} -:: -:: SourcePath - $(TargetPath) - Fully qualified path of the generated target file. -:: DestFile - Base filename of the target/dest, without extension! -:: DestExt - Extension of the target/dest! -:: plugins - optional parameter used to generate plugins into the /plugins folder -:: -:: The destination file is determined by the PCSX2_TARGET_DIR environment var. - -SETLOCAL ENABLEEXTENSIONS -if defined PCSX2_TARGET_COPY CALL :TestAndCopy "%PCSX2_TARGET_COPY%" %1 %2 %3 %4 -ENDLOCAL -exit 0 - -if exists postBuild.inc.cmd call postBuild.inc.cmd - -:TestAndCopy -:: Subroutine. First parameter is our Target Dir. Since it's a parameter into -:: the subroutine, we can use tilda expansion to handle quotes correctly. :) - -if NOT EXIST "%~1" ( - md "%~1" -) - -:: Error checking. Try to change to the dir. If it fails, it means the dir is -:: actually a file, and we should cancel the script. - -set mycwd="%CD%" -cd "%~1" -if %ERRORLEVEL% NEQ 0 goto :eof -cd %mycwd% - -set pcsxoutdir=%~1\%~5 -set pcsxoutname=%pcsxoutdir%\%~3%4 - -IF NOT EXIST "%pcsxoutdir%" ( - md "%pcsxoutdir%" -) - -copy /Y "%~2" "%pcsxoutname%" -if %ERRORLEVEL% EQU 0 ( - echo Target copied to %pcsxoutname% -) - -goto :eof - -:quit +::@echo off +:: +:: Usage: postBuild.cmd SourcePath DestFile DestExt {plugins} +:: +:: SourcePath - $(TargetPath) - Fully qualified path of the generated target file. +:: DestFile - Base filename of the target/dest, without extension! +:: DestExt - Extension of the target/dest! +:: plugins - optional parameter used to generate plugins into the /plugins folder +:: +:: The destination file is determined by the PCSX2_TARGET_DIR environment var. + +SETLOCAL ENABLEEXTENSIONS +if defined PCSX2_TARGET_COPY CALL :TestAndCopy "%PCSX2_TARGET_COPY%" %1 %2 %3 %4 +ENDLOCAL +exit 0 + +if exists postBuild.inc.cmd call postBuild.inc.cmd + +:TestAndCopy +:: Subroutine. First parameter is our Target Dir. Since it's a parameter into +:: the subroutine, we can use tilda expansion to handle quotes correctly. :) + +if NOT EXIST "%~1" ( + md "%~1" +) + +:: Error checking. Try to change to the dir. If it fails, it means the dir is +:: actually a file, and we should cancel the script. + +set mycwd="%CD%" +cd "%~1" +if %ERRORLEVEL% NEQ 0 goto :eof +cd %mycwd% + +set pcsxoutdir=%~1\%~5 +set pcsxoutname=%pcsxoutdir%\%~3%4 + +IF NOT EXIST "%pcsxoutdir%" ( + md "%pcsxoutdir%" +) + +copy /Y "%~2" "%pcsxoutname%" +if %ERRORLEVEL% EQU 0 ( + echo Target copied to %pcsxoutname% +) + +goto :eof + +:quit diff --git a/common/vsprops/preBuild.cmd b/common/vsprops/preBuild.cmd index 509b0b4b3a..2d7d61fcc5 100644 --- a/common/vsprops/preBuild.cmd +++ b/common/vsprops/preBuild.cmd @@ -1,54 +1,54 @@ -::@echo off -:: This file GENERATES the automatic GIT revision/version tag. -:: It uses the git.exe program to create an "svnrev.h" file for whichever -:: project is being compiled, during the project's pre-build step. -:: -:: The git.exe program is part of the msysgit installation. -:: -:: MsysGit can be downloaded from http://msysgit.github.io/ -:: -:: Usage: preBuild.cmd ProjectSrcDir VspropsDir -:: -:: ProjectSrcDir - $(ProjectDir)\.. - Top-level Directory of project source code. - -SETLOCAL ENABLEEXTENSIONS - -set mydir=%~dp0 - -IF "%PROGRAMFILES(x86)%" == "" do ( - set PROGRAMFILES(x86)=%PROGRAMFILES% -) - -set PATH=%PATH%;"%PROGRAMFILES(x86)%\Git\bin" - -FOR /F "delims=+" %%i IN ('"git show -s --format=%%%ci HEAD"') do ( - set REV3=%%i -) - -set REV2=%REV3: =% -set REV1=%REV2:-=% -set REV=%REV1::=% - -git show -s -if %ERRORLEVEL% NEQ 0 ( - echo Automatic version detection unavailable. - echo If you want to have the version string print correctly, - echo make sure your Git.exe is in the default installation directory, - echo or in your PATH. - echo You can safely ignore this message - a dummy string will be printed. - - echo #define SVN_REV_UNKNOWN > "%CD%\svnrev.h" - echo #define SVN_REV 0ll >> "%CD%\svnrev.h" - echo #define SVN_MODS 0 >> "%CD%\svnrev.h" - echo set SVN_REV=0 > "%CD%\postBuild.inc.cmd" -) else ( - echo #define SVN_REV %REV%ll > "%CD%\svnrev.h" - echo #define SVN_MODS 0 /* Not implemented at the moment. */ >> "%CD%\svnrev.h" - echo set SVN_REV=%REV% > "%CD%\postBuild.inc.cmd" -) - -copy /Y "%mydir%\postBuild.unknown" "%CD%\postBuild.cmd" - -ENDLOCAL -:: Always return an errorlevel of 0 -- this allows compilation to continue if SubWCRev failed. -exit /B 0 +::@echo off +:: This file GENERATES the automatic GIT revision/version tag. +:: It uses the git.exe program to create an "svnrev.h" file for whichever +:: project is being compiled, during the project's pre-build step. +:: +:: The git.exe program is part of the msysgit installation. +:: +:: MsysGit can be downloaded from http://msysgit.github.io/ +:: +:: Usage: preBuild.cmd ProjectSrcDir VspropsDir +:: +:: ProjectSrcDir - $(ProjectDir)\.. - Top-level Directory of project source code. + +SETLOCAL ENABLEEXTENSIONS + +set mydir=%~dp0 + +IF "%PROGRAMFILES(x86)%" == "" do ( + set PROGRAMFILES(x86)=%PROGRAMFILES% +) + +set PATH=%PATH%;"%PROGRAMFILES(x86)%\Git\bin" + +FOR /F "delims=+" %%i IN ('"git show -s --format=%%%ci HEAD"') do ( + set REV3=%%i +) + +set REV2=%REV3: =% +set REV1=%REV2:-=% +set REV=%REV1::=% + +git show -s +if %ERRORLEVEL% NEQ 0 ( + echo Automatic version detection unavailable. + echo If you want to have the version string print correctly, + echo make sure your Git.exe is in the default installation directory, + echo or in your PATH. + echo You can safely ignore this message - a dummy string will be printed. + + echo #define SVN_REV_UNKNOWN > "%CD%\svnrev.h" + echo #define SVN_REV 0ll >> "%CD%\svnrev.h" + echo #define SVN_MODS 0 >> "%CD%\svnrev.h" + echo set SVN_REV=0 > "%CD%\postBuild.inc.cmd" +) else ( + echo #define SVN_REV %REV%ll > "%CD%\svnrev.h" + echo #define SVN_MODS 0 /* Not implemented at the moment. */ >> "%CD%\svnrev.h" + echo set SVN_REV=%REV% > "%CD%\postBuild.inc.cmd" +) + +copy /Y "%mydir%\postBuild.unknown" "%CD%\postBuild.cmd" + +ENDLOCAL +:: Always return an errorlevel of 0 -- this allows compilation to continue if SubWCRev failed. +exit /B 0 diff --git a/common/vsprops/pthreads.props b/common/vsprops/pthreads.props index ca08fe5626..b02bba750a 100644 --- a/common/vsprops/pthreads.props +++ b/common/vsprops/pthreads.props @@ -1,29 +1,29 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - <_PropertySheetDisplayName>w32pthreads - - - - $(SvnRootDir)\3rdparty\w32pthreads\include;%(AdditionalIncludeDirectories) - WIN32_PTHREADS;__CLEANUP_SEH;%(PreprocessorDefinitions) - Async - - - w32pthreads_lib.lib;%(AdditionalDependencies) - - - w32pthreads_lib-dbg.lib;%(AdditionalDependencies) - - - w32pthreads_lib-dev.lib;%(AdditionalDependencies) - - + + + + <_ProjectFileVersion>10.0.30128.1 + <_PropertySheetDisplayName>w32pthreads + + + + $(SvnRootDir)\3rdparty\w32pthreads\include;%(AdditionalIncludeDirectories) + WIN32_PTHREADS;__CLEANUP_SEH;%(PreprocessorDefinitions) + Async + + + w32pthreads_lib.lib;%(AdditionalDependencies) + + + w32pthreads_lib-dbg.lib;%(AdditionalDependencies) + + + w32pthreads_lib-dev.lib;%(AdditionalDependencies) + + \ No newline at end of file diff --git a/common/vsprops/readme.txt b/common/vsprops/readme.txt index 31b602561f..ae1e1b0ed7 100644 --- a/common/vsprops/readme.txt +++ b/common/vsprops/readme.txt @@ -1,30 +1,30 @@ - -Decriptions of Provided .vsprops Sheets ---------------------------------------- - - * plugin_svnroot - Provides a set of semi-standard user macros for plugins that - conform to an expected folder layout. Each user macro can be optionally overridden - by the plugin using its own property sheet, if needed. - - See the contents of plugin_svnroot for explanations of the User Macros used by all - other properties sheets lested below. - - - * 3rdPartyDeps - Adds the /deps folder to the linker search path. Does not add - any actual dependencies. You must add those manually. - - * pthreads - Adds the w32pthreads library to your project, along with the expected - compiler defines for correctly compiling and linking pthreads. - - * BaseProperties - Sets up standard Output and Intermediate directories, warning levels, - struct alignment, and other settings required for Pcsx2 and its libs to link in - a workable fashion. Adds standard preprocessor defines for: - __WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE - - * IncrementalLinking - Enables incremental linking, for use in devel/debug modes only. - Incremental linking force-disables Whole Program Optimization, but builds the result - .exe/.dll much quicker usually. - - * GlobalLinking - Enables full support for Whole Program Optimization, and force- - disables any conflicting incremental link settings. + +Decriptions of Provided .vsprops Sheets +--------------------------------------- + + * plugin_svnroot - Provides a set of semi-standard user macros for plugins that + conform to an expected folder layout. Each user macro can be optionally overridden + by the plugin using its own property sheet, if needed. + + See the contents of plugin_svnroot for explanations of the User Macros used by all + other properties sheets lested below. + + + * 3rdPartyDeps - Adds the /deps folder to the linker search path. Does not add + any actual dependencies. You must add those manually. + + * pthreads - Adds the w32pthreads library to your project, along with the expected + compiler defines for correctly compiling and linking pthreads. + + * BaseProperties - Sets up standard Output and Intermediate directories, warning levels, + struct alignment, and other settings required for Pcsx2 and its libs to link in + a workable fashion. Adds standard preprocessor defines for: + __WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE + + * IncrementalLinking - Enables incremental linking, for use in devel/debug modes only. + Incremental linking force-disables Whole Program Optimization, but builds the result + .exe/.dll much quicker usually. + + * GlobalLinking - Enables full support for Whole Program Optimization, and force- + disables any conflicting incremental link settings. \ No newline at end of file diff --git a/common/vsprops/release.props b/common/vsprops/release.props index 399b222dc4..90e33fe51f 100644 --- a/common/vsprops/release.props +++ b/common/vsprops/release.props @@ -1,31 +1,31 @@ - - - - - <_PropertySheetDisplayName>release - false - - - - MaxSpeed - AnySuitable - Speed - true - true - NDEBUG;_SECURE_SCL=0;%(PreprocessorDefinitions) - true - MultiThreadedDLL - false - Fast - false - - - true - true - - - true - - - + + + + + <_PropertySheetDisplayName>release + false + + + + MaxSpeed + AnySuitable + Speed + true + true + NDEBUG;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + Fast + false + + + true + true + + + true + + + \ No newline at end of file diff --git a/common/vsprops/sse2.props b/common/vsprops/sse2.props index 69fb4e9982..044eb8c039 100644 --- a/common/vsprops/sse2.props +++ b/common/vsprops/sse2.props @@ -1,19 +1,19 @@ - - - SSE2 - - - <_PropertySheetDisplayName>sse2 - - - - StreamingSIMDExtensions2 - _M_SSE=0x200;%(PreprocessorDefinitions) - - - - - $(SSEtype) - - + + + SSE2 + + + <_PropertySheetDisplayName>sse2 + + + + StreamingSIMDExtensions2 + _M_SSE=0x200;%(PreprocessorDefinitions) + + + + + $(SSEtype) + + \ No newline at end of file diff --git a/common/vsprops/sse4.props b/common/vsprops/sse4.props index 6f6036ae28..0fbf79ce75 100644 --- a/common/vsprops/sse4.props +++ b/common/vsprops/sse4.props @@ -1,19 +1,19 @@ - - - SSE4 - - - <_PropertySheetDisplayName>sse4 - - - - _M_SSE=0x401;%(PreprocessorDefinitions) - StreamingSIMDExtensions2 - - - - - $(SSEtype) - - + + + SSE4 + + + <_PropertySheetDisplayName>sse4 + + + + _M_SSE=0x401;%(PreprocessorDefinitions) + StreamingSIMDExtensions2 + + + + + $(SSEtype) + + \ No newline at end of file diff --git a/common/vsprops/ssse3.props b/common/vsprops/ssse3.props index abe085d607..764647cea5 100644 --- a/common/vsprops/ssse3.props +++ b/common/vsprops/ssse3.props @@ -1,19 +1,19 @@ - - - SSSE3 - - - <_PropertySheetDisplayName>ssse3 - - - - StreamingSIMDExtensions2 - _M_SSE=0x301;%(PreprocessorDefinitions) - - - - - $(SSEtype) - - + + + SSSE3 + + + <_PropertySheetDisplayName>ssse3 + + + + StreamingSIMDExtensions2 + _M_SSE=0x301;%(PreprocessorDefinitions) + + + + + $(SSEtype) + + \ No newline at end of file diff --git a/common/vsprops/wxWidgetsGui.props b/common/vsprops/wxWidgetsGui.props index 1cfa0493e8..79df795d0a 100644 --- a/common/vsprops/wxWidgetsGui.props +++ b/common/vsprops/wxWidgetsGui.props @@ -1,26 +1,26 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - <_PropertySheetDisplayName>wxWidgets_UseGui - - - - $(SvnRootDir)\3rdparty\w32pthreads\include;%(AdditionalIncludeDirectories) - wxUSE_UNICODE=1;%(PreprocessorDefinitions) - Async - - - zlib.lib;libjpeg7.lib;%(AdditionalDependencies) - $(SvnRootDir)\deps\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) - - - zlib-dbg.lib;libjpeg7-dbg.lib;%(AdditionalDependencies) - $(SvnRootDir)\deps\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) - - - zlib-dev.lib;libjpeg7-dev.lib;%(AdditionalDependencies) - $(SvnRootDir)\deps\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) - - + + + + <_ProjectFileVersion>10.0.30128.1 + <_PropertySheetDisplayName>wxWidgets_UseGui + + + + $(SvnRootDir)\3rdparty\w32pthreads\include;%(AdditionalIncludeDirectories) + wxUSE_UNICODE=1;%(PreprocessorDefinitions) + Async + + + zlib.lib;libjpeg7.lib;%(AdditionalDependencies) + $(SvnRootDir)\deps\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + + + zlib-dbg.lib;libjpeg7-dbg.lib;%(AdditionalDependencies) + $(SvnRootDir)\deps\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + + + zlib-dev.lib;libjpeg7-dev.lib;%(AdditionalDependencies) + $(SvnRootDir)\deps\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + + \ No newline at end of file diff --git a/fps2bios/intro/crt0.s b/fps2bios/intro/crt0.s index dd3e94a6a4..2a651180d6 100644 --- a/fps2bios/intro/crt0.s +++ b/fps2bios/intro/crt0.s @@ -1,111 +1,111 @@ -.set noat -.set noreorder -.global _start - -.global FlushCache -.global Exit -.global SignalSema -.global _start -.global _exit - -.text - nop - nop -FlushCache: - li $3,100 - syscall - jr $31 - nop -Exit: - li $3,4 - syscall - jr $31 - nop -SignalSema: - li $3,66 - syscall - jr $31 - nop - - nop - nop -_start: - lui $2,%hi(_args_ptr) - addiu $2,$2, %lo(_args_ptr) - sw $4,($2) -# Clear bss -zerobss: - lui $2,%hi(_fbss) - lui $3,%hi(_end) - addiu $2,$2,%lo(_fbss) - addiu $3,$3,%lo(_end) -loop: - nop - nop - sq $0,($2) - sltu $1,$2,$3 - bne $1,$0,loop - addiu $2,$2,16 - -# Thread - lui $4,%hi(_gp) - addiu $4,$4,%lo(_gp) - lui $5,%hi(_stack) - addiu $5,$5,%lo(_stack) - lui $6,%hi(_stack_size) - addiu $6,$6,%lo(_stack_size) - lui $7,%hi(_args) - addiu $7,$7,%lo(_args) - lui $8,%hi(_root) - addiu $8,$8,%lo(_root) - move $28,$4 - addiu $3,$0,60 - syscall - move $29, $2 - -# Heap - addiu $3,$0,61 - lui $4,%hi(_end) - addiu $4,$4,%lo(_end) - lui $5,%hi(_heap_size) - addiu $5,$5,%lo(_heap_size) - syscall - nop - -# Cache - jal FlushCache - move $4,$0 - -# Jump main - ei - - lui $2,%hi(_args_ptr) - addiu $2,$2,%lo(_args_ptr) - lw $3,($2) - lui $2,%hi(_args) - addiu $2,$2,%lo(_args) - - lw $4, ($2) - jal main - addiu $5, $2, 4 -_root: -_exit: -# ??? -# lui $2,%hi(_args_ptr) -# addiu $2,$2,%lo(_args_ptr) -# lw $3,($2) -# jal SignalSema -# lw $4,($3) -# Exit -# addiu $3,$0,35 -# syscall - jr $31 - nop - - .bss - .align 6 -_args: .space 256+16*4+4 - - .data -_args_ptr: - .space 4 +.set noat +.set noreorder +.global _start + +.global FlushCache +.global Exit +.global SignalSema +.global _start +.global _exit + +.text + nop + nop +FlushCache: + li $3,100 + syscall + jr $31 + nop +Exit: + li $3,4 + syscall + jr $31 + nop +SignalSema: + li $3,66 + syscall + jr $31 + nop + + nop + nop +_start: + lui $2,%hi(_args_ptr) + addiu $2,$2, %lo(_args_ptr) + sw $4,($2) +# Clear bss +zerobss: + lui $2,%hi(_fbss) + lui $3,%hi(_end) + addiu $2,$2,%lo(_fbss) + addiu $3,$3,%lo(_end) +loop: + nop + nop + sq $0,($2) + sltu $1,$2,$3 + bne $1,$0,loop + addiu $2,$2,16 + +# Thread + lui $4,%hi(_gp) + addiu $4,$4,%lo(_gp) + lui $5,%hi(_stack) + addiu $5,$5,%lo(_stack) + lui $6,%hi(_stack_size) + addiu $6,$6,%lo(_stack_size) + lui $7,%hi(_args) + addiu $7,$7,%lo(_args) + lui $8,%hi(_root) + addiu $8,$8,%lo(_root) + move $28,$4 + addiu $3,$0,60 + syscall + move $29, $2 + +# Heap + addiu $3,$0,61 + lui $4,%hi(_end) + addiu $4,$4,%lo(_end) + lui $5,%hi(_heap_size) + addiu $5,$5,%lo(_heap_size) + syscall + nop + +# Cache + jal FlushCache + move $4,$0 + +# Jump main + ei + + lui $2,%hi(_args_ptr) + addiu $2,$2,%lo(_args_ptr) + lw $3,($2) + lui $2,%hi(_args) + addiu $2,$2,%lo(_args) + + lw $4, ($2) + jal main + addiu $5, $2, 4 +_root: +_exit: +# ??? +# lui $2,%hi(_args_ptr) +# addiu $2,$2,%lo(_args_ptr) +# lw $3,($2) +# jal SignalSema +# lw $4,($3) +# Exit +# addiu $3,$0,35 +# syscall + jr $31 + nop + + .bss + .align 6 +_args: .space 256+16*4+4 + + .data +_args_ptr: + .space 4 diff --git a/fps2bios/intro/linkfile b/fps2bios/intro/linkfile index 221a16a68e..5b5f5ca2ad 100644 --- a/fps2bios/intro/linkfile +++ b/fps2bios/intro/linkfile @@ -1,52 +1,52 @@ -_stack_size = 0x80000; -_heap_size = 1024*1024*10; - -ENTRY(_start); -SECTIONS { - - .text 0x00100008 : { - *(.text) - *(.rodata) - } - .reginfo ALIGN(128) : { - *(.reginfo) - } - .data ALIGN(128) : { - *(.data) - } - .rdata ALIGN(128) : { - *(.rdata) - } - _gp = ALIGN(128) + 0x7ff0; - .lit4 ALIGN(128) : { - *(.lit4) - } - .lit8 ALIGN(128) : { - *(.lit8) - } - .sdata ALIGN(128) : { - *(.sdata) - } - - .sbss ALIGN(128) (NOLOAD) : { /* uninitialized data */ - _fbss = . ; - *(.scommon) - *(.sbss) - } - .bss ALIGN(128) (NOLOAD) : { /* uninitialized data */ - *(.bss) - } - .COMMON ALIGN(128) (NOLOAD) : { /* uninitialized data */ - *(COMMON) - } - _end_bss = . - 4; - _stack = .; - . += _stack_size ; - _end_stack = . - 8*5; - _end = . ; - __lc_bh = . ; - . += _heap_size ; - __lc_eh = .; - -} - +_stack_size = 0x80000; +_heap_size = 1024*1024*10; + +ENTRY(_start); +SECTIONS { + + .text 0x00100008 : { + *(.text) + *(.rodata) + } + .reginfo ALIGN(128) : { + *(.reginfo) + } + .data ALIGN(128) : { + *(.data) + } + .rdata ALIGN(128) : { + *(.rdata) + } + _gp = ALIGN(128) + 0x7ff0; + .lit4 ALIGN(128) : { + *(.lit4) + } + .lit8 ALIGN(128) : { + *(.lit8) + } + .sdata ALIGN(128) : { + *(.sdata) + } + + .sbss ALIGN(128) (NOLOAD) : { /* uninitialized data */ + _fbss = . ; + *(.scommon) + *(.sbss) + } + .bss ALIGN(128) (NOLOAD) : { /* uninitialized data */ + *(.bss) + } + .COMMON ALIGN(128) (NOLOAD) : { /* uninitialized data */ + *(COMMON) + } + _end_bss = . - 4; + _stack = .; + . += _stack_size ; + _end_stack = . - 8*5; + _end = . ; + __lc_bh = . ; + . += _heap_size ; + __lc_eh = .; + +} + diff --git a/fps2bios/kernel/eeload/linkfile b/fps2bios/kernel/eeload/linkfile index b6c0668fe0..e777270bb5 100644 --- a/fps2bios/kernel/eeload/linkfile +++ b/fps2bios/kernel/eeload/linkfile @@ -1,56 +1,56 @@ -_stack_size = 0x80000; -_heap_size = 1024*1024*10; - -ENTRY(_start); -SECTIONS { - - . 0x80000000 : { - eeirq.o - } - - .text 0x80001000 : { - *(.text) - *(.rodata) - } - .reginfo ALIGN(128) : { - *(.reginfo) - } - .data ALIGN(128) : { - *(.data) - } - .rdata ALIGN(128) : { - *(.rdata) - } - _gp = ALIGN(128) + 0x7ff0; - .lit4 ALIGN(128) : { - *(.lit4) - } - .lit8 ALIGN(128) : { - *(.lit8) - } - .sdata ALIGN(128) : { - *(.sdata) - } - - .sbss ALIGN(128) (NOLOAD) : { /* uninitialized data */ - _fbss = . ; - *(.scommon) - *(.sbss) - } - .bss ALIGN(128) (NOLOAD) : { /* uninitialized data */ - *(.bss) - } - .COMMON ALIGN(128) (NOLOAD) : { /* uninitialized data */ - *(COMMON) - } - _end_bss = . - 4; - _stack = .; - . += _stack_size ; - _end_stack = . - 8*5; - _end = . ; - __lc_bh = . ; - . += _heap_size ; - __lc_eh = .; - -} - +_stack_size = 0x80000; +_heap_size = 1024*1024*10; + +ENTRY(_start); +SECTIONS { + + . 0x80000000 : { + eeirq.o + } + + .text 0x80001000 : { + *(.text) + *(.rodata) + } + .reginfo ALIGN(128) : { + *(.reginfo) + } + .data ALIGN(128) : { + *(.data) + } + .rdata ALIGN(128) : { + *(.rdata) + } + _gp = ALIGN(128) + 0x7ff0; + .lit4 ALIGN(128) : { + *(.lit4) + } + .lit8 ALIGN(128) : { + *(.lit8) + } + .sdata ALIGN(128) : { + *(.sdata) + } + + .sbss ALIGN(128) (NOLOAD) : { /* uninitialized data */ + _fbss = . ; + *(.scommon) + *(.sbss) + } + .bss ALIGN(128) (NOLOAD) : { /* uninitialized data */ + *(.bss) + } + .COMMON ALIGN(128) (NOLOAD) : { /* uninitialized data */ + *(COMMON) + } + _end_bss = . - 4; + _stack = .; + . += _stack_size ; + _end_stack = . - 8*5; + _end = . ; + __lc_bh = . ; + . += _heap_size ; + __lc_eh = .; + +} + diff --git a/fps2bios/kernel/iopload/iopboot/linkfile b/fps2bios/kernel/iopload/iopboot/linkfile index 07af75d528..bdd2f3185c 100644 --- a/fps2bios/kernel/iopload/iopboot/linkfile +++ b/fps2bios/kernel/iopload/iopboot/linkfile @@ -1,16 +1,16 @@ -_stack_size = 0x80000; -_heap_size = 1024*1024*10; - -ENTRY(_start); -SECTIONS { - .text 0xbfc008f0 : { - *(.text) - *(.data) - *(.rdata) - *(.sdata) - *(.rodata) - *(.bss) - *(.sbss) - } -} - +_stack_size = 0x80000; +_heap_size = 1024*1024*10; + +ENTRY(_start); +SECTIONS { + .text 0xbfc008f0 : { + *(.text) + *(.data) + *(.rdata) + *(.sdata) + *(.rodata) + *(.bss) + *(.sbss) + } +} + diff --git a/fps2bios/kernel/iopload/libkernel/iop_cdvdman.s b/fps2bios/kernel/iopload/libkernel/iop_cdvdman.s index 42489ba358..ae3bf9362f 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_cdvdman.s +++ b/fps2bios/kernel/iopload/libkernel/iop_cdvdman.s @@ -1,146 +1,146 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, Nick Van Veen - ------------------------------------------------------------------------ - iop_cdvdman.s CDVD Manager Functions. - taken from .irx files with symbol table. -*/ - - .text - .set noreorder - - -/* ############################### CDVDMAN STUB ####### */ -/* # Added by Sjeep, 24th June 2002 # */ - -.local cdvdman_stub -cdvdman_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "cdvdman\0" - .align 2 - - .globl CdInit # 004 -CdInit: - j $31 - li $0, 4 - - .globl CdStandby # 005 -CdStandby: - j $31 - li $0, 5 - - .globl CdRead # 006 -CdRead: - j $31 - li $0, 6 - - .globl CdSeek # 007 -CdSeek: - j $31 - li $0, 7 - - .globl CdGetError # 008 -CdGetError: - j $31 - li $0, 8 - - .globl CdGetToc # 009 -CdGetToc: - j $31 - li $0, 9 - - .globl CdSearchFile # 010 -CdSearchFile: - j $31 - li $0, 10 - - .globl CdSync # 011 -CdSync: - j $31 - li $0, 11 - - .globl CdGetDiskType # 012 -CdGetDiskType: - j $31 - li $0, 12 - - .globl CdDiskReady # 013 -CdDiskReady: - j $31 - li $0, 13 - - .globl CdTrayReq # 014 -CdTrayReq: - j $31 - li $0, 14 - - .globl CdStop # 015 -CdStop: - j $31 - li $0, 15 - - .globl CdPosToInt # 016 -CdPosToInt: - j $31 - li $0, 16 - - .globl CdIntToPos # 017 -CdIntToPos: - j $31 - li $0, 17 - - .globl CdCheckCmd # 021 -CdCheckCmd: - j $31 - li $0, 21 - - .globl CdReadILinkID # 022 -CdReadILinkID: - j $31 - li $0, 22 - - .globl CdReadClock # 024 -CdReadClock: - j $31 - li $0, 24 - - .globl CdStatus # 028 -CdStatus: - j $31 - li $0, 28 - - .globl CdCallback # 037 -CdCallback: - j $31 - li $0, 37 - - .globl CdPause # 038 -CdPause: - j #31 - li $0, 38 - - .globl CdBreak # 039 -CdBreak: - j $31 - li $0, 39 - - .globl CdGetReadPos # 044 -CdGetReadPos: - j $31 - li $0, 44 - - .globl CdReadChain # 066 -CdReadChain: - j $31 - li $0, 66 - - .globl CdMmode -CdMmode: - j $31 - li $0, 75 - - .word 0 - .word 0 +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, Nick Van Veen + ------------------------------------------------------------------------ + iop_cdvdman.s CDVD Manager Functions. + taken from .irx files with symbol table. +*/ + + .text + .set noreorder + + +/* ############################### CDVDMAN STUB ####### */ +/* # Added by Sjeep, 24th June 2002 # */ + +.local cdvdman_stub +cdvdman_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "cdvdman\0" + .align 2 + + .globl CdInit # 004 +CdInit: + j $31 + li $0, 4 + + .globl CdStandby # 005 +CdStandby: + j $31 + li $0, 5 + + .globl CdRead # 006 +CdRead: + j $31 + li $0, 6 + + .globl CdSeek # 007 +CdSeek: + j $31 + li $0, 7 + + .globl CdGetError # 008 +CdGetError: + j $31 + li $0, 8 + + .globl CdGetToc # 009 +CdGetToc: + j $31 + li $0, 9 + + .globl CdSearchFile # 010 +CdSearchFile: + j $31 + li $0, 10 + + .globl CdSync # 011 +CdSync: + j $31 + li $0, 11 + + .globl CdGetDiskType # 012 +CdGetDiskType: + j $31 + li $0, 12 + + .globl CdDiskReady # 013 +CdDiskReady: + j $31 + li $0, 13 + + .globl CdTrayReq # 014 +CdTrayReq: + j $31 + li $0, 14 + + .globl CdStop # 015 +CdStop: + j $31 + li $0, 15 + + .globl CdPosToInt # 016 +CdPosToInt: + j $31 + li $0, 16 + + .globl CdIntToPos # 017 +CdIntToPos: + j $31 + li $0, 17 + + .globl CdCheckCmd # 021 +CdCheckCmd: + j $31 + li $0, 21 + + .globl CdReadILinkID # 022 +CdReadILinkID: + j $31 + li $0, 22 + + .globl CdReadClock # 024 +CdReadClock: + j $31 + li $0, 24 + + .globl CdStatus # 028 +CdStatus: + j $31 + li $0, 28 + + .globl CdCallback # 037 +CdCallback: + j $31 + li $0, 37 + + .globl CdPause # 038 +CdPause: + j #31 + li $0, 38 + + .globl CdBreak # 039 +CdBreak: + j $31 + li $0, 39 + + .globl CdGetReadPos # 044 +CdGetReadPos: + j $31 + li $0, 44 + + .globl CdReadChain # 066 +CdReadChain: + j $31 + li $0, 66 + + .globl CdMmode +CdMmode: + j $31 + li $0, 75 + + .word 0 + .word 0 diff --git a/fps2bios/kernel/iopload/libkernel/iop_dmacman.s b/fps2bios/kernel/iopload/libkernel/iop_dmacman.s index 2d702ec38e..bc6f6a70dc 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_dmacman.s +++ b/fps2bios/kernel/iopload/libkernel/iop_dmacman.s @@ -1,52 +1,52 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, David Ryan (oobles@hotmail.com) - ------------------------------------------------------------------------ - iop_dmacman.s DMAC library function imports. - taken from dmacman in bios. -*/ - - .text - .set noreorder - - -/* ############################### DMACMAN STUB ######## */ - .local dmacman_stub -dmacman_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "dmacman\0" - .align 2 - - .globl dmacSetDMA # 028 -dmacSetDMA: - j $31 - li $0, 28 - - .globl dmacStartTransfer # 032 -dmacStartTransfer: - j $31 - li $0, 32 - - .globl dmacSetVal # 033 -dmacSetVal: - j $31 - li $0, 33 - - .globl dmacEnableDMAch # 034 -dmacEnableDMAch: - j $31 - li $0, 34 - - .globl dmacDisableDMAch # 035 -dmacDisableDMAch: - j $31 - li $0, 35 - - - .word 0 - .word 0 - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, David Ryan (oobles@hotmail.com) + ------------------------------------------------------------------------ + iop_dmacman.s DMAC library function imports. + taken from dmacman in bios. +*/ + + .text + .set noreorder + + +/* ############################### DMACMAN STUB ######## */ + .local dmacman_stub +dmacman_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "dmacman\0" + .align 2 + + .globl dmacSetDMA # 028 +dmacSetDMA: + j $31 + li $0, 28 + + .globl dmacStartTransfer # 032 +dmacStartTransfer: + j $31 + li $0, 32 + + .globl dmacSetVal # 033 +dmacSetVal: + j $31 + li $0, 33 + + .globl dmacEnableDMAch # 034 +dmacEnableDMAch: + j $31 + li $0, 34 + + .globl dmacDisableDMAch # 035 +dmacDisableDMAch: + j $31 + li $0, 35 + + + .word 0 + .word 0 + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_excepman.s b/fps2bios/kernel/iopload/libkernel/iop_excepman.s index 557692fc3b..cdf72a7195 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_excepman.s +++ b/fps2bios/kernel/iopload/libkernel/iop_excepman.s @@ -1,58 +1,58 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) - ------------------------------------------------------------------------ - iop_excepman.s Exception Manager Functions. -*/ - - .text - .set noreorder - - -/* ############################### EXCEPMAN STUB ####### */ -/* # Added by linuzappz, 10th May 2004 # */ - - .local excepman_stub -excepman_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "excepman" - .align 2 - - .globl GetExHandlersTable # 003 -GetExHandlersTable: - j $31 - li $0, 3 - - .globl RegisterExceptionHandler # 004 -RegisterExceptionHandler: - j $31 - li $0, 4 - - .globl RegisterPriorityExceptionHandler # 005 -RegisterPriorityExceptionHandler: - j $31 - li $0, 5 - - .globl RegisterDefaultExceptionHandler # 006 -RegisterDefaultExceptionHandler: - j $31 - li $0, 6 - - .globl ReleaseExceptionHandler # 007 -ReleaseExceptionHandler: - j $31 - li $0, 7 - - .globl ReleaseDefaultExceptionHandler # 008 -ReleaseDefaultExceptionHandler: - j $31 - li $0, 8 - - - .word 0 - .word 0 - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) + ------------------------------------------------------------------------ + iop_excepman.s Exception Manager Functions. +*/ + + .text + .set noreorder + + +/* ############################### EXCEPMAN STUB ####### */ +/* # Added by linuzappz, 10th May 2004 # */ + + .local excepman_stub +excepman_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "excepman" + .align 2 + + .globl GetExHandlersTable # 003 +GetExHandlersTable: + j $31 + li $0, 3 + + .globl RegisterExceptionHandler # 004 +RegisterExceptionHandler: + j $31 + li $0, 4 + + .globl RegisterPriorityExceptionHandler # 005 +RegisterPriorityExceptionHandler: + j $31 + li $0, 5 + + .globl RegisterDefaultExceptionHandler # 006 +RegisterDefaultExceptionHandler: + j $31 + li $0, 6 + + .globl ReleaseExceptionHandler # 007 +ReleaseExceptionHandler: + j $31 + li $0, 7 + + .globl ReleaseDefaultExceptionHandler # 008 +ReleaseDefaultExceptionHandler: + j $31 + li $0, 8 + + + .word 0 + .word 0 + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_heaplib.s b/fps2bios/kernel/iopload/libkernel/iop_heaplib.s index 83b233e705..955224ed85 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_heaplib.s +++ b/fps2bios/kernel/iopload/libkernel/iop_heaplib.s @@ -1,51 +1,51 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, David Ryan (oobles@hotmail.com) - ------------------------------------------------------------------------ - iop_heaplib.s Heap library function imports. - taken from heaplib in bios. -*/ - - .text - .set noreorder - - -/* ############################### SYSMEM STUB ######## */ - .local sysmem_stub -sysmem_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "heaplib\0" - .align 2 - - .globl CreateHeap # 004 -CreateHeap: - j $31 - li $0, 4 - - .globl DestroyHeap # 005 -DestroyHeap: - j $31 - li $0, 5 - - .globl HeapMalloc # 006 -HeapMalloc: - j $31 - li $0, 6 - - .globl HeapFree # 007 -HeapFree: - j $31 - li $0, 7 - - .globl HeapSize # 008 -HeapSize: - j $31 - li $0, 8 - - .word 0 - .word 0 - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, David Ryan (oobles@hotmail.com) + ------------------------------------------------------------------------ + iop_heaplib.s Heap library function imports. + taken from heaplib in bios. +*/ + + .text + .set noreorder + + +/* ############################### SYSMEM STUB ######## */ + .local sysmem_stub +sysmem_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "heaplib\0" + .align 2 + + .globl CreateHeap # 004 +CreateHeap: + j $31 + li $0, 4 + + .globl DestroyHeap # 005 +DestroyHeap: + j $31 + li $0, 5 + + .globl HeapMalloc # 006 +HeapMalloc: + j $31 + li $0, 6 + + .globl HeapFree # 007 +HeapFree: + j $31 + li $0, 7 + + .globl HeapSize # 008 +HeapSize: + j $31 + li $0, 8 + + .word 0 + .word 0 + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_intrman.s b/fps2bios/kernel/iopload/libkernel/iop_intrman.s index 60efd2c2c3..ce1068eb11 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_intrman.s +++ b/fps2bios/kernel/iopload/libkernel/iop_intrman.s @@ -1,73 +1,73 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) - ------------------------------------------------------------------------ - iop_intrman.s Interrupt Manager Functions. - taken from .irx files with symbol table. -*/ - - .text - .set noreorder - - -/* ############################### INTRMAN STUB ####### */ -/* # Added by Oobles, 5th March 2002 # */ - - .local intrman_stub -intrman_stub: - .word 0x41e00000 - .word 0 - .word 0x00000102 - .ascii "intrman\0" - .align 2 - - .globl RegisterIntrHandler # 004 -RegisterIntrHandler: - j $31 - li $0, 4 - - .globl ReleaseIntrHandler # 005 -ReleaseIntrHandler: - j $31 - li $0, 5 - - .globl EnableIntr # 006 -EnableIntr: - j $31 - li $0, 6 - - .globl DisableIntr # 007 -DisableIntr: - j $31 - li $0, 7 - - .globl CpuDisableIntr # 008 -CpuDisableIntr: - j $31 - li $0, 8 - - .globl CpuEnableIntr # 009 -CpuEnableIntr: - j $31 - li $0, 9 - - .globl CpuSuspendIntr # 0x11 -CpuSuspendIntr: - j $31 - li $0, 0x11 - - .globl CpuResumeIntr # 0x12 -CpuResumeIntr: - j $31 - li $0, 0x12 - - .globl QueryIntrContext # 0x17 -QueryIntrContext: - j $31 - li $0, 0x17 - - .word 0 - .word 0 - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) + ------------------------------------------------------------------------ + iop_intrman.s Interrupt Manager Functions. + taken from .irx files with symbol table. +*/ + + .text + .set noreorder + + +/* ############################### INTRMAN STUB ####### */ +/* # Added by Oobles, 5th March 2002 # */ + + .local intrman_stub +intrman_stub: + .word 0x41e00000 + .word 0 + .word 0x00000102 + .ascii "intrman\0" + .align 2 + + .globl RegisterIntrHandler # 004 +RegisterIntrHandler: + j $31 + li $0, 4 + + .globl ReleaseIntrHandler # 005 +ReleaseIntrHandler: + j $31 + li $0, 5 + + .globl EnableIntr # 006 +EnableIntr: + j $31 + li $0, 6 + + .globl DisableIntr # 007 +DisableIntr: + j $31 + li $0, 7 + + .globl CpuDisableIntr # 008 +CpuDisableIntr: + j $31 + li $0, 8 + + .globl CpuEnableIntr # 009 +CpuEnableIntr: + j $31 + li $0, 9 + + .globl CpuSuspendIntr # 0x11 +CpuSuspendIntr: + j $31 + li $0, 0x11 + + .globl CpuResumeIntr # 0x12 +CpuResumeIntr: + j $31 + li $0, 0x12 + + .globl QueryIntrContext # 0x17 +QueryIntrContext: + j $31 + li $0, 0x17 + + .word 0 + .word 0 + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_ioman.s b/fps2bios/kernel/iopload/libkernel/iop_ioman.s index c1414f4816..3668da8d44 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_ioman.s +++ b/fps2bios/kernel/iopload/libkernel/iop_ioman.s @@ -1,116 +1,116 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, Gustavo Scott(gustavo@scotti.com) - ------------------------------------------------------------------------ - iop_iooman.s - IOP Basic libraries. - took from .irx files with symbol table / string table -*/ - - .text - .set noreorder - - -/* ############################### IOMAN STUB ######## */ - .local ioman_stub -ioman_stub: - .word 0x41e00000 - .word 0 - .word 0x00000102 - .ascii "ioman\0\0\0" - .align 2 - - .globl open # 004 -open: - j $31 - li $0, 4 - - .globl close # 005 -close: - j $31 - li $0, 5 - - .globl read # 006 -read: - j $31 - li $0, 6 - - .globl write # 007 -write: - j $31 - li $0, 7 - - .globl lseek # 008 -lseek: - j $31 - li $0, 8 - - .globl ioctl -ioctl: - j $31 - li $0, 9 - - .globl remove -remove: - j $31 - li $0, 10 - - .globl mkdir -mkdir: - j $31 - li $0, 11 - - .globl rmdir -rmdir: - j $31 - li $0, 12 - - .globl dopen -dopen: - j $31 - li $0, 13 - - .globl dclose -dclose: - j $31 - li $0, 14 - - .globl dread -dread: - j $31 - li $0, 15 - - .globl getstat -getstat: - j $31 - li $0, 16 - - .globl chstat -chstat: - j $31 - li $0, 17 - - .globl format -format: - j $31 - li $0, 18 - - .globl FILEIO_add # 020 - .globl AddDrv -FILEIO_add: -AddDrv: - j $31 - li $0, 20 - - .globl FILEIO_del # 021 - .globl DelDrv -FILEIO_del: -DelDrv: - j $31 - li $0, 21 - - .word 0 - .word 0 - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, Gustavo Scott(gustavo@scotti.com) + ------------------------------------------------------------------------ + iop_iooman.s + IOP Basic libraries. + took from .irx files with symbol table / string table +*/ + + .text + .set noreorder + + +/* ############################### IOMAN STUB ######## */ + .local ioman_stub +ioman_stub: + .word 0x41e00000 + .word 0 + .word 0x00000102 + .ascii "ioman\0\0\0" + .align 2 + + .globl open # 004 +open: + j $31 + li $0, 4 + + .globl close # 005 +close: + j $31 + li $0, 5 + + .globl read # 006 +read: + j $31 + li $0, 6 + + .globl write # 007 +write: + j $31 + li $0, 7 + + .globl lseek # 008 +lseek: + j $31 + li $0, 8 + + .globl ioctl +ioctl: + j $31 + li $0, 9 + + .globl remove +remove: + j $31 + li $0, 10 + + .globl mkdir +mkdir: + j $31 + li $0, 11 + + .globl rmdir +rmdir: + j $31 + li $0, 12 + + .globl dopen +dopen: + j $31 + li $0, 13 + + .globl dclose +dclose: + j $31 + li $0, 14 + + .globl dread +dread: + j $31 + li $0, 15 + + .globl getstat +getstat: + j $31 + li $0, 16 + + .globl chstat +chstat: + j $31 + li $0, 17 + + .globl format +format: + j $31 + li $0, 18 + + .globl FILEIO_add # 020 + .globl AddDrv +FILEIO_add: +AddDrv: + j $31 + li $0, 20 + + .globl FILEIO_del # 021 + .globl DelDrv +FILEIO_del: +DelDrv: + j $31 + li $0, 21 + + .word 0 + .word 0 + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_libsd.s b/fps2bios/kernel/iopload/libkernel/iop_libsd.s index 0a8657e550..318af15267 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_libsd.s +++ b/fps2bios/kernel/iopload/libkernel/iop_libsd.s @@ -1,160 +1,160 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) - ------------------------------------------------------------------------ - iop_libsd.s Sound Library - taken from .irx files with symbol table - Missing calls by Julian Tyler (lovely@crm114.net) -*/ - - .text - .set noreorder - - -/* ############################### LIBSD STUB ######### */ -/* # Added by Oobles, 7th March 2002 # */ - - .local libsd_stub -libsd_stub: - .word 0x41e00000 - .word 0 - .word 0x00000104 - .ascii "libsd\0\0" - .align 2 - -/* Added by Julian Tyler (lovely) */ - .globl SdQuit # 0x02 -SdQuit: - j $31 - li $0, 0x02 - - .globl SdInit # 0x04 -SdInit: - j $31 - li $0, 0x04 - - .globl SdSetParam # 0x05 -SdSetParam: - j $31 - li $0, 0x05 - - .globl SdGetParam # 0x06 -SdGetParam: - j $31 - li $0, 0x06 - - .globl SdSetSwitch # 0x07 -SdSetSwitch: - j $31 - li $0, 0x07 - -/* Added by Julian Tyler (lovely) */ - .globl SdGetSwitch # 0x08 -SdGetSwitch: - j $31 - li $0, 0x08 - - .globl SdSetAddr # 0x09 -SdSetAddr: - j $31 - li $0, 0x09 - - .globl SdGetAddr # 0x0a -SdGetAddr: - j $31 - li $0, 0x0a - - .globl SdSetCoreAttr # 0x0b -SdSetCoreAttr: - j $31 - li $0, 0x0b - -/* Added by Julian Tyler (lovely) 013-016 */ - .globl SdGetCoreAttr # 012 -SdGetCoreAttr: - j $31 - li $0, 0x0c - - .globl SdNote2Pitch # 013 -SdNote2Pitch: - j $31 - li $0, 0x0d - - .globl SdPitch2Note # 014 -SdPitch2Note: - j $31 - li $0, 0x0e - - .globl SdProcBatch # 015 -SdProcBatch: - j $31 - li $0, 0x0f - - .globl SdProcBatchEx # 016 -SdProcBatchEx: - j $31 - li $0, 0x10 - - .globl SdVoiceTrans # 0x11 -SdVoiceTrans: - j $31 - li $0, 0x11 - -/* Added by Julian Tyler (lovely) 018-022 */ - - .globl SdBlockTrans # 018 -SdBlockTrans: - j $31 - li $0, 0x12 - - .globl SdVoiceTransStatus # 019 -SdVoiceTransStatus: - j $31 - li $0, 0x13 - - .globl SdBlockTransStatus # 020 -SdBlockTransStatus: - j $31 - li $0, 0x14 - - .globl SdSetTransCallback # 021 -SdSetTransCallback: - j $31 - li $0, 0x15 - - .globl SdSetIRQCallback # 022 -SdSetIRQCallback: - j $31 - li $0, 0x16 - - .globl SdSetEffectAttr # 0x17 -SdSetEffectAttr: - j $31 - li $0, 0x17 - -/* Added by Julian Tyler (lovely) 024-025 */ - - .globl SdGetEffectAttr # 024 -SdGetEffectAttr: - j $31 - li $0, 0x18 - - .globl SdClearEffectWorkArea # 025 -SdClearEffectWorkArea: - j $31 - li $0, 0x19 - - .globl SdSetTransIntrHandler # 0x1a -SdSetTransIntrHandler: - j $31 - li $0, 0x1a - - .globl SdSetSpu2IntrHandler # 0x1b -SdSetSpu2IntrHandler: - j $31 - li $0, 0x1b - - .word 0 - .word 0 - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) + ------------------------------------------------------------------------ + iop_libsd.s Sound Library + taken from .irx files with symbol table + Missing calls by Julian Tyler (lovely@crm114.net) +*/ + + .text + .set noreorder + + +/* ############################### LIBSD STUB ######### */ +/* # Added by Oobles, 7th March 2002 # */ + + .local libsd_stub +libsd_stub: + .word 0x41e00000 + .word 0 + .word 0x00000104 + .ascii "libsd\0\0" + .align 2 + +/* Added by Julian Tyler (lovely) */ + .globl SdQuit # 0x02 +SdQuit: + j $31 + li $0, 0x02 + + .globl SdInit # 0x04 +SdInit: + j $31 + li $0, 0x04 + + .globl SdSetParam # 0x05 +SdSetParam: + j $31 + li $0, 0x05 + + .globl SdGetParam # 0x06 +SdGetParam: + j $31 + li $0, 0x06 + + .globl SdSetSwitch # 0x07 +SdSetSwitch: + j $31 + li $0, 0x07 + +/* Added by Julian Tyler (lovely) */ + .globl SdGetSwitch # 0x08 +SdGetSwitch: + j $31 + li $0, 0x08 + + .globl SdSetAddr # 0x09 +SdSetAddr: + j $31 + li $0, 0x09 + + .globl SdGetAddr # 0x0a +SdGetAddr: + j $31 + li $0, 0x0a + + .globl SdSetCoreAttr # 0x0b +SdSetCoreAttr: + j $31 + li $0, 0x0b + +/* Added by Julian Tyler (lovely) 013-016 */ + .globl SdGetCoreAttr # 012 +SdGetCoreAttr: + j $31 + li $0, 0x0c + + .globl SdNote2Pitch # 013 +SdNote2Pitch: + j $31 + li $0, 0x0d + + .globl SdPitch2Note # 014 +SdPitch2Note: + j $31 + li $0, 0x0e + + .globl SdProcBatch # 015 +SdProcBatch: + j $31 + li $0, 0x0f + + .globl SdProcBatchEx # 016 +SdProcBatchEx: + j $31 + li $0, 0x10 + + .globl SdVoiceTrans # 0x11 +SdVoiceTrans: + j $31 + li $0, 0x11 + +/* Added by Julian Tyler (lovely) 018-022 */ + + .globl SdBlockTrans # 018 +SdBlockTrans: + j $31 + li $0, 0x12 + + .globl SdVoiceTransStatus # 019 +SdVoiceTransStatus: + j $31 + li $0, 0x13 + + .globl SdBlockTransStatus # 020 +SdBlockTransStatus: + j $31 + li $0, 0x14 + + .globl SdSetTransCallback # 021 +SdSetTransCallback: + j $31 + li $0, 0x15 + + .globl SdSetIRQCallback # 022 +SdSetIRQCallback: + j $31 + li $0, 0x16 + + .globl SdSetEffectAttr # 0x17 +SdSetEffectAttr: + j $31 + li $0, 0x17 + +/* Added by Julian Tyler (lovely) 024-025 */ + + .globl SdGetEffectAttr # 024 +SdGetEffectAttr: + j $31 + li $0, 0x18 + + .globl SdClearEffectWorkArea # 025 +SdClearEffectWorkArea: + j $31 + li $0, 0x19 + + .globl SdSetTransIntrHandler # 0x1a +SdSetTransIntrHandler: + j $31 + li $0, 0x1a + + .globl SdSetSpu2IntrHandler # 0x1b +SdSetSpu2IntrHandler: + j $31 + li $0, 0x1b + + .word 0 + .word 0 + diff --git a/fps2bios/kernel/iopload/libkernel/iop_loadcore.s b/fps2bios/kernel/iopload/libkernel/iop_loadcore.s index dc6e9e6301..9fd8c3c629 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_loadcore.s +++ b/fps2bios/kernel/iopload/libkernel/iop_loadcore.s @@ -1,65 +1,65 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) - ------------------------------------------------------------------------ - iop_loadcore.s Core IOP Functions. - taken from .irx files with symbol table. -*/ - - .text - .set noreorder - - - -/* ############################### LOADCORE STUB ###### */ -/* # Added by Oobles, 5th March 2002 # */ - - .local loadcore_stub -loadcore_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "loadcore" - .align 2 - - .globl GetLibraryEntryTable # 0x03 -GetLibraryEntryTable: - j $31 - li $0, 3 - - .globl FlushIcache # 0x05 -FlushIcache: - j $31 - li $0, 4 - - .globl FlushDcache # 0x05 -FlushDcache: - j $31 - li $0, 5 - - .global RegisterLibraryEntries # 0x06 -RegisterLibraryEntries: - j $31 - li $0, 6 - - .global ReleaseLibraryEntries -ReleaseLibraryEntries: - j $31 - li $0, 7 - - .global QueryLibraryEntryTable -QueryLibraryEntryTable: - j $31 - li $0, 11 - - .globl QueryBootMode # 0x0c -QueryBootMode: - j $31 - li $0, 0x0c - - .word 0 - .word 0 - - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) + ------------------------------------------------------------------------ + iop_loadcore.s Core IOP Functions. + taken from .irx files with symbol table. +*/ + + .text + .set noreorder + + + +/* ############################### LOADCORE STUB ###### */ +/* # Added by Oobles, 5th March 2002 # */ + + .local loadcore_stub +loadcore_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "loadcore" + .align 2 + + .globl GetLibraryEntryTable # 0x03 +GetLibraryEntryTable: + j $31 + li $0, 3 + + .globl FlushIcache # 0x05 +FlushIcache: + j $31 + li $0, 4 + + .globl FlushDcache # 0x05 +FlushDcache: + j $31 + li $0, 5 + + .global RegisterLibraryEntries # 0x06 +RegisterLibraryEntries: + j $31 + li $0, 6 + + .global ReleaseLibraryEntries +ReleaseLibraryEntries: + j $31 + li $0, 7 + + .global QueryLibraryEntryTable +QueryLibraryEntryTable: + j $31 + li $0, 11 + + .globl QueryBootMode # 0x0c +QueryBootMode: + j $31 + li $0, 0x0c + + .word 0 + .word 0 + + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_modload.s b/fps2bios/kernel/iopload/libkernel/iop_modload.s index 1b09af6ef6..84b5481c61 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_modload.s +++ b/fps2bios/kernel/iopload/libkernel/iop_modload.s @@ -1,61 +1,61 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, Nick Van Veen (nickvv@xtra.co.nz) - ------------------------------------------------------------------------ - iop_modload.s Module Manager Functions. - taken from .irx files with symbol table. -*/ - - .text - .set noreorder - - -/* ############################### MODLOAD STUB ####### */ -/* # Added by Sjeep, 28th March 2002 # */ - - .local modload_stub -modload_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "modload\0" - .align 2 - - .globl ReBootStart # 004 -ReBootStart: - jr $31 - li $0, 0x04 - - .globl LoadModuleAddress # 005 -LoadModuleAddress: - jr $31 - li $0, 0x05 - - .globl LoadModule # 006 -LoadModule: - jr $31 - li $0, 0x06 - - .globl LoadStartModule # 007 -LoadStartModule: - jr $31 - li $0, 0x07 - - .globl StartModule # 008 -StartModule: - jr $31 - li $0, 0x08 - - .globl LoadModuleBufferAddress # 009 -LoadModuleBufferAddress: - jr $31 - li $0, 0x09 - - .globl LoadModuleBuffer # 010 -LoadModuleBuffer: - jr $31 - li $0, 0x0A - - .word 0 - .word 0 +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, Nick Van Veen (nickvv@xtra.co.nz) + ------------------------------------------------------------------------ + iop_modload.s Module Manager Functions. + taken from .irx files with symbol table. +*/ + + .text + .set noreorder + + +/* ############################### MODLOAD STUB ####### */ +/* # Added by Sjeep, 28th March 2002 # */ + + .local modload_stub +modload_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "modload\0" + .align 2 + + .globl ReBootStart # 004 +ReBootStart: + jr $31 + li $0, 0x04 + + .globl LoadModuleAddress # 005 +LoadModuleAddress: + jr $31 + li $0, 0x05 + + .globl LoadModule # 006 +LoadModule: + jr $31 + li $0, 0x06 + + .globl LoadStartModule # 007 +LoadStartModule: + jr $31 + li $0, 0x07 + + .globl StartModule # 008 +StartModule: + jr $31 + li $0, 0x08 + + .globl LoadModuleBufferAddress # 009 +LoadModuleBufferAddress: + jr $31 + li $0, 0x09 + + .globl LoadModuleBuffer # 010 +LoadModuleBuffer: + jr $31 + li $0, 0x0A + + .word 0 + .word 0 diff --git a/fps2bios/kernel/iopload/libkernel/iop_sifcmd.s b/fps2bios/kernel/iopload/libkernel/iop_sifcmd.s index c28a63acc2..d5f61990bc 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_sifcmd.s +++ b/fps2bios/kernel/iopload/libkernel/iop_sifcmd.s @@ -1,144 +1,144 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) - ------------------------------------------------------------------------ - iop_sifcmd.s Serial Interface Command Functions. - taken from .irx files with symbol table -*/ - - .text - .set noreorder - - -/* ############################### SIFCMD STUB ######## */ -/* # Added by Oobles, 5th March 2002 # */ - - .local sifcmd_stub -sifcmd_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "sifcmd\0\0" - .align 2 - - .globl SifInitCmd # 0x04 -SifInitCmd: - j $31 - li $0, 0x04 - - .globl SifExitCmd # 0x05 -SifExitCmd: - j $31 - li $0, 0x05 - - .globl SifGetSreg # 0x06 -SifGetSreg: - j $31 - li $0, 0x06 - - .globl SifSetSreg # 0x07 -SifSetSreg: - j $31 - li $0, 0x07 - - .globl SifSetCmdBuffer # 0x08 -SifSetCmdBuffer: - j $31 - li $0, 0x08 - - - .globl SifAddCmdHandler # 0x0a -SifAddCmdHandler: - j $31 - li $0, 0x0a - - .globl SifRemoveCmdHandler # 0x0b -SifRemoveCmdHandler: - j $31 - li $0, 0x0b - - .globl SifSendCmd # 0x0c -SifSendCmd: - j $31 - li $0, 0x0c - - .globl iSifSendCmd # 0x0d -iSifSendCmd: - j $31 - li $0, 0x0d - - .globl SifInitRpc # 0x0E -SifInitRpc: - j $31 - li $0, 0x0E - - .globl SifBindRpc # 0x0F -SifBindRpc: - j $31 - li $0, 0x0F - - .globl SifCallRpc # 0x10 -SifCallRpc: - j $31 - li $0, 0x10 - - .globl SifRegisterRpc # 0x11 -SifRegisterRpc: - j $31 - li $0, 0x11 - - .globl SifCheckStatRpc # 0x12 -SifCheckStatRpc: - j $31 - li $0, 0x12 - - .globl SifSetRpcQueue # 0x13 -SifSetRpcQueue: - j $31 - li $0, 0x13 - - .globl SifGetNextRequest # 0x14 -SifGetNextRequest: - j $31 - li $0, 0x14 - - .globl SifExecRequest # 0x15 -SifExecRequest: - j $31 - li $0, 0x15 - - .globl SifRpcLoop # 0x16 -SifRpcLoop: - j $31 - li $0, 0x16 - - .globl SifRpcGetOtherData # 0x17 -SifRpcGetOtherData: - j $31 - li $0, 0x17 - - .globl SifRemoveRpc # 0x18 -SifRemoveRpc: - j $31 - li $0, 0x18 - - .globl SifRemoveRpcQueue # 0x19 -SifRemoveRpcQueue: - j $31 - li $0, 0x19 - - .globl SifSendCmdIntr # 0x20 -SifSendCmdIntr: - j $31 - li $0, 0x20 - - .globl iSifSendCmdIntr # 0x21 -iSifSendCmdIntr: - j $31 - li $0, 0x21 - - .word 0 - .word 0 - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) + ------------------------------------------------------------------------ + iop_sifcmd.s Serial Interface Command Functions. + taken from .irx files with symbol table +*/ + + .text + .set noreorder + + +/* ############################### SIFCMD STUB ######## */ +/* # Added by Oobles, 5th March 2002 # */ + + .local sifcmd_stub +sifcmd_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "sifcmd\0\0" + .align 2 + + .globl SifInitCmd # 0x04 +SifInitCmd: + j $31 + li $0, 0x04 + + .globl SifExitCmd # 0x05 +SifExitCmd: + j $31 + li $0, 0x05 + + .globl SifGetSreg # 0x06 +SifGetSreg: + j $31 + li $0, 0x06 + + .globl SifSetSreg # 0x07 +SifSetSreg: + j $31 + li $0, 0x07 + + .globl SifSetCmdBuffer # 0x08 +SifSetCmdBuffer: + j $31 + li $0, 0x08 + + + .globl SifAddCmdHandler # 0x0a +SifAddCmdHandler: + j $31 + li $0, 0x0a + + .globl SifRemoveCmdHandler # 0x0b +SifRemoveCmdHandler: + j $31 + li $0, 0x0b + + .globl SifSendCmd # 0x0c +SifSendCmd: + j $31 + li $0, 0x0c + + .globl iSifSendCmd # 0x0d +iSifSendCmd: + j $31 + li $0, 0x0d + + .globl SifInitRpc # 0x0E +SifInitRpc: + j $31 + li $0, 0x0E + + .globl SifBindRpc # 0x0F +SifBindRpc: + j $31 + li $0, 0x0F + + .globl SifCallRpc # 0x10 +SifCallRpc: + j $31 + li $0, 0x10 + + .globl SifRegisterRpc # 0x11 +SifRegisterRpc: + j $31 + li $0, 0x11 + + .globl SifCheckStatRpc # 0x12 +SifCheckStatRpc: + j $31 + li $0, 0x12 + + .globl SifSetRpcQueue # 0x13 +SifSetRpcQueue: + j $31 + li $0, 0x13 + + .globl SifGetNextRequest # 0x14 +SifGetNextRequest: + j $31 + li $0, 0x14 + + .globl SifExecRequest # 0x15 +SifExecRequest: + j $31 + li $0, 0x15 + + .globl SifRpcLoop # 0x16 +SifRpcLoop: + j $31 + li $0, 0x16 + + .globl SifRpcGetOtherData # 0x17 +SifRpcGetOtherData: + j $31 + li $0, 0x17 + + .globl SifRemoveRpc # 0x18 +SifRemoveRpc: + j $31 + li $0, 0x18 + + .globl SifRemoveRpcQueue # 0x19 +SifRemoveRpcQueue: + j $31 + li $0, 0x19 + + .globl SifSendCmdIntr # 0x20 +SifSendCmdIntr: + j $31 + li $0, 0x20 + + .globl iSifSendCmdIntr # 0x21 +iSifSendCmdIntr: + j $31 + li $0, 0x21 + + .word 0 + .word 0 + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_sifman.s b/fps2bios/kernel/iopload/libkernel/iop_sifman.s index c38bfa0b08..f03a53b623 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_sifman.s +++ b/fps2bios/kernel/iopload/libkernel/iop_sifman.s @@ -1,178 +1,178 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2001, Gustavo Scotti (gustavo@scotti.com) - ------------------------------------------------------------------------ - iop_sifman.s Serial Interface Manager Functions. - taken from .irx files with symbol table. -*/ - - .text - .set noreorder - - -/* ############################### SIFMAN STUB ######## */ -/* # Added by Oobles, 7th March 2002 # */ - - .local sifman_stub -sifman_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "sifman\0\0" - .align 2 - - .globl SifDeinit # 0x03 -SifDeinit: - j $31 - li $0, 0x03 - - .globl SifSIF2Init # 0x04 -SifSIF2Init: - j $31 - li $0, 0x04 - - .globl SifInit # 0x05 -SifInit: - j $31 - li $0, 0x05 - - .globl SifSetDChain # 0x06 -SifSetDChain: - j $31 - li $0, 0x06 - - .globl SifSetDma # 0x07 -SifSetDma: - j $31 - li $0, 0x07 - - .globl SifDmaStat # 0x08 -SifDmaStat: - j $31 - li $0, 0x08 - - .globl SifSend # 0x09 -SifSend: - j $31 - li $0, 0x09 - - .globl SifSendSync # 0x0A -SifSendSync: - j $31 - li $0, 0x0A - - .globl SifIsSending # 0x0B -SifIsSending: - j $31 - li $0, 0x0B - - .globl SifSetSIF0DMA # 0x0C -SifSetSIF0DMA: - j $31 - li $0, 0x0C - - .globl SifSendSync0 # 0x0D -SifSendSync0: - j $31 - li $0, 0x0D - - .globl SifIsSending0 # 0x0E -SifIsSending0: - j $31 - li $0, 0x0E - - .globl SifSetSIF1DMA # 0x0F -SifSetSIF1DMA: - j $31 - li $0, 0x0F - - .globl SifSendSync1 # 0x10 -SifSendSync1: - j $31 - li $0, 0x10 - - .globl SifIsSending1 # 0x11 -SifIsSending1: - j $31 - li $0, 0x11 - - .globl SifSetSIF2DMA # 0x12 -SifSetSIF2DMA: - j $31 - li $0, 0x12 - - .globl SifSendSync2 # 0x13 -SifSendSync2: - j $31 - li $0, 0x13 - - .globl SifIsSending2 # 0x14 -SifIsSending2: - j $31 - li $0, 0x14 - - .globl SifGetEEIOPflags # 0x15 -SifGetEEIOPflags: - j $31 - li $0, 0x15 - - .globl SifSetEEIOPflags # 0x16 -SifSetEEIOPflags: - j $31 - li $0, 0x16 - - .globl SifGetIOPEEflags # 0x17 -SifGetIOPEEflags: - j $31 - li $0, 0x17 - - .globl SifSetIOPEEflags # 0x18 -SifSetIOPEEflags: - j $31 - li $0, 0x18 - - .globl SifGetEErcvaddr # 0x19 -SifGetEErcvaddr: - j $31 - li $0, 0x19 - - .globl SifGetIOPrcvaddr # 0x1A -SifGetIOPrcvaddr: - j $31 - li $0, 0x1A - - .globl SifSetIOPrcvaddr # 0x1B -SifSetIOPrcvaddr: - j $31 - li $0, 0x1B - - .globl SifSet1450_2 # 0x1C -SifSet1450_2: - j $31 - li $0, 0x1C - - .globl SifCheckInit # 0x1D -SifCheckInit: - j $31 - li $0, 0x1D - - .globl SifSet0CB # 0x1E -SifSet0CB: - j $31 - li $0, 0x1E - - .globl SifReset0CB # 0x1F -SifReset0CB: - j $31 - li $0, 0x1F - - .globl SifSetDmaIntr # 0x20 -SifSetDmaIntr: - j $31 - li $0, 0x20 - - .word 0 - .word 0 - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2001, Gustavo Scotti (gustavo@scotti.com) + ------------------------------------------------------------------------ + iop_sifman.s Serial Interface Manager Functions. + taken from .irx files with symbol table. +*/ + + .text + .set noreorder + + +/* ############################### SIFMAN STUB ######## */ +/* # Added by Oobles, 7th March 2002 # */ + + .local sifman_stub +sifman_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "sifman\0\0" + .align 2 + + .globl SifDeinit # 0x03 +SifDeinit: + j $31 + li $0, 0x03 + + .globl SifSIF2Init # 0x04 +SifSIF2Init: + j $31 + li $0, 0x04 + + .globl SifInit # 0x05 +SifInit: + j $31 + li $0, 0x05 + + .globl SifSetDChain # 0x06 +SifSetDChain: + j $31 + li $0, 0x06 + + .globl SifSetDma # 0x07 +SifSetDma: + j $31 + li $0, 0x07 + + .globl SifDmaStat # 0x08 +SifDmaStat: + j $31 + li $0, 0x08 + + .globl SifSend # 0x09 +SifSend: + j $31 + li $0, 0x09 + + .globl SifSendSync # 0x0A +SifSendSync: + j $31 + li $0, 0x0A + + .globl SifIsSending # 0x0B +SifIsSending: + j $31 + li $0, 0x0B + + .globl SifSetSIF0DMA # 0x0C +SifSetSIF0DMA: + j $31 + li $0, 0x0C + + .globl SifSendSync0 # 0x0D +SifSendSync0: + j $31 + li $0, 0x0D + + .globl SifIsSending0 # 0x0E +SifIsSending0: + j $31 + li $0, 0x0E + + .globl SifSetSIF1DMA # 0x0F +SifSetSIF1DMA: + j $31 + li $0, 0x0F + + .globl SifSendSync1 # 0x10 +SifSendSync1: + j $31 + li $0, 0x10 + + .globl SifIsSending1 # 0x11 +SifIsSending1: + j $31 + li $0, 0x11 + + .globl SifSetSIF2DMA # 0x12 +SifSetSIF2DMA: + j $31 + li $0, 0x12 + + .globl SifSendSync2 # 0x13 +SifSendSync2: + j $31 + li $0, 0x13 + + .globl SifIsSending2 # 0x14 +SifIsSending2: + j $31 + li $0, 0x14 + + .globl SifGetEEIOPflags # 0x15 +SifGetEEIOPflags: + j $31 + li $0, 0x15 + + .globl SifSetEEIOPflags # 0x16 +SifSetEEIOPflags: + j $31 + li $0, 0x16 + + .globl SifGetIOPEEflags # 0x17 +SifGetIOPEEflags: + j $31 + li $0, 0x17 + + .globl SifSetIOPEEflags # 0x18 +SifSetIOPEEflags: + j $31 + li $0, 0x18 + + .globl SifGetEErcvaddr # 0x19 +SifGetEErcvaddr: + j $31 + li $0, 0x19 + + .globl SifGetIOPrcvaddr # 0x1A +SifGetIOPrcvaddr: + j $31 + li $0, 0x1A + + .globl SifSetIOPrcvaddr # 0x1B +SifSetIOPrcvaddr: + j $31 + li $0, 0x1B + + .globl SifSet1450_2 # 0x1C +SifSet1450_2: + j $31 + li $0, 0x1C + + .globl SifCheckInit # 0x1D +SifCheckInit: + j $31 + li $0, 0x1D + + .globl SifSet0CB # 0x1E +SifSet0CB: + j $31 + li $0, 0x1E + + .globl SifReset0CB # 0x1F +SifReset0CB: + j $31 + li $0, 0x1F + + .globl SifSetDmaIntr # 0x20 +SifSetDmaIntr: + j $31 + li $0, 0x20 + + .word 0 + .word 0 + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_stdio.s b/fps2bios/kernel/iopload/libkernel/iop_stdio.s index 649e464724..6a4409be5b 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_stdio.s +++ b/fps2bios/kernel/iopload/libkernel/iop_stdio.s @@ -1,32 +1,32 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) - ------------------------------------------------------------------------ - iop_stdio.s Stdio Import Library - taken from .irx files with symbol table -*/ - - .text - .set noreorder - - -/* ############################### STDIO STUB ######## */ - .local stdio_stub -stdio_stub: - .word 0x41e00000 - .word 0 - .word 0x00000102 - .ascii "stdio\0\0\0" - .align 2 - - .globl printf # 004 - -printf: - j $31 - li $0, 4 - - .word 0 - .word 0 - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) + ------------------------------------------------------------------------ + iop_stdio.s Stdio Import Library + taken from .irx files with symbol table +*/ + + .text + .set noreorder + + +/* ############################### STDIO STUB ######## */ + .local stdio_stub +stdio_stub: + .word 0x41e00000 + .word 0 + .word 0x00000102 + .ascii "stdio\0\0\0" + .align 2 + + .globl printf # 004 + +printf: + j $31 + li $0, 4 + + .word 0 + .word 0 + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_sysclib.s b/fps2bios/kernel/iopload/libkernel/iop_sysclib.s index b2129c3809..b646501ade 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_sysclib.s +++ b/fps2bios/kernel/iopload/libkernel/iop_sysclib.s @@ -1,219 +1,219 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) - ------------------------------------------------------------------------ - iop_sysclib.a C Library Functions. - taken from .irx files with symbol table. - Additions from Herben's IRX Tool imports.txt -*/ - - .text - .set noreorder - - -/* ############################### SYSCLIB STUB ####### */ -/* # Added by Oobles, 5th March 2002 # */ - - .local sysclib_stub -sysclib_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "sysclib\0" - .align 2 - - .globl setjmp # 0x04 -setjmp: - j $31 - li $0, 0x04 - - .globl longjmp # 0x05 -longjmp: - j $31 - li $0, 0x05 - - .globl toupper # 0x06 -toupper: - j $31 - li $0, 0x06 - - .globl tolower # 0x07 -tolower: - j $31 - li $0, 0x07 - - .globl look_ctype_table # 0x08 -look_ctype_table: - j $31 - li $0, 0x08 - - .globl get_ctype_table # 0x09 -get_ctype_table: - j $31 - li $0, 0x09 - - .globl memchr # 0x0A -memchr: - j $31 - li $0, 0x0A - - .globl memcmp # 0x0B -memcmp: - j $31 - li $0, 0x0B - - .globl memcpy # 0x0C -memcpy: - j $31 - li $0, 0x0C - - .globl memmove # 0x0D -memmove: - j $31 - li $0, 0x0D - - .globl memset # 0x0E -memset: - j $31 - li $0, 0x0E - - .globl bcmp # 0x0F -bcmp: - j $31 - li $0, 0x0F - - .globl bcopy # 0x10 -bcopy: - j $31 - li $0, 0x10 - - .globl bzero # 0x11 -bzero: - j $31 - li $0, 0x11 - - .globl prnt # 0x12 -prnt: - j $31 - li $0, 0x12 - - .globl sprintf # 0x013 -sprintf: - j $31 - li $0, 0x13 - - .globl strcat # 0x14 -strcat: - j $31 - li $0, 0x14 - - .globl strchr # 0x15 -strchr: - j $31 - li $0, 0x15 - - .globl strcmp # 0x16 -strcmp: - j $31 - li $0, 0x16 - - .globl strcpy # 0x17 -strcpy: - j $31 - li $0, 0x17 - - .globl strcspn # 0x18 -strcspn: - j $31 - li $0, 0x18 - - .globl index # 0x19 -index: - j $31 - li $0, 0x19 - - .globl rindex # 0x1A -rindex: - j $31 - li $0, 0x1A - - .globl strlen # 0x1b -strlen: - j $31 - li $0, 0x1b - - .globl strncat # 0x1c -strncat: - j $31 - li $0, 0x1C - - .globl strncmp # 0x1d -strncmp: - j $31 - li $0, 0x1d - - .globl strncpy # 0x1E -strncpy: - j $31 - li $0, 0x1E - - .globl strpbrk # 0x1F -strpbrk: - j $31 - li $0, 0x1F - - .globl strrchr # 0x20 -strrchr: - j $31 - li $0, 0x20 - - .globl strspn # 0x21 -strspn: - j $31 - li $0, 0x21 - - .globl strstr # 0x22 -strstr: - j $31 - li $0, 0x22 - - .globl strtok # 0x23 -strtok: - j $31 - li $0, 0x23 - - .globl strtol # 0x24 -strtol: - j $31 - li $0, 0x24 - - .globl atob # 0x25 -atob: - j $31 - li $0, 0x25 - - .globl strtoul # 0x26 -strtoul: - j $31 - li $0, 0x26 - - .globl wmemcopy # 0x28 -wmemcopy: - j $31 - li $0, 0x28 - - .globl wmemset # 0x29 -wmemset: - j $31 - li $0, 0x29 - - .globl vsprintf # 0x2A -vsprintf: - j $31 - li $0, 0x2A - - .word 0 - .word 0 - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) + ------------------------------------------------------------------------ + iop_sysclib.a C Library Functions. + taken from .irx files with symbol table. + Additions from Herben's IRX Tool imports.txt +*/ + + .text + .set noreorder + + +/* ############################### SYSCLIB STUB ####### */ +/* # Added by Oobles, 5th March 2002 # */ + + .local sysclib_stub +sysclib_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "sysclib\0" + .align 2 + + .globl setjmp # 0x04 +setjmp: + j $31 + li $0, 0x04 + + .globl longjmp # 0x05 +longjmp: + j $31 + li $0, 0x05 + + .globl toupper # 0x06 +toupper: + j $31 + li $0, 0x06 + + .globl tolower # 0x07 +tolower: + j $31 + li $0, 0x07 + + .globl look_ctype_table # 0x08 +look_ctype_table: + j $31 + li $0, 0x08 + + .globl get_ctype_table # 0x09 +get_ctype_table: + j $31 + li $0, 0x09 + + .globl memchr # 0x0A +memchr: + j $31 + li $0, 0x0A + + .globl memcmp # 0x0B +memcmp: + j $31 + li $0, 0x0B + + .globl memcpy # 0x0C +memcpy: + j $31 + li $0, 0x0C + + .globl memmove # 0x0D +memmove: + j $31 + li $0, 0x0D + + .globl memset # 0x0E +memset: + j $31 + li $0, 0x0E + + .globl bcmp # 0x0F +bcmp: + j $31 + li $0, 0x0F + + .globl bcopy # 0x10 +bcopy: + j $31 + li $0, 0x10 + + .globl bzero # 0x11 +bzero: + j $31 + li $0, 0x11 + + .globl prnt # 0x12 +prnt: + j $31 + li $0, 0x12 + + .globl sprintf # 0x013 +sprintf: + j $31 + li $0, 0x13 + + .globl strcat # 0x14 +strcat: + j $31 + li $0, 0x14 + + .globl strchr # 0x15 +strchr: + j $31 + li $0, 0x15 + + .globl strcmp # 0x16 +strcmp: + j $31 + li $0, 0x16 + + .globl strcpy # 0x17 +strcpy: + j $31 + li $0, 0x17 + + .globl strcspn # 0x18 +strcspn: + j $31 + li $0, 0x18 + + .globl index # 0x19 +index: + j $31 + li $0, 0x19 + + .globl rindex # 0x1A +rindex: + j $31 + li $0, 0x1A + + .globl strlen # 0x1b +strlen: + j $31 + li $0, 0x1b + + .globl strncat # 0x1c +strncat: + j $31 + li $0, 0x1C + + .globl strncmp # 0x1d +strncmp: + j $31 + li $0, 0x1d + + .globl strncpy # 0x1E +strncpy: + j $31 + li $0, 0x1E + + .globl strpbrk # 0x1F +strpbrk: + j $31 + li $0, 0x1F + + .globl strrchr # 0x20 +strrchr: + j $31 + li $0, 0x20 + + .globl strspn # 0x21 +strspn: + j $31 + li $0, 0x21 + + .globl strstr # 0x22 +strstr: + j $31 + li $0, 0x22 + + .globl strtok # 0x23 +strtok: + j $31 + li $0, 0x23 + + .globl strtol # 0x24 +strtol: + j $31 + li $0, 0x24 + + .globl atob # 0x25 +atob: + j $31 + li $0, 0x25 + + .globl strtoul # 0x26 +strtoul: + j $31 + li $0, 0x26 + + .globl wmemcopy # 0x28 +wmemcopy: + j $31 + li $0, 0x28 + + .globl wmemset # 0x29 +wmemset: + j $31 + li $0, 0x29 + + .globl vsprintf # 0x2A +vsprintf: + j $31 + li $0, 0x2A + + .word 0 + .word 0 + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_sysmem.s b/fps2bios/kernel/iopload/libkernel/iop_sysmem.s index ea7b8ac09b..203c22377f 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_sysmem.s +++ b/fps2bios/kernel/iopload/libkernel/iop_sysmem.s @@ -1,71 +1,71 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2001, Gustavo Scotti (gustavo@scotti.com) - ------------------------------------------------------------------------ - iop_sysmem.s Memory Function import list. - taken from .irx files with symbol table. -*/ - - .text - .set noreorder - - -/* ############################### SYSMEM STUB ######## */ - .local sysmem_stub -sysmem_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "sysmem\0\0" - .align 2 - - .globl AllocSysMemory # 004 -AllocSysMemory: - j $31 - li $0, 0x04 - - .globl FreeSysMemory # 005 -FreeSysMemory: - j $31 - li $0, 0x05 - - .globl QueryMemSize # 006 -QueryMemSize: - j $31 - li $0, 0x06 - - .globl QueryMaxFreeMemSize # 007 -QueryMaxFreeMemSize: - j $31 - li $0, 0x07 - - .globl QueryTotalFreeMemSize # 008 -QueryTotalFreeMemSize: - j $31 - li $0, 0x08 - - .globl QueryBlockTopAddress # 009 -QueryBlockTopAddress: - j $31 - li $0, 0x09 - - .globl QueryBlockSize # 00A -QueryBlockSize: - j $31 - li $0, 0x0A - - .globl Kprintf # 0x0E -Kprintf: - j $31 - li $0, 0x0E - - .globl SetKprintf # 0x0F -SetKprintf: - j $31 - li $0, 0x0F - - .word 0 - .word 0 - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2001, Gustavo Scotti (gustavo@scotti.com) + ------------------------------------------------------------------------ + iop_sysmem.s Memory Function import list. + taken from .irx files with symbol table. +*/ + + .text + .set noreorder + + +/* ############################### SYSMEM STUB ######## */ + .local sysmem_stub +sysmem_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "sysmem\0\0" + .align 2 + + .globl AllocSysMemory # 004 +AllocSysMemory: + j $31 + li $0, 0x04 + + .globl FreeSysMemory # 005 +FreeSysMemory: + j $31 + li $0, 0x05 + + .globl QueryMemSize # 006 +QueryMemSize: + j $31 + li $0, 0x06 + + .globl QueryMaxFreeMemSize # 007 +QueryMaxFreeMemSize: + j $31 + li $0, 0x07 + + .globl QueryTotalFreeMemSize # 008 +QueryTotalFreeMemSize: + j $31 + li $0, 0x08 + + .globl QueryBlockTopAddress # 009 +QueryBlockTopAddress: + j $31 + li $0, 0x09 + + .globl QueryBlockSize # 00A +QueryBlockSize: + j $31 + li $0, 0x0A + + .globl Kprintf # 0x0E +Kprintf: + j $31 + li $0, 0x0E + + .globl SetKprintf # 0x0F +SetKprintf: + j $31 + li $0, 0x0F + + .word 0 + .word 0 + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_thbase.s b/fps2bios/kernel/iopload/libkernel/iop_thbase.s index 5491e3467b..2db3eca6ad 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_thbase.s +++ b/fps2bios/kernel/iopload/libkernel/iop_thbase.s @@ -1,167 +1,167 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) - ------------------------------------------------------------------------ - iop_thbase.s Base Kernel Functions. - taken from .irx files with symbol table -*/ - - .text - .set noreorder - - -/* ############################### THBASE STUB ######## */ -/* # Added by Oobles, 5th March 2002 # */ - - .local thbase_stub -thbase_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "thbase\0\0" - .align 2 - - .globl CreateThread # 004 -CreateThread: - j $31 - li $0, 4 - - .globl DeleteThread # 005 -DeleteThread: - j $31 - li $0, 5 - - .globl StartThread # 006 -StartThread: - j $31 - li $0, 6 - - .globl StartThreadArgs # 007 -StartThreadArgs: - j $31 - li $0, 0x07 - - .globl ExitThread # 008 -ExitThread: - j $31 - li $0, 0x08 - - .globl ExitDeleteThread # 009 -ExitDeleteThread: - j $31 - li $0, 0x09 - - .globl TerminateThread # 010 -TerminateThread: - j $31 - li $0, 0x0A - - .globl iTerminateThread # 011 -iTerminateThread: - j $31 - li $0, 0x0B - - .globl DisableDispatchThread # 012 -DisableDispatchThread: - j $31 - li $0, 0x0C - - .globl EnableDispatchThread # 013 -EnableDispatchThread: - j $31 - li $0, 0x0D - - - .globl ChangeThreadPriority # 014 -ChangeThreadPriority: - j $31 - li $0, 0x0E - - .globl iChangeThreadPriority # 015 -iChangeThreadPriority: - j $31 - li $0, 0x0F - - - .globl ReleaseWaitThread # 018 -ReleaseWaitThread: - j $31 - li $0, 18 - - .globl iReleaseWaitThread # 019 -iReleaseWaitThread: - j $31 - li $0, 19 - - .globl GetThreadId # 0x14 -GetThreadId: - j $31 - li $0, 0x14 - - .globl SleepThread # 0x18 -SleepThread: - j $31 - li $0, 0x18 - - .globl WakeupThread # 0x19 -WakeupThread: - j $31 - li $0, 0x19 - - .globl iWakeupThread # 0x1A -iWakeupThread: - j $31 - li $0, 0x1A - - .globl DelayThread # 0x21 -DelayThread: - j $31 - li $0, 0x21 - - .globl GetSystemTime # 0x22 -GetSystemTime: - j $31 - li $0, 0x22 - - - .globl SetAlarm # 0x23 -SetAlarm: - j $31 - li $0, 0x23 - - .globl iSetAlarm # 0x24 -iSetAlarm: - j $31 - li $0, 0x24 - - .globl CancelAlarm # 0x25 -CancelAlarm: - j $31 - li $0, 0x25 - - .globl iCancelAlarm # 0x26 -iCancelAlarm: - j $31 - li $0, 0x26 - - .globl USec2SysClock # 0x27 -USec2SysClock: - j $31 - li $0, 0x27 - - .globl SysClock2USec # 0x28 -SysClock2USec: - j $31 - li $0, 0x28 - - .globl GetSystemStatusFlag # 0x29 -GetSystemStatusFlag: - j $31 - li $0, 0x29 - - - .word 0 - .word 0 - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) + ------------------------------------------------------------------------ + iop_thbase.s Base Kernel Functions. + taken from .irx files with symbol table +*/ + + .text + .set noreorder + + +/* ############################### THBASE STUB ######## */ +/* # Added by Oobles, 5th March 2002 # */ + + .local thbase_stub +thbase_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "thbase\0\0" + .align 2 + + .globl CreateThread # 004 +CreateThread: + j $31 + li $0, 4 + + .globl DeleteThread # 005 +DeleteThread: + j $31 + li $0, 5 + + .globl StartThread # 006 +StartThread: + j $31 + li $0, 6 + + .globl StartThreadArgs # 007 +StartThreadArgs: + j $31 + li $0, 0x07 + + .globl ExitThread # 008 +ExitThread: + j $31 + li $0, 0x08 + + .globl ExitDeleteThread # 009 +ExitDeleteThread: + j $31 + li $0, 0x09 + + .globl TerminateThread # 010 +TerminateThread: + j $31 + li $0, 0x0A + + .globl iTerminateThread # 011 +iTerminateThread: + j $31 + li $0, 0x0B + + .globl DisableDispatchThread # 012 +DisableDispatchThread: + j $31 + li $0, 0x0C + + .globl EnableDispatchThread # 013 +EnableDispatchThread: + j $31 + li $0, 0x0D + + + .globl ChangeThreadPriority # 014 +ChangeThreadPriority: + j $31 + li $0, 0x0E + + .globl iChangeThreadPriority # 015 +iChangeThreadPriority: + j $31 + li $0, 0x0F + + + .globl ReleaseWaitThread # 018 +ReleaseWaitThread: + j $31 + li $0, 18 + + .globl iReleaseWaitThread # 019 +iReleaseWaitThread: + j $31 + li $0, 19 + + .globl GetThreadId # 0x14 +GetThreadId: + j $31 + li $0, 0x14 + + .globl SleepThread # 0x18 +SleepThread: + j $31 + li $0, 0x18 + + .globl WakeupThread # 0x19 +WakeupThread: + j $31 + li $0, 0x19 + + .globl iWakeupThread # 0x1A +iWakeupThread: + j $31 + li $0, 0x1A + + .globl DelayThread # 0x21 +DelayThread: + j $31 + li $0, 0x21 + + .globl GetSystemTime # 0x22 +GetSystemTime: + j $31 + li $0, 0x22 + + + .globl SetAlarm # 0x23 +SetAlarm: + j $31 + li $0, 0x23 + + .globl iSetAlarm # 0x24 +iSetAlarm: + j $31 + li $0, 0x24 + + .globl CancelAlarm # 0x25 +CancelAlarm: + j $31 + li $0, 0x25 + + .globl iCancelAlarm # 0x26 +iCancelAlarm: + j $31 + li $0, 0x26 + + .globl USec2SysClock # 0x27 +USec2SysClock: + j $31 + li $0, 0x27 + + .globl SysClock2USec # 0x28 +SysClock2USec: + j $31 + li $0, 0x28 + + .globl GetSystemStatusFlag # 0x29 +GetSystemStatusFlag: + j $31 + li $0, 0x29 + + + .word 0 + .word 0 + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_thevent.s b/fps2bios/kernel/iopload/libkernel/iop_thevent.s index 010ae37f62..e50f505755 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_thevent.s +++ b/fps2bios/kernel/iopload/libkernel/iop_thevent.s @@ -1,67 +1,67 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, Florin Sasu (florinsasu@yahoo.com) - ------------------------------------------------------------------------ - iop_thevent.s Event Function Imports. -*/ - - .text - .set noreorder - - - .local thevent_stub -thevent_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "thevent\0" - .align 2 - - .globl CreateEventFlag # 004 -CreateEventFlag: - j $31 - li $0, 0x04 - - .globl DeleteEventFlag -DeleteEventFlag: - j $31 - li $0, 0x05 - - .globl SetEventFlag # 006 -SetEventFlag: - j $31 - li $0, 0x06 - - .globl iSetEventFlag # 007 -iSetEventFlag: - j $31 - li $0, 0x07 - - .globl ClearEventFlag # 008 -ClearEventFlag: - j $31 - li $0, 0x08 - - .globl iClearEventFlag # 009 -iClearEventFlag: - j $31 - li $0, 0x09 - - .globl WaitEventFlag # 00A -WaitEventFlag: - j $31 - li $0, 0x0A - - .word 0 - .word 0 - - .globl ReferEventFlagStatus # 00D -ReferEventFlagStatus: - j $31 - li $0, 0x0D - - .globl iReferEventFlagStatus # 00E -iReferEventFlagStatus: - j $31 - li $0, 0x0E +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, Florin Sasu (florinsasu@yahoo.com) + ------------------------------------------------------------------------ + iop_thevent.s Event Function Imports. +*/ + + .text + .set noreorder + + + .local thevent_stub +thevent_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "thevent\0" + .align 2 + + .globl CreateEventFlag # 004 +CreateEventFlag: + j $31 + li $0, 0x04 + + .globl DeleteEventFlag +DeleteEventFlag: + j $31 + li $0, 0x05 + + .globl SetEventFlag # 006 +SetEventFlag: + j $31 + li $0, 0x06 + + .globl iSetEventFlag # 007 +iSetEventFlag: + j $31 + li $0, 0x07 + + .globl ClearEventFlag # 008 +ClearEventFlag: + j $31 + li $0, 0x08 + + .globl iClearEventFlag # 009 +iClearEventFlag: + j $31 + li $0, 0x09 + + .globl WaitEventFlag # 00A +WaitEventFlag: + j $31 + li $0, 0x0A + + .word 0 + .word 0 + + .globl ReferEventFlagStatus # 00D +ReferEventFlagStatus: + j $31 + li $0, 0x0D + + .globl iReferEventFlagStatus # 00E +iReferEventFlagStatus: + j $31 + li $0, 0x0E diff --git a/fps2bios/kernel/iopload/libkernel/iop_thsemap.s b/fps2bios/kernel/iopload/libkernel/iop_thsemap.s index 206fe52824..866ac2111d 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_thsemap.s +++ b/fps2bios/kernel/iopload/libkernel/iop_thsemap.s @@ -1,68 +1,68 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) - ------------------------------------------------------------------------ - iop_thsemap.s Semaphore Function Imports. - taken from .irx files with symbol table. -*/ - - .text - .set noreorder - - -/* ############################### THSEMAP STUB ####### */ -/* # Added by Oobles, 5th March 2002 # */ - - .local thsemap_stub -thsemap_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "thsemap\0" - .align 2 - - .globl CreateSema # 004 -CreateSema: - j $31 - li $0, 4 - - .globl DeleteSema # 005 -DeleteSema: - j $31 - li $0, 5 - - .globl SignalSema # 006 -SignalSema: - j $31 - li $0, 6 - - .globl iSignalSema # 007 -iSignalSema: - j $31 - li $0, 7 - - .globl WaitSema # 008 -WaitSema: - j $31 - li $0, 8 - - .globl PollSema # 009 -PollSema: - j $31 - li $0, 0x09 - - .globl ReferSemaStatus # 00B -ReferSemaStatus: - j $31 - li $0, 0x0B - - .globl iReferSemaStatus # 00C -iReferSemaStatus: - j $31 - li $0, 0x0C - - .word 0 - .word 0 - - +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, David Ryan (Oobles@hotmail.com) + ------------------------------------------------------------------------ + iop_thsemap.s Semaphore Function Imports. + taken from .irx files with symbol table. +*/ + + .text + .set noreorder + + +/* ############################### THSEMAP STUB ####### */ +/* # Added by Oobles, 5th March 2002 # */ + + .local thsemap_stub +thsemap_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "thsemap\0" + .align 2 + + .globl CreateSema # 004 +CreateSema: + j $31 + li $0, 4 + + .globl DeleteSema # 005 +DeleteSema: + j $31 + li $0, 5 + + .globl SignalSema # 006 +SignalSema: + j $31 + li $0, 6 + + .globl iSignalSema # 007 +iSignalSema: + j $31 + li $0, 7 + + .globl WaitSema # 008 +WaitSema: + j $31 + li $0, 8 + + .globl PollSema # 009 +PollSema: + j $31 + li $0, 0x09 + + .globl ReferSemaStatus # 00B +ReferSemaStatus: + j $31 + li $0, 0x0B + + .globl iReferSemaStatus # 00C +iReferSemaStatus: + j $31 + li $0, 0x0C + + .word 0 + .word 0 + + diff --git a/fps2bios/kernel/iopload/libkernel/iop_usbd.s b/fps2bios/kernel/iopload/libkernel/iop_usbd.s index 4b1def3cbb..f158a5e83f 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_usbd.s +++ b/fps2bios/kernel/iopload/libkernel/iop_usbd.s @@ -1,113 +1,113 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, Pedro J. Cabrera (rc5stint@yahoo.com) - ------------------------------------------------------------------------ - iop_usbd.s USB Driver Import functions. - - Figured out from IRX files with symbol tables in Unreal Tournament - and JamPak demo discs. -*/ - - .text - .set noreorder - - .local usbd_stub -usbd_stub: # Module Import Information - .word 0x41e00000 # Import Tag - .word 0x00000000 # Minor Version? - .word 0x00000101 # Major Version? - .ascii "usbd\0\0\0\0" # Library ID - .align 2 - - /* initialize USBD.IRX - * Note: UsbInit is automatically called first whenever USBD.IRX is loaded. - * There should never be a need to reinitialize the driver. In fact, it may - * not even work. But I'm providing the function hook anyhow. - */ - .globl UsbInit -UsbInit: - j $31 - li $0, 0x00 - - /* - * These two functions are used to register and unregister device drivers for - * listening for USB bus events. The events are device probe, connect, and disconnect. - */ - - # register a USB device driver - .globl UsbRegisterDriver -UsbRegisterDriver: - j $31 - li $0, 0x04 - - # unregister a USB device driver - .globl UsbUnregisterDriver -UsbUnregisterDriver: - j $31 - li $0, 0x05 - - /* - * This function is used to get the static descriptors for the specific USB - * device. These descriptors identify the device uniquely and help determine - * what type of device we are dealing with, and what its capabilities and - * features are. - */ - .globl UsbGetDeviceStaticDescriptor -UsbGetDeviceStaticDescriptor: - j $31 - li $0, 0x06 - - /* - * These two functions are used to assign relevant data to a specific device. - * The type of data is entirely up to the caller. For example, a particular - * USB device driver may store configuration data for each specific device - * under its control. - */ - - # set the private data pointer for a device - .globl UsbSetDevicePrivateData -UsbSetDevicePrivateData: - j $31 - li $0, 0x07 - - # get the private data pointer for a device - .globl UsbGetDevicePrivateData -UsbGetDevicePrivateData: - j $31 - li $0, 0x08 - - /* - * This function returns an endpoint ID for the device ID and endpoint descriptor - * passed in. This endpoint ID is then used when transfering data to the device, - * and to close the endpoint. - */ - .globl UsbOpenEndpoint -UsbOpenEndpoint: - j $31 - li $0, 0x09 - - # close an endpoint - .globl UsbCloseEndpoint -UsbCloseEndpoint: - j $31 - li $0, 0x0A - - /* - * This function is used for all types of USB data transfers. Which type of - * transfer is determined by the parameters that are passed in. The types are: - * control, isochronous, interrupt, and bulk transfers. More details can be - * found in usbd.h. - */ - .globl UsbTransfer -UsbTransfer: - j $31 - li $0, 0x0B - - .globl UsbOpenBulkEndpoint -UsbOpenBulkEndpoint: - j $31 - li $0, 0x0C - - .word 0 - .word 0 +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, Pedro J. Cabrera (rc5stint@yahoo.com) + ------------------------------------------------------------------------ + iop_usbd.s USB Driver Import functions. + + Figured out from IRX files with symbol tables in Unreal Tournament + and JamPak demo discs. +*/ + + .text + .set noreorder + + .local usbd_stub +usbd_stub: # Module Import Information + .word 0x41e00000 # Import Tag + .word 0x00000000 # Minor Version? + .word 0x00000101 # Major Version? + .ascii "usbd\0\0\0\0" # Library ID + .align 2 + + /* initialize USBD.IRX + * Note: UsbInit is automatically called first whenever USBD.IRX is loaded. + * There should never be a need to reinitialize the driver. In fact, it may + * not even work. But I'm providing the function hook anyhow. + */ + .globl UsbInit +UsbInit: + j $31 + li $0, 0x00 + + /* + * These two functions are used to register and unregister device drivers for + * listening for USB bus events. The events are device probe, connect, and disconnect. + */ + + # register a USB device driver + .globl UsbRegisterDriver +UsbRegisterDriver: + j $31 + li $0, 0x04 + + # unregister a USB device driver + .globl UsbUnregisterDriver +UsbUnregisterDriver: + j $31 + li $0, 0x05 + + /* + * This function is used to get the static descriptors for the specific USB + * device. These descriptors identify the device uniquely and help determine + * what type of device we are dealing with, and what its capabilities and + * features are. + */ + .globl UsbGetDeviceStaticDescriptor +UsbGetDeviceStaticDescriptor: + j $31 + li $0, 0x06 + + /* + * These two functions are used to assign relevant data to a specific device. + * The type of data is entirely up to the caller. For example, a particular + * USB device driver may store configuration data for each specific device + * under its control. + */ + + # set the private data pointer for a device + .globl UsbSetDevicePrivateData +UsbSetDevicePrivateData: + j $31 + li $0, 0x07 + + # get the private data pointer for a device + .globl UsbGetDevicePrivateData +UsbGetDevicePrivateData: + j $31 + li $0, 0x08 + + /* + * This function returns an endpoint ID for the device ID and endpoint descriptor + * passed in. This endpoint ID is then used when transfering data to the device, + * and to close the endpoint. + */ + .globl UsbOpenEndpoint +UsbOpenEndpoint: + j $31 + li $0, 0x09 + + # close an endpoint + .globl UsbCloseEndpoint +UsbCloseEndpoint: + j $31 + li $0, 0x0A + + /* + * This function is used for all types of USB data transfers. Which type of + * transfer is determined by the parameters that are passed in. The types are: + * control, isochronous, interrupt, and bulk transfers. More details can be + * found in usbd.h. + */ + .globl UsbTransfer +UsbTransfer: + j $31 + li $0, 0x0B + + .globl UsbOpenBulkEndpoint +UsbOpenBulkEndpoint: + j $31 + li $0, 0x0C + + .word 0 + .word 0 diff --git a/fps2bios/kernel/iopload/libkernel/iop_vblank.s b/fps2bios/kernel/iopload/libkernel/iop_vblank.s index 267c844e86..c772e19fed 100644 --- a/fps2bios/kernel/iopload/libkernel/iop_vblank.s +++ b/fps2bios/kernel/iopload/libkernel/iop_vblank.s @@ -1,53 +1,53 @@ -/* - _____ ___ ____ - ____| | ____| PSX2 OpenSource Project - | ___| |____ (C)2002, Nick Van Veen (nickvv@xtra.co.nz) - ------------------------------------------------------------------------ - iop_vblank.s Vblank Manager Functions. - taken from .irx files with symbol table. -*/ - - .text - .set noreorder - - -/* ################################ VBLANK STUB ####### */ -/* # Added by Sjeep, 28th March 2002 # */ - - .local vblank_stub -vblank_stub: - .word 0x41e00000 - .word 0 - .word 0x00000101 - .ascii "vblank\0\0" - .align 2 - - .globl WaitVblankStart -WaitVblankStart: - jr $31 - li $0,4 - - .globl WaitVblankEnd -WaitVblankEnd: - jr $31 - li $0,5 - - .globl WaitVblank -WaitVblank: - jr $31 - li $0,6 - - .globl WaitNonVblank -WaitNonVblank: - jr $31 - li $0,7 - - .globl RegisterVblankHandler -RegisterVblankHandler: - jr $31 - li $0,8 - - .globl ReleaseVblankHandler -ReleaseVblankHandler: - jr $31 - li $0,9 +/* + _____ ___ ____ + ____| | ____| PSX2 OpenSource Project + | ___| |____ (C)2002, Nick Van Veen (nickvv@xtra.co.nz) + ------------------------------------------------------------------------ + iop_vblank.s Vblank Manager Functions. + taken from .irx files with symbol table. +*/ + + .text + .set noreorder + + +/* ################################ VBLANK STUB ####### */ +/* # Added by Sjeep, 28th March 2002 # */ + + .local vblank_stub +vblank_stub: + .word 0x41e00000 + .word 0 + .word 0x00000101 + .ascii "vblank\0\0" + .align 2 + + .globl WaitVblankStart +WaitVblankStart: + jr $31 + li $0,4 + + .globl WaitVblankEnd +WaitVblankEnd: + jr $31 + li $0,5 + + .globl WaitVblank +WaitVblank: + jr $31 + li $0,6 + + .globl WaitNonVblank +WaitNonVblank: + jr $31 + li $0,7 + + .globl RegisterVblankHandler +RegisterVblankHandler: + jr $31 + li $0,8 + + .globl ReleaseVblankHandler +ReleaseVblankHandler: + jr $31 + li $0,9 diff --git a/fps2bios/kernel/linkfile b/fps2bios/kernel/linkfile index b8e9d859f4..860bfb5fe6 100644 --- a/fps2bios/kernel/linkfile +++ b/fps2bios/kernel/linkfile @@ -1,53 +1,53 @@ -_stack_size = 0x80000; -_heap_size = 1024*1024*10; - -ENTRY(_start); -SECTIONS { - - .text 0xbfc00000 : { - start.o - *(.text) - *(.rodata) - } - .reginfo ALIGN(128) : { - *(.reginfo) - } - .data ALIGN(128) : { - *(.data) - } - .rdata ALIGN(128) : { - *(.rdata) - } - _gp = ALIGN(128) + 0x7ff0; - .lit4 ALIGN(128) : { - *(.lit4) - } - .lit8 ALIGN(128) : { - *(.lit8) - } - .sdata ALIGN(128) : { - *(.sdata) - } - - .sbss ALIGN(128) (NOLOAD) : { /* uninitialized data */ - _fbss = . ; - *(.scommon) - *(.sbss) - } - .bss ALIGN(128) (NOLOAD) : { /* uninitialized data */ - *(.bss) - } - .COMMON ALIGN(128) (NOLOAD) : { /* uninitialized data */ - *(COMMON) - } - _end_bss = . - 4; - _stack = .; - . += _stack_size ; - _end_stack = . - 8*5; - _end = . ; - __lc_bh = . ; - . += _heap_size ; - __lc_eh = .; - -} - +_stack_size = 0x80000; +_heap_size = 1024*1024*10; + +ENTRY(_start); +SECTIONS { + + .text 0xbfc00000 : { + start.o + *(.text) + *(.rodata) + } + .reginfo ALIGN(128) : { + *(.reginfo) + } + .data ALIGN(128) : { + *(.data) + } + .rdata ALIGN(128) : { + *(.rdata) + } + _gp = ALIGN(128) + 0x7ff0; + .lit4 ALIGN(128) : { + *(.lit4) + } + .lit8 ALIGN(128) : { + *(.lit8) + } + .sdata ALIGN(128) : { + *(.sdata) + } + + .sbss ALIGN(128) (NOLOAD) : { /* uninitialized data */ + _fbss = . ; + *(.scommon) + *(.sbss) + } + .bss ALIGN(128) (NOLOAD) : { /* uninitialized data */ + *(.bss) + } + .COMMON ALIGN(128) (NOLOAD) : { /* uninitialized data */ + *(COMMON) + } + _end_bss = . - 4; + _stack = .; + . += _stack_size ; + _end_stack = . - 8*5; + _end = . ; + __lc_bh = . ; + . += _heap_size ; + __lc_eh = .; + +} + diff --git a/fps2bios/loader/crt0.s b/fps2bios/loader/crt0.s index f442788315..19d1657b9d 100644 --- a/fps2bios/loader/crt0.s +++ b/fps2bios/loader/crt0.s @@ -1,110 +1,110 @@ -.set noat -.set noreorder -.global _start - -.global FlushCache -.global Exit -.global SignalSema -.global _start -.global _exit - -.text - nop - nop -FlushCache: - li $3,100 - syscall - jr $31 - nop -Exit: - li $3,4 - syscall - jr $31 - nop -SignalSema: - li $3,66 - syscall - jr $31 - nop - - nop - nop -_start: - lui $2,%hi(_args_ptr) - addiu $2,$2, %lo(_args_ptr) - sw $4,($2) -# Clear bss -zerobss: - lui $2,%hi(_fbss) - lui $3,%hi(_end) - addiu $2,$2,%lo(_fbss) - addiu $3,$3,%lo(_end) -loop: - nop - nop - sq $0,($2) - sltu $1,$2,$3 - bne $1,$0,loop - addiu $2,$2,16 - -# Thread - lui $4,%hi(_gp) - addiu $4,$4,%lo(_gp) - lui $5,%hi(_stack) - addiu $5,$5,%lo(_stack) - lui $6,%hi(_stack_size) - addiu $6,$6,%lo(_stack_size) - lui $7,%hi(_args) - addiu $7,$7,%lo(_args) - lui $8,%hi(_root) - addiu $8,$8,%lo(_root) - move $28,$4 - addiu $3,$0,60 - syscall - move $29, $2 - -# Heap - addiu $3,$0,61 - lui $4,%hi(_end) - addiu $4,$4,%lo(_end) - lui $5,%hi(_heap_size) - addiu $5,$5,%lo(_heap_size) - syscall - nop - -# Cache - jal FlushCache - move $4,$0 - -# Jump main - ei - - lui $2,%hi(_args_ptr) - addiu $2,$2,%lo(_args_ptr) - lw $3,($2) - lui $2,%hi(_args) - addiu $2,$2,%lo(_args) - - lw $4, ($2) - jal main - addiu $5, $2, 4 -_root: -_exit: -# ??? - lui $2,%hi(_args_ptr) - addiu $2,$2,%lo(_args_ptr) - lw $3,($2) - jal SignalSema - lw $4,($3) -# Exit - addiu $3,$0,35 - syscall - nop - - .bss - .align 6 -_args: .space 256+16*4+4 - - .data -_args_ptr: - .space 4 +.set noat +.set noreorder +.global _start + +.global FlushCache +.global Exit +.global SignalSema +.global _start +.global _exit + +.text + nop + nop +FlushCache: + li $3,100 + syscall + jr $31 + nop +Exit: + li $3,4 + syscall + jr $31 + nop +SignalSema: + li $3,66 + syscall + jr $31 + nop + + nop + nop +_start: + lui $2,%hi(_args_ptr) + addiu $2,$2, %lo(_args_ptr) + sw $4,($2) +# Clear bss +zerobss: + lui $2,%hi(_fbss) + lui $3,%hi(_end) + addiu $2,$2,%lo(_fbss) + addiu $3,$3,%lo(_end) +loop: + nop + nop + sq $0,($2) + sltu $1,$2,$3 + bne $1,$0,loop + addiu $2,$2,16 + +# Thread + lui $4,%hi(_gp) + addiu $4,$4,%lo(_gp) + lui $5,%hi(_stack) + addiu $5,$5,%lo(_stack) + lui $6,%hi(_stack_size) + addiu $6,$6,%lo(_stack_size) + lui $7,%hi(_args) + addiu $7,$7,%lo(_args) + lui $8,%hi(_root) + addiu $8,$8,%lo(_root) + move $28,$4 + addiu $3,$0,60 + syscall + move $29, $2 + +# Heap + addiu $3,$0,61 + lui $4,%hi(_end) + addiu $4,$4,%lo(_end) + lui $5,%hi(_heap_size) + addiu $5,$5,%lo(_heap_size) + syscall + nop + +# Cache + jal FlushCache + move $4,$0 + +# Jump main + ei + + lui $2,%hi(_args_ptr) + addiu $2,$2,%lo(_args_ptr) + lw $3,($2) + lui $2,%hi(_args) + addiu $2,$2,%lo(_args) + + lw $4, ($2) + jal main + addiu $5, $2, 4 +_root: +_exit: +# ??? + lui $2,%hi(_args_ptr) + addiu $2,$2,%lo(_args_ptr) + lw $3,($2) + jal SignalSema + lw $4,($3) +# Exit + addiu $3,$0,35 + syscall + nop + + .bss + .align 6 +_args: .space 256+16*4+4 + + .data +_args_ptr: + .space 4 diff --git a/fps2bios/loader/linkfile b/fps2bios/loader/linkfile index 714d24560c..29d72354c8 100644 --- a/fps2bios/loader/linkfile +++ b/fps2bios/loader/linkfile @@ -1,52 +1,52 @@ -_stack_size = 0x80000; -_heap_size = 1024*1024*10; - -ENTRY(_start); -SECTIONS { - - .text 0x00082000 : { - *(.text) - *(.rodata) - } - .reginfo ALIGN(128) : { - *(.reginfo) - } - .data ALIGN(128) : { - *(.data) - } - .rdata ALIGN(128) : { - *(.rdata) - } - _gp = ALIGN(128) + 0x7ff0; - .lit4 ALIGN(128) : { - *(.lit4) - } - .lit8 ALIGN(128) : { - *(.lit8) - } - .sdata ALIGN(128) : { - *(.sdata) - } - - .sbss ALIGN(128) (NOLOAD) : { /* uninitialized data */ - _fbss = . ; - *(.scommon) - *(.sbss) - } - .bss ALIGN(128) (NOLOAD) : { /* uninitialized data */ - *(.bss) - } - .COMMON ALIGN(128) (NOLOAD) : { /* uninitialized data */ - *(COMMON) - } - _end_bss = . - 4; - _stack = .; - . += _stack_size ; - _end_stack = . - 8*5; - _end = . ; - __lc_bh = . ; - . += _heap_size ; - __lc_eh = .; - -} - +_stack_size = 0x80000; +_heap_size = 1024*1024*10; + +ENTRY(_start); +SECTIONS { + + .text 0x00082000 : { + *(.text) + *(.rodata) + } + .reginfo ALIGN(128) : { + *(.reginfo) + } + .data ALIGN(128) : { + *(.data) + } + .rdata ALIGN(128) : { + *(.rdata) + } + _gp = ALIGN(128) + 0x7ff0; + .lit4 ALIGN(128) : { + *(.lit4) + } + .lit8 ALIGN(128) : { + *(.lit8) + } + .sdata ALIGN(128) : { + *(.sdata) + } + + .sbss ALIGN(128) (NOLOAD) : { /* uninitialized data */ + _fbss = . ; + *(.scommon) + *(.sbss) + } + .bss ALIGN(128) (NOLOAD) : { /* uninitialized data */ + *(.bss) + } + .COMMON ALIGN(128) (NOLOAD) : { /* uninitialized data */ + *(COMMON) + } + _end_bss = . - 4; + _stack = .; + . += _stack_size ; + _end_stack = . - 8*5; + _end = . ; + __lc_bh = . ; + . += _heap_size ; + __lc_eh = .; + +} + diff --git a/nsis/SectionCoreReqs.nsh b/nsis/SectionCoreReqs.nsh index 2c326d7aeb..b4012c5e1f 100644 --- a/nsis/SectionCoreReqs.nsh +++ b/nsis/SectionCoreReqs.nsh @@ -1,84 +1,84 @@ - - ; --- UAC NIGHTMARES --- - ; Ideally this would default to 'current' for user-level installs and 'all' for admin-level installs. - ; There are problems to be aware of, however! - ; - ; * If the user is an admin, Windows Vista/7 will DEFAULT to an "all" shell context (installing shortcuts - ; for all users), even if we don't want it to (which causes the uninstaller to fail!) - ; * If the user is not an admin, setting Shell Context to all will cause the installer to fail because the - ; user won't have permission enough to install it at all (sigh). - ; - ; For now we just require Admin rights to install PCSX2. An ideal solution would be to use our IsUserAdmin - ; function to auto-detect and modify nsis installer behavior accordingly. - ; - ; (note! the SetShellVarContext use in the uninstaller section must match this one!) - - SetShellVarContext all - ;SetShellVarContext current - - SetOutPath "$INSTDIR" - !insertmacro UNINSTALL.LOG_OPEN_INSTALL - File /oname=${APP_EXE} ..\bin\pcsx2.exe - ;File /nonfatal /oname=pcsx2-dev.exe ..\bin\pcsx2-dev.exe - - ; ------------------------------------------ - ; -- Shared Core Components -- - ; ------------------------------------------ - ; (Binaries, shared DLLs, null plugins, game database, languages, etc) - - ; Note that v3 pthreads is compatible with v4 pthreads, so we just copy v4 over both - ; filenames. This allows many older plugin versions to continue to work. - - File ..\bin\w32pthreads.v4.dll - ; See above comment. - File /oname=w32pthreads.v3.dll ..\bin\w32pthreads.v4.dll - File ..\bin\GameIndex.dbf - File ..\bin\cheats_ws.zip - - !insertmacro UNINSTALL.LOG_CLOSE_INSTALL - - SetOutPath "$INSTDIR\Cheats" - !insertmacro UNINSTALL.LOG_OPEN_INSTALL - File ..\bin\Cheats\* - !insertmacro UNINSTALL.LOG_CLOSE_INSTALL - - SetOutPath "$INSTDIR\Docs" - !insertmacro UNINSTALL.LOG_OPEN_INSTALL - File ..\bin\docs\* - !insertmacro UNINSTALL.LOG_CLOSE_INSTALL - - SetOutPath "$INSTDIR\Plugins" - !insertmacro UNINSTALL.LOG_OPEN_INSTALL - ; NULL plugins are required, because the PCSX2 plugin selector needs a dummy plugin in every slot - ; in order to run (including CDVD!) -- and really there should be more but we don't have working - ; SPU2 null plugins right now. - - File ..\bin\Plugins\GSnull.dll - ;File ..\bin\Plugins\SPU2null.dll - File ..\bin\Plugins\USBnull.dll - File ..\bin\Plugins\DEV9null.dll - File ..\bin\Plugins\FWnull.dll - File ..\bin\Plugins\CDVDnull.dll - !insertmacro UNINSTALL.LOG_CLOSE_INSTALL - - !if ${INC_LANGS} > 0 - SetOutPath $INSTDIR\Langs - !insertmacro UNINSTALL.LOG_OPEN_INSTALL - File /nonfatal /r ..\bin\Langs\*.mo - !insertmacro UNINSTALL.LOG_CLOSE_INSTALL - !endif - - - ; ------------------------------------------ - ; -- Registry Section -- - ; ------------------------------------------ - - ; Write the installation path into the registry - WriteRegStr HKLM Software\PCSX2 "Install_Dir" "$INSTDIR" - - ; Write the uninstall keys for Windows - WriteRegStr HKLM "${INSTDIR_REG_KEY}" "DisplayName" "PCSX2 - Playstation 2 Emulator" - WriteRegStr HKLM "${INSTDIR_REG_KEY}" "UninstallString" "${UNINST_EXE}" - WriteRegDWORD HKLM "${INSTDIR_REG_KEY}" "NoModify" 1 - WriteRegDWORD HKLM "${INSTDIR_REG_KEY}" "NoRepair" 1 - WriteUninstaller "${UNINST_EXE}" + + ; --- UAC NIGHTMARES --- + ; Ideally this would default to 'current' for user-level installs and 'all' for admin-level installs. + ; There are problems to be aware of, however! + ; + ; * If the user is an admin, Windows Vista/7 will DEFAULT to an "all" shell context (installing shortcuts + ; for all users), even if we don't want it to (which causes the uninstaller to fail!) + ; * If the user is not an admin, setting Shell Context to all will cause the installer to fail because the + ; user won't have permission enough to install it at all (sigh). + ; + ; For now we just require Admin rights to install PCSX2. An ideal solution would be to use our IsUserAdmin + ; function to auto-detect and modify nsis installer behavior accordingly. + ; + ; (note! the SetShellVarContext use in the uninstaller section must match this one!) + + SetShellVarContext all + ;SetShellVarContext current + + SetOutPath "$INSTDIR" + !insertmacro UNINSTALL.LOG_OPEN_INSTALL + File /oname=${APP_EXE} ..\bin\pcsx2.exe + ;File /nonfatal /oname=pcsx2-dev.exe ..\bin\pcsx2-dev.exe + + ; ------------------------------------------ + ; -- Shared Core Components -- + ; ------------------------------------------ + ; (Binaries, shared DLLs, null plugins, game database, languages, etc) + + ; Note that v3 pthreads is compatible with v4 pthreads, so we just copy v4 over both + ; filenames. This allows many older plugin versions to continue to work. + + File ..\bin\w32pthreads.v4.dll + ; See above comment. + File /oname=w32pthreads.v3.dll ..\bin\w32pthreads.v4.dll + File ..\bin\GameIndex.dbf + File ..\bin\cheats_ws.zip + + !insertmacro UNINSTALL.LOG_CLOSE_INSTALL + + SetOutPath "$INSTDIR\Cheats" + !insertmacro UNINSTALL.LOG_OPEN_INSTALL + File ..\bin\Cheats\* + !insertmacro UNINSTALL.LOG_CLOSE_INSTALL + + SetOutPath "$INSTDIR\Docs" + !insertmacro UNINSTALL.LOG_OPEN_INSTALL + File ..\bin\docs\* + !insertmacro UNINSTALL.LOG_CLOSE_INSTALL + + SetOutPath "$INSTDIR\Plugins" + !insertmacro UNINSTALL.LOG_OPEN_INSTALL + ; NULL plugins are required, because the PCSX2 plugin selector needs a dummy plugin in every slot + ; in order to run (including CDVD!) -- and really there should be more but we don't have working + ; SPU2 null plugins right now. + + File ..\bin\Plugins\GSnull.dll + ;File ..\bin\Plugins\SPU2null.dll + File ..\bin\Plugins\USBnull.dll + File ..\bin\Plugins\DEV9null.dll + File ..\bin\Plugins\FWnull.dll + File ..\bin\Plugins\CDVDnull.dll + !insertmacro UNINSTALL.LOG_CLOSE_INSTALL + + !if ${INC_LANGS} > 0 + SetOutPath $INSTDIR\Langs + !insertmacro UNINSTALL.LOG_OPEN_INSTALL + File /nonfatal /r ..\bin\Langs\*.mo + !insertmacro UNINSTALL.LOG_CLOSE_INSTALL + !endif + + + ; ------------------------------------------ + ; -- Registry Section -- + ; ------------------------------------------ + + ; Write the installation path into the registry + WriteRegStr HKLM Software\PCSX2 "Install_Dir" "$INSTDIR" + + ; Write the uninstall keys for Windows + WriteRegStr HKLM "${INSTDIR_REG_KEY}" "DisplayName" "PCSX2 - Playstation 2 Emulator" + WriteRegStr HKLM "${INSTDIR_REG_KEY}" "UninstallString" "${UNINST_EXE}" + WriteRegDWORD HKLM "${INSTDIR_REG_KEY}" "NoModify" 1 + WriteRegDWORD HKLM "${INSTDIR_REG_KEY}" "NoRepair" 1 + WriteUninstaller "${UNINST_EXE}" diff --git a/pcsx2/CDVD/InputIsoFile.cpp b/pcsx2/CDVD/InputIsoFile.cpp index 2bf6bef0bc..2e24817b48 100644 --- a/pcsx2/CDVD/InputIsoFile.cpp +++ b/pcsx2/CDVD/InputIsoFile.cpp @@ -1,361 +1,361 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2010 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 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 PCSX2. - * If not, see . - */ - - -#include "PrecompiledHeader.h" -#include "IopCommon.h" -#include "IsoFileFormats.h" - -#include - -static const char* nameFromType(int type) -{ - switch(type) - { - case ISOTYPE_CD: return "CD"; - case ISOTYPE_DVD: return "DVD"; - case ISOTYPE_AUDIO: return "Audio CD"; - case ISOTYPE_DVDDL: return "DVD9 (dual-layer)"; - case ISOTYPE_ILLEGAL: return "Illegal media"; - default: return "Unknown or corrupt"; - } -} - -int InputIsoFile::ReadSync(u8* dst, uint lsn) -{ - if (lsn > m_blocks) - { - FastFormatUnicode msg; - msg.Write("isoFile error: Block index is past the end of file! (%u > %u).", lsn, m_blocks); - - pxAssertDev(false, msg); - Console.Error(msg.c_str()); - return -1; - } - - return m_reader->ReadSync(dst+m_blockofs, lsn, 1); -} - -void InputIsoFile::BeginRead2(uint lsn) -{ - if (lsn > m_blocks) - { - FastFormatUnicode msg; - msg.Write("isoFile error: Block index is past the end of file! (%u > %u).", lsn, m_blocks); - - pxAssertDev(false, msg); - Console.Error(msg.c_str()); - - // [TODO] : Throw exception? - // Typically an error like this is bad; indicating an invalid dump or corrupted - // iso file. - - m_current_lsn = -1; - return; - } - - m_current_lsn = lsn; - - if(lsn >= m_read_lsn && lsn < (m_read_lsn+m_read_count)) - { - // Already buffered - return; - } - - m_read_lsn = lsn; - m_read_count = 1; - - if(ReadUnit > 1) - { - //m_read_lsn = lsn - (lsn % ReadUnit); - - m_read_count = std::min(ReadUnit, m_blocks - m_read_lsn); - } - - m_reader->BeginRead(m_readbuffer, m_read_lsn, m_read_count); - m_read_inprogress = true; -} - -int InputIsoFile::FinishRead3(u8* dst, uint mode) -{ - int _offset, length; - int ret = 0; - - if(m_current_lsn < 0) - return -1; - - if(m_read_inprogress) - { - ret = m_reader->FinishRead(); - m_read_inprogress = false; - - if(ret < 0) - return ret; - } - - switch (mode) - { - case CDVD_MODE_2352: - _offset = 0; - length = 2352; - break; - case CDVD_MODE_2340: - _offset = 12; - length = 2340; - break; - case CDVD_MODE_2328: - _offset = 24; - length = 2328; - break; - case CDVD_MODE_2048: - _offset = 24; - length = 2048; - break; - } - - int end1 = m_blockofs + m_blocksize; - int end2 = _offset + length; - int end = std::min(end1, end2); - - int diff = m_blockofs - _offset; - int ndiff = 0; - if(diff > 0) - { - memset(dst, 0, diff); - _offset = m_blockofs; - } - else - { - ndiff = -diff; - diff = 0; - } - - length = end - _offset; - - uint read_offset = (m_current_lsn - m_read_lsn) * m_blocksize; - memcpy(dst + diff, m_readbuffer + ndiff + read_offset, length); - - if (m_type == ISOTYPE_CD && diff >= 12) - { - lsn_to_msf(dst + diff - 12, m_current_lsn); - dst[diff - 9] = 2; - } - - return 0; -} - -InputIsoFile::InputIsoFile() -{ - _init(); -} - -InputIsoFile::~InputIsoFile() throw() -{ - Close(); -} - -void InputIsoFile::_init() -{ - m_type = ISOTYPE_ILLEGAL; - m_flags = 0; - - m_offset = 0; - m_blockofs = 0; - m_blocksize = 0; - m_blocks = 0; - - m_read_inprogress = false; - m_read_count = 0; - m_read_lsn = -1; -} - -// Tests the specified filename to see if it is a supported ISO type. This function typically -// executes faster than IsoFile::Open since it does not do the following: -// * check for multi-part ISOs. I tests for header info in the main/root ISO only. -// * load blockdump indexes. -// -// Note that this is a member method, and that it will clobber any existing ISO state. -// (assertions are generated in debug mode if the object state is not already closed). -bool InputIsoFile::Test( const wxString& srcfile ) -{ - Close(); - m_filename = srcfile; - - return Open(srcfile, true); -} - -bool InputIsoFile::Open( const wxString& srcfile, bool testOnly ) -{ - Close(); - m_filename = srcfile; - m_reader = NULL; - - bool isBlockdump = false; - bool isCompressed = false; - - // First try using a compressed reader. If it works, go with it. - m_reader = CompressedFileReader::GetNewReader(m_filename); - isCompressed = m_reader != NULL; - - // If it wasn't compressed, let's open it has a FlatFileReader. - if (!isCompressed) - { - // Allow write sharing of the iso based on the ini settings. - // Mostly useful for romhacking, where the disc is frequently - // changed and the emulator would block modifications - m_reader = new FlatFileReader(EmuConfig.CdvdShareWrite); - } - - m_reader->Open(m_filename); - - // It might actually be a blockdump file. - // Check that before continuing with the FlatFileReader. - isBlockdump = BlockdumpFileReader::DetectBlockdump(m_reader); - if (isBlockdump) - { - delete m_reader; - - BlockdumpFileReader *bdr = new BlockdumpFileReader(); - bdr->Open(m_filename); - - m_blockofs = bdr->GetBlockOffset(); - m_blocksize = bdr->GetBlockSize(); - - m_reader = bdr; - - ReadUnit = 1; - } - - bool detected = Detect(); - - if(testOnly) - return detected; - - if (!detected) - throw Exception::BadStream() - .SetUserMsg(_("Unrecognized ISO image file format")) - .SetDiagMsg(L"ISO mounting failed: PCSX2 is unable to identify the ISO image type."); - - if(!isBlockdump && !isCompressed) - { - ReadUnit = MaxReadUnit; - - m_reader->SetDataOffset(m_offset); - m_reader->SetBlockSize(m_blocksize); - - // Returns the original reader if single-part or a Multipart reader otherwise - AsyncFileReader* m_reader_old = m_reader; - m_reader = MultipartFileReader::DetectMultipart(m_reader); - if (m_reader != m_reader_old) // Not the same object the old one need to be deleted - delete m_reader_old; - } - - m_blocks = m_reader->GetBlockCount(); - - Console.WriteLn(Color_StrongBlue, L"isoFile open ok: %s", WX_STR(m_filename)); - - ConsoleIndentScope indent; - - Console.WriteLn("Image type = %s", nameFromType(m_type)); - //Console.WriteLn("Fileparts = %u", m_numparts); // Pointless print, it's 1 unless it says otherwise above - DevCon.WriteLn ("blocks = %u", m_blocks); - DevCon.WriteLn ("offset = %d", m_offset); - DevCon.WriteLn ("blocksize = %u", m_blocksize); - DevCon.WriteLn ("blockoffset = %d", m_blockofs); - - return true; -} - -void InputIsoFile::Close() -{ - delete m_reader; - m_reader = NULL; - - _init(); -} - -bool InputIsoFile::IsOpened() const -{ - return m_reader != NULL; -} - -bool InputIsoFile::tryIsoType(u32 _size, s32 _offset, s32 _blockofs) -{ - static u8 buf[2456]; - - m_blocksize = _size; - m_offset = _offset; - m_blockofs = _blockofs; - - m_reader->SetDataOffset(_offset); - m_reader->SetBlockSize(_size); - - if(ReadSync(buf, 16) < 0) - return false; - - if (strncmp((char*)(buf+25), "CD001", 5)) // Not ISO 9660 compliant - return false; - - m_type = (*(u16*)(buf+190) == 2048) ? ISOTYPE_CD : ISOTYPE_DVD; - - return true; // We can deal with this. -} - -// based on florin's CDVDbin detection code :) -// Parameter: -// -// -// Returns true if the image is valid/known/supported, or false if not (type == ISOTYPE_ILLEGAL). -bool InputIsoFile::Detect( bool readType ) -{ - m_type = ISOTYPE_ILLEGAL; - - AsyncFileReader* headpart = m_reader; - - // First sanity check: no sane CD image has less than 16 sectors, since that's what - // we need simply to contain a TOC. So if the file size is not large enough to - // accommodate that, it is NOT a CD image ---> - - int sectors = headpart->GetBlockCount(); - - if (sectors < 17) - return false; - - m_blocks = 17; - - if (tryIsoType(2048, 0, 24)) return true; // ISO 2048 - if (tryIsoType(2336, 0, 16)) return true; // RAW 2336 - if (tryIsoType(2352, 0, 0)) return true; // RAW 2352 - if (tryIsoType(2448, 0, 0)) return true; // RAWQ 2448 - - if (tryIsoType(2048, 150 * 2048, 24)) return true; // NERO ISO 2048 - if (tryIsoType(2352, 150 * 2048, 0)) return true; // NERO RAW 2352 - if (tryIsoType(2448, 150 * 2048, 0)) return true; // NERO RAWQ 2448 - - if (tryIsoType(2048, -8, 24)) return true; // ISO 2048 - if (tryIsoType(2352, -8, 0)) return true; // RAW 2352 - if (tryIsoType(2448, -8, 0)) return true; // RAWQ 2448 - - m_offset = 0; - m_blocksize = CD_FRAMESIZE_RAW; - m_blockofs = 0; - m_type = ISOTYPE_AUDIO; - - m_reader->SetDataOffset(m_offset); - m_reader->SetBlockSize(m_blocksize); - - //BUG: This also detects a memory-card-file as a valid Audio-CD ISO... -avih - return true; -} +/* PCSX2 - PS2 Emulator for PCs + * Copyright (C) 2002-2010 PCSX2 Dev Team + * + * PCSX2 is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * PCSX2 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 PCSX2. + * If not, see . + */ + + +#include "PrecompiledHeader.h" +#include "IopCommon.h" +#include "IsoFileFormats.h" + +#include + +static const char* nameFromType(int type) +{ + switch(type) + { + case ISOTYPE_CD: return "CD"; + case ISOTYPE_DVD: return "DVD"; + case ISOTYPE_AUDIO: return "Audio CD"; + case ISOTYPE_DVDDL: return "DVD9 (dual-layer)"; + case ISOTYPE_ILLEGAL: return "Illegal media"; + default: return "Unknown or corrupt"; + } +} + +int InputIsoFile::ReadSync(u8* dst, uint lsn) +{ + if (lsn > m_blocks) + { + FastFormatUnicode msg; + msg.Write("isoFile error: Block index is past the end of file! (%u > %u).", lsn, m_blocks); + + pxAssertDev(false, msg); + Console.Error(msg.c_str()); + return -1; + } + + return m_reader->ReadSync(dst+m_blockofs, lsn, 1); +} + +void InputIsoFile::BeginRead2(uint lsn) +{ + if (lsn > m_blocks) + { + FastFormatUnicode msg; + msg.Write("isoFile error: Block index is past the end of file! (%u > %u).", lsn, m_blocks); + + pxAssertDev(false, msg); + Console.Error(msg.c_str()); + + // [TODO] : Throw exception? + // Typically an error like this is bad; indicating an invalid dump or corrupted + // iso file. + + m_current_lsn = -1; + return; + } + + m_current_lsn = lsn; + + if(lsn >= m_read_lsn && lsn < (m_read_lsn+m_read_count)) + { + // Already buffered + return; + } + + m_read_lsn = lsn; + m_read_count = 1; + + if(ReadUnit > 1) + { + //m_read_lsn = lsn - (lsn % ReadUnit); + + m_read_count = std::min(ReadUnit, m_blocks - m_read_lsn); + } + + m_reader->BeginRead(m_readbuffer, m_read_lsn, m_read_count); + m_read_inprogress = true; +} + +int InputIsoFile::FinishRead3(u8* dst, uint mode) +{ + int _offset, length; + int ret = 0; + + if(m_current_lsn < 0) + return -1; + + if(m_read_inprogress) + { + ret = m_reader->FinishRead(); + m_read_inprogress = false; + + if(ret < 0) + return ret; + } + + switch (mode) + { + case CDVD_MODE_2352: + _offset = 0; + length = 2352; + break; + case CDVD_MODE_2340: + _offset = 12; + length = 2340; + break; + case CDVD_MODE_2328: + _offset = 24; + length = 2328; + break; + case CDVD_MODE_2048: + _offset = 24; + length = 2048; + break; + } + + int end1 = m_blockofs + m_blocksize; + int end2 = _offset + length; + int end = std::min(end1, end2); + + int diff = m_blockofs - _offset; + int ndiff = 0; + if(diff > 0) + { + memset(dst, 0, diff); + _offset = m_blockofs; + } + else + { + ndiff = -diff; + diff = 0; + } + + length = end - _offset; + + uint read_offset = (m_current_lsn - m_read_lsn) * m_blocksize; + memcpy(dst + diff, m_readbuffer + ndiff + read_offset, length); + + if (m_type == ISOTYPE_CD && diff >= 12) + { + lsn_to_msf(dst + diff - 12, m_current_lsn); + dst[diff - 9] = 2; + } + + return 0; +} + +InputIsoFile::InputIsoFile() +{ + _init(); +} + +InputIsoFile::~InputIsoFile() throw() +{ + Close(); +} + +void InputIsoFile::_init() +{ + m_type = ISOTYPE_ILLEGAL; + m_flags = 0; + + m_offset = 0; + m_blockofs = 0; + m_blocksize = 0; + m_blocks = 0; + + m_read_inprogress = false; + m_read_count = 0; + m_read_lsn = -1; +} + +// Tests the specified filename to see if it is a supported ISO type. This function typically +// executes faster than IsoFile::Open since it does not do the following: +// * check for multi-part ISOs. I tests for header info in the main/root ISO only. +// * load blockdump indexes. +// +// Note that this is a member method, and that it will clobber any existing ISO state. +// (assertions are generated in debug mode if the object state is not already closed). +bool InputIsoFile::Test( const wxString& srcfile ) +{ + Close(); + m_filename = srcfile; + + return Open(srcfile, true); +} + +bool InputIsoFile::Open( const wxString& srcfile, bool testOnly ) +{ + Close(); + m_filename = srcfile; + m_reader = NULL; + + bool isBlockdump = false; + bool isCompressed = false; + + // First try using a compressed reader. If it works, go with it. + m_reader = CompressedFileReader::GetNewReader(m_filename); + isCompressed = m_reader != NULL; + + // If it wasn't compressed, let's open it has a FlatFileReader. + if (!isCompressed) + { + // Allow write sharing of the iso based on the ini settings. + // Mostly useful for romhacking, where the disc is frequently + // changed and the emulator would block modifications + m_reader = new FlatFileReader(EmuConfig.CdvdShareWrite); + } + + m_reader->Open(m_filename); + + // It might actually be a blockdump file. + // Check that before continuing with the FlatFileReader. + isBlockdump = BlockdumpFileReader::DetectBlockdump(m_reader); + if (isBlockdump) + { + delete m_reader; + + BlockdumpFileReader *bdr = new BlockdumpFileReader(); + bdr->Open(m_filename); + + m_blockofs = bdr->GetBlockOffset(); + m_blocksize = bdr->GetBlockSize(); + + m_reader = bdr; + + ReadUnit = 1; + } + + bool detected = Detect(); + + if(testOnly) + return detected; + + if (!detected) + throw Exception::BadStream() + .SetUserMsg(_("Unrecognized ISO image file format")) + .SetDiagMsg(L"ISO mounting failed: PCSX2 is unable to identify the ISO image type."); + + if(!isBlockdump && !isCompressed) + { + ReadUnit = MaxReadUnit; + + m_reader->SetDataOffset(m_offset); + m_reader->SetBlockSize(m_blocksize); + + // Returns the original reader if single-part or a Multipart reader otherwise + AsyncFileReader* m_reader_old = m_reader; + m_reader = MultipartFileReader::DetectMultipart(m_reader); + if (m_reader != m_reader_old) // Not the same object the old one need to be deleted + delete m_reader_old; + } + + m_blocks = m_reader->GetBlockCount(); + + Console.WriteLn(Color_StrongBlue, L"isoFile open ok: %s", WX_STR(m_filename)); + + ConsoleIndentScope indent; + + Console.WriteLn("Image type = %s", nameFromType(m_type)); + //Console.WriteLn("Fileparts = %u", m_numparts); // Pointless print, it's 1 unless it says otherwise above + DevCon.WriteLn ("blocks = %u", m_blocks); + DevCon.WriteLn ("offset = %d", m_offset); + DevCon.WriteLn ("blocksize = %u", m_blocksize); + DevCon.WriteLn ("blockoffset = %d", m_blockofs); + + return true; +} + +void InputIsoFile::Close() +{ + delete m_reader; + m_reader = NULL; + + _init(); +} + +bool InputIsoFile::IsOpened() const +{ + return m_reader != NULL; +} + +bool InputIsoFile::tryIsoType(u32 _size, s32 _offset, s32 _blockofs) +{ + static u8 buf[2456]; + + m_blocksize = _size; + m_offset = _offset; + m_blockofs = _blockofs; + + m_reader->SetDataOffset(_offset); + m_reader->SetBlockSize(_size); + + if(ReadSync(buf, 16) < 0) + return false; + + if (strncmp((char*)(buf+25), "CD001", 5)) // Not ISO 9660 compliant + return false; + + m_type = (*(u16*)(buf+190) == 2048) ? ISOTYPE_CD : ISOTYPE_DVD; + + return true; // We can deal with this. +} + +// based on florin's CDVDbin detection code :) +// Parameter: +// +// +// Returns true if the image is valid/known/supported, or false if not (type == ISOTYPE_ILLEGAL). +bool InputIsoFile::Detect( bool readType ) +{ + m_type = ISOTYPE_ILLEGAL; + + AsyncFileReader* headpart = m_reader; + + // First sanity check: no sane CD image has less than 16 sectors, since that's what + // we need simply to contain a TOC. So if the file size is not large enough to + // accommodate that, it is NOT a CD image ---> + + int sectors = headpart->GetBlockCount(); + + if (sectors < 17) + return false; + + m_blocks = 17; + + if (tryIsoType(2048, 0, 24)) return true; // ISO 2048 + if (tryIsoType(2336, 0, 16)) return true; // RAW 2336 + if (tryIsoType(2352, 0, 0)) return true; // RAW 2352 + if (tryIsoType(2448, 0, 0)) return true; // RAWQ 2448 + + if (tryIsoType(2048, 150 * 2048, 24)) return true; // NERO ISO 2048 + if (tryIsoType(2352, 150 * 2048, 0)) return true; // NERO RAW 2352 + if (tryIsoType(2448, 150 * 2048, 0)) return true; // NERO RAWQ 2448 + + if (tryIsoType(2048, -8, 24)) return true; // ISO 2048 + if (tryIsoType(2352, -8, 0)) return true; // RAW 2352 + if (tryIsoType(2448, -8, 0)) return true; // RAWQ 2448 + + m_offset = 0; + m_blocksize = CD_FRAMESIZE_RAW; + m_blockofs = 0; + m_type = ISOTYPE_AUDIO; + + m_reader->SetDataOffset(m_offset); + m_reader->SetBlockSize(m_blocksize); + + //BUG: This also detects a memory-card-file as a valid Audio-CD ISO... -avih + return true; +} diff --git a/pcsx2/CDVD/OutputIsoFile.cpp b/pcsx2/CDVD/OutputIsoFile.cpp index 5c5498aa04..46918def6c 100644 --- a/pcsx2/CDVD/OutputIsoFile.cpp +++ b/pcsx2/CDVD/OutputIsoFile.cpp @@ -1,140 +1,140 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2010 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 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 PCSX2. - * If not, see . - */ - - -#include "PrecompiledHeader.h" -#include "IopCommon.h" -#include "IsoFileFormats.h" - -#include - -void pxStream_OpenCheck( const wxStreamBase& stream, const wxString& fname, const wxString& mode ) -{ - if (stream.IsOk()) return; - - ScopedExcept ex(Exception::FromErrno(fname, errno)); - ex->SetDiagMsg( pxsFmt(L"Unable to open the file for %s: %s", WX_STR(mode), WX_STR(ex->DiagMsg())) ); - ex->Rethrow(); -} - -OutputIsoFile::OutputIsoFile() -{ - _init(); -} - -OutputIsoFile::~OutputIsoFile() throw() -{ - Close(); -} - -void OutputIsoFile::_init() -{ - m_version = 0; - - m_offset = 0; - m_blockofs = 0; - m_blocksize = 0; - m_blocks = 0; - - m_dtable = 0; - m_dtablesize = 0; -} - -void OutputIsoFile::Create(const wxString& filename, int version) -{ - Close(); - m_filename = filename; - - m_version = version; - m_offset = 0; - m_blockofs = 24; - m_blocksize = 2048; - - m_outstream = new wxFileOutputStream( m_filename ); - pxStream_OpenCheck( *m_outstream, m_filename, L"writing" ); - - Console.WriteLn("isoFile create ok: %s ", WX_STR(m_filename)); -} - -// Generates format header information for blockdumps. -void OutputIsoFile::WriteHeader(int _blockofs, uint _blocksize, uint _blocks) -{ - m_blocksize = _blocksize; - m_blocks = _blocks; - m_blockofs = _blockofs; - - Console.WriteLn("blockoffset = %d", m_blockofs); - Console.WriteLn("blocksize = %u", m_blocksize); - Console.WriteLn("blocks = %u", m_blocks); - - if (m_version == 2) - { - WriteBuffer("BDV2", 4); - WriteValue(m_blocksize); - WriteValue(m_blocks); - WriteValue(m_blockofs); - } -} - -void OutputIsoFile::WriteSector(const u8* src, uint lsn) -{ - if (m_version == 2) - { - // Find and ignore blocks that have already been dumped: - for (int i=0; i( lsn ); - } - else - { - wxFileOffset ofs = (wxFileOffset)lsn * m_blocksize + m_offset; - - m_outstream->SeekO( ofs ); - } - - WriteBuffer( src + m_blockofs, m_blocksize ); -} - -void OutputIsoFile::Close() -{ - m_dtable.Delete(); - - _init(); -} - -void OutputIsoFile::WriteBuffer( const void* src, size_t size ) -{ - m_outstream->Write(src, size); - if(m_outstream->GetLastError() == wxSTREAM_WRITE_ERROR) - { - int err = errno; - if (!err) - throw Exception::BadStream(m_filename).SetDiagMsg(pxsFmt(L"An error occurred while writing %u bytes to file", size)); - - ScopedExcept ex(Exception::FromErrno(m_filename, err)); - ex->SetDiagMsg( pxsFmt(L"An error occurred while writing %u bytes to file: %s", size, WX_STR(ex->DiagMsg())) ); - ex->Rethrow(); - } -} - -bool OutputIsoFile::IsOpened() const -{ - return m_outstream && m_outstream->IsOk(); -} +/* PCSX2 - PS2 Emulator for PCs + * Copyright (C) 2002-2010 PCSX2 Dev Team + * + * PCSX2 is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * PCSX2 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 PCSX2. + * If not, see . + */ + + +#include "PrecompiledHeader.h" +#include "IopCommon.h" +#include "IsoFileFormats.h" + +#include + +void pxStream_OpenCheck( const wxStreamBase& stream, const wxString& fname, const wxString& mode ) +{ + if (stream.IsOk()) return; + + ScopedExcept ex(Exception::FromErrno(fname, errno)); + ex->SetDiagMsg( pxsFmt(L"Unable to open the file for %s: %s", WX_STR(mode), WX_STR(ex->DiagMsg())) ); + ex->Rethrow(); +} + +OutputIsoFile::OutputIsoFile() +{ + _init(); +} + +OutputIsoFile::~OutputIsoFile() throw() +{ + Close(); +} + +void OutputIsoFile::_init() +{ + m_version = 0; + + m_offset = 0; + m_blockofs = 0; + m_blocksize = 0; + m_blocks = 0; + + m_dtable = 0; + m_dtablesize = 0; +} + +void OutputIsoFile::Create(const wxString& filename, int version) +{ + Close(); + m_filename = filename; + + m_version = version; + m_offset = 0; + m_blockofs = 24; + m_blocksize = 2048; + + m_outstream = new wxFileOutputStream( m_filename ); + pxStream_OpenCheck( *m_outstream, m_filename, L"writing" ); + + Console.WriteLn("isoFile create ok: %s ", WX_STR(m_filename)); +} + +// Generates format header information for blockdumps. +void OutputIsoFile::WriteHeader(int _blockofs, uint _blocksize, uint _blocks) +{ + m_blocksize = _blocksize; + m_blocks = _blocks; + m_blockofs = _blockofs; + + Console.WriteLn("blockoffset = %d", m_blockofs); + Console.WriteLn("blocksize = %u", m_blocksize); + Console.WriteLn("blocks = %u", m_blocks); + + if (m_version == 2) + { + WriteBuffer("BDV2", 4); + WriteValue(m_blocksize); + WriteValue(m_blocks); + WriteValue(m_blockofs); + } +} + +void OutputIsoFile::WriteSector(const u8* src, uint lsn) +{ + if (m_version == 2) + { + // Find and ignore blocks that have already been dumped: + for (int i=0; i( lsn ); + } + else + { + wxFileOffset ofs = (wxFileOffset)lsn * m_blocksize + m_offset; + + m_outstream->SeekO( ofs ); + } + + WriteBuffer( src + m_blockofs, m_blocksize ); +} + +void OutputIsoFile::Close() +{ + m_dtable.Delete(); + + _init(); +} + +void OutputIsoFile::WriteBuffer( const void* src, size_t size ) +{ + m_outstream->Write(src, size); + if(m_outstream->GetLastError() == wxSTREAM_WRITE_ERROR) + { + int err = errno; + if (!err) + throw Exception::BadStream(m_filename).SetDiagMsg(pxsFmt(L"An error occurred while writing %u bytes to file", size)); + + ScopedExcept ex(Exception::FromErrno(m_filename, err)); + ex->SetDiagMsg( pxsFmt(L"An error occurred while writing %u bytes to file: %s", size, WX_STR(ex->DiagMsg())) ); + ex->Rethrow(); + } +} + +bool OutputIsoFile::IsOpened() const +{ + return m_outstream && m_outstream->IsOk(); +} diff --git a/pcsx2/Docs/GPL.txt b/pcsx2/Docs/GPL.txt index 3f2e0ee4ce..5c6556a3a1 100644 --- a/pcsx2/Docs/GPL.txt +++ b/pcsx2/Docs/GPL.txt @@ -1,674 +1,674 @@ - 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 + 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 . \ No newline at end of file diff --git a/pcsx2/Docs/License.txt b/pcsx2/Docs/License.txt index 7d276f9d65..03f4e5bdcc 100644 --- a/pcsx2/Docs/License.txt +++ b/pcsx2/Docs/License.txt @@ -1,20 +1,20 @@ - -[This file contains the template for the PCSX2 code rights license. For the full - rant-like preamble of the GPL, see GPL.txt] - - -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2012 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 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 PCSX2. - * If not, see . - */ + +[This file contains the template for the PCSX2 code rights license. For the full + rant-like preamble of the GPL, see GPL.txt] + + +/* PCSX2 - PS2 Emulator for PCs + * Copyright (C) 2002-2012 PCSX2 Dev Team + * + * PCSX2 is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * PCSX2 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 PCSX2. + * If not, see . + */ \ No newline at end of file diff --git a/pcsx2/Gif_Logger.cpp b/pcsx2/Gif_Logger.cpp index 7811c3cc1e..5d9f79a900 100644 --- a/pcsx2/Gif_Logger.cpp +++ b/pcsx2/Gif_Logger.cpp @@ -1,87 +1,87 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2010 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 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 PCSX2. - * If not, see . - */ - -#include "PrecompiledHeader.h" -#include "Common.h" -#include "Gif_Unit.h" - -#define GIF_PARSE DevCon.WriteLn - -static const char GifTag_ModeStr[4][16] = { - "Packed", "Reglist", "Image", "Image2" -}; - -static const char GifTag_RegStr[16][16] = { - "PRIM", "RGBA", "STQ", "UV", - "XYZF2", "XYZ2", "TEX0_1", "TEX0_2", - "CLAMP_1", "CLAMP_2", "FOG", "INVALID", - "XYZF3", "XYZ3", "A+D", "NOP" -}; - -void Gif_ParsePacket(u8* data, u32 size, GIF_PATH path) { - Gif_Tag gifTag; - u8* buffer = data; - u32 offset = 0; - GIF_PARSE("Path %d Transfer", path+1); - for(;;) { - if (!gifTag.isValid) { // Need new Gif Tag - if (offset + 16 > size) return; - - gifTag.setTag(&buffer[offset], 1); - - GIF_PARSE("--Gif Tag [mode=%s][pre=%d][prim=%d][nregs=%d][nloop=%d][qwc=%d][EOP=%d]", - GifTag_ModeStr[gifTag.tag.FLG], gifTag.tag.PRE, gifTag.tag.PRIM, - gifTag.nRegs, gifTag.nLoop, gifTag.len/16, gifTag.tag.EOP); - - if (offset + 16 + gifTag.len > size) return; - offset += 16; - } - - switch(gifTag.tag.FLG) { - case GIF_FLG_PACKED: - for(u32 i = 0; i < gifTag.tag.NLOOP; i++) { - for(u32 j = 0; j < gifTag.nRegs; j++) { - if (gifTag.regs[j] == GIF_REG_A_D) { - GIF_PARSE("----[Reg=A+D(0x%x)][nreg=%d][nloop=%d]", - buffer[offset+8], j, i); - } - else { - GIF_PARSE("----[Reg=%s][nreg=%d][nloop=%d]", - GifTag_RegStr[gifTag.regs[j]&0xf], j, i); - } - offset += 16; // 1 QWC - }} - break; - case GIF_FLG_REGLIST: - for(u32 j = 0; j < gifTag.nRegs; j++) { - GIF_PARSE("----[Reg=%s][nreg=%d]", GifTag_RegStr[gifTag.regs[j]&0xf], j); - } - offset += gifTag.len; // Data length - break; - case GIF_FLG_IMAGE: - case GIF_FLG_IMAGE2: - offset += gifTag.len; // Data length - break; - jNO_DEFAULT; - } - - // Reload gif tag next loop - gifTag.isValid = false; - } -} - -void Gif_ParsePacket(GS_Packet& gsPack, GIF_PATH path) { - Gif_ParsePacket(&gifUnit.gifPath[path].buffer[gsPack.offset], gsPack.size, path); -} +/* PCSX2 - PS2 Emulator for PCs + * Copyright (C) 2002-2010 PCSX2 Dev Team + * + * PCSX2 is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * PCSX2 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 PCSX2. + * If not, see . + */ + +#include "PrecompiledHeader.h" +#include "Common.h" +#include "Gif_Unit.h" + +#define GIF_PARSE DevCon.WriteLn + +static const char GifTag_ModeStr[4][16] = { + "Packed", "Reglist", "Image", "Image2" +}; + +static const char GifTag_RegStr[16][16] = { + "PRIM", "RGBA", "STQ", "UV", + "XYZF2", "XYZ2", "TEX0_1", "TEX0_2", + "CLAMP_1", "CLAMP_2", "FOG", "INVALID", + "XYZF3", "XYZ3", "A+D", "NOP" +}; + +void Gif_ParsePacket(u8* data, u32 size, GIF_PATH path) { + Gif_Tag gifTag; + u8* buffer = data; + u32 offset = 0; + GIF_PARSE("Path %d Transfer", path+1); + for(;;) { + if (!gifTag.isValid) { // Need new Gif Tag + if (offset + 16 > size) return; + + gifTag.setTag(&buffer[offset], 1); + + GIF_PARSE("--Gif Tag [mode=%s][pre=%d][prim=%d][nregs=%d][nloop=%d][qwc=%d][EOP=%d]", + GifTag_ModeStr[gifTag.tag.FLG], gifTag.tag.PRE, gifTag.tag.PRIM, + gifTag.nRegs, gifTag.nLoop, gifTag.len/16, gifTag.tag.EOP); + + if (offset + 16 + gifTag.len > size) return; + offset += 16; + } + + switch(gifTag.tag.FLG) { + case GIF_FLG_PACKED: + for(u32 i = 0; i < gifTag.tag.NLOOP; i++) { + for(u32 j = 0; j < gifTag.nRegs; j++) { + if (gifTag.regs[j] == GIF_REG_A_D) { + GIF_PARSE("----[Reg=A+D(0x%x)][nreg=%d][nloop=%d]", + buffer[offset+8], j, i); + } + else { + GIF_PARSE("----[Reg=%s][nreg=%d][nloop=%d]", + GifTag_RegStr[gifTag.regs[j]&0xf], j, i); + } + offset += 16; // 1 QWC + }} + break; + case GIF_FLG_REGLIST: + for(u32 j = 0; j < gifTag.nRegs; j++) { + GIF_PARSE("----[Reg=%s][nreg=%d]", GifTag_RegStr[gifTag.regs[j]&0xf], j); + } + offset += gifTag.len; // Data length + break; + case GIF_FLG_IMAGE: + case GIF_FLG_IMAGE2: + offset += gifTag.len; // Data length + break; + jNO_DEFAULT; + } + + // Reload gif tag next loop + gifTag.isValid = false; + } +} + +void Gif_ParsePacket(GS_Packet& gsPack, GIF_PATH path) { + Gif_ParsePacket(&gifUnit.gifPath[path].buffer[gsPack.offset], gsPack.size, path); +} diff --git a/pcsx2/Gif_Unit.cpp b/pcsx2/Gif_Unit.cpp index 2ee56ad1b6..94f74c9fac 100644 --- a/pcsx2/Gif_Unit.cpp +++ b/pcsx2/Gif_Unit.cpp @@ -1,176 +1,176 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2010 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 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 PCSX2. - * If not, see . - */ - -#include "PrecompiledHeader.h" -#include "Common.h" - -#include "GS.h" -#include "Gif_Unit.h" -#include "Vif_Dma.h" -#include "MTVU.h" - -Gif_Unit gifUnit; - -// Returns true on stalling SIGNAL -bool Gif_HandlerAD(u8* pMem) { - u32 reg = pMem[8]; - u32* data = (u32*)pMem; - if (reg == 0x50) { - vif1.BITBLTBUF._u64 = *(u64*)pMem; - } - else if (reg == 0x52) { - vif1.TRXREG._u64 = *(u64*)pMem; - } - else if (reg == 0x53) { // TRXDIR - if ((pMem[0] & 3) == 1) { // local -> host - u8 bpp = 32; // Onimusha does TRXDIR without BLTDIVIDE first, assume 32bit - switch(vif1.BITBLTBUF.SPSM & 7) { - case 0: bpp = 32; break; - case 1: bpp = 24; break; - case 2: bpp = 16; break; - case 3: bpp = 8; break; - default: // 4 is 4 bit but this is forbidden - Console.Error("Illegal format for GS upload: SPSM=0%02o", vif1.BITBLTBUF.SPSM); - break; - } - // qwords, rounded down; any extra bits are lost - // games must take care to ensure transfer rectangles are exact multiples of a qword - vif1.GSLastDownloadSize = vif1.TRXREG.RRW * vif1.TRXREG.RRH * bpp >> 7; - } - } - else if (reg == 0x60) { // SIGNAL - if (CSRreg.SIGNAL) { // Time to ignore all subsequent drawing operations. - GUNIT_WARN(Color_Orange, "GIF Handler - Stalling SIGNAL"); - if(!gifUnit.gsSIGNAL.queued) { - gifUnit.gsSIGNAL.queued = true; - gifUnit.gsSIGNAL.data[0] = data[0]; - gifUnit.gsSIGNAL.data[1] = data[1]; - return true; // Stalling SIGNAL - } - } - else { - GUNIT_WARN("GIF Handler - SIGNAL"); - GSSIGLBLID.SIGID = (GSSIGLBLID.SIGID&~data[1])|(data[0]&data[1]); - if (!(GSIMR&0x100)) gsIrq(); - CSRreg.SIGNAL = true; - } - } - else if (reg == 0x61) { // FINISH - GUNIT_WARN("GIF Handler - FINISH"); - CSRreg.FINISH = true; - } - else if (reg == 0x62) { // LABEL - GUNIT_WARN("GIF Handler - LABEL"); - GSSIGLBLID.LBLID = (GSSIGLBLID.LBLID&~data[1])|(data[0]&data[1]); - } - else if (reg >= 0x63 && reg != 0x7f) { - //DevCon.Warning("GIF Handler - Write to unknown register! [reg=%x]", reg); - } - return false; -} - -// Returns true if pcsx2 needed to process the packet... -bool Gif_HandlerAD_Debug(u8* pMem) { - u32 reg = pMem[8]; - if (reg == 0x50) { Console.Error("GIF Handler Debug - BITBLTBUF"); return 1; } - else if (reg == 0x52) { Console.Error("GIF Handler Debug - TRXREG"); return 1; } - else if (reg == 0x53) { Console.Error("GIF Handler Debug - TRXDIR"); return 1; } - else if (reg == 0x60) { Console.Error("GIF Handler Debug - SIGNAL"); return 1; } - else if (reg == 0x61) { Console.Error("GIF Handler Debug - FINISH"); return 1; } - else if (reg == 0x62) { Console.Error("GIF Handler Debug - LABEL"); return 1; } - else if (reg >= 0x63 && reg != 0x7f) { - DevCon.Warning("GIF Handler Debug - Write to unknown register! [reg=%x]", reg); - } - return 0; -} - -void Gif_FinishIRQ() { - if (CSRreg.FINISH && !(GSIMR&0x200)) { - gsIrq(); - } -} - -// Used in MTVU mode... MTVU will later complete a real packet -void Gif_AddGSPacketMTVU(GS_Packet& gsPack, GIF_PATH path) { - GetMTGS().SendSimpleGSPacket(GS_RINGTYPE_MTVU_GSPACKET, 0, 0, path); -} - -void Gif_AddCompletedGSPacket(GS_Packet& gsPack, GIF_PATH path) { - //DevCon.WriteLn("Adding Completed Gif Packet [size=%x]", gsPack.size); - if (COPY_GS_PACKET_TO_MTGS) { - GetMTGS().PrepDataPacket(path, gsPack.size/16); - MemCopy_WrappedDest((u128*)&gifUnit.gifPath[path].buffer[gsPack.offset], RingBuffer.m_Ring, - GetMTGS().m_packet_writepos, RingBufferSize, gsPack.size/16); - GetMTGS().SendDataPacket(); - } - else { - pxAssertDev(!gsPack.readAmount, "Gif Unit - gsPack.readAmount only valid for MTVU path 1!"); - AtomicExchangeAdd(gifUnit.gifPath[path].readAmount, gsPack.size); - GetMTGS().SendSimpleGSPacket(GS_RINGTYPE_GSPACKET, gsPack.offset, gsPack.size, path); - } -} - -void Gif_AddBlankGSPacket(u32 size, GIF_PATH path) { - //DevCon.WriteLn("Adding Blank Gif Packet [size=%x]", size); - AtomicExchangeAdd(gifUnit.gifPath[path].readAmount, size); - GetMTGS().SendSimpleGSPacket(GS_RINGTYPE_GSPACKET, ~0u, size, path); -} - -void Gif_MTGS_Wait(bool isMTVU) { - GetMTGS().WaitGS(false, true, isMTVU); -} - -void SaveStateBase::gifPathFreeze(u32 path) { - - Gif_Path& gifPath = gifUnit.gifPath[path]; - pxAssertDev(!gifPath.readAmount, "Gif Path readAmount should be 0!"); - pxAssertDev(!gifPath.gsPack.readAmount, "GS Pack readAmount should be 0!"); - pxAssertDev(!gifPath.GetPendingGSPackets(), "MTVU GS Pack Queue should be 0!"); - - if (!gifPath.isMTVU()) { // FixMe: savestate freeze bug (Gust games) with MTVU enabled - if (IsSaving()) { // Move all the buffered data to the start of buffer - gifPath.RealignPacket(); // May add readAmount which we need to clear on load - } - } - u8* bufferPtr = gifPath.buffer; // Backup current buffer ptr - Freeze(gifPath.mtvu.fakePackets); - FreezeMem(&gifPath, sizeof(gifPath) - sizeof(gifPath.mtvu)); - FreezeMem(bufferPtr, gifPath.curSize); - gifPath.buffer = bufferPtr; - if(!IsSaving()) { - gifPath.readAmount = 0; - gifPath.gsPack.readAmount = 0; - } -} - -void SaveStateBase::gifFreeze() { - bool mtvuMode = THREAD_VU1; - pxAssert(vu1Thread.IsDone()); - GetMTGS().WaitGS(); - FreezeTag("Gif Unit"); - Freeze(mtvuMode); - Freeze(gifUnit.stat); - Freeze(gifUnit.gsSIGNAL); - Freeze(gifUnit.lastTranType); - gifPathFreeze(GIF_PATH_1); - gifPathFreeze(GIF_PATH_2); - gifPathFreeze(GIF_PATH_3); - if (!IsSaving()) { - if (mtvuMode != THREAD_VU1) { - DevCon.Warning("gifUnit: MTVU Mode has switched between save/load state"); - // ToDo: gifUnit.SwitchMTVU(mtvuMode); - } - } -} +/* PCSX2 - PS2 Emulator for PCs + * Copyright (C) 2002-2010 PCSX2 Dev Team + * + * PCSX2 is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * PCSX2 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 PCSX2. + * If not, see . + */ + +#include "PrecompiledHeader.h" +#include "Common.h" + +#include "GS.h" +#include "Gif_Unit.h" +#include "Vif_Dma.h" +#include "MTVU.h" + +Gif_Unit gifUnit; + +// Returns true on stalling SIGNAL +bool Gif_HandlerAD(u8* pMem) { + u32 reg = pMem[8]; + u32* data = (u32*)pMem; + if (reg == 0x50) { + vif1.BITBLTBUF._u64 = *(u64*)pMem; + } + else if (reg == 0x52) { + vif1.TRXREG._u64 = *(u64*)pMem; + } + else if (reg == 0x53) { // TRXDIR + if ((pMem[0] & 3) == 1) { // local -> host + u8 bpp = 32; // Onimusha does TRXDIR without BLTDIVIDE first, assume 32bit + switch(vif1.BITBLTBUF.SPSM & 7) { + case 0: bpp = 32; break; + case 1: bpp = 24; break; + case 2: bpp = 16; break; + case 3: bpp = 8; break; + default: // 4 is 4 bit but this is forbidden + Console.Error("Illegal format for GS upload: SPSM=0%02o", vif1.BITBLTBUF.SPSM); + break; + } + // qwords, rounded down; any extra bits are lost + // games must take care to ensure transfer rectangles are exact multiples of a qword + vif1.GSLastDownloadSize = vif1.TRXREG.RRW * vif1.TRXREG.RRH * bpp >> 7; + } + } + else if (reg == 0x60) { // SIGNAL + if (CSRreg.SIGNAL) { // Time to ignore all subsequent drawing operations. + GUNIT_WARN(Color_Orange, "GIF Handler - Stalling SIGNAL"); + if(!gifUnit.gsSIGNAL.queued) { + gifUnit.gsSIGNAL.queued = true; + gifUnit.gsSIGNAL.data[0] = data[0]; + gifUnit.gsSIGNAL.data[1] = data[1]; + return true; // Stalling SIGNAL + } + } + else { + GUNIT_WARN("GIF Handler - SIGNAL"); + GSSIGLBLID.SIGID = (GSSIGLBLID.SIGID&~data[1])|(data[0]&data[1]); + if (!(GSIMR&0x100)) gsIrq(); + CSRreg.SIGNAL = true; + } + } + else if (reg == 0x61) { // FINISH + GUNIT_WARN("GIF Handler - FINISH"); + CSRreg.FINISH = true; + } + else if (reg == 0x62) { // LABEL + GUNIT_WARN("GIF Handler - LABEL"); + GSSIGLBLID.LBLID = (GSSIGLBLID.LBLID&~data[1])|(data[0]&data[1]); + } + else if (reg >= 0x63 && reg != 0x7f) { + //DevCon.Warning("GIF Handler - Write to unknown register! [reg=%x]", reg); + } + return false; +} + +// Returns true if pcsx2 needed to process the packet... +bool Gif_HandlerAD_Debug(u8* pMem) { + u32 reg = pMem[8]; + if (reg == 0x50) { Console.Error("GIF Handler Debug - BITBLTBUF"); return 1; } + else if (reg == 0x52) { Console.Error("GIF Handler Debug - TRXREG"); return 1; } + else if (reg == 0x53) { Console.Error("GIF Handler Debug - TRXDIR"); return 1; } + else if (reg == 0x60) { Console.Error("GIF Handler Debug - SIGNAL"); return 1; } + else if (reg == 0x61) { Console.Error("GIF Handler Debug - FINISH"); return 1; } + else if (reg == 0x62) { Console.Error("GIF Handler Debug - LABEL"); return 1; } + else if (reg >= 0x63 && reg != 0x7f) { + DevCon.Warning("GIF Handler Debug - Write to unknown register! [reg=%x]", reg); + } + return 0; +} + +void Gif_FinishIRQ() { + if (CSRreg.FINISH && !(GSIMR&0x200)) { + gsIrq(); + } +} + +// Used in MTVU mode... MTVU will later complete a real packet +void Gif_AddGSPacketMTVU(GS_Packet& gsPack, GIF_PATH path) { + GetMTGS().SendSimpleGSPacket(GS_RINGTYPE_MTVU_GSPACKET, 0, 0, path); +} + +void Gif_AddCompletedGSPacket(GS_Packet& gsPack, GIF_PATH path) { + //DevCon.WriteLn("Adding Completed Gif Packet [size=%x]", gsPack.size); + if (COPY_GS_PACKET_TO_MTGS) { + GetMTGS().PrepDataPacket(path, gsPack.size/16); + MemCopy_WrappedDest((u128*)&gifUnit.gifPath[path].buffer[gsPack.offset], RingBuffer.m_Ring, + GetMTGS().m_packet_writepos, RingBufferSize, gsPack.size/16); + GetMTGS().SendDataPacket(); + } + else { + pxAssertDev(!gsPack.readAmount, "Gif Unit - gsPack.readAmount only valid for MTVU path 1!"); + AtomicExchangeAdd(gifUnit.gifPath[path].readAmount, gsPack.size); + GetMTGS().SendSimpleGSPacket(GS_RINGTYPE_GSPACKET, gsPack.offset, gsPack.size, path); + } +} + +void Gif_AddBlankGSPacket(u32 size, GIF_PATH path) { + //DevCon.WriteLn("Adding Blank Gif Packet [size=%x]", size); + AtomicExchangeAdd(gifUnit.gifPath[path].readAmount, size); + GetMTGS().SendSimpleGSPacket(GS_RINGTYPE_GSPACKET, ~0u, size, path); +} + +void Gif_MTGS_Wait(bool isMTVU) { + GetMTGS().WaitGS(false, true, isMTVU); +} + +void SaveStateBase::gifPathFreeze(u32 path) { + + Gif_Path& gifPath = gifUnit.gifPath[path]; + pxAssertDev(!gifPath.readAmount, "Gif Path readAmount should be 0!"); + pxAssertDev(!gifPath.gsPack.readAmount, "GS Pack readAmount should be 0!"); + pxAssertDev(!gifPath.GetPendingGSPackets(), "MTVU GS Pack Queue should be 0!"); + + if (!gifPath.isMTVU()) { // FixMe: savestate freeze bug (Gust games) with MTVU enabled + if (IsSaving()) { // Move all the buffered data to the start of buffer + gifPath.RealignPacket(); // May add readAmount which we need to clear on load + } + } + u8* bufferPtr = gifPath.buffer; // Backup current buffer ptr + Freeze(gifPath.mtvu.fakePackets); + FreezeMem(&gifPath, sizeof(gifPath) - sizeof(gifPath.mtvu)); + FreezeMem(bufferPtr, gifPath.curSize); + gifPath.buffer = bufferPtr; + if(!IsSaving()) { + gifPath.readAmount = 0; + gifPath.gsPack.readAmount = 0; + } +} + +void SaveStateBase::gifFreeze() { + bool mtvuMode = THREAD_VU1; + pxAssert(vu1Thread.IsDone()); + GetMTGS().WaitGS(); + FreezeTag("Gif Unit"); + Freeze(mtvuMode); + Freeze(gifUnit.stat); + Freeze(gifUnit.gsSIGNAL); + Freeze(gifUnit.lastTranType); + gifPathFreeze(GIF_PATH_1); + gifPathFreeze(GIF_PATH_2); + gifPathFreeze(GIF_PATH_3); + if (!IsSaving()) { + if (mtvuMode != THREAD_VU1) { + DevCon.Warning("gifUnit: MTVU Mode has switched between save/load state"); + // ToDo: gifUnit.SwitchMTVU(mtvuMode); + } + } +} diff --git a/pcsx2/Gif_Unit.h b/pcsx2/Gif_Unit.h index 54854e8a38..43cd170cf8 100644 --- a/pcsx2/Gif_Unit.h +++ b/pcsx2/Gif_Unit.h @@ -1,675 +1,675 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2010 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 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 PCSX2. - * If not, see . - */ - -#pragma once -#include -#include "System/SysThreads.h" -#include "Gif.h" -struct GS_Packet; -extern void Gif_MTGS_Wait(bool isMTVU); -extern void Gif_FinishIRQ(); -extern bool Gif_HandlerAD(u8* pMem); -extern bool Gif_HandlerAD_Debug(u8* pMem); -extern void Gif_AddBlankGSPacket(u32 size, GIF_PATH path); -extern void Gif_AddGSPacketMTVU (GS_Packet& gsPack, GIF_PATH path); -extern void Gif_AddCompletedGSPacket(GS_Packet& gsPack, GIF_PATH path); -extern void Gif_ParsePacket(u8* data, u32 size, GIF_PATH path); -extern void Gif_ParsePacket(GS_Packet& gsPack, GIF_PATH path); - -struct Gif_Tag { - struct HW_Gif_Tag { - u16 NLOOP : 15; - u16 EOP : 1; - u16 _dummy0 : 16; - u32 _dummy1 : 14; - u32 PRE : 1; - u32 PRIM : 11; - u32 FLG : 2; - u32 NREG : 4; - u32 REGS[2]; - } tag; - - u32 nLoop; // NLOOP left to process - u32 nRegs; // NREG (1~16) - u32 nRegIdx; // Current nReg Index (packed mode processing) - u32 len; // Packet Length in Bytes (not including tag) - u32 cycles; // Time needed to process packet data in ee-cycles - u8 regs[16]; // Regs - bool hasAD; // Has an A+D Write - bool isValid; // Tag is valid - - Gif_Tag() { Reset(); } - Gif_Tag(u8* pMem, bool analyze = false) { - setTag (pMem, analyze); - } - - void Reset() { memzero(*this); } - u8 curReg() { return regs[nRegIdx&0xf]; } - - void packedStep() { - if (nLoop > 0) { - nRegIdx++; - if (nRegIdx >= nRegs) { - nRegIdx = 0; - nLoop--; - } - } - } - - void setTag(u8* pMem, bool analyze = false) { - tag = *(HW_Gif_Tag*)pMem; - nLoop = tag.NLOOP; - hasAD = false; - nRegIdx = 0; - isValid = 1; - switch(tag.FLG) { - case GIF_FLG_PACKED: - nRegs = ((tag.NREG-1)&0xf) + 1; - len = (nRegs * tag.NLOOP)* 16; - cycles = len << 1; // Packed Mode takes 2 ee-cycles - if (analyze) analyzeTag(); - break; - case GIF_FLG_REGLIST: - nRegs = ((tag.NREG-1)&0xf) + 1; - len =((nRegs * tag.NLOOP + 1) >> 1) * 16; - cycles = len << 2; // Reg-list Mode takes 4 ee-cycles - break; - case GIF_FLG_IMAGE: - case GIF_FLG_IMAGE2: - nRegs = 0; - len = tag.NLOOP * 16; - cycles = len << 2; // Image Mode takes 4 ee-cycles - tag.FLG = GIF_FLG_IMAGE; - break; - jNO_DEFAULT; - } - } - - void analyzeTag() { - hasAD = false; - u32 t = tag.REGS[0]; - u32 i = 0; - u32 j = std::min(nRegs, 8); - for(; i < j; i++) { - regs[i] = t & 0xf; - hasAD |= (regs[i] == GIF_REG_A_D); - t >>= 4; - } - t = tag.REGS[1]; - j = nRegs; - for(; i < j; i++) { - regs[i] = t & 0xf; - hasAD |= (regs[i] == GIF_REG_A_D); - t >>= 4; - } - } -}; - -struct GS_Packet { - u32 offset; // Path buffer offset for start of packet - u32 size; // Full size of GS-Packet - s32 cycles; // EE Cycles taken to process this GS packet - s32 readAmount; // Dummy read-amount data needed for proper buffer calculations - bool done; // 0 = Incomplete, 1 = Complete - GS_Packet() { Reset(); } - void Reset() { memzero(*this); } -}; - -struct GS_SIGNAL { - u32 data[2]; - bool queued; - void Reset() { memzero(*this); } -}; - -static __fi void incTag(u32& offset, u32& size, u32 incAmount) { - size += incAmount; - offset += incAmount; -} - -struct Gif_Path_MTVU { - u32 fakePackets; // Fake packets pending to be sent to MTGS - Mutex gsPackMutex; // Used for atomic access to gsPackQueue - std::deque gsPackQueue; // VU1 programs' XGkick(s) - Gif_Path_MTVU() { Reset(); } - void Reset() { fakePackets = 0; gsPackQueue.clear(); } -}; - -struct Gif_Path { - __aligned(4) volatile s32 readAmount; // Amount of data MTGS still needs to read - u8* buffer; // Path packet buffer - u32 buffSize; // Full size of buffer - u32 buffLimit; // Cut off limit to wrap around - u32 curSize; // Used buffer in bytes - u32 curOffset; // Offset of current gifTag - u32 dmaRewind; // Used by path3 when only part of a DMA chain is used - Gif_Tag gifTag; // Current GS Primitive tag - GS_Packet gsPack; // Current GS Packet info - GIF_PATH idx; // Gif Path Index - GIF_PATH_STATE state; // Path State - Gif_Path_MTVU mtvu; // Must be last for saved states - - Gif_Path() {} - ~Gif_Path() { _aligned_free(buffer); } - - void Init(GIF_PATH _idx, u32 _buffSize, u32 _buffSafeZone) { - idx = _idx; - buffSize = _buffSize; - buffLimit = _buffSize - _buffSafeZone; - buffer = (u8*)_aligned_malloc(buffSize, 16); - Reset(); - } - - void Reset(bool softReset = false) { - state = GIF_PATH_IDLE; - if (softReset) { - GUNIT_WARN("Gif Path %d - Soft Reset", idx+1); - //gifTag.Reset(); - //gsPack.Reset(); - //curOffset = curSize; - return; - } - mtvu.Reset(); - curSize = 0; - curOffset = 0; - readAmount = 0; - gifTag.Reset(); - gsPack.Reset(); - } - - bool isMTVU() const { return !idx && THREAD_VU1; } - s32 getReadAmount() { return AtomicRead(readAmount) + gsPack.readAmount; } - bool hasDataRemaining() const { return curOffset < curSize; } - bool isDone() const { return isMTVU() ? !mtvu.fakePackets : (!hasDataRemaining() && (state == GIF_PATH_IDLE || state == GIF_PATH_WAIT)); } - - // Waits on the MTGS to process gs packets - void mtgsReadWait() { - if (IsDevBuild) { - DevCon.WriteLn(Color_Red, "Gif Path[%d] - MTGS Wait! [r=0x%x]", idx+1, getReadAmount()); - Gif_MTGS_Wait(isMTVU()); - DevCon.WriteLn(Color_Green, "Gif Path[%d] - MTGS Wait! [r=0x%x]", idx+1, getReadAmount()); - return; - } - Gif_MTGS_Wait(isMTVU()); - } - - // Moves packet data to start of buffer - void RealignPacket() { - GUNIT_LOG("Path Buffer: Realigning packet!"); - s32 offset = curOffset - gsPack.size; - s32 sizeToAdd = curSize - offset; - s32 intersect = sizeToAdd - offset; - if (intersect < 0) intersect = 0; - for(;;) { - s32 frontFree = offset - getReadAmount(); - if (frontFree >= sizeToAdd - intersect) break; - mtgsReadWait(); - } - if (offset < (s32)buffLimit) { // Needed for correct readAmount values - if (isMTVU()) gsPack.readAmount += buffLimit - offset; - else Gif_AddBlankGSPacket(buffLimit - offset, idx); - } - //DevCon.WriteLn("Realign Packet [%d]", curSize - offset); - if (intersect) memmove(buffer, &buffer[offset], curSize - offset); - else memcpy(buffer, &buffer[offset], curSize - offset); - curSize -= offset; - curOffset = gsPack.size; - gsPack.offset = 0; - } - - void CopyGSPacketData(u8* pMem, u32 size, bool aligned = false) { - if (curSize + size > buffSize) { // Move gsPack to front of buffer - GUNIT_LOG("CopyGSPacketData: Realigning packet!"); - RealignPacket(); - } - for(;;) { - s32 offset = curOffset - gsPack.size; - s32 readPos = offset - getReadAmount(); - if (readPos >= 0) break; // MTGS is reading in back of curOffset - if ((s32)buffLimit + readPos > (s32)curSize + (s32)size) break; // Enough free front space - mtgsReadWait(); // Let MTGS run to free up buffer space - } - pxAssertDev(curSize+size<=buffSize, "Gif Path Buffer Overflow!"); - memcpy (&buffer[curSize], pMem, size); - curSize += size; - } - - // If completed a GS packet (with EOP) then returned GS_Packet.done = 1 - // MTVU: This function only should be called called on EE thread - GS_Packet ExecuteGSPacket() { - if (mtvu.fakePackets) { // For MTVU mode... - mtvu.fakePackets--; - GS_Packet fakePack; - fakePack.done = 1; // Fake packets don't get processed by pcsx2 - fakePack.size =~0u; // Used to indicate that its a fake packet - return fakePack; - } - pxAssert(!isMTVU()); - for(;;) { - if (!gifTag.isValid) { // Need new Gif Tag - // We don't have enough data for a Gif Tag - if (curOffset + 16 > curSize) { - //GUNIT_LOG("Path Buffer: Not enough data for gif tag! [%d]", curSize-curOffset); - return gsPack; - } - - // Move packet to start of buffer - if (curOffset > buffLimit) { - RealignPacket(); - } - - gifTag.setTag(&buffer[curOffset], 1); - state = (GIF_PATH_STATE)(gifTag.tag.FLG + 1); - - // We don't have enough data for a complete GS packet - if(!gifTag.hasAD && curOffset + 16 + gifTag.len > curSize) { - gifTag.isValid = false; // So next time we test again - return gsPack; - } - - incTag(curOffset, gsPack.size, 16); // Tag Size - gsPack.cycles += 2 + gifTag.cycles; // Tag + Len ee-cycles - } - - if (gifTag.hasAD) { // Only can be true if GIF_FLG_PACKED - bool dblSIGNAL = false; - while(gifTag.nLoop && !dblSIGNAL) { - if (curOffset + 16 > curSize) return gsPack; // Exit Early - if (gifTag.curReg() == GIF_REG_A_D) { - if (!isMTVU()) dblSIGNAL = Gif_HandlerAD(&buffer[curOffset]); - } - incTag(curOffset, gsPack.size, 16); // 1 QWC - gifTag.packedStep(); - } - if (dblSIGNAL && !(gifTag.tag.EOP && !gifTag.nLoop)) return gsPack; // Exit Early - } - else incTag(curOffset, gsPack.size, gifTag.len); // Data length - - // Reload gif tag next loop - gifTag.isValid = false; - - if (gifTag.tag.EOP) { - GS_Packet t = gsPack; - t.done = 1; - - - dmaRewind = 0; - - gsPack.Reset(); - gsPack.offset = curOffset; - - //Path 3 Masking is timing sensitive, we need to simulate its length! (NFSU2/Outrun 2006) - - if((gifRegs.stat.APATH-1) == GIF_PATH_3) - { - state = GIF_PATH_WAIT; - - if(curSize - curOffset > 0 && (gifRegs.stat.M3R || gifRegs.stat.M3P)) - { - //Including breaking packets early (Rewind DMA to pick up where left off) - //but only do this when the path is masked, else we're pointlessly slowing things down. - dmaRewind = curSize - curOffset; - curSize = curOffset; - } - } - else - state = GIF_PATH_IDLE; - - return t; // Complete GS packet - } - } - } - - // MTVU: Gets called on VU XGkicks on MTVU thread - void ExecuteGSPacketMTVU() { - // Move packet to start of buffer - if (curOffset > buffLimit) { - RealignPacket(); - } - if (IsDevBuild) { // We check the packet to see if it actually - for(;;) { // needed to be processed by pcsx2... - if (curOffset + 16 > curSize) break; - gifTag.setTag(&buffer[curOffset], 1); - - if(!gifTag.hasAD && curOffset + 16 + gifTag.len > curSize) break; - incTag(curOffset, gsPack.size, 16); // Tag Size - - if (gifTag.hasAD) { // Only can be true if GIF_FLG_PACKED - while(gifTag.nLoop) { - if (curOffset + 16 > curSize) break; // Exit Early - if (gifTag.curReg() == GIF_REG_A_D) { - pxAssert(!Gif_HandlerAD_Debug(&buffer[curOffset])); - } - incTag(curOffset, gsPack.size, 16); // 1 QWC - gifTag.packedStep(); - } - } - else incTag(curOffset, gsPack.size, gifTag.len); // Data length - if (curOffset >= curSize) break; - if (gifTag.tag.EOP) break; - } - pxAssert(curOffset == curSize); - gifTag.isValid = false; - } - else { - // We assume every packet is a full GS Packet - // And we don't process anything on pcsx2 side - gsPack.size += curSize - curOffset; - curOffset = curSize; - } - } - - // MTVU: Gets called after VU1 execution on MTVU thread - void FinishGSPacketMTVU() { - if (1) { - ScopedLock lock(mtvu.gsPackMutex); - AtomicExchangeAdd(readAmount, gsPack.size + gsPack.readAmount); - mtvu.gsPackQueue.push_back(gsPack); - } - gsPack.Reset(); - gsPack.offset = curOffset; - } - - // MTVU: Gets called by MTGS thread - GS_Packet GetGSPacketMTVU() { - ScopedLock lock(mtvu.gsPackMutex); - if (mtvu.gsPackQueue.size()) { - GS_Packet t = mtvu.gsPackQueue[0]; - return t; // XGkick GS packet(s) - } - Console.Error("MTVU: Expected gsPackQueue to have elements!"); - pxAssert(0); - return GS_Packet(); // gsPack.size will be 0 - } - - // MTVU: Gets called by MTGS thread - void PopGSPacketMTVU() { - ScopedLock lock(mtvu.gsPackMutex); - if (mtvu.gsPackQueue.size()) { - mtvu.gsPackQueue.pop_front(); - } - } - - // MTVU: Returns the amount of pending - // GS Packets that MTGS hasn't yet processed - u32 GetPendingGSPackets() { - ScopedLock lock(mtvu.gsPackMutex); - u32 t = mtvu.gsPackQueue.size(); - return t; - } -}; - -struct Gif_Unit { - Gif_Path gifPath[3]; - GS_SIGNAL gsSIGNAL; // Stalling Signal - tGIF_STAT& stat; - GIF_TRANSFER_TYPE lastTranType; // Last Transfer Type - - Gif_Unit() : stat(gifRegs.stat) { - gifPath[0].Init(GIF_PATH_1, _1mb*9, _1mb + _1kb); - gifPath[1].Init(GIF_PATH_2, _1mb*9, _1mb + _1kb); - gifPath[2].Init(GIF_PATH_3, _1mb*9, _1mb + _1kb); - } - - // Enable softReset when resetting during game emulation - void Reset(bool softReset = false) { - GUNIT_WARN(Color_Red, "Gif Unit Reset!!! [soft=%d]", softReset); - ResetRegs(); - gsSIGNAL.Reset(); - gifPath[0].Reset(softReset); - gifPath[1].Reset(softReset); - gifPath[2].Reset(softReset); - if(!softReset) { - lastTranType = GIF_TRANS_INVALID; - } - } - - // Resets Gif HW Regs - void ResetRegs() { - gifRegs.stat.reset(); - gifRegs.ctrl.reset(); - gifRegs.mode.reset(); - } - - // Adds a finished GS Packet to the MTGS ring buffer - __fi void AddCompletedGSPacket(GS_Packet& gsPack, GIF_PATH path) { - if (gsPack.size==~0u) Gif_AddGSPacketMTVU (gsPack, path); - else Gif_AddCompletedGSPacket(gsPack, path); - if (PRINT_GIF_PACKET) Gif_ParsePacket(gsPack, path); - } - - // Returns GS Packet Size in bytes - u32 GetGSPacketSize(GIF_PATH pathIdx, u8* pMem, u32 offset = 0, u32 size = ~0u) { - u32 memMask = pathIdx ? ~0u : 0x3fffu; - u32 curSize = 0; - for(;;) { - Gif_Tag gifTag(&pMem[offset & memMask]); - incTag(offset, curSize, 16 + gifTag.len); // Tag + Data length - if (pathIdx == GIF_PATH_1 && curSize >= 0x4000) { - DevCon.Warning("Gif Unit - GS packet size exceeded VU memory size!"); - return 0; // Bios does this... (Fixed if you delay vu1's xgkick by 103 vu cycles) - } - if (curSize >= size) return size; - if (gifTag.tag.EOP) return curSize; - } - } - - // Specify the transfer type you are initiating - // The return value is the amount of data (in bytes) that was processed - // If transfer cannot take place at this moment the return value is 0 - u32 TransferGSPacketData(GIF_TRANSFER_TYPE tranType, u8* pMem, u32 size, bool aligned=false) { - - if (THREAD_VU1) { - Gif_Path& path1 = gifPath[GIF_PATH_1]; - if (tranType == GIF_TRANS_XGKICK) { // This is on the MTVU thread - path1.CopyGSPacketData(pMem, size, aligned); - path1.ExecuteGSPacketMTVU(); - return size; - } - if (tranType == GIF_TRANS_MTVU) { // This is on the EE thread - path1.mtvu.fakePackets++; - if (CanDoGif()) Execute(false, true); - return 0; - } - } - - GUNIT_LOG("%s - [path=%d][size=%d]", Gif_TransferStr[(tranType>>8)&0xf], (tranType&3)+1, size); - if (size == 0) { GUNIT_WARN("Gif Unit - Size == 0"); return 0; } - if(!CanDoGif()) { GUNIT_WARN("Gif Unit - Signal or PSE Set or Dir = GS to EE"); } - //pxAssertDev((stat.APATH==0) || checkPaths(1,1,1), "Gif Unit - APATH wasn't cleared?"); - lastTranType = tranType; - - if (tranType == GIF_TRANS_FIFO) { - if(!CanDoPath3()) DevCon.Warning("Gif Unit - Path 3 FIFO transfer while !CanDoPath3()"); - } - if (tranType == GIF_TRANS_DMA) { - if(!CanDoPath3()) { if (!Path3Masked()) stat.P3Q = 1; return 0; } // DMA Stall - //if (stat.P2Q) DevCon.WriteLn("P2Q while path 3"); - } - if (tranType == GIF_TRANS_XGKICK) { - if(!CanDoPath1()) { stat.P1Q = 1; } // We always buffer path1 packets - } - if (tranType == GIF_TRANS_DIRECT) { - if(!CanDoPath2()) { stat.P2Q = 1; return 0; } // Direct Stall - } - if (tranType == GIF_TRANS_DIRECTHL) { - if(!CanDoPath2HL()) { stat.P2Q = 1; return 0; } // DirectHL Stall - } - - gifPath[tranType&3].CopyGSPacketData(pMem, size, aligned); - size -= Execute(tranType == GIF_TRANS_DMA, false); - return size; - } - - // Checks path activity for the given paths - // Returns an int with a bit enabled if the corresponding - // path is not finished (needs more data/processing for an EOP) - __fi int checkPaths(bool p1, bool p2, bool p3, bool checkQ=false) { - int ret = 0; - ret |= (p1 && !gifPath[GIF_PATH_1].isDone()) << 0; - ret |= (p2 && !gifPath[GIF_PATH_2].isDone()) << 1; - ret |= (p3 && !gifPath[GIF_PATH_3].isDone()) << 2; - return ret | (checkQ ? checkQueued(p1,p2,p3) : 0); - } - - __fi int checkQueued(bool p1, bool p2, bool p3) { - int ret = 0; - ret |= (p1 && stat.P1Q) << 0; - ret |= (p2 && stat.P2Q) << 1; - ret |= (p3 && stat.P3Q) << 2; - return ret; - } - - // Send processed GS Primitive(s) to the MTGS thread - // Note: Only does so if current path fully completed all - // of its given gs primitives (but didn't upload them yet) - void FlushToMTGS() { - if (!stat.APATH) return; - Gif_Path& path = gifPath[stat.APATH-1]; - if (path.gsPack.size && !path.gifTag.isValid) { - AddCompletedGSPacket(path.gsPack, (GIF_PATH)(stat.APATH-1)); - path.gsPack.offset = path.curOffset; - path.gsPack.size = 0; - } - } - - // Processes gif packets and performs path arbitration - // on EOPs or on Path 3 Images when IMT is set. - int Execute(bool isPath3, bool isResume) { - if (!CanDoGif()) { DevCon.Error("Gif Unit - Signal or PSE Set or Dir = GS to EE"); return 0; } - bool didPath3 = false; - int curPath = stat.APATH > 0 ? stat.APATH-1 : 0; //Init to zero if no path is already set. - gifPath[2].dmaRewind = 0; - stat.OPH = 1; - - for(;;) { - if (stat.APATH) { // Some Transfer is happening - Gif_Path& path = gifPath[stat.APATH-1]; - GS_Packet gsPack = path.ExecuteGSPacket(); - if(!gsPack.done) { - if (stat.APATH == 3 && CanDoP3Slice() && !gsSIGNAL.queued) { - if(!didPath3 && /*!Path3Masked() &&*/ checkPaths(1,1,0)) { // Path3 slicing - didPath3 = true; - stat.APATH = 0; - stat.IP3 = 1; - GUNIT_LOG(Color_Magenta, "Gif Unit - Path 3 slicing arbitration"); - if (gsPack.size > 16) { // Packet had other tags which we already processed - u32 subOffset = path.gifTag.isValid ? 16 : 0; // if isValid, image-primitive not finished - gsPack.size -= subOffset; // Remove the image-tag (should be last thing read) - AddCompletedGSPacket(gsPack, GIF_PATH_3); // Consider current packet complete - path.gsPack.Reset(); // Reset gs packet info - path.curOffset -= subOffset; // Start the next GS packet at the image-tag - path.gsPack.offset = path.curOffset; // Set to image-tag - path.gifTag.isValid = false; // Reload tag next ExecuteGSPacket() - pxAssert((s32)path.curOffset >= 0); - pxAssert(path.state == GIF_PATH_IMAGE); - GUNIT_LOG(Color_Magenta, "Gif Unit - Sending path 3 sliced gs packet!"); - } - continue; - } - } - //FlushToMTGS(); - //DevCon.WriteLn("Incomplete GS Packet for path %d, size=%d", stat.APATH, gsPack.size); - break; // Not finished with GS packet - } - //DevCon.WriteLn("Adding GS Packet for path %d", stat.APATH); - AddCompletedGSPacket(gsPack, (GIF_PATH)(stat.APATH-1)); - } - - if (!gsSIGNAL.queued && !gifPath[0].isDone()) { - stat.APATH = 1; - stat.P1Q = 0; - curPath = 0; - } - else if (!gsSIGNAL.queued && !gifPath[1].isDone()) { - stat.APATH = 2; - stat.P2Q = 0; - curPath = 1; - } - else if (!gsSIGNAL.queued && !gifPath[2].isDone() && !Path3Masked()) { - stat.APATH = 3; - stat.P3Q = 0; - stat.IP3 = 0; - curPath = 2; - } - else { - if(isResume || curPath == 0) { - stat.APATH = 0; - stat.OPH = 0; - } - - break; - } - } - - //Some loaders/Refresh Rate selectors and things dont issue "End of Packet" commands - //So we look and see if the end of the last tag is all there, if so, stick it in the buffer for the GS :) - //(Invisible Screens on Terminator 3 and Growlanser 2/3) - if(gifPath[curPath].curOffset == gifPath[curPath].curSize) - { - FlushToMTGS(); - } - - Gif_FinishIRQ(); - - //Path3 can rewind the DMA, so we send back the amount we go back! - if(isPath3) - return gifPath[2].dmaRewind; - else - return 0; - } - - // XGkick - bool CanDoPath1() const { - return (stat.APATH == 0 || stat.APATH == 1 || (stat.APATH == 3 && CanDoP3Slice())) && CanDoGif(); - } - // Direct - bool CanDoPath2() const { - return (stat.APATH == 0 || stat.APATH == 2 || (stat.APATH == 3 && CanDoP3Slice())) && CanDoGif(); - } - // DirectHL - bool CanDoPath2HL() const { - return (stat.APATH == 0 || stat.APATH == 2) && CanDoGif(); - } - // Gif DMA - CHECK_GIFREVERSEHACK is a hack for Hot Wheels. - bool CanDoPath3() const { - return((stat.APATH == 0 && !Path3Masked()) || stat.APATH == 3) && CanDoGif(); - } - - bool CanDoP3Slice()const { return stat.IMT == 1 && gifPath[GIF_PATH_3].state == GIF_PATH_IMAGE; } - bool CanDoGif() const { return stat.PSE == 0 && (CHECK_GIFREVERSEHACK ? 1 : stat.DIR == 0) && gsSIGNAL.queued == 0; } - //Mask stops the next packet which hasnt started from transferring - bool Path3Masked() const { return ((stat.M3R || stat.M3P) && (gifPath[GIF_PATH_3].state == GIF_PATH_IDLE || gifPath[GIF_PATH_3].state == GIF_PATH_WAIT)); } - - void PrintInfo(bool printP1=1, bool printP2=1, bool printP3=1) { - u32 a = checkPaths(1,1,1), b = checkQueued(1,1,1); - GUNIT_LOG("Gif Unit - LastTransfer = %s, Paths = [%d,%d,%d], Queued = [%d,%d,%d]", - Gif_TransferStr[(lastTranType>>8)&0xf], - !!(a&1),!!(a&2),!!(a&4),!!(b&1),!!(b&2),!!(b&4)); - GUNIT_LOG("Gif Unit - [APATH = %d][Signal = %d][PSE = %d][DIR = %d]", - stat.APATH, gsSIGNAL.queued, stat.PSE, stat.DIR); - GUNIT_LOG("Gif Unit - [CanDoGif = %d][CanDoPath3 = %d][CanDoP3Slice = %d]", - CanDoGif(), CanDoPath3(), CanDoP3Slice()); - if (printP1) PrintPathInfo(GIF_PATH_1); - if (printP2) PrintPathInfo(GIF_PATH_2); - if (printP3) PrintPathInfo(GIF_PATH_3); - } - - void PrintPathInfo(GIF_PATH path) { - GUNIT_LOG("Gif Path %d - [hasData = %d][state = %d]", path, - gifPath[path].hasDataRemaining(), gifPath[path].state); - } -}; - -extern Gif_Unit gifUnit; +/* PCSX2 - PS2 Emulator for PCs + * Copyright (C) 2002-2010 PCSX2 Dev Team + * + * PCSX2 is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * PCSX2 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 PCSX2. + * If not, see . + */ + +#pragma once +#include +#include "System/SysThreads.h" +#include "Gif.h" +struct GS_Packet; +extern void Gif_MTGS_Wait(bool isMTVU); +extern void Gif_FinishIRQ(); +extern bool Gif_HandlerAD(u8* pMem); +extern bool Gif_HandlerAD_Debug(u8* pMem); +extern void Gif_AddBlankGSPacket(u32 size, GIF_PATH path); +extern void Gif_AddGSPacketMTVU (GS_Packet& gsPack, GIF_PATH path); +extern void Gif_AddCompletedGSPacket(GS_Packet& gsPack, GIF_PATH path); +extern void Gif_ParsePacket(u8* data, u32 size, GIF_PATH path); +extern void Gif_ParsePacket(GS_Packet& gsPack, GIF_PATH path); + +struct Gif_Tag { + struct HW_Gif_Tag { + u16 NLOOP : 15; + u16 EOP : 1; + u16 _dummy0 : 16; + u32 _dummy1 : 14; + u32 PRE : 1; + u32 PRIM : 11; + u32 FLG : 2; + u32 NREG : 4; + u32 REGS[2]; + } tag; + + u32 nLoop; // NLOOP left to process + u32 nRegs; // NREG (1~16) + u32 nRegIdx; // Current nReg Index (packed mode processing) + u32 len; // Packet Length in Bytes (not including tag) + u32 cycles; // Time needed to process packet data in ee-cycles + u8 regs[16]; // Regs + bool hasAD; // Has an A+D Write + bool isValid; // Tag is valid + + Gif_Tag() { Reset(); } + Gif_Tag(u8* pMem, bool analyze = false) { + setTag (pMem, analyze); + } + + void Reset() { memzero(*this); } + u8 curReg() { return regs[nRegIdx&0xf]; } + + void packedStep() { + if (nLoop > 0) { + nRegIdx++; + if (nRegIdx >= nRegs) { + nRegIdx = 0; + nLoop--; + } + } + } + + void setTag(u8* pMem, bool analyze = false) { + tag = *(HW_Gif_Tag*)pMem; + nLoop = tag.NLOOP; + hasAD = false; + nRegIdx = 0; + isValid = 1; + switch(tag.FLG) { + case GIF_FLG_PACKED: + nRegs = ((tag.NREG-1)&0xf) + 1; + len = (nRegs * tag.NLOOP)* 16; + cycles = len << 1; // Packed Mode takes 2 ee-cycles + if (analyze) analyzeTag(); + break; + case GIF_FLG_REGLIST: + nRegs = ((tag.NREG-1)&0xf) + 1; + len =((nRegs * tag.NLOOP + 1) >> 1) * 16; + cycles = len << 2; // Reg-list Mode takes 4 ee-cycles + break; + case GIF_FLG_IMAGE: + case GIF_FLG_IMAGE2: + nRegs = 0; + len = tag.NLOOP * 16; + cycles = len << 2; // Image Mode takes 4 ee-cycles + tag.FLG = GIF_FLG_IMAGE; + break; + jNO_DEFAULT; + } + } + + void analyzeTag() { + hasAD = false; + u32 t = tag.REGS[0]; + u32 i = 0; + u32 j = std::min(nRegs, 8); + for(; i < j; i++) { + regs[i] = t & 0xf; + hasAD |= (regs[i] == GIF_REG_A_D); + t >>= 4; + } + t = tag.REGS[1]; + j = nRegs; + for(; i < j; i++) { + regs[i] = t & 0xf; + hasAD |= (regs[i] == GIF_REG_A_D); + t >>= 4; + } + } +}; + +struct GS_Packet { + u32 offset; // Path buffer offset for start of packet + u32 size; // Full size of GS-Packet + s32 cycles; // EE Cycles taken to process this GS packet + s32 readAmount; // Dummy read-amount data needed for proper buffer calculations + bool done; // 0 = Incomplete, 1 = Complete + GS_Packet() { Reset(); } + void Reset() { memzero(*this); } +}; + +struct GS_SIGNAL { + u32 data[2]; + bool queued; + void Reset() { memzero(*this); } +}; + +static __fi void incTag(u32& offset, u32& size, u32 incAmount) { + size += incAmount; + offset += incAmount; +} + +struct Gif_Path_MTVU { + u32 fakePackets; // Fake packets pending to be sent to MTGS + Mutex gsPackMutex; // Used for atomic access to gsPackQueue + std::deque gsPackQueue; // VU1 programs' XGkick(s) + Gif_Path_MTVU() { Reset(); } + void Reset() { fakePackets = 0; gsPackQueue.clear(); } +}; + +struct Gif_Path { + __aligned(4) volatile s32 readAmount; // Amount of data MTGS still needs to read + u8* buffer; // Path packet buffer + u32 buffSize; // Full size of buffer + u32 buffLimit; // Cut off limit to wrap around + u32 curSize; // Used buffer in bytes + u32 curOffset; // Offset of current gifTag + u32 dmaRewind; // Used by path3 when only part of a DMA chain is used + Gif_Tag gifTag; // Current GS Primitive tag + GS_Packet gsPack; // Current GS Packet info + GIF_PATH idx; // Gif Path Index + GIF_PATH_STATE state; // Path State + Gif_Path_MTVU mtvu; // Must be last for saved states + + Gif_Path() {} + ~Gif_Path() { _aligned_free(buffer); } + + void Init(GIF_PATH _idx, u32 _buffSize, u32 _buffSafeZone) { + idx = _idx; + buffSize = _buffSize; + buffLimit = _buffSize - _buffSafeZone; + buffer = (u8*)_aligned_malloc(buffSize, 16); + Reset(); + } + + void Reset(bool softReset = false) { + state = GIF_PATH_IDLE; + if (softReset) { + GUNIT_WARN("Gif Path %d - Soft Reset", idx+1); + //gifTag.Reset(); + //gsPack.Reset(); + //curOffset = curSize; + return; + } + mtvu.Reset(); + curSize = 0; + curOffset = 0; + readAmount = 0; + gifTag.Reset(); + gsPack.Reset(); + } + + bool isMTVU() const { return !idx && THREAD_VU1; } + s32 getReadAmount() { return AtomicRead(readAmount) + gsPack.readAmount; } + bool hasDataRemaining() const { return curOffset < curSize; } + bool isDone() const { return isMTVU() ? !mtvu.fakePackets : (!hasDataRemaining() && (state == GIF_PATH_IDLE || state == GIF_PATH_WAIT)); } + + // Waits on the MTGS to process gs packets + void mtgsReadWait() { + if (IsDevBuild) { + DevCon.WriteLn(Color_Red, "Gif Path[%d] - MTGS Wait! [r=0x%x]", idx+1, getReadAmount()); + Gif_MTGS_Wait(isMTVU()); + DevCon.WriteLn(Color_Green, "Gif Path[%d] - MTGS Wait! [r=0x%x]", idx+1, getReadAmount()); + return; + } + Gif_MTGS_Wait(isMTVU()); + } + + // Moves packet data to start of buffer + void RealignPacket() { + GUNIT_LOG("Path Buffer: Realigning packet!"); + s32 offset = curOffset - gsPack.size; + s32 sizeToAdd = curSize - offset; + s32 intersect = sizeToAdd - offset; + if (intersect < 0) intersect = 0; + for(;;) { + s32 frontFree = offset - getReadAmount(); + if (frontFree >= sizeToAdd - intersect) break; + mtgsReadWait(); + } + if (offset < (s32)buffLimit) { // Needed for correct readAmount values + if (isMTVU()) gsPack.readAmount += buffLimit - offset; + else Gif_AddBlankGSPacket(buffLimit - offset, idx); + } + //DevCon.WriteLn("Realign Packet [%d]", curSize - offset); + if (intersect) memmove(buffer, &buffer[offset], curSize - offset); + else memcpy(buffer, &buffer[offset], curSize - offset); + curSize -= offset; + curOffset = gsPack.size; + gsPack.offset = 0; + } + + void CopyGSPacketData(u8* pMem, u32 size, bool aligned = false) { + if (curSize + size > buffSize) { // Move gsPack to front of buffer + GUNIT_LOG("CopyGSPacketData: Realigning packet!"); + RealignPacket(); + } + for(;;) { + s32 offset = curOffset - gsPack.size; + s32 readPos = offset - getReadAmount(); + if (readPos >= 0) break; // MTGS is reading in back of curOffset + if ((s32)buffLimit + readPos > (s32)curSize + (s32)size) break; // Enough free front space + mtgsReadWait(); // Let MTGS run to free up buffer space + } + pxAssertDev(curSize+size<=buffSize, "Gif Path Buffer Overflow!"); + memcpy (&buffer[curSize], pMem, size); + curSize += size; + } + + // If completed a GS packet (with EOP) then returned GS_Packet.done = 1 + // MTVU: This function only should be called called on EE thread + GS_Packet ExecuteGSPacket() { + if (mtvu.fakePackets) { // For MTVU mode... + mtvu.fakePackets--; + GS_Packet fakePack; + fakePack.done = 1; // Fake packets don't get processed by pcsx2 + fakePack.size =~0u; // Used to indicate that its a fake packet + return fakePack; + } + pxAssert(!isMTVU()); + for(;;) { + if (!gifTag.isValid) { // Need new Gif Tag + // We don't have enough data for a Gif Tag + if (curOffset + 16 > curSize) { + //GUNIT_LOG("Path Buffer: Not enough data for gif tag! [%d]", curSize-curOffset); + return gsPack; + } + + // Move packet to start of buffer + if (curOffset > buffLimit) { + RealignPacket(); + } + + gifTag.setTag(&buffer[curOffset], 1); + state = (GIF_PATH_STATE)(gifTag.tag.FLG + 1); + + // We don't have enough data for a complete GS packet + if(!gifTag.hasAD && curOffset + 16 + gifTag.len > curSize) { + gifTag.isValid = false; // So next time we test again + return gsPack; + } + + incTag(curOffset, gsPack.size, 16); // Tag Size + gsPack.cycles += 2 + gifTag.cycles; // Tag + Len ee-cycles + } + + if (gifTag.hasAD) { // Only can be true if GIF_FLG_PACKED + bool dblSIGNAL = false; + while(gifTag.nLoop && !dblSIGNAL) { + if (curOffset + 16 > curSize) return gsPack; // Exit Early + if (gifTag.curReg() == GIF_REG_A_D) { + if (!isMTVU()) dblSIGNAL = Gif_HandlerAD(&buffer[curOffset]); + } + incTag(curOffset, gsPack.size, 16); // 1 QWC + gifTag.packedStep(); + } + if (dblSIGNAL && !(gifTag.tag.EOP && !gifTag.nLoop)) return gsPack; // Exit Early + } + else incTag(curOffset, gsPack.size, gifTag.len); // Data length + + // Reload gif tag next loop + gifTag.isValid = false; + + if (gifTag.tag.EOP) { + GS_Packet t = gsPack; + t.done = 1; + + + dmaRewind = 0; + + gsPack.Reset(); + gsPack.offset = curOffset; + + //Path 3 Masking is timing sensitive, we need to simulate its length! (NFSU2/Outrun 2006) + + if((gifRegs.stat.APATH-1) == GIF_PATH_3) + { + state = GIF_PATH_WAIT; + + if(curSize - curOffset > 0 && (gifRegs.stat.M3R || gifRegs.stat.M3P)) + { + //Including breaking packets early (Rewind DMA to pick up where left off) + //but only do this when the path is masked, else we're pointlessly slowing things down. + dmaRewind = curSize - curOffset; + curSize = curOffset; + } + } + else + state = GIF_PATH_IDLE; + + return t; // Complete GS packet + } + } + } + + // MTVU: Gets called on VU XGkicks on MTVU thread + void ExecuteGSPacketMTVU() { + // Move packet to start of buffer + if (curOffset > buffLimit) { + RealignPacket(); + } + if (IsDevBuild) { // We check the packet to see if it actually + for(;;) { // needed to be processed by pcsx2... + if (curOffset + 16 > curSize) break; + gifTag.setTag(&buffer[curOffset], 1); + + if(!gifTag.hasAD && curOffset + 16 + gifTag.len > curSize) break; + incTag(curOffset, gsPack.size, 16); // Tag Size + + if (gifTag.hasAD) { // Only can be true if GIF_FLG_PACKED + while(gifTag.nLoop) { + if (curOffset + 16 > curSize) break; // Exit Early + if (gifTag.curReg() == GIF_REG_A_D) { + pxAssert(!Gif_HandlerAD_Debug(&buffer[curOffset])); + } + incTag(curOffset, gsPack.size, 16); // 1 QWC + gifTag.packedStep(); + } + } + else incTag(curOffset, gsPack.size, gifTag.len); // Data length + if (curOffset >= curSize) break; + if (gifTag.tag.EOP) break; + } + pxAssert(curOffset == curSize); + gifTag.isValid = false; + } + else { + // We assume every packet is a full GS Packet + // And we don't process anything on pcsx2 side + gsPack.size += curSize - curOffset; + curOffset = curSize; + } + } + + // MTVU: Gets called after VU1 execution on MTVU thread + void FinishGSPacketMTVU() { + if (1) { + ScopedLock lock(mtvu.gsPackMutex); + AtomicExchangeAdd(readAmount, gsPack.size + gsPack.readAmount); + mtvu.gsPackQueue.push_back(gsPack); + } + gsPack.Reset(); + gsPack.offset = curOffset; + } + + // MTVU: Gets called by MTGS thread + GS_Packet GetGSPacketMTVU() { + ScopedLock lock(mtvu.gsPackMutex); + if (mtvu.gsPackQueue.size()) { + GS_Packet t = mtvu.gsPackQueue[0]; + return t; // XGkick GS packet(s) + } + Console.Error("MTVU: Expected gsPackQueue to have elements!"); + pxAssert(0); + return GS_Packet(); // gsPack.size will be 0 + } + + // MTVU: Gets called by MTGS thread + void PopGSPacketMTVU() { + ScopedLock lock(mtvu.gsPackMutex); + if (mtvu.gsPackQueue.size()) { + mtvu.gsPackQueue.pop_front(); + } + } + + // MTVU: Returns the amount of pending + // GS Packets that MTGS hasn't yet processed + u32 GetPendingGSPackets() { + ScopedLock lock(mtvu.gsPackMutex); + u32 t = mtvu.gsPackQueue.size(); + return t; + } +}; + +struct Gif_Unit { + Gif_Path gifPath[3]; + GS_SIGNAL gsSIGNAL; // Stalling Signal + tGIF_STAT& stat; + GIF_TRANSFER_TYPE lastTranType; // Last Transfer Type + + Gif_Unit() : stat(gifRegs.stat) { + gifPath[0].Init(GIF_PATH_1, _1mb*9, _1mb + _1kb); + gifPath[1].Init(GIF_PATH_2, _1mb*9, _1mb + _1kb); + gifPath[2].Init(GIF_PATH_3, _1mb*9, _1mb + _1kb); + } + + // Enable softReset when resetting during game emulation + void Reset(bool softReset = false) { + GUNIT_WARN(Color_Red, "Gif Unit Reset!!! [soft=%d]", softReset); + ResetRegs(); + gsSIGNAL.Reset(); + gifPath[0].Reset(softReset); + gifPath[1].Reset(softReset); + gifPath[2].Reset(softReset); + if(!softReset) { + lastTranType = GIF_TRANS_INVALID; + } + } + + // Resets Gif HW Regs + void ResetRegs() { + gifRegs.stat.reset(); + gifRegs.ctrl.reset(); + gifRegs.mode.reset(); + } + + // Adds a finished GS Packet to the MTGS ring buffer + __fi void AddCompletedGSPacket(GS_Packet& gsPack, GIF_PATH path) { + if (gsPack.size==~0u) Gif_AddGSPacketMTVU (gsPack, path); + else Gif_AddCompletedGSPacket(gsPack, path); + if (PRINT_GIF_PACKET) Gif_ParsePacket(gsPack, path); + } + + // Returns GS Packet Size in bytes + u32 GetGSPacketSize(GIF_PATH pathIdx, u8* pMem, u32 offset = 0, u32 size = ~0u) { + u32 memMask = pathIdx ? ~0u : 0x3fffu; + u32 curSize = 0; + for(;;) { + Gif_Tag gifTag(&pMem[offset & memMask]); + incTag(offset, curSize, 16 + gifTag.len); // Tag + Data length + if (pathIdx == GIF_PATH_1 && curSize >= 0x4000) { + DevCon.Warning("Gif Unit - GS packet size exceeded VU memory size!"); + return 0; // Bios does this... (Fixed if you delay vu1's xgkick by 103 vu cycles) + } + if (curSize >= size) return size; + if (gifTag.tag.EOP) return curSize; + } + } + + // Specify the transfer type you are initiating + // The return value is the amount of data (in bytes) that was processed + // If transfer cannot take place at this moment the return value is 0 + u32 TransferGSPacketData(GIF_TRANSFER_TYPE tranType, u8* pMem, u32 size, bool aligned=false) { + + if (THREAD_VU1) { + Gif_Path& path1 = gifPath[GIF_PATH_1]; + if (tranType == GIF_TRANS_XGKICK) { // This is on the MTVU thread + path1.CopyGSPacketData(pMem, size, aligned); + path1.ExecuteGSPacketMTVU(); + return size; + } + if (tranType == GIF_TRANS_MTVU) { // This is on the EE thread + path1.mtvu.fakePackets++; + if (CanDoGif()) Execute(false, true); + return 0; + } + } + + GUNIT_LOG("%s - [path=%d][size=%d]", Gif_TransferStr[(tranType>>8)&0xf], (tranType&3)+1, size); + if (size == 0) { GUNIT_WARN("Gif Unit - Size == 0"); return 0; } + if(!CanDoGif()) { GUNIT_WARN("Gif Unit - Signal or PSE Set or Dir = GS to EE"); } + //pxAssertDev((stat.APATH==0) || checkPaths(1,1,1), "Gif Unit - APATH wasn't cleared?"); + lastTranType = tranType; + + if (tranType == GIF_TRANS_FIFO) { + if(!CanDoPath3()) DevCon.Warning("Gif Unit - Path 3 FIFO transfer while !CanDoPath3()"); + } + if (tranType == GIF_TRANS_DMA) { + if(!CanDoPath3()) { if (!Path3Masked()) stat.P3Q = 1; return 0; } // DMA Stall + //if (stat.P2Q) DevCon.WriteLn("P2Q while path 3"); + } + if (tranType == GIF_TRANS_XGKICK) { + if(!CanDoPath1()) { stat.P1Q = 1; } // We always buffer path1 packets + } + if (tranType == GIF_TRANS_DIRECT) { + if(!CanDoPath2()) { stat.P2Q = 1; return 0; } // Direct Stall + } + if (tranType == GIF_TRANS_DIRECTHL) { + if(!CanDoPath2HL()) { stat.P2Q = 1; return 0; } // DirectHL Stall + } + + gifPath[tranType&3].CopyGSPacketData(pMem, size, aligned); + size -= Execute(tranType == GIF_TRANS_DMA, false); + return size; + } + + // Checks path activity for the given paths + // Returns an int with a bit enabled if the corresponding + // path is not finished (needs more data/processing for an EOP) + __fi int checkPaths(bool p1, bool p2, bool p3, bool checkQ=false) { + int ret = 0; + ret |= (p1 && !gifPath[GIF_PATH_1].isDone()) << 0; + ret |= (p2 && !gifPath[GIF_PATH_2].isDone()) << 1; + ret |= (p3 && !gifPath[GIF_PATH_3].isDone()) << 2; + return ret | (checkQ ? checkQueued(p1,p2,p3) : 0); + } + + __fi int checkQueued(bool p1, bool p2, bool p3) { + int ret = 0; + ret |= (p1 && stat.P1Q) << 0; + ret |= (p2 && stat.P2Q) << 1; + ret |= (p3 && stat.P3Q) << 2; + return ret; + } + + // Send processed GS Primitive(s) to the MTGS thread + // Note: Only does so if current path fully completed all + // of its given gs primitives (but didn't upload them yet) + void FlushToMTGS() { + if (!stat.APATH) return; + Gif_Path& path = gifPath[stat.APATH-1]; + if (path.gsPack.size && !path.gifTag.isValid) { + AddCompletedGSPacket(path.gsPack, (GIF_PATH)(stat.APATH-1)); + path.gsPack.offset = path.curOffset; + path.gsPack.size = 0; + } + } + + // Processes gif packets and performs path arbitration + // on EOPs or on Path 3 Images when IMT is set. + int Execute(bool isPath3, bool isResume) { + if (!CanDoGif()) { DevCon.Error("Gif Unit - Signal or PSE Set or Dir = GS to EE"); return 0; } + bool didPath3 = false; + int curPath = stat.APATH > 0 ? stat.APATH-1 : 0; //Init to zero if no path is already set. + gifPath[2].dmaRewind = 0; + stat.OPH = 1; + + for(;;) { + if (stat.APATH) { // Some Transfer is happening + Gif_Path& path = gifPath[stat.APATH-1]; + GS_Packet gsPack = path.ExecuteGSPacket(); + if(!gsPack.done) { + if (stat.APATH == 3 && CanDoP3Slice() && !gsSIGNAL.queued) { + if(!didPath3 && /*!Path3Masked() &&*/ checkPaths(1,1,0)) { // Path3 slicing + didPath3 = true; + stat.APATH = 0; + stat.IP3 = 1; + GUNIT_LOG(Color_Magenta, "Gif Unit - Path 3 slicing arbitration"); + if (gsPack.size > 16) { // Packet had other tags which we already processed + u32 subOffset = path.gifTag.isValid ? 16 : 0; // if isValid, image-primitive not finished + gsPack.size -= subOffset; // Remove the image-tag (should be last thing read) + AddCompletedGSPacket(gsPack, GIF_PATH_3); // Consider current packet complete + path.gsPack.Reset(); // Reset gs packet info + path.curOffset -= subOffset; // Start the next GS packet at the image-tag + path.gsPack.offset = path.curOffset; // Set to image-tag + path.gifTag.isValid = false; // Reload tag next ExecuteGSPacket() + pxAssert((s32)path.curOffset >= 0); + pxAssert(path.state == GIF_PATH_IMAGE); + GUNIT_LOG(Color_Magenta, "Gif Unit - Sending path 3 sliced gs packet!"); + } + continue; + } + } + //FlushToMTGS(); + //DevCon.WriteLn("Incomplete GS Packet for path %d, size=%d", stat.APATH, gsPack.size); + break; // Not finished with GS packet + } + //DevCon.WriteLn("Adding GS Packet for path %d", stat.APATH); + AddCompletedGSPacket(gsPack, (GIF_PATH)(stat.APATH-1)); + } + + if (!gsSIGNAL.queued && !gifPath[0].isDone()) { + stat.APATH = 1; + stat.P1Q = 0; + curPath = 0; + } + else if (!gsSIGNAL.queued && !gifPath[1].isDone()) { + stat.APATH = 2; + stat.P2Q = 0; + curPath = 1; + } + else if (!gsSIGNAL.queued && !gifPath[2].isDone() && !Path3Masked()) { + stat.APATH = 3; + stat.P3Q = 0; + stat.IP3 = 0; + curPath = 2; + } + else { + if(isResume || curPath == 0) { + stat.APATH = 0; + stat.OPH = 0; + } + + break; + } + } + + //Some loaders/Refresh Rate selectors and things dont issue "End of Packet" commands + //So we look and see if the end of the last tag is all there, if so, stick it in the buffer for the GS :) + //(Invisible Screens on Terminator 3 and Growlanser 2/3) + if(gifPath[curPath].curOffset == gifPath[curPath].curSize) + { + FlushToMTGS(); + } + + Gif_FinishIRQ(); + + //Path3 can rewind the DMA, so we send back the amount we go back! + if(isPath3) + return gifPath[2].dmaRewind; + else + return 0; + } + + // XGkick + bool CanDoPath1() const { + return (stat.APATH == 0 || stat.APATH == 1 || (stat.APATH == 3 && CanDoP3Slice())) && CanDoGif(); + } + // Direct + bool CanDoPath2() const { + return (stat.APATH == 0 || stat.APATH == 2 || (stat.APATH == 3 && CanDoP3Slice())) && CanDoGif(); + } + // DirectHL + bool CanDoPath2HL() const { + return (stat.APATH == 0 || stat.APATH == 2) && CanDoGif(); + } + // Gif DMA - CHECK_GIFREVERSEHACK is a hack for Hot Wheels. + bool CanDoPath3() const { + return((stat.APATH == 0 && !Path3Masked()) || stat.APATH == 3) && CanDoGif(); + } + + bool CanDoP3Slice()const { return stat.IMT == 1 && gifPath[GIF_PATH_3].state == GIF_PATH_IMAGE; } + bool CanDoGif() const { return stat.PSE == 0 && (CHECK_GIFREVERSEHACK ? 1 : stat.DIR == 0) && gsSIGNAL.queued == 0; } + //Mask stops the next packet which hasnt started from transferring + bool Path3Masked() const { return ((stat.M3R || stat.M3P) && (gifPath[GIF_PATH_3].state == GIF_PATH_IDLE || gifPath[GIF_PATH_3].state == GIF_PATH_WAIT)); } + + void PrintInfo(bool printP1=1, bool printP2=1, bool printP3=1) { + u32 a = checkPaths(1,1,1), b = checkQueued(1,1,1); + GUNIT_LOG("Gif Unit - LastTransfer = %s, Paths = [%d,%d,%d], Queued = [%d,%d,%d]", + Gif_TransferStr[(lastTranType>>8)&0xf], + !!(a&1),!!(a&2),!!(a&4),!!(b&1),!!(b&2),!!(b&4)); + GUNIT_LOG("Gif Unit - [APATH = %d][Signal = %d][PSE = %d][DIR = %d]", + stat.APATH, gsSIGNAL.queued, stat.PSE, stat.DIR); + GUNIT_LOG("Gif Unit - [CanDoGif = %d][CanDoPath3 = %d][CanDoP3Slice = %d]", + CanDoGif(), CanDoPath3(), CanDoP3Slice()); + if (printP1) PrintPathInfo(GIF_PATH_1); + if (printP2) PrintPathInfo(GIF_PATH_2); + if (printP3) PrintPathInfo(GIF_PATH_3); + } + + void PrintPathInfo(GIF_PATH path) { + GUNIT_LOG("Gif Path %d - [hasData = %d][state = %d]", path, + gifPath[path].hasDataRemaining(), gifPath[path].state); + } +}; + +extern Gif_Unit gifUnit; diff --git a/pcsx2/MTVU.cpp b/pcsx2/MTVU.cpp index 0ed2519743..cfba1966e9 100644 --- a/pcsx2/MTVU.cpp +++ b/pcsx2/MTVU.cpp @@ -1,359 +1,359 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2010 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 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 PCSX2. - * If not, see . - */ - -#include "PrecompiledHeader.h" -#include "Common.h" -#include "MTVU.h" -#include "newVif.h" -#include "Gif_Unit.h" - -__aligned16 VU_Thread vu1Thread(CpuVU1, VU1); - -#define volatize(x) (*reinterpret_cast(&(x))) -#define size_u32(x) (((u32)x+3u)>>2) // Rounds up a size in bytes for size in u32's -#define MTVU_ALWAYS_KICK 0 -#define MTVU_SYNC_MODE 0 - -enum MTVU_EVENT { - MTVU_VU_EXECUTE, // Execute VU program - MTVU_VU_WRITE_MICRO, // Write to VU micro-mem - MTVU_VU_WRITE_DATA, // Write to VU data-mem - MTVU_VIF_WRITE_COL, // Write to Vif col reg - MTVU_VIF_WRITE_ROW, // Write to Vif row reg - MTVU_VIF_UNPACK, // Execute Vif Unpack - MTVU_NULL_PACKET, // Go back to beginning of buffer - MTVU_RESET -}; - -// Calls the vif unpack functions from the MTVU thread -static void MTVU_Unpack(void* data, VIFregisters& vifRegs) -{ - bool isFill = vifRegs.cycle.cl < vifRegs.cycle.wl; - if (newVifDynaRec) dVifUnpack<1>((u8*)data, isFill); - else _nVifUnpack(1, (u8*)data, vifRegs.mode, isFill); -} - -// Called on Saving/Loading states... -void SaveStateBase::mtvuFreeze() -{ - FreezeTag("MTVU"); - pxAssert(vu1Thread.IsDone()); - if (!IsSaving()) vu1Thread.Reset(); - Freeze(vu1Thread.vuCycles); - Freeze(vu1Thread.vuCycleIdx); -} - -VU_Thread::VU_Thread(BaseVUmicroCPU*& _vuCPU, VURegs& _vuRegs) : - vuCPU(_vuCPU), vuRegs(_vuRegs) -{ - m_name = L"MTVU"; - Reset(); -} - -VU_Thread::~VU_Thread() throw() -{ - pxThread::Cancel(); -} - -void VU_Thread::Reset() -{ - ScopedLock lock(mtxBusy); - - read_pos = 0; - write_pos = 0; - write_offset = 0; - vuCycleIdx = 0; - isBusy = false; - memzero(vif); - memzero(vifRegs); - memzero(vuCycles); -} - -void VU_Thread::ExecuteTaskInThread() -{ - PCSX2_PAGEFAULT_PROTECT { - ExecuteRingBuffer(); - } PCSX2_PAGEFAULT_EXCEPT; -} - -void VU_Thread::ExecuteRingBuffer() -{ - for(;;) { - semaEvent.WaitWithoutYield(); - ScopedLockBool lock(mtxBusy, isBusy); - while (read_pos != GetWritePos()) { - u32 tag = Read(); - switch (tag) { - case MTVU_VU_EXECUTE: { - vuRegs.cycle = 0; - s32 addr = Read(); - vifRegs.top = Read(); - vifRegs.itop = Read(); - if (addr != -1) vuRegs.VI[REG_TPC].UL = addr; - vuCPU->Execute(vu1RunCycles); - gifUnit.gifPath[GIF_PATH_1].FinishGSPacketMTVU(); - semaXGkick.Post(); // Tell MTGS a path1 packet is complete - AtomicExchange(vuCycles[vuCycleIdx], vuRegs.cycle); - vuCycleIdx = (vuCycleIdx + 1) & 3; - break; - } - case MTVU_VU_WRITE_MICRO: { - u32 vu_micro_addr = Read(); - u32 size = Read(); - vuCPU->Clear(vu_micro_addr, size); - Read(&vuRegs.Micro[vu_micro_addr], size); - break; - } - case MTVU_VU_WRITE_DATA: { - u32 vu_data_addr = Read(); - u32 size = Read(); - Read(&vuRegs.Mem[vu_data_addr], size); - break; - } - case MTVU_VIF_WRITE_COL: - Read(&vif.MaskCol, sizeof(vif.MaskCol)); - break; - case MTVU_VIF_WRITE_ROW: - Read(&vif.MaskRow, sizeof(vif.MaskRow)); - break; - case MTVU_VIF_UNPACK: { - u32 vif_copy_size = (uptr)&vif.StructEnd - (uptr)&vif.tag; - Read(&vif.tag, vif_copy_size); - ReadRegs(&vifRegs); - u32 size = Read(); - MTVU_Unpack(&buffer[read_pos], vifRegs); - incReadPos(size_u32(size)); - break; - } - case MTVU_NULL_PACKET: - AtomicExchange(read_pos, 0); - break; - jNO_DEFAULT; - } - } - } -} - - -// Should only be called by ReserveSpace() -__ri void VU_Thread::WaitOnSize(s32 size) -{ - for(;;) { - s32 readPos = GetReadPos(); - if (readPos <= write_pos) break; // MTVU is reading in back of write_pos - if (readPos > write_pos + size) break; // Enough free front space - if (1) { // Let MTVU run to free up buffer space - KickStart(); - if (IsDevBuild) DevCon.WriteLn("WaitOnSize()"); - ScopedLock lock(mtxBusy); - } - } -} - -// Makes sure theres enough room in the ring buffer -// to write a continuous 'size * sizeof(u32)' bytes -void VU_Thread::ReserveSpace(s32 size) -{ - pxAssert(write_pos < buffer_size); - pxAssert(size < buffer_size); - pxAssert(size > 0); - pxAssert(write_offset == 0); - if (write_pos + size > buffer_size) { - pxAssert(write_pos > 0); - WaitOnSize(1); // Size of MTVU_NULL_PACKET - Write(MTVU_NULL_PACKET); - write_offset = 0; - AtomicExchange(volatize(write_pos), 0); - } - WaitOnSize(size); -} - -// Use this when reading read_pos from ee thread -__fi s32 VU_Thread::GetReadPos() -{ - return AtomicRead(read_pos); -} -// Use this when reading write_pos from vu thread -__fi s32 VU_Thread::GetWritePos() -{ - return AtomicRead(volatize(write_pos)); -} -// Gets the effective write pointer after adding write_offset -__fi u32* VU_Thread::GetWritePtr() -{ - return &buffer[(write_pos + write_offset) & buffer_mask]; -} - -__fi void VU_Thread::incReadPos(s32 offset) -{ // Offset in u32 sizes - s32 temp = (read_pos + offset) & buffer_mask; - AtomicExchange(read_pos, temp); -} -__fi void VU_Thread::incWritePos() -{ // Adds write_offset - s32 temp = (write_pos + write_offset) & buffer_mask; - write_offset = 0; - AtomicExchange(volatize(write_pos), temp); - if (MTVU_ALWAYS_KICK) KickStart(); - if (MTVU_SYNC_MODE) WaitVU(); -} - -__fi u32 VU_Thread::Read() -{ - u32 ret = buffer[read_pos]; - incReadPos(1); - return ret; -} - -__fi void VU_Thread::Read(void* dest, u32 size) -{ - memcpy(dest, &buffer[read_pos], size); - incReadPos(size_u32(size)); -} - -__fi void VU_Thread::ReadRegs(VIFregisters* dest) -{ - VIFregistersMTVU* src = (VIFregistersMTVU*)&buffer[read_pos]; - dest->cycle = src->cycle; - dest->mode = src->mode; - dest->num = src->num; - dest->mask = src->mask; - dest->itop = src->itop; - dest->top = src->top; - incReadPos(size_u32(sizeof(VIFregistersMTVU))); -} - -__fi void VU_Thread::Write(u32 val) -{ - GetWritePtr()[0] = val; - write_offset += 1; -} -__fi void VU_Thread::Write(void* src, u32 size) -{ - memcpy(GetWritePtr(), src, size); - write_offset += size_u32(size); -} - -__fi void VU_Thread::WriteRegs(VIFregisters* src) -{ - VIFregistersMTVU* dest = (VIFregistersMTVU*)GetWritePtr(); - dest->cycle = src->cycle; - dest->mode = src->mode; - dest->num = src->num; - dest->mask = src->mask; - dest->top = src->top; - dest->itop = src->itop; - write_offset += size_u32(sizeof(VIFregistersMTVU)); -} - -// Returns Average number of vu Cycles from last 4 runs -// Used for vu cycle stealing hack -u32 VU_Thread::Get_vuCycles() -{ - return (AtomicRead(vuCycles[0]) + AtomicRead(vuCycles[1]) - + AtomicRead(vuCycles[2]) + AtomicRead(vuCycles[3])) >> 2; -} - -void VU_Thread::KickStart(bool forceKick) -{ - if ((forceKick && !semaEvent.Count()) - || (!isBusy && GetReadPos() != write_pos)) semaEvent.Post(); -} - -bool VU_Thread::IsDone() -{ - return !isBusy && GetReadPos() == GetWritePos(); -} - -void VU_Thread::WaitVU() -{ - MTVU_LOG("MTVU - WaitVU!"); - for(;;) { - if (IsDone()) break; - //DevCon.WriteLn("WaitVU()"); - pxAssert(THREAD_VU1); - KickStart(); - ScopedLock lock(mtxBusy); - } -} - -void VU_Thread::ExecuteVU(u32 vu_addr, u32 vif_top, u32 vif_itop) -{ - MTVU_LOG("MTVU - ExecuteVU!"); - ReserveSpace(4); - Write(MTVU_VU_EXECUTE); - Write(vu_addr); - Write(vif_top); - Write(vif_itop); - incWritePos(); - gifUnit.TransferGSPacketData(GIF_TRANS_MTVU, NULL, 0); - KickStart(); - u32 cycles = std::min(Get_vuCycles(), 3000u); - cpuRegs.cycle += cycles * EmuConfig.Speedhacks.VUCycleSteal; -} - -void VU_Thread::VifUnpack(vifStruct& _vif, VIFregisters& _vifRegs, u8* data, u32 size) -{ - MTVU_LOG("MTVU - VifUnpack!"); - u32 vif_copy_size = (uptr)&_vif.StructEnd - (uptr)&_vif.tag; - ReserveSpace(1 + size_u32(vif_copy_size) + size_u32(sizeof(VIFregistersMTVU)) + 1 + size_u32(size)); - Write(MTVU_VIF_UNPACK); - Write(&_vif.tag, vif_copy_size); - WriteRegs(&_vifRegs); - Write(size); - Write(data, size); - incWritePos(); - KickStart(); -} - -void VU_Thread::WriteMicroMem(u32 vu_micro_addr, void* data, u32 size) -{ - MTVU_LOG("MTVU - WriteMicroMem!"); - ReserveSpace(3 + size_u32(size)); - Write(MTVU_VU_WRITE_MICRO); - Write(vu_micro_addr); - Write(size); - Write(data, size); - incWritePos(); -} - -void VU_Thread::WriteDataMem(u32 vu_data_addr, void* data, u32 size) -{ - MTVU_LOG("MTVU - WriteDataMem!"); - ReserveSpace(3 + size_u32(size)); - Write(MTVU_VU_WRITE_DATA); - Write(vu_data_addr); - Write(size); - Write(data, size); - incWritePos(); -} - -void VU_Thread::WriteCol(vifStruct& _vif) -{ - MTVU_LOG("MTVU - WriteCol!"); - ReserveSpace(1 + size_u32(sizeof(_vif.MaskCol))); - Write(MTVU_VIF_WRITE_COL); - Write(&_vif.MaskCol, sizeof(_vif.MaskCol)); - incWritePos(); -} - -void VU_Thread::WriteRow(vifStruct& _vif) -{ - MTVU_LOG("MTVU - WriteRow!"); - ReserveSpace(1 + size_u32(sizeof(_vif.MaskRow))); - Write(MTVU_VIF_WRITE_ROW); - Write(&_vif.MaskRow, sizeof(_vif.MaskRow)); - incWritePos(); -} +/* PCSX2 - PS2 Emulator for PCs + * Copyright (C) 2002-2010 PCSX2 Dev Team + * + * PCSX2 is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * PCSX2 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 PCSX2. + * If not, see . + */ + +#include "PrecompiledHeader.h" +#include "Common.h" +#include "MTVU.h" +#include "newVif.h" +#include "Gif_Unit.h" + +__aligned16 VU_Thread vu1Thread(CpuVU1, VU1); + +#define volatize(x) (*reinterpret_cast(&(x))) +#define size_u32(x) (((u32)x+3u)>>2) // Rounds up a size in bytes for size in u32's +#define MTVU_ALWAYS_KICK 0 +#define MTVU_SYNC_MODE 0 + +enum MTVU_EVENT { + MTVU_VU_EXECUTE, // Execute VU program + MTVU_VU_WRITE_MICRO, // Write to VU micro-mem + MTVU_VU_WRITE_DATA, // Write to VU data-mem + MTVU_VIF_WRITE_COL, // Write to Vif col reg + MTVU_VIF_WRITE_ROW, // Write to Vif row reg + MTVU_VIF_UNPACK, // Execute Vif Unpack + MTVU_NULL_PACKET, // Go back to beginning of buffer + MTVU_RESET +}; + +// Calls the vif unpack functions from the MTVU thread +static void MTVU_Unpack(void* data, VIFregisters& vifRegs) +{ + bool isFill = vifRegs.cycle.cl < vifRegs.cycle.wl; + if (newVifDynaRec) dVifUnpack<1>((u8*)data, isFill); + else _nVifUnpack(1, (u8*)data, vifRegs.mode, isFill); +} + +// Called on Saving/Loading states... +void SaveStateBase::mtvuFreeze() +{ + FreezeTag("MTVU"); + pxAssert(vu1Thread.IsDone()); + if (!IsSaving()) vu1Thread.Reset(); + Freeze(vu1Thread.vuCycles); + Freeze(vu1Thread.vuCycleIdx); +} + +VU_Thread::VU_Thread(BaseVUmicroCPU*& _vuCPU, VURegs& _vuRegs) : + vuCPU(_vuCPU), vuRegs(_vuRegs) +{ + m_name = L"MTVU"; + Reset(); +} + +VU_Thread::~VU_Thread() throw() +{ + pxThread::Cancel(); +} + +void VU_Thread::Reset() +{ + ScopedLock lock(mtxBusy); + + read_pos = 0; + write_pos = 0; + write_offset = 0; + vuCycleIdx = 0; + isBusy = false; + memzero(vif); + memzero(vifRegs); + memzero(vuCycles); +} + +void VU_Thread::ExecuteTaskInThread() +{ + PCSX2_PAGEFAULT_PROTECT { + ExecuteRingBuffer(); + } PCSX2_PAGEFAULT_EXCEPT; +} + +void VU_Thread::ExecuteRingBuffer() +{ + for(;;) { + semaEvent.WaitWithoutYield(); + ScopedLockBool lock(mtxBusy, isBusy); + while (read_pos != GetWritePos()) { + u32 tag = Read(); + switch (tag) { + case MTVU_VU_EXECUTE: { + vuRegs.cycle = 0; + s32 addr = Read(); + vifRegs.top = Read(); + vifRegs.itop = Read(); + if (addr != -1) vuRegs.VI[REG_TPC].UL = addr; + vuCPU->Execute(vu1RunCycles); + gifUnit.gifPath[GIF_PATH_1].FinishGSPacketMTVU(); + semaXGkick.Post(); // Tell MTGS a path1 packet is complete + AtomicExchange(vuCycles[vuCycleIdx], vuRegs.cycle); + vuCycleIdx = (vuCycleIdx + 1) & 3; + break; + } + case MTVU_VU_WRITE_MICRO: { + u32 vu_micro_addr = Read(); + u32 size = Read(); + vuCPU->Clear(vu_micro_addr, size); + Read(&vuRegs.Micro[vu_micro_addr], size); + break; + } + case MTVU_VU_WRITE_DATA: { + u32 vu_data_addr = Read(); + u32 size = Read(); + Read(&vuRegs.Mem[vu_data_addr], size); + break; + } + case MTVU_VIF_WRITE_COL: + Read(&vif.MaskCol, sizeof(vif.MaskCol)); + break; + case MTVU_VIF_WRITE_ROW: + Read(&vif.MaskRow, sizeof(vif.MaskRow)); + break; + case MTVU_VIF_UNPACK: { + u32 vif_copy_size = (uptr)&vif.StructEnd - (uptr)&vif.tag; + Read(&vif.tag, vif_copy_size); + ReadRegs(&vifRegs); + u32 size = Read(); + MTVU_Unpack(&buffer[read_pos], vifRegs); + incReadPos(size_u32(size)); + break; + } + case MTVU_NULL_PACKET: + AtomicExchange(read_pos, 0); + break; + jNO_DEFAULT; + } + } + } +} + + +// Should only be called by ReserveSpace() +__ri void VU_Thread::WaitOnSize(s32 size) +{ + for(;;) { + s32 readPos = GetReadPos(); + if (readPos <= write_pos) break; // MTVU is reading in back of write_pos + if (readPos > write_pos + size) break; // Enough free front space + if (1) { // Let MTVU run to free up buffer space + KickStart(); + if (IsDevBuild) DevCon.WriteLn("WaitOnSize()"); + ScopedLock lock(mtxBusy); + } + } +} + +// Makes sure theres enough room in the ring buffer +// to write a continuous 'size * sizeof(u32)' bytes +void VU_Thread::ReserveSpace(s32 size) +{ + pxAssert(write_pos < buffer_size); + pxAssert(size < buffer_size); + pxAssert(size > 0); + pxAssert(write_offset == 0); + if (write_pos + size > buffer_size) { + pxAssert(write_pos > 0); + WaitOnSize(1); // Size of MTVU_NULL_PACKET + Write(MTVU_NULL_PACKET); + write_offset = 0; + AtomicExchange(volatize(write_pos), 0); + } + WaitOnSize(size); +} + +// Use this when reading read_pos from ee thread +__fi s32 VU_Thread::GetReadPos() +{ + return AtomicRead(read_pos); +} +// Use this when reading write_pos from vu thread +__fi s32 VU_Thread::GetWritePos() +{ + return AtomicRead(volatize(write_pos)); +} +// Gets the effective write pointer after adding write_offset +__fi u32* VU_Thread::GetWritePtr() +{ + return &buffer[(write_pos + write_offset) & buffer_mask]; +} + +__fi void VU_Thread::incReadPos(s32 offset) +{ // Offset in u32 sizes + s32 temp = (read_pos + offset) & buffer_mask; + AtomicExchange(read_pos, temp); +} +__fi void VU_Thread::incWritePos() +{ // Adds write_offset + s32 temp = (write_pos + write_offset) & buffer_mask; + write_offset = 0; + AtomicExchange(volatize(write_pos), temp); + if (MTVU_ALWAYS_KICK) KickStart(); + if (MTVU_SYNC_MODE) WaitVU(); +} + +__fi u32 VU_Thread::Read() +{ + u32 ret = buffer[read_pos]; + incReadPos(1); + return ret; +} + +__fi void VU_Thread::Read(void* dest, u32 size) +{ + memcpy(dest, &buffer[read_pos], size); + incReadPos(size_u32(size)); +} + +__fi void VU_Thread::ReadRegs(VIFregisters* dest) +{ + VIFregistersMTVU* src = (VIFregistersMTVU*)&buffer[read_pos]; + dest->cycle = src->cycle; + dest->mode = src->mode; + dest->num = src->num; + dest->mask = src->mask; + dest->itop = src->itop; + dest->top = src->top; + incReadPos(size_u32(sizeof(VIFregistersMTVU))); +} + +__fi void VU_Thread::Write(u32 val) +{ + GetWritePtr()[0] = val; + write_offset += 1; +} +__fi void VU_Thread::Write(void* src, u32 size) +{ + memcpy(GetWritePtr(), src, size); + write_offset += size_u32(size); +} + +__fi void VU_Thread::WriteRegs(VIFregisters* src) +{ + VIFregistersMTVU* dest = (VIFregistersMTVU*)GetWritePtr(); + dest->cycle = src->cycle; + dest->mode = src->mode; + dest->num = src->num; + dest->mask = src->mask; + dest->top = src->top; + dest->itop = src->itop; + write_offset += size_u32(sizeof(VIFregistersMTVU)); +} + +// Returns Average number of vu Cycles from last 4 runs +// Used for vu cycle stealing hack +u32 VU_Thread::Get_vuCycles() +{ + return (AtomicRead(vuCycles[0]) + AtomicRead(vuCycles[1]) + + AtomicRead(vuCycles[2]) + AtomicRead(vuCycles[3])) >> 2; +} + +void VU_Thread::KickStart(bool forceKick) +{ + if ((forceKick && !semaEvent.Count()) + || (!isBusy && GetReadPos() != write_pos)) semaEvent.Post(); +} + +bool VU_Thread::IsDone() +{ + return !isBusy && GetReadPos() == GetWritePos(); +} + +void VU_Thread::WaitVU() +{ + MTVU_LOG("MTVU - WaitVU!"); + for(;;) { + if (IsDone()) break; + //DevCon.WriteLn("WaitVU()"); + pxAssert(THREAD_VU1); + KickStart(); + ScopedLock lock(mtxBusy); + } +} + +void VU_Thread::ExecuteVU(u32 vu_addr, u32 vif_top, u32 vif_itop) +{ + MTVU_LOG("MTVU - ExecuteVU!"); + ReserveSpace(4); + Write(MTVU_VU_EXECUTE); + Write(vu_addr); + Write(vif_top); + Write(vif_itop); + incWritePos(); + gifUnit.TransferGSPacketData(GIF_TRANS_MTVU, NULL, 0); + KickStart(); + u32 cycles = std::min(Get_vuCycles(), 3000u); + cpuRegs.cycle += cycles * EmuConfig.Speedhacks.VUCycleSteal; +} + +void VU_Thread::VifUnpack(vifStruct& _vif, VIFregisters& _vifRegs, u8* data, u32 size) +{ + MTVU_LOG("MTVU - VifUnpack!"); + u32 vif_copy_size = (uptr)&_vif.StructEnd - (uptr)&_vif.tag; + ReserveSpace(1 + size_u32(vif_copy_size) + size_u32(sizeof(VIFregistersMTVU)) + 1 + size_u32(size)); + Write(MTVU_VIF_UNPACK); + Write(&_vif.tag, vif_copy_size); + WriteRegs(&_vifRegs); + Write(size); + Write(data, size); + incWritePos(); + KickStart(); +} + +void VU_Thread::WriteMicroMem(u32 vu_micro_addr, void* data, u32 size) +{ + MTVU_LOG("MTVU - WriteMicroMem!"); + ReserveSpace(3 + size_u32(size)); + Write(MTVU_VU_WRITE_MICRO); + Write(vu_micro_addr); + Write(size); + Write(data, size); + incWritePos(); +} + +void VU_Thread::WriteDataMem(u32 vu_data_addr, void* data, u32 size) +{ + MTVU_LOG("MTVU - WriteDataMem!"); + ReserveSpace(3 + size_u32(size)); + Write(MTVU_VU_WRITE_DATA); + Write(vu_data_addr); + Write(size); + Write(data, size); + incWritePos(); +} + +void VU_Thread::WriteCol(vifStruct& _vif) +{ + MTVU_LOG("MTVU - WriteCol!"); + ReserveSpace(1 + size_u32(sizeof(_vif.MaskCol))); + Write(MTVU_VIF_WRITE_COL); + Write(&_vif.MaskCol, sizeof(_vif.MaskCol)); + incWritePos(); +} + +void VU_Thread::WriteRow(vifStruct& _vif) +{ + MTVU_LOG("MTVU - WriteRow!"); + ReserveSpace(1 + size_u32(sizeof(_vif.MaskRow))); + Write(MTVU_VIF_WRITE_ROW); + Write(&_vif.MaskRow, sizeof(_vif.MaskRow)); + incWritePos(); +} diff --git a/pcsx2/MTVU.h b/pcsx2/MTVU.h index 672ff5885c..d404d75967 100644 --- a/pcsx2/MTVU.h +++ b/pcsx2/MTVU.h @@ -1,104 +1,104 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2010 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 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 PCSX2. - * If not, see . - */ - -#pragma once -#include "System/SysThreads.h" -#include "Vif.h" -#include "Vif_Dma.h" -#include "VUmicro.h" - -#define MTVU_LOG(...) do{} while(0) -//#define MTVU_LOG DevCon.WriteLn - -// Notes: -// - This class should only be accessed from the EE thread... -// - buffer_size must be power of 2 -// - ring-buffer has no complete pending packets when read_pos==write_pos -class VU_Thread : public pxThread { - static const s32 buffer_size = (_1mb * 16) / sizeof(s32); - static const u32 buffer_mask = buffer_size - 1; - __aligned(4) u32 buffer[buffer_size]; - __aligned(4) volatile s32 read_pos; // Only modified by VU thread - __aligned(4) volatile bool isBusy; // Is thread processing data? - __aligned(4) s32 write_pos; // Only modified by EE thread - __aligned(4) s32 write_offset; // Only modified by EE thread - __aligned(4) Mutex mtxBusy; - __aligned(4) Semaphore semaEvent; - __aligned(4) BaseVUmicroCPU*& vuCPU; - __aligned(4) VURegs& vuRegs; - -public: - __aligned16 vifStruct vif; - __aligned16 VIFregisters vifRegs; - __aligned(4) Semaphore semaXGkick; - __aligned(4) u32 vuCycles[4]; // Used for VU cycle stealing hack - __aligned(4) u32 vuCycleIdx; // Used for VU cycle stealing hack - - VU_Thread(BaseVUmicroCPU*& _vuCPU, VURegs& _vuRegs); - virtual ~VU_Thread() throw(); - - void Reset(); - - // Get MTVU to start processing its packets if it isn't already - void KickStart(bool forceKick = false); - - // Used for assertions... - bool IsDone(); - - // Waits till MTVU is done processing - void WaitVU(); - - void ExecuteVU(u32 vu_addr, u32 vif_top, u32 vif_itop); - - void VifUnpack(vifStruct& _vif, VIFregisters& _vifRegs, u8* data, u32 size); - - // Writes to VU's Micro Memory (size in bytes) - void WriteMicroMem(u32 vu_micro_addr, void* data, u32 size); - - // Writes to VU's Data Memory (size in bytes) - void WriteDataMem(u32 vu_data_addr, void* data, u32 size); - - void WriteCol(vifStruct& _vif); - - void WriteRow(vifStruct& _vif); - -protected: - void ExecuteTaskInThread(); - -private: - void ExecuteRingBuffer(); - - void WaitOnSize(s32 size); - void ReserveSpace(s32 size); - - s32 GetReadPos(); - s32 GetWritePos(); - u32* GetWritePtr(); - - void incReadPos(s32 offset); - void incWritePos(); - - u32 Read(); - void Read(void* dest, u32 size); - void ReadRegs(VIFregisters* dest); - - void Write(u32 val); - void Write(void* src, u32 size); - void WriteRegs(VIFregisters* src); - - u32 Get_vuCycles(); -}; - -extern __aligned16 VU_Thread vu1Thread; +/* PCSX2 - PS2 Emulator for PCs + * Copyright (C) 2002-2010 PCSX2 Dev Team + * + * PCSX2 is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * PCSX2 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 PCSX2. + * If not, see . + */ + +#pragma once +#include "System/SysThreads.h" +#include "Vif.h" +#include "Vif_Dma.h" +#include "VUmicro.h" + +#define MTVU_LOG(...) do{} while(0) +//#define MTVU_LOG DevCon.WriteLn + +// Notes: +// - This class should only be accessed from the EE thread... +// - buffer_size must be power of 2 +// - ring-buffer has no complete pending packets when read_pos==write_pos +class VU_Thread : public pxThread { + static const s32 buffer_size = (_1mb * 16) / sizeof(s32); + static const u32 buffer_mask = buffer_size - 1; + __aligned(4) u32 buffer[buffer_size]; + __aligned(4) volatile s32 read_pos; // Only modified by VU thread + __aligned(4) volatile bool isBusy; // Is thread processing data? + __aligned(4) s32 write_pos; // Only modified by EE thread + __aligned(4) s32 write_offset; // Only modified by EE thread + __aligned(4) Mutex mtxBusy; + __aligned(4) Semaphore semaEvent; + __aligned(4) BaseVUmicroCPU*& vuCPU; + __aligned(4) VURegs& vuRegs; + +public: + __aligned16 vifStruct vif; + __aligned16 VIFregisters vifRegs; + __aligned(4) Semaphore semaXGkick; + __aligned(4) u32 vuCycles[4]; // Used for VU cycle stealing hack + __aligned(4) u32 vuCycleIdx; // Used for VU cycle stealing hack + + VU_Thread(BaseVUmicroCPU*& _vuCPU, VURegs& _vuRegs); + virtual ~VU_Thread() throw(); + + void Reset(); + + // Get MTVU to start processing its packets if it isn't already + void KickStart(bool forceKick = false); + + // Used for assertions... + bool IsDone(); + + // Waits till MTVU is done processing + void WaitVU(); + + void ExecuteVU(u32 vu_addr, u32 vif_top, u32 vif_itop); + + void VifUnpack(vifStruct& _vif, VIFregisters& _vifRegs, u8* data, u32 size); + + // Writes to VU's Micro Memory (size in bytes) + void WriteMicroMem(u32 vu_micro_addr, void* data, u32 size); + + // Writes to VU's Data Memory (size in bytes) + void WriteDataMem(u32 vu_data_addr, void* data, u32 size); + + void WriteCol(vifStruct& _vif); + + void WriteRow(vifStruct& _vif); + +protected: + void ExecuteTaskInThread(); + +private: + void ExecuteRingBuffer(); + + void WaitOnSize(s32 size); + void ReserveSpace(s32 size); + + s32 GetReadPos(); + s32 GetWritePos(); + u32* GetWritePtr(); + + void incReadPos(s32 offset); + void incWritePos(); + + u32 Read(); + void Read(void* dest, u32 size); + void ReadRegs(VIFregisters* dest); + + void Write(u32 val); + void Write(void* src, u32 size); + void WriteRegs(VIFregisters* src); + + u32 Get_vuCycles(); +}; + +extern __aligned16 VU_Thread vu1Thread; diff --git a/pcsx2/OutputIsoFile.cpp b/pcsx2/OutputIsoFile.cpp index ca311ef737..7c093113a6 100644 --- a/pcsx2/OutputIsoFile.cpp +++ b/pcsx2/OutputIsoFile.cpp @@ -1,148 +1,148 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2010 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 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 PCSX2. - * If not, see . - */ - - -#include "PrecompiledHeader.h" -#include "IopCommon.h" -#include "CDVD/IsoFileFormats.h" - -#include - -/* -void pxStream_OpenCheck( const wxStreamBase& stream, const wxString& fname, const wxString& mode ) -{ - if (stream.IsOk()) return; - - ScopedExcept ex(Exception::FromErrno(fname, errno)); - ex->SetDiagMsg( pxsFmt(L"Unable to open the file for %s: %s", mode.c_str(), ex->DiagMsg().c_str()) ); - ex->Rethrow(); -} - -OutputIsoFile::OutputIsoFile() -{ - _init(); -} - -OutputIsoFile::~OutputIsoFile() throw() -{ - Close(); -} - -void OutputIsoFile::_init() -{ - m_type = ISOTYPE_ILLEGAL; - m_flags = 0; - - m_offset = 0; - m_blockofs = 0; - m_blocksize = 0; - m_blocks = 0; - - m_dtable = 0; - m_dtablesize = 0; -} - -void OutputIsoFile::Create(const wxString& filename, int flags) -{ - Close(); - m_filename = filename; - - m_flags = flags; - m_offset = 0; - m_blockofs = 24; - m_blocksize = 2048; - - m_outstream = new wxFileOutputStream( m_filename ); - pxStream_OpenCheck( *m_outstream, m_filename, L"writing" ); - - Console.WriteLn("isoFile create ok: %s ", m_filename.c_str()); -} - -// Generates format header information for blockdumps. -void OutputIsoFile::WriteFormat(int _blockofs, uint _blocksize, uint _blocks) -{ - m_blocksize = _blocksize; - m_blocks = _blocks; - m_blockofs = _blockofs; - - Console.WriteLn("blockoffset = %d", m_blockofs); - Console.WriteLn("blocksize = %u", m_blocksize); - Console.WriteLn("blocks = %u", m_blocks); - - if (m_flags & ISOFLAGS_BLOCKDUMP_V2) - { - outWrite("BDV2", 4); - outWrite(m_blocksize); - outWrite(m_blocks); - outWrite(m_blockofs); - } -} - -void OutputIsoFile::_WriteBlock(const u8* src, uint lsn) -{ - wxFileOffset ofs = (wxFileOffset)lsn * m_blocksize + m_offset; - - m_outstream->SeekO( ofs ); - outWrite( src + m_blockofs, m_blocksize ); -} - -void OutputIsoFile::_WriteBlockD(const u8* src, uint lsn) -{ - // Find and ignore blocks that have already been dumped: - for (int i=0; i( lsn ); - outWrite( src + m_blockofs, m_blocksize ); -} - -void OutputIsoFile::WriteBlock(const u8* src, uint lsn) -{ - if (m_flags == ISOFLAGS_BLOCKDUMP_V2) - _WriteBlockD(src, lsn); - else - _WriteBlock(src, lsn); -} - -void OutputIsoFile::Close() -{ - m_dtable.Delete(); - - _init(); -} - -void OutputIsoFile::outWrite( const void* src, size_t size ) -{ - m_outstream->Write(src, size); - if(m_outstream->GetLastError() == wxSTREAM_WRITE_ERROR) - { - int err = errno; - if (!err) - throw Exception::BadStream(m_filename).SetDiagMsg(pxsFmt(L"An error occurred while writing %u bytes to file", size)); - - ScopedExcept ex(Exception::FromErrno(m_filename, err)); - ex->SetDiagMsg( pxsFmt(L"An error occurred while writing %u bytes to file: %s", size, ex->DiagMsg().c_str()) ); - ex->Rethrow(); - } -} - -bool OutputIsoFile::IsOpened() const -{ - return m_outstream && m_outstream->IsOk(); -} -*/ +/* PCSX2 - PS2 Emulator for PCs + * Copyright (C) 2002-2010 PCSX2 Dev Team + * + * PCSX2 is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * PCSX2 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 PCSX2. + * If not, see . + */ + + +#include "PrecompiledHeader.h" +#include "IopCommon.h" +#include "CDVD/IsoFileFormats.h" + +#include + +/* +void pxStream_OpenCheck( const wxStreamBase& stream, const wxString& fname, const wxString& mode ) +{ + if (stream.IsOk()) return; + + ScopedExcept ex(Exception::FromErrno(fname, errno)); + ex->SetDiagMsg( pxsFmt(L"Unable to open the file for %s: %s", mode.c_str(), ex->DiagMsg().c_str()) ); + ex->Rethrow(); +} + +OutputIsoFile::OutputIsoFile() +{ + _init(); +} + +OutputIsoFile::~OutputIsoFile() throw() +{ + Close(); +} + +void OutputIsoFile::_init() +{ + m_type = ISOTYPE_ILLEGAL; + m_flags = 0; + + m_offset = 0; + m_blockofs = 0; + m_blocksize = 0; + m_blocks = 0; + + m_dtable = 0; + m_dtablesize = 0; +} + +void OutputIsoFile::Create(const wxString& filename, int flags) +{ + Close(); + m_filename = filename; + + m_flags = flags; + m_offset = 0; + m_blockofs = 24; + m_blocksize = 2048; + + m_outstream = new wxFileOutputStream( m_filename ); + pxStream_OpenCheck( *m_outstream, m_filename, L"writing" ); + + Console.WriteLn("isoFile create ok: %s ", m_filename.c_str()); +} + +// Generates format header information for blockdumps. +void OutputIsoFile::WriteFormat(int _blockofs, uint _blocksize, uint _blocks) +{ + m_blocksize = _blocksize; + m_blocks = _blocks; + m_blockofs = _blockofs; + + Console.WriteLn("blockoffset = %d", m_blockofs); + Console.WriteLn("blocksize = %u", m_blocksize); + Console.WriteLn("blocks = %u", m_blocks); + + if (m_flags & ISOFLAGS_BLOCKDUMP_V2) + { + outWrite("BDV2", 4); + outWrite(m_blocksize); + outWrite(m_blocks); + outWrite(m_blockofs); + } +} + +void OutputIsoFile::_WriteBlock(const u8* src, uint lsn) +{ + wxFileOffset ofs = (wxFileOffset)lsn * m_blocksize + m_offset; + + m_outstream->SeekO( ofs ); + outWrite( src + m_blockofs, m_blocksize ); +} + +void OutputIsoFile::_WriteBlockD(const u8* src, uint lsn) +{ + // Find and ignore blocks that have already been dumped: + for (int i=0; i( lsn ); + outWrite( src + m_blockofs, m_blocksize ); +} + +void OutputIsoFile::WriteBlock(const u8* src, uint lsn) +{ + if (m_flags == ISOFLAGS_BLOCKDUMP_V2) + _WriteBlockD(src, lsn); + else + _WriteBlock(src, lsn); +} + +void OutputIsoFile::Close() +{ + m_dtable.Delete(); + + _init(); +} + +void OutputIsoFile::outWrite( const void* src, size_t size ) +{ + m_outstream->Write(src, size); + if(m_outstream->GetLastError() == wxSTREAM_WRITE_ERROR) + { + int err = errno; + if (!err) + throw Exception::BadStream(m_filename).SetDiagMsg(pxsFmt(L"An error occurred while writing %u bytes to file", size)); + + ScopedExcept ex(Exception::FromErrno(m_filename, err)); + ex->SetDiagMsg( pxsFmt(L"An error occurred while writing %u bytes to file: %s", size, ex->DiagMsg().c_str()) ); + ex->Rethrow(); + } +} + +bool OutputIsoFile::IsOpened() const +{ + return m_outstream && m_outstream->IsOk(); +} +*/ diff --git a/pcsx2/Patch_Memory.cpp b/pcsx2/Patch_Memory.cpp index 82138b830a..f40b33c5ed 100644 --- a/pcsx2/Patch_Memory.cpp +++ b/pcsx2/Patch_Memory.cpp @@ -1,490 +1,490 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2010 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 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 PCSX2. - * If not, see . - */ - -#include "PrecompiledHeader.h" - -#define _PC_ // disables MIPS opcode macros. - -#include "IopCommon.h" -#include "Patch.h" - -u32 SkipCount = 0, IterationCount = 0; -u32 IterationIncrement = 0, ValueIncrement = 0; -u32 PrevCheatType = 0, PrevCheatAddr = 0, LastType = 0; - -void writeCheat() -{ - switch (LastType) - { - case 0x0: - memWrite8(PrevCheatAddr, IterationIncrement & 0xFF); - break; - case 0x1: - memWrite16(PrevCheatAddr, IterationIncrement & 0xFFFF); - break; - case 0x2: - memWrite32(PrevCheatAddr, IterationIncrement); - break; - default: - break; - } -} - -void handle_extended_t(IniPatch *p) -{ - if (SkipCount > 0) - { - SkipCount--; - } - else switch (PrevCheatType) - { - case 0x3040: // vvvvvvvv 00000000 Inc - { - u32 mem = memRead32(PrevCheatAddr); - memWrite32(PrevCheatAddr, mem + (p->addr)); - PrevCheatType = 0; - break; - } - - case 0x3050: // vvvvvvvv 00000000 Dec - { - u32 mem = memRead32(PrevCheatAddr); - memWrite32(PrevCheatAddr, mem - (p->addr)); - PrevCheatType = 0; - break; - } - - case 0x4000: // vvvvvvvv iiiiiiii - for (u32 i = 0; i < IterationCount; i++) - { - memWrite32((u32)(PrevCheatAddr + (i * IterationIncrement)), (u32)(p->addr + ((u32)p->data * i))); - } - PrevCheatType = 0; - break; - - case 0x5000: // dddddddd iiiiiiii - for (u32 i = 0; i < IterationCount; i++) - { - u8 mem = memRead8(PrevCheatAddr + i); - memWrite8(((u32)p->data) + i, mem); - } - PrevCheatType = 0; - break; - - case 0x6000: // 000Xnnnn iiiiiiii - if (IterationIncrement == 0x0) - { - //LastType = ((u32)p->addr & 0x000F0000) >> 16; - u32 mem = memRead32(PrevCheatAddr); - if ((u32)p->addr < 0x100) - { - LastType = 0x0; - PrevCheatAddr = mem + ((u32)p->addr); - } - else if ((u32)p->addr < 0x1000) - { - LastType = 0x1; - PrevCheatAddr = mem + ((u32)p->addr * 2); - } - else - { - LastType = 0x2; - PrevCheatAddr = mem + ((u32)p->addr * 4); - } - - // Check if needed to read another pointer - PrevCheatType = 0; - if (((mem & 0x0FFFFFFF) & 0x3FFFFFFC) != 0) - { - switch (LastType) - { - case 0x0: - memWrite8(PrevCheatAddr, (u8)p->data & 0xFF); - break; - case 0x1: - memWrite16(PrevCheatAddr, (u16)p->data & 0x0FFFF); - break; - case 0x2: - memWrite32(PrevCheatAddr, (u32)p->data); - break; - default: - break; - } - } - } - else - { - // Get Number of pointers - if (((u32)p->addr & 0x0000FFFF) == 0) - IterationCount = 1; - else - IterationCount = (u32)p->addr & 0x0000FFFF; - - // Read first pointer - LastType = ((u32)p->addr & 0x000F0000) >> 16; - u32 mem = memRead32(PrevCheatAddr); - - PrevCheatAddr = mem + (u32)p->data; - IterationCount--; - - // Check if needed to read another pointer - if (IterationCount == 0) - { - PrevCheatType = 0; - if (((mem & 0x0FFFFFFF) & 0x3FFFFFFC) != 0) writeCheat(); - } - else - { - if (((mem & 0x0FFFFFFF) & 0x3FFFFFFC) != 0) - PrevCheatType = 0; - else - PrevCheatType = 0x6001; - } - } - break; - - case 0x6001: // 000Xnnnn iiiiiiii - { - // Read first pointer - u32 mem = memRead32(PrevCheatAddr & 0x0FFFFFFF); - - PrevCheatAddr = mem + (u32)p->addr; - IterationCount--; - - // Check if needed to read another pointer - if (IterationCount == 0) - { - PrevCheatType = 0; - if (((mem & 0x0FFFFFFF) & 0x3FFFFFFC) != 0) writeCheat(); - } - else - { - mem = memRead32(PrevCheatAddr); - - PrevCheatAddr = mem + (u32)p->data; - IterationCount--; - if (IterationCount == 0) - { - PrevCheatType = 0; - if (((mem & 0x0FFFFFFF) & 0x3FFFFFFC) != 0) writeCheat(); - } - } - } - break; - - default: - if ((p->addr & 0xF0000000) == 0x00000000) // 0aaaaaaa 0000000vv - { - memWrite8(p->addr & 0x0FFFFFFF, (u8)p->data & 0x000000FF); - PrevCheatType = 0; - } - else if ((p->addr & 0xF0000000) == 0x10000000) // 1aaaaaaa 0000vvvv - { - memWrite16(p->addr & 0x0FFFFFFF, (u16)p->data & 0x0000FFFF); - PrevCheatType = 0; - } - else if ((p->addr & 0xF0000000) == 0x20000000) // 2aaaaaaa vvvvvvvv - { - memWrite32(p->addr & 0x0FFFFFFF, (u32)p->data); - PrevCheatType = 0; - } - else if ((p->addr & 0xFFFF0000) == 0x30000000) // 300000vv 0aaaaaaa Inc - { - u8 mem = memRead8((u32)p->data); - memWrite8((u32)p->data, mem + (p->addr & 0x000000FF)); - PrevCheatType = 0; - } - else if ((p->addr & 0xFFFF0000) == 0x30100000) // 301000vv 0aaaaaaa Dec - { - u8 mem = memRead8((u32)p->data); - memWrite8((u32)p->data, mem - (p->addr & 0x000000FF)); - PrevCheatType = 0; - } - else if ((p->addr & 0xFFFF0000) == 0x30200000) // 3020vvvv 0aaaaaaa Inc - { - u16 mem = memRead16((u32)p->data); - memWrite16((u32)p->data, mem + (p->addr & 0x0000FFFF)); - PrevCheatType = 0; - } - else if ((p->addr & 0xFFFF0000) == 0x30300000) // 3030vvvv 0aaaaaaa Dec - { - u16 mem = memRead16((u32)p->data); - memWrite16((u32)p->data, mem - (p->addr & 0x0000FFFF)); - PrevCheatType = 0; - } - else if ((p->addr & 0xFFFF0000) == 0x30400000) // 30400000 0aaaaaaa Inc + Another line - { - PrevCheatType = 0x3040; - PrevCheatAddr = (u32)p->data; - } - else if ((p->addr & 0xFFFF0000) == 0x30500000) // 30500000 0aaaaaaa Inc + Another line - { - PrevCheatType = 0x3050; - PrevCheatAddr = (u32)p->data; - } - else if ((p->addr & 0xF0000000) == 0x40000000) // 4aaaaaaa nnnnssss + Another line - { - IterationCount = ((u32)p->data & 0xFFFF0000) / 0x10000; - IterationIncrement = ((u32)p->data & 0x0000FFFF) * 4; - PrevCheatAddr = (u32)p->addr & 0x0FFFFFFF; - PrevCheatType = 0x4000; - } - else if ((p->addr & 0xF0000000) == 0x50000000) // 5sssssss nnnnnnnn + Another line - { - PrevCheatAddr = (u32)p->addr & 0x0FFFFFFF; - IterationCount = ((u32)p->data); - PrevCheatType = 0x5000; - } - else if ((p->addr & 0xF0000000) == 0x60000000) // 6aaaaaaa 000000vv + Another line/s - { - PrevCheatAddr = (u32)p->addr & 0x0FFFFFFF; - IterationIncrement = ((u32)p->data); - IterationCount = 0; - PrevCheatType = 0x6000; - } - else if ((p->addr & 0xF0000000) == 0x70000000) - { - if ((p->data & 0x00F00000) == 0x00000000) // 7aaaaaaa 000000vv - { - u8 mem = memRead8((u32)p->addr & 0x0FFFFFFF); - memWrite8((u32)p->addr & 0x0FFFFFFF, (u8)(mem | (p->data & 0x000000FF))); - } - else if ((p->data & 0x00F00000) == 0x00100000) // 7aaaaaaa 0010vvvv - { - u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); - memWrite16((u32)p->addr & 0x0FFFFFFF, (u16)(mem | (p->data & 0x0000FFFF))); - } - else if ((p->data & 0x00F00000) == 0x00200000) // 7aaaaaaa 002000vv - { - u8 mem = memRead8((u32)p->addr & 0x0FFFFFFF); - memWrite8((u32)p->addr & 0x0FFFFFFF, (u8)(mem & (p->data & 0x000000FF))); - } - else if ((p->data & 0x00F00000) == 0x00300000) // 7aaaaaaa 0030vvvv - { - u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); - memWrite16((u32)p->addr & 0x0FFFFFFF, (u16)(mem & (p->data & 0x0000FFFF))); - } - else if ((p->data & 0x00F00000) == 0x00400000) // 7aaaaaaa 004000vv - { - u8 mem = memRead8((u32)p->addr & 0x0FFFFFFF); - memWrite8((u32)p->addr & 0x0FFFFFFF, (u8)(mem ^ (p->data & 0x000000FF))); - } - else if ((p->data & 0x00F00000) == 0x00500000) // 7aaaaaaa 0050vvvv - { - u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); - memWrite16((u32)p->addr & 0x0FFFFFFF, (u16)(mem ^ (p->data & 0x0000FFFF))); - } - } - else if (p->addr < 0xE0000000) - { - if (((u32)p->data & 0xFFFF0000) == 0x00000000) // Daaaaaaa 0000dddd - { - u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); - if (mem != (0x0000FFFF & (u32)p->data)) - { - SkipCount = 1; - } - PrevCheatType = 0; - } - else if (((u32)p->data & 0xFFFF0000) == 0x00100000) // Daaaaaaa 0010dddd - { - u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); - if (mem == (0x0000FFFF & (u32)p->data)) - { - SkipCount = 1; - } - PrevCheatType = 0; - } - else if (((u32)p->data & 0xFFFF0000) == 0x00200000) // Daaaaaaa 0020dddd - { - u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); - if (mem >= (0x0000FFFF & (u32)p->data)) - { - SkipCount = 1; - } - PrevCheatType = 0; - } - else if (((u32)p->data & 0xFFFF0000) == 0x00300000) // Daaaaaaa 0030dddd - { - u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); - if (mem <= (0x0000FFFF & (u32)p->data)) - { - SkipCount = 1; - } - PrevCheatType = 0; - } - } - else if (p->addr < 0xF0000000) - { - if (((u32)p->data & 0xF0000000) == 0x00000000) // Ezyyvvvv 0aaaaaaa - { - u8 z = ((u32)p->addr & 0x0F000000) / 0x01000000; - - if (z == 0) // E0yyvvvv 0aaaaaaa - { - u16 mem = memRead16((u32)p->data & 0x0FFFFFFF); - if (mem != (0x0000FFFF & (u32)p->addr)) - { - SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; - } - PrevCheatType = 0; - } - else if (z == 1) // E1yy00vv 0aaaaaaa - { - u8 mem = memRead8((u32)p->data & 0x0FFFFFFF); - if (mem != (0x000000FF & (u32)p->addr)) - { - SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; - } - PrevCheatType = 0; - } - } - else if (((u32)p->data & 0xF0000000) == 0x10000000) // Ezyyvvvv 1aaaaaaa - { - u8 z = ((u32)p->addr & 0x0F000000) / 0x01000000; - - if (z == 0) // E0yyvvvv 1aaaaaaa - { - u16 mem = memRead16((u32)p->data & 0x0FFFFFFF); - if (mem == (0x0000FFFF & (u32)p->addr)) - { - SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; - } - PrevCheatType = 0; - } - else if (z == 1) // E1yy00vv 1aaaaaaa - { - u8 mem = memRead8((u32)p->data & 0x0FFFFFFF); - if (mem == (0x000000FF & (u32)p->addr)) - { - SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; - } - PrevCheatType = 0; - } - } - else if (((u32)p->data & 0xF0000000) == 0x20000000) // Ezyyvvvv 2aaaaaaa - { - u8 z = ((u32)p->addr & 0x0F000000) / 0x01000000; - - if (z == 0) // E0yyvvvv 2aaaaaaa - { - u16 mem = memRead16((u32)p->data & 0x0FFFFFFF); - if (mem >= (0x0000FFFF & (u32)p->addr)) - { - SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; - } - PrevCheatType = 0; - } - else if (z == 1) // E1yy00vv 2aaaaaaa - { - u8 mem = memRead8((u32)p->data & 0x0FFFFFFF); - if (mem >= (0x000000FF & (u32)p->addr)) - { - SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; - } - PrevCheatType = 0; - } - } - else if (((u32)p->data & 0xF0000000) == 0x30000000) // Ezyyvvvv 3aaaaaaa - { - u8 z = ((u32)p->addr & 0x0F000000) / 0x01000000; - - if (z == 0) // E0yyvvvv 3aaaaaaa - { - u16 mem = memRead16((u32)p->data & 0x0FFFFFFF); - if (mem <= (0x0000FFFF & (u32)p->addr)) - { - SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; - } - PrevCheatType = 0; - } - else if (z == 1) // E1yy00vv 3aaaaaaa - { - u8 mem = memRead8((u32)p->data & 0x0FFFFFFF); - if (mem <= (0x000000FF & (u32)p->addr)) - { - SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; - } - PrevCheatType = 0; - } - } - } - } -} - -void _ApplyPatch(IniPatch *p) -{ - if (p->enabled == 0) return; - - switch (p->cpu) - { - case CPU_EE: - switch (p->type) - { - case BYTE_T: - if (memRead8(p->addr) != (u8)p->data) - memWrite8(p->addr, (u8)p->data); - break; - - case SHORT_T: - if (memRead16(p->addr) != (u16)p->data) - memWrite16(p->addr, (u16)p->data); - break; - - case WORD_T: - if (memRead32(p->addr) != (u32)p->data) - memWrite32(p->addr, (u32)p->data); - break; - - case DOUBLE_T: - u64 mem; - memRead64(p->addr, &mem); - if (mem != p->data) - memWrite64(p->addr, &p->data); - break; - - case EXTENDED_T: - handle_extended_t(p); - break; - - default: - break; - } - break; - - case CPU_IOP: - switch (p->type) - { - case BYTE_T: - if (iopMemRead8(p->addr) != (u8)p->data) - iopMemWrite8(p->addr, (u8)p->data); - break; - case SHORT_T: - if (iopMemRead16(p->addr) != (u16)p->data) - iopMemWrite16(p->addr, (u16)p->data); - break; - case WORD_T: - if (iopMemRead32(p->addr) != (u32)p->data) - iopMemWrite32(p->addr, (u32)p->data); - break; - default: - break; - } - break; - - default: - break; - } -} +/* PCSX2 - PS2 Emulator for PCs + * Copyright (C) 2002-2010 PCSX2 Dev Team + * + * PCSX2 is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * PCSX2 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 PCSX2. + * If not, see . + */ + +#include "PrecompiledHeader.h" + +#define _PC_ // disables MIPS opcode macros. + +#include "IopCommon.h" +#include "Patch.h" + +u32 SkipCount = 0, IterationCount = 0; +u32 IterationIncrement = 0, ValueIncrement = 0; +u32 PrevCheatType = 0, PrevCheatAddr = 0, LastType = 0; + +void writeCheat() +{ + switch (LastType) + { + case 0x0: + memWrite8(PrevCheatAddr, IterationIncrement & 0xFF); + break; + case 0x1: + memWrite16(PrevCheatAddr, IterationIncrement & 0xFFFF); + break; + case 0x2: + memWrite32(PrevCheatAddr, IterationIncrement); + break; + default: + break; + } +} + +void handle_extended_t(IniPatch *p) +{ + if (SkipCount > 0) + { + SkipCount--; + } + else switch (PrevCheatType) + { + case 0x3040: // vvvvvvvv 00000000 Inc + { + u32 mem = memRead32(PrevCheatAddr); + memWrite32(PrevCheatAddr, mem + (p->addr)); + PrevCheatType = 0; + break; + } + + case 0x3050: // vvvvvvvv 00000000 Dec + { + u32 mem = memRead32(PrevCheatAddr); + memWrite32(PrevCheatAddr, mem - (p->addr)); + PrevCheatType = 0; + break; + } + + case 0x4000: // vvvvvvvv iiiiiiii + for (u32 i = 0; i < IterationCount; i++) + { + memWrite32((u32)(PrevCheatAddr + (i * IterationIncrement)), (u32)(p->addr + ((u32)p->data * i))); + } + PrevCheatType = 0; + break; + + case 0x5000: // dddddddd iiiiiiii + for (u32 i = 0; i < IterationCount; i++) + { + u8 mem = memRead8(PrevCheatAddr + i); + memWrite8(((u32)p->data) + i, mem); + } + PrevCheatType = 0; + break; + + case 0x6000: // 000Xnnnn iiiiiiii + if (IterationIncrement == 0x0) + { + //LastType = ((u32)p->addr & 0x000F0000) >> 16; + u32 mem = memRead32(PrevCheatAddr); + if ((u32)p->addr < 0x100) + { + LastType = 0x0; + PrevCheatAddr = mem + ((u32)p->addr); + } + else if ((u32)p->addr < 0x1000) + { + LastType = 0x1; + PrevCheatAddr = mem + ((u32)p->addr * 2); + } + else + { + LastType = 0x2; + PrevCheatAddr = mem + ((u32)p->addr * 4); + } + + // Check if needed to read another pointer + PrevCheatType = 0; + if (((mem & 0x0FFFFFFF) & 0x3FFFFFFC) != 0) + { + switch (LastType) + { + case 0x0: + memWrite8(PrevCheatAddr, (u8)p->data & 0xFF); + break; + case 0x1: + memWrite16(PrevCheatAddr, (u16)p->data & 0x0FFFF); + break; + case 0x2: + memWrite32(PrevCheatAddr, (u32)p->data); + break; + default: + break; + } + } + } + else + { + // Get Number of pointers + if (((u32)p->addr & 0x0000FFFF) == 0) + IterationCount = 1; + else + IterationCount = (u32)p->addr & 0x0000FFFF; + + // Read first pointer + LastType = ((u32)p->addr & 0x000F0000) >> 16; + u32 mem = memRead32(PrevCheatAddr); + + PrevCheatAddr = mem + (u32)p->data; + IterationCount--; + + // Check if needed to read another pointer + if (IterationCount == 0) + { + PrevCheatType = 0; + if (((mem & 0x0FFFFFFF) & 0x3FFFFFFC) != 0) writeCheat(); + } + else + { + if (((mem & 0x0FFFFFFF) & 0x3FFFFFFC) != 0) + PrevCheatType = 0; + else + PrevCheatType = 0x6001; + } + } + break; + + case 0x6001: // 000Xnnnn iiiiiiii + { + // Read first pointer + u32 mem = memRead32(PrevCheatAddr & 0x0FFFFFFF); + + PrevCheatAddr = mem + (u32)p->addr; + IterationCount--; + + // Check if needed to read another pointer + if (IterationCount == 0) + { + PrevCheatType = 0; + if (((mem & 0x0FFFFFFF) & 0x3FFFFFFC) != 0) writeCheat(); + } + else + { + mem = memRead32(PrevCheatAddr); + + PrevCheatAddr = mem + (u32)p->data; + IterationCount--; + if (IterationCount == 0) + { + PrevCheatType = 0; + if (((mem & 0x0FFFFFFF) & 0x3FFFFFFC) != 0) writeCheat(); + } + } + } + break; + + default: + if ((p->addr & 0xF0000000) == 0x00000000) // 0aaaaaaa 0000000vv + { + memWrite8(p->addr & 0x0FFFFFFF, (u8)p->data & 0x000000FF); + PrevCheatType = 0; + } + else if ((p->addr & 0xF0000000) == 0x10000000) // 1aaaaaaa 0000vvvv + { + memWrite16(p->addr & 0x0FFFFFFF, (u16)p->data & 0x0000FFFF); + PrevCheatType = 0; + } + else if ((p->addr & 0xF0000000) == 0x20000000) // 2aaaaaaa vvvvvvvv + { + memWrite32(p->addr & 0x0FFFFFFF, (u32)p->data); + PrevCheatType = 0; + } + else if ((p->addr & 0xFFFF0000) == 0x30000000) // 300000vv 0aaaaaaa Inc + { + u8 mem = memRead8((u32)p->data); + memWrite8((u32)p->data, mem + (p->addr & 0x000000FF)); + PrevCheatType = 0; + } + else if ((p->addr & 0xFFFF0000) == 0x30100000) // 301000vv 0aaaaaaa Dec + { + u8 mem = memRead8((u32)p->data); + memWrite8((u32)p->data, mem - (p->addr & 0x000000FF)); + PrevCheatType = 0; + } + else if ((p->addr & 0xFFFF0000) == 0x30200000) // 3020vvvv 0aaaaaaa Inc + { + u16 mem = memRead16((u32)p->data); + memWrite16((u32)p->data, mem + (p->addr & 0x0000FFFF)); + PrevCheatType = 0; + } + else if ((p->addr & 0xFFFF0000) == 0x30300000) // 3030vvvv 0aaaaaaa Dec + { + u16 mem = memRead16((u32)p->data); + memWrite16((u32)p->data, mem - (p->addr & 0x0000FFFF)); + PrevCheatType = 0; + } + else if ((p->addr & 0xFFFF0000) == 0x30400000) // 30400000 0aaaaaaa Inc + Another line + { + PrevCheatType = 0x3040; + PrevCheatAddr = (u32)p->data; + } + else if ((p->addr & 0xFFFF0000) == 0x30500000) // 30500000 0aaaaaaa Inc + Another line + { + PrevCheatType = 0x3050; + PrevCheatAddr = (u32)p->data; + } + else if ((p->addr & 0xF0000000) == 0x40000000) // 4aaaaaaa nnnnssss + Another line + { + IterationCount = ((u32)p->data & 0xFFFF0000) / 0x10000; + IterationIncrement = ((u32)p->data & 0x0000FFFF) * 4; + PrevCheatAddr = (u32)p->addr & 0x0FFFFFFF; + PrevCheatType = 0x4000; + } + else if ((p->addr & 0xF0000000) == 0x50000000) // 5sssssss nnnnnnnn + Another line + { + PrevCheatAddr = (u32)p->addr & 0x0FFFFFFF; + IterationCount = ((u32)p->data); + PrevCheatType = 0x5000; + } + else if ((p->addr & 0xF0000000) == 0x60000000) // 6aaaaaaa 000000vv + Another line/s + { + PrevCheatAddr = (u32)p->addr & 0x0FFFFFFF; + IterationIncrement = ((u32)p->data); + IterationCount = 0; + PrevCheatType = 0x6000; + } + else if ((p->addr & 0xF0000000) == 0x70000000) + { + if ((p->data & 0x00F00000) == 0x00000000) // 7aaaaaaa 000000vv + { + u8 mem = memRead8((u32)p->addr & 0x0FFFFFFF); + memWrite8((u32)p->addr & 0x0FFFFFFF, (u8)(mem | (p->data & 0x000000FF))); + } + else if ((p->data & 0x00F00000) == 0x00100000) // 7aaaaaaa 0010vvvv + { + u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); + memWrite16((u32)p->addr & 0x0FFFFFFF, (u16)(mem | (p->data & 0x0000FFFF))); + } + else if ((p->data & 0x00F00000) == 0x00200000) // 7aaaaaaa 002000vv + { + u8 mem = memRead8((u32)p->addr & 0x0FFFFFFF); + memWrite8((u32)p->addr & 0x0FFFFFFF, (u8)(mem & (p->data & 0x000000FF))); + } + else if ((p->data & 0x00F00000) == 0x00300000) // 7aaaaaaa 0030vvvv + { + u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); + memWrite16((u32)p->addr & 0x0FFFFFFF, (u16)(mem & (p->data & 0x0000FFFF))); + } + else if ((p->data & 0x00F00000) == 0x00400000) // 7aaaaaaa 004000vv + { + u8 mem = memRead8((u32)p->addr & 0x0FFFFFFF); + memWrite8((u32)p->addr & 0x0FFFFFFF, (u8)(mem ^ (p->data & 0x000000FF))); + } + else if ((p->data & 0x00F00000) == 0x00500000) // 7aaaaaaa 0050vvvv + { + u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); + memWrite16((u32)p->addr & 0x0FFFFFFF, (u16)(mem ^ (p->data & 0x0000FFFF))); + } + } + else if (p->addr < 0xE0000000) + { + if (((u32)p->data & 0xFFFF0000) == 0x00000000) // Daaaaaaa 0000dddd + { + u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); + if (mem != (0x0000FFFF & (u32)p->data)) + { + SkipCount = 1; + } + PrevCheatType = 0; + } + else if (((u32)p->data & 0xFFFF0000) == 0x00100000) // Daaaaaaa 0010dddd + { + u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); + if (mem == (0x0000FFFF & (u32)p->data)) + { + SkipCount = 1; + } + PrevCheatType = 0; + } + else if (((u32)p->data & 0xFFFF0000) == 0x00200000) // Daaaaaaa 0020dddd + { + u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); + if (mem >= (0x0000FFFF & (u32)p->data)) + { + SkipCount = 1; + } + PrevCheatType = 0; + } + else if (((u32)p->data & 0xFFFF0000) == 0x00300000) // Daaaaaaa 0030dddd + { + u16 mem = memRead16((u32)p->addr & 0x0FFFFFFF); + if (mem <= (0x0000FFFF & (u32)p->data)) + { + SkipCount = 1; + } + PrevCheatType = 0; + } + } + else if (p->addr < 0xF0000000) + { + if (((u32)p->data & 0xF0000000) == 0x00000000) // Ezyyvvvv 0aaaaaaa + { + u8 z = ((u32)p->addr & 0x0F000000) / 0x01000000; + + if (z == 0) // E0yyvvvv 0aaaaaaa + { + u16 mem = memRead16((u32)p->data & 0x0FFFFFFF); + if (mem != (0x0000FFFF & (u32)p->addr)) + { + SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; + } + PrevCheatType = 0; + } + else if (z == 1) // E1yy00vv 0aaaaaaa + { + u8 mem = memRead8((u32)p->data & 0x0FFFFFFF); + if (mem != (0x000000FF & (u32)p->addr)) + { + SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; + } + PrevCheatType = 0; + } + } + else if (((u32)p->data & 0xF0000000) == 0x10000000) // Ezyyvvvv 1aaaaaaa + { + u8 z = ((u32)p->addr & 0x0F000000) / 0x01000000; + + if (z == 0) // E0yyvvvv 1aaaaaaa + { + u16 mem = memRead16((u32)p->data & 0x0FFFFFFF); + if (mem == (0x0000FFFF & (u32)p->addr)) + { + SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; + } + PrevCheatType = 0; + } + else if (z == 1) // E1yy00vv 1aaaaaaa + { + u8 mem = memRead8((u32)p->data & 0x0FFFFFFF); + if (mem == (0x000000FF & (u32)p->addr)) + { + SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; + } + PrevCheatType = 0; + } + } + else if (((u32)p->data & 0xF0000000) == 0x20000000) // Ezyyvvvv 2aaaaaaa + { + u8 z = ((u32)p->addr & 0x0F000000) / 0x01000000; + + if (z == 0) // E0yyvvvv 2aaaaaaa + { + u16 mem = memRead16((u32)p->data & 0x0FFFFFFF); + if (mem >= (0x0000FFFF & (u32)p->addr)) + { + SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; + } + PrevCheatType = 0; + } + else if (z == 1) // E1yy00vv 2aaaaaaa + { + u8 mem = memRead8((u32)p->data & 0x0FFFFFFF); + if (mem >= (0x000000FF & (u32)p->addr)) + { + SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; + } + PrevCheatType = 0; + } + } + else if (((u32)p->data & 0xF0000000) == 0x30000000) // Ezyyvvvv 3aaaaaaa + { + u8 z = ((u32)p->addr & 0x0F000000) / 0x01000000; + + if (z == 0) // E0yyvvvv 3aaaaaaa + { + u16 mem = memRead16((u32)p->data & 0x0FFFFFFF); + if (mem <= (0x0000FFFF & (u32)p->addr)) + { + SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; + } + PrevCheatType = 0; + } + else if (z == 1) // E1yy00vv 3aaaaaaa + { + u8 mem = memRead8((u32)p->data & 0x0FFFFFFF); + if (mem <= (0x000000FF & (u32)p->addr)) + { + SkipCount = ((u32)p->addr & 0x00FF0000) / 0x10000; + } + PrevCheatType = 0; + } + } + } + } +} + +void _ApplyPatch(IniPatch *p) +{ + if (p->enabled == 0) return; + + switch (p->cpu) + { + case CPU_EE: + switch (p->type) + { + case BYTE_T: + if (memRead8(p->addr) != (u8)p->data) + memWrite8(p->addr, (u8)p->data); + break; + + case SHORT_T: + if (memRead16(p->addr) != (u16)p->data) + memWrite16(p->addr, (u16)p->data); + break; + + case WORD_T: + if (memRead32(p->addr) != (u32)p->data) + memWrite32(p->addr, (u32)p->data); + break; + + case DOUBLE_T: + u64 mem; + memRead64(p->addr, &mem); + if (mem != p->data) + memWrite64(p->addr, &p->data); + break; + + case EXTENDED_T: + handle_extended_t(p); + break; + + default: + break; + } + break; + + case CPU_IOP: + switch (p->type) + { + case BYTE_T: + if (iopMemRead8(p->addr) != (u8)p->data) + iopMemWrite8(p->addr, (u8)p->data); + break; + case SHORT_T: + if (iopMemRead16(p->addr) != (u16)p->data) + iopMemWrite16(p->addr, (u16)p->data); + break; + case WORD_T: + if (iopMemRead32(p->addr) != (u32)p->data) + iopMemWrite32(p->addr, (u32)p->data); + break; + default: + break; + } + break; + + default: + break; + } +} diff --git a/pcsx2/RDebug/deci2.txt b/pcsx2/RDebug/deci2.txt index 8cf7221c99..cec342f166 100644 --- a/pcsx2/RDebug/deci2.txt +++ b/pcsx2/RDebug/deci2.txt @@ -1,27 +1,27 @@ -pcsx2 log->debugger tty mapping -ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÑÍÍÍÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ -Bios ³EE³ 0 ³IOP³ Bios ³ -CPU & MMI & COP0 & FPU ³EE³ 1 ³IOP³ IOP cpu ³ -VU0 & VUMicro ³EE³ 2 ³IOP³ HW ³ -VIF ³EE³ 3 ³IOP³ GTE ³ -GIF ³EE³ 4 ³IOP³ GPU ³ -DMA ³EE³ 5 ³IOP³ DMA ³ -HW & Unknown Memory ³EE³ 6 ³IOP³ Unknown Memory ³ -ELF & Scratch pad ³EE³ 7 ³IOP³ PAD ³ -IPU ³EE³ 8 ³IOP³ CDR ³ -SIF & RPC services ³EE³ 9 ³IOP³ ³ - ³ ³ ³ ³ ³ -SysMessage ³EE³Kernel³IOP³ SysMessage ³ -ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÁÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ -PRODG: 230,130, 120,121,122,110-119,11F,210-219,21F,410 -CW: 230,130,150,120,121, 210-219,21F,110-119,11F - -0400 PROTO_NETMP -0001 PROTO_DCMP - PROTO_MTWKS -012? PROTO_DRFP (%s) -0230 PROTO_ESDBG -0130 PROTO_ISDBG -011? PROTO_I%dTTY -021? PROTO_E%dTTY - +pcsx2 log->debugger tty mapping +ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÑÍÍÍÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +Bios ³EE³ 0 ³IOP³ Bios ³ +CPU & MMI & COP0 & FPU ³EE³ 1 ³IOP³ IOP cpu ³ +VU0 & VUMicro ³EE³ 2 ³IOP³ HW ³ +VIF ³EE³ 3 ³IOP³ GTE ³ +GIF ³EE³ 4 ³IOP³ GPU ³ +DMA ³EE³ 5 ³IOP³ DMA ³ +HW & Unknown Memory ³EE³ 6 ³IOP³ Unknown Memory ³ +ELF & Scratch pad ³EE³ 7 ³IOP³ PAD ³ +IPU ³EE³ 8 ³IOP³ CDR ³ +SIF & RPC services ³EE³ 9 ³IOP³ ³ + ³ ³ ³ ³ ³ +SysMessage ³EE³Kernel³IOP³ SysMessage ³ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÁÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +PRODG: 230,130, 120,121,122,110-119,11F,210-219,21F,410 +CW: 230,130,150,120,121, 210-219,21F,110-119,11F + +0400 PROTO_NETMP +0001 PROTO_DCMP + PROTO_MTWKS +012? PROTO_DRFP (%s) +0230 PROTO_ESDBG +0130 PROTO_ISDBG +011? PROTO_I%dTTY +021? PROTO_E%dTTY + diff --git a/pcsx2/RDebug/iloadp.txt b/pcsx2/RDebug/iloadp.txt index c8b6c68834..9bb751f8e6 100644 --- a/pcsx2/RDebug/iloadp.txt +++ b/pcsx2/RDebug/iloadp.txt @@ -1,32 +1,32 @@ -ILOADP_MODULE_INFO{ - u16 flags ÄÄÄÄ¿ <ÄÄÄ¿ - u16 version <ÄÄÄÙ ÄÄÄÄÙ - u32 addr - u32 sz_text - u32 sz_data - u32 sz_bss - u32 reserved1 - u32 reserved2 - u32 reserved3 - u8* name -}; - -ILOADP_HDR{ - u8 cmd - u8 action - u8 result - u8 stamp - u32 module_id -}; - -ILOADP_START(cmd==00) ------------------------------------------- -ILOADP_HDR_START{ - ILOADP_HDR hdr //+00 - u8* modulename //+10 //asciiz -}; //=10+strlen(modulename)+1 -action 0D(IOP_LOAD_IRX) -modulename host:E:\TEMP2\GCC\share\SIO2D.IRX - -action 02(IOP_RUN) -modulename E:\TEMP2\GCC\share\SIO2D.IRX param +ILOADP_MODULE_INFO{ + u16 flags ÄÄÄÄ¿ <ÄÄÄ¿ + u16 version <ÄÄÄÙ ÄÄÄÄÙ + u32 addr + u32 sz_text + u32 sz_data + u32 sz_bss + u32 reserved1 + u32 reserved2 + u32 reserved3 + u8* name +}; + +ILOADP_HDR{ + u8 cmd + u8 action + u8 result + u8 stamp + u32 module_id +}; + +ILOADP_START(cmd==00) +------------------------------------------ +ILOADP_HDR_START{ + ILOADP_HDR hdr //+00 + u8* modulename //+10 //asciiz +}; //=10+strlen(modulename)+1 +action 0D(IOP_LOAD_IRX) +modulename host:E:\TEMP2\GCC\share\SIO2D.IRX + +action 02(IOP_RUN) +modulename E:\TEMP2\GCC\share\SIO2D.IRX param diff --git a/pcsx2/Utilities/folderdesc.txt b/pcsx2/Utilities/folderdesc.txt index 50ca5c8dd4..06d7ebae36 100644 --- a/pcsx2/Utilities/folderdesc.txt +++ b/pcsx2/Utilities/folderdesc.txt @@ -1,7 +1,7 @@ -Folder: pcsx2/Utilities -Purpose: To hold general non-pcsx2-specific utility classes which may (or may not) be shared out into a - common folder at a later date. This includes unicode utils, file manipulators, threading, etc. - -Details: I plan to move files into this folder here ont he wxGui branch over time, and then move the - whole lot over to common as a whole library of sorts. I thinkit'll be easier that way than trying +Folder: pcsx2/Utilities +Purpose: To hold general non-pcsx2-specific utility classes which may (or may not) be shared out into a + common folder at a later date. This includes unicode utils, file manipulators, threading, etc. + +Details: I plan to move files into this folder here ont he wxGui branch over time, and then move the + whole lot over to common as a whole library of sorts. I thinkit'll be easier that way than trying to piecemeal individual files over (especially since some of them have inter-dependencies) \ No newline at end of file diff --git a/pcsx2/windows/FlatFileReaderWindows.cpp b/pcsx2/windows/FlatFileReaderWindows.cpp index f08cea6d4c..aa7d163fc1 100644 --- a/pcsx2/windows/FlatFileReaderWindows.cpp +++ b/pcsx2/windows/FlatFileReaderWindows.cpp @@ -1,126 +1,126 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2014 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 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 PCSX2. - * If not, see . - */ - -#include "PrecompiledHeader.h" -#include "AsyncFileReader.h" - -FlatFileReader::FlatFileReader(bool shareWrite) : shareWrite(shareWrite) -{ - m_blocksize = 2048; - hOverlappedFile = INVALID_HANDLE_VALUE; - hEvent = INVALID_HANDLE_VALUE; - asyncInProgress = false; -} - -FlatFileReader::~FlatFileReader(void) -{ - Close(); -} - -bool FlatFileReader::Open(const wxString& fileName) -{ - m_filename = fileName; - - hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); - - DWORD shareMode = FILE_SHARE_READ; - if (shareWrite) - shareMode |= FILE_SHARE_WRITE; - - hOverlappedFile = CreateFile( - fileName, - GENERIC_READ, - shareMode, - NULL, - OPEN_EXISTING, - FILE_FLAG_SEQUENTIAL_SCAN | FILE_FLAG_OVERLAPPED, - NULL); - - return hOverlappedFile != INVALID_HANDLE_VALUE; -} - -int FlatFileReader::ReadSync(void* pBuffer, uint sector, uint count) -{ - //LARGE_INTEGER offset; - //offset.QuadPart = sector * (__int64)m_blocksize; - // - //DWORD bytesToRead = count * m_blocksize; - //DWORD bytes; - - //if(!ReadFile(hOverlappedFile, pBuffer, bytesToRead, &bytes, NULL)) - // return -1; - - //return bytes; - BeginRead(pBuffer, sector, count); - return FinishRead(); -} - -void FlatFileReader::BeginRead(void* pBuffer, uint sector, uint count) -{ - LARGE_INTEGER offset; - offset.QuadPart = sector * (s64)m_blocksize + m_dataoffset; - - DWORD bytesToRead = count * m_blocksize; - - ZeroMemory(&asyncOperationContext, sizeof(asyncOperationContext)); - asyncOperationContext.hEvent = hEvent; - asyncOperationContext.Offset = offset.LowPart; - asyncOperationContext.OffsetHigh = offset.HighPart; - - ReadFile(hOverlappedFile, pBuffer, bytesToRead, NULL, &asyncOperationContext); - asyncInProgress = true; -} - -int FlatFileReader::FinishRead(void) -{ - DWORD bytes; - - if(!GetOverlappedResult(hOverlappedFile, &asyncOperationContext, &bytes, TRUE)) - { - asyncInProgress = false; - return -1; - } - - asyncInProgress = false; - return bytes; -} - -void FlatFileReader::CancelRead(void) -{ - CancelIo(hOverlappedFile); -} - -void FlatFileReader::Close(void) -{ - if(asyncInProgress) - CancelRead(); - - if(hOverlappedFile != INVALID_HANDLE_VALUE) - CloseHandle(hOverlappedFile); - - if(hEvent != INVALID_HANDLE_VALUE) - CloseHandle(hEvent); - - hOverlappedFile = INVALID_HANDLE_VALUE; - hEvent = INVALID_HANDLE_VALUE; -} - -uint FlatFileReader::GetBlockCount(void) const -{ - LARGE_INTEGER fileSize; - fileSize.LowPart = GetFileSize(hOverlappedFile, (DWORD*)&(fileSize.HighPart)); - - return (int)(fileSize.QuadPart / m_blocksize); -} +/* PCSX2 - PS2 Emulator for PCs + * Copyright (C) 2002-2014 PCSX2 Dev Team + * + * PCSX2 is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * PCSX2 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 PCSX2. + * If not, see . + */ + +#include "PrecompiledHeader.h" +#include "AsyncFileReader.h" + +FlatFileReader::FlatFileReader(bool shareWrite) : shareWrite(shareWrite) +{ + m_blocksize = 2048; + hOverlappedFile = INVALID_HANDLE_VALUE; + hEvent = INVALID_HANDLE_VALUE; + asyncInProgress = false; +} + +FlatFileReader::~FlatFileReader(void) +{ + Close(); +} + +bool FlatFileReader::Open(const wxString& fileName) +{ + m_filename = fileName; + + hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); + + DWORD shareMode = FILE_SHARE_READ; + if (shareWrite) + shareMode |= FILE_SHARE_WRITE; + + hOverlappedFile = CreateFile( + fileName, + GENERIC_READ, + shareMode, + NULL, + OPEN_EXISTING, + FILE_FLAG_SEQUENTIAL_SCAN | FILE_FLAG_OVERLAPPED, + NULL); + + return hOverlappedFile != INVALID_HANDLE_VALUE; +} + +int FlatFileReader::ReadSync(void* pBuffer, uint sector, uint count) +{ + //LARGE_INTEGER offset; + //offset.QuadPart = sector * (__int64)m_blocksize; + // + //DWORD bytesToRead = count * m_blocksize; + //DWORD bytes; + + //if(!ReadFile(hOverlappedFile, pBuffer, bytesToRead, &bytes, NULL)) + // return -1; + + //return bytes; + BeginRead(pBuffer, sector, count); + return FinishRead(); +} + +void FlatFileReader::BeginRead(void* pBuffer, uint sector, uint count) +{ + LARGE_INTEGER offset; + offset.QuadPart = sector * (s64)m_blocksize + m_dataoffset; + + DWORD bytesToRead = count * m_blocksize; + + ZeroMemory(&asyncOperationContext, sizeof(asyncOperationContext)); + asyncOperationContext.hEvent = hEvent; + asyncOperationContext.Offset = offset.LowPart; + asyncOperationContext.OffsetHigh = offset.HighPart; + + ReadFile(hOverlappedFile, pBuffer, bytesToRead, NULL, &asyncOperationContext); + asyncInProgress = true; +} + +int FlatFileReader::FinishRead(void) +{ + DWORD bytes; + + if(!GetOverlappedResult(hOverlappedFile, &asyncOperationContext, &bytes, TRUE)) + { + asyncInProgress = false; + return -1; + } + + asyncInProgress = false; + return bytes; +} + +void FlatFileReader::CancelRead(void) +{ + CancelIo(hOverlappedFile); +} + +void FlatFileReader::Close(void) +{ + if(asyncInProgress) + CancelRead(); + + if(hOverlappedFile != INVALID_HANDLE_VALUE) + CloseHandle(hOverlappedFile); + + if(hEvent != INVALID_HANDLE_VALUE) + CloseHandle(hEvent); + + hOverlappedFile = INVALID_HANDLE_VALUE; + hEvent = INVALID_HANDLE_VALUE; +} + +uint FlatFileReader::GetBlockCount(void) const +{ + LARGE_INTEGER fileSize; + fileSize.LowPart = GetFileSize(hOverlappedFile, (DWORD*)&(fileSize.HighPart)); + + return (int)(fileSize.QuadPart / m_blocksize); +} diff --git a/pcsx2/windows/VCprojects/pcsx2.props b/pcsx2/windows/VCprojects/pcsx2.props index 016d1b6801..519536d06a 100644 --- a/pcsx2/windows/VCprojects/pcsx2.props +++ b/pcsx2/windows/VCprojects/pcsx2.props @@ -1,23 +1,23 @@ - - - - - <_PropertySheetDisplayName>pcsx2 - - - - Use - PrecompiledHeader.h - ..;../..;../libs;../../x86;../../IPU;%(AdditionalIncludeDirectories) - Async - - - ..\libs;%(AdditionalLibraryDirectories) - gnu_gettext.lib;w32pthreads.lib;zlib.lib;comctl32.lib;ws2_32.lib;winmm.lib;%(AdditionalDependencies) - - - "$(SolutionDir)common\vsprops\preBuild.cmd" "$(ProjectDir)..\.." - - - + + + + + <_PropertySheetDisplayName>pcsx2 + + + + Use + PrecompiledHeader.h + ..;../..;../libs;../../x86;../../IPU;%(AdditionalIncludeDirectories) + Async + + + ..\libs;%(AdditionalLibraryDirectories) + gnu_gettext.lib;w32pthreads.lib;zlib.lib;comctl32.lib;ws2_32.lib;winmm.lib;%(AdditionalDependencies) + + + "$(SolutionDir)common\vsprops\preBuild.cmd" "$(ProjectDir)..\.." + + + \ No newline at end of file diff --git a/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj b/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj index 43450f32d8..e4d5840cbe 100644 --- a/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj +++ b/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj @@ -1,952 +1,952 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - pcsx2 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD} - pcsx2 - - - - Application - false - Unicode - true - v110_xp - - - Application - false - Unicode - false - v110_xp - - - Application - false - Unicode - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName)-dev - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Debug/pcsx2.tlb - - - $(ProjectRootDir)/gui;%(AdditionalIncludeDirectories) - Async - Use - PrecompiledHeader.h - CompileAsCpp - NoExtensions - - - zlib-dbg.lib;rpcrt4.lib;%(AdditionalDependencies) - $(OutDir)$(ProjectName)-dbg.exe - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Release/pcsx2.tlb - - - $(ProjectRootDir)/gui;%(AdditionalIncludeDirectories) - NDEBUG;%(PreprocessorDefinitions) - Async - Use - PrecompiledHeader.h - Level3 - CompileAsCpp - NoExtensions - - - zlib-dev.lib;rpcrt4.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Release/pcsx2.tlb - - - $(ProjectRootDir)/gui;%(AdditionalIncludeDirectories) - NDEBUG;%(PreprocessorDefinitions) - Async - NoExtensions - Use - PrecompiledHeader.h - CompileAsCpp - - - zlib.lib;rpcrt4.lib;%(AdditionalDependencies) - $(TargetDir)$(TargetName).pdb - - - - - Document - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - %(RootDir)%(Directory)\%(Filename).h - %(RootDir)%(Directory)\%(Filename).h - %(RootDir)%(Directory)\%(Filename).h - - - - - - - - - - - - - - - - - - - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - - %(RootDir)%(Directory)\%(Filename).h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - - - - - - - - - - - - - - - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - - - true - ..\Win32.h - $(IntDir)win32.pch - true - ..\Win32.h - $(IntDir)win32.pch - true - - - true - ..\Win32.h - $(IntDir)win32.pch - true - ..\Win32.h - $(IntDir)win32.pch - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(SolutionDir)\3rdparty\wxwidgets3.0\$(PlatformName);$(SolutionDir)\3rdparty\wxwidgets3.0\include;%(AdditionalIncludeDirectories) - $(SolutionDir)\3rdparty\wxwidgets3.0\$(PlatformName);$(SolutionDir)\3rdparty\wxwidgets3.0\include;%(AdditionalIncludeDirectories) - $(SolutionDir)\3rdparty\wxwidgets3.0\$(PlatformName);$(SolutionDir)\3rdparty\wxwidgets3.0\include;%(AdditionalIncludeDirectories) - - - - - - {26511268-2902-4997-8421-ecd7055f9e28} - false - - - {7e9b2be7-cec3-4f14-847b-0ab8d562fb86} - false - - - {24c45343-fd20-5c92-81c1-35a2ae841e79} - - - {3fcc50c2-81e9-5db2-b8d8-2129427568b1} - - - {6744dad8-9c70-574a-bff2-9f8dddb24a75} - - - {2f6c0388-20cb-4242-9f6c-a6ebb6a83f47} - false - - - {4639972e-424e-4e13-8b07-ca403c481346} - false - - - {a51123f5-9505-4eae-85e7-d320290a272c} - false - - - {677b7d11-d5e1-40b3-88b1-9a4df83d2213} - false - - - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - %(RootDir)%(Directory)\%(Filename).h - %(RootDir)%(Directory)\%(Filename).h - %(RootDir)%(Directory)\%(Filename).h - - - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) - %(RootDir)%(Directory)\%(Filename).h - %(RootDir)%(Directory)\%(Filename).h - %(RootDir)%(Directory)\%(Filename).h - - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + pcsx2 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD} + pcsx2 + + + + Application + false + Unicode + true + v110_xp + + + Application + false + Unicode + false + v110_xp + + + Application + false + Unicode + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)-dev + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/pcsx2.tlb + + + $(ProjectRootDir)/gui;%(AdditionalIncludeDirectories) + Async + Use + PrecompiledHeader.h + CompileAsCpp + NoExtensions + + + zlib-dbg.lib;rpcrt4.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName)-dbg.exe + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/pcsx2.tlb + + + $(ProjectRootDir)/gui;%(AdditionalIncludeDirectories) + NDEBUG;%(PreprocessorDefinitions) + Async + Use + PrecompiledHeader.h + Level3 + CompileAsCpp + NoExtensions + + + zlib-dev.lib;rpcrt4.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/pcsx2.tlb + + + $(ProjectRootDir)/gui;%(AdditionalIncludeDirectories) + NDEBUG;%(PreprocessorDefinitions) + Async + NoExtensions + Use + PrecompiledHeader.h + CompileAsCpp + + + zlib.lib;rpcrt4.lib;%(AdditionalDependencies) + $(TargetDir)$(TargetName).pdb + + + + + Document + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + %(RootDir)%(Directory)\%(Filename).h + %(RootDir)%(Directory)\%(Filename).h + %(RootDir)%(Directory)\%(Filename).h + + + + + + + + + + + + + + + + + + + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + + %(RootDir)%(Directory)\%(Filename).h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + + + + + + + + + + + + + + + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + + + true + ..\Win32.h + $(IntDir)win32.pch + true + ..\Win32.h + $(IntDir)win32.pch + true + + + true + ..\Win32.h + $(IntDir)win32.pch + true + ..\Win32.h + $(IntDir)win32.pch + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)\3rdparty\wxwidgets3.0\$(PlatformName);$(SolutionDir)\3rdparty\wxwidgets3.0\include;%(AdditionalIncludeDirectories) + $(SolutionDir)\3rdparty\wxwidgets3.0\$(PlatformName);$(SolutionDir)\3rdparty\wxwidgets3.0\include;%(AdditionalIncludeDirectories) + $(SolutionDir)\3rdparty\wxwidgets3.0\$(PlatformName);$(SolutionDir)\3rdparty\wxwidgets3.0\include;%(AdditionalIncludeDirectories) + + + + + + {26511268-2902-4997-8421-ecd7055f9e28} + false + + + {7e9b2be7-cec3-4f14-847b-0ab8d562fb86} + false + + + {24c45343-fd20-5c92-81c1-35a2ae841e79} + + + {3fcc50c2-81e9-5db2-b8d8-2129427568b1} + + + {6744dad8-9c70-574a-bff2-9f8dddb24a75} + + + {2f6c0388-20cb-4242-9f6c-a6ebb6a83f47} + false + + + {4639972e-424e-4e13-8b07-ca403c481346} + false + + + {a51123f5-9505-4eae-85e7-d320290a272c} + false + + + {677b7d11-d5e1-40b3-88b1-9a4df83d2213} + false + + + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + %(RootDir)%(Directory)\%(Filename).h + %(RootDir)%(Directory)\%(Filename).h + %(RootDir)%(Directory)\%(Filename).h + + + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + cmd.exe /c "%(RootDir)%(Directory)\bin2cpp.cmd" %(Filename)%(Extension) + %(RootDir)%(Directory)\%(Filename).h + %(RootDir)%(Directory)\%(Filename).h + %(RootDir)%(Directory)\%(Filename).h + + + + + + \ No newline at end of file diff --git a/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj.filters b/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj.filters index fd396153b3..99ee1b416d 100644 --- a/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj.filters +++ b/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj.filters @@ -1,1390 +1,1390 @@ - - - - - {d1e5f218-107b-4e8c-9527-55cb9388b544} - - - {acd41072-b36e-4653-a430-40ade53fb78a} - - - {5dc872c1-db13-4c70-9d44-a3fc4b6fc241} - - - {3cda6808-a2bd-48a7-912e-161a7d0f5bce} - - - {a3f5cf44-2d2b-4822-b530-57286c85374a} - - - {a7187804-2892-4f90-9360-cf2bd6c31540} - - - {8cb5090c-c891-498b-bec2-183d4deca91f} - - - {1c7a3f63-9285-4202-84c5-278a854db932} - - - {33efddb9-1e44-44dc-b857-45b49b22c750} - - - {c1691a12-a08a-4ca7-ba66-b4ff4c7f30a5} - - - {57bf864f-d216-4d97-968d-4c0ff4f166ec} - - - {7865c84c-6431-4781-a016-45eeac5cad2c} - - - {c4ee1612-1ce9-4c74-8323-f98851014558} - - - {a210a307-e8bf-4bbc-8770-e720cc7fc953} - - - {f9ec43a5-e1d5-4b0b-831a-eed6947e8552} - - - {e14056ea-b126-4e5b-94e0-3ce09463970b} - - - {4ba4f2e2-5195-471b-9a0d-d84fa3fb96aa} - - - {088d96f1-2b69-4c53-9f14-026db3368905} - - - {259f9912-d495-45da-b894-8312fde18364} - - - {5f98cd09-41cd-4c1e-ad7d-06a8859e770c} - - - {620afa6f-3aea-4093-bed0-46fd37a5ad6d} - - - {f9de9bc0-4bc5-4fb5-8a1f-04bc31a82b07} - - - {a6b34a13-67af-45fd-a2fb-2c86a762dd39} - - - {89c4908d-b0a1-4c69-9104-00e0af69a714} - - - {f5c8a322-8f48-44a8-97ad-4bd0017bdfe7} - - - {79aa85ae-b75b-421a-838c-8144d9dacd76} - - - {094486fe-8ffc-4b98-81d6-6c381554fd8e} - - - {409f8654-a1cd-4624-9ede-3ae83a707876} - - - {e373743e-ee9f-421c-aa28-2d02a08bb252} - - - {5a3ec813-4719-4ca1-9988-3587ea402a2b} - - - {a11bcdd7-008e-40aa-9376-d1cc2bf4e67c} - - - {8aa116a4-8bae-4ec0-a919-be8a320491eb} - - - {4dab2d06-69e0-4f3e-b6d3-45e5e85af940} - - - {67e51016-d1db-44d2-910d-349d2833f798} - - - {5602cc18-9d1c-49c8-9509-7e4cf9ecd91b} - - - {ffa6c572-1615-4dad-80c3-333e3eb476f2} - - - {bba4d866-e26f-49c8-83fb-fb970c33798b} - - - {96937113-fef0-4e63-92e5-a30edcc78dc2} - - - {5e741f2d-9e0b-4e43-b2a2-44a8370e1546} - - - {3c918e82-4f67-4058-9818-4aff906dfa4a} - - - {c5237754-2509-4291-b869-c5dacc1a8aba} - - - {99a8dd4e-22db-4818-8799-7646b363b725} - - - {03bc7561-2b23-469a-936d-0463fb0ee9d2} - - - {1f18feb4-85f0-455d-927a-d4d6b226d8a5} - - - {ebbed875-840b-4b7b-96e4-4da2d4e38d4b} - - - {510ab530-0308-44f7-a7e3-08e474065651} - - - {485e39c6-aa13-4094-8ec8-3113cd0a1734} - - - {f8e51d3e-dc60-4aa9-9d37-c7c1ccaacd02} - - - {b9da6fbf-4fd9-4cfb-89f7-34ac0f933ce9} - - - {b49e5139-daa9-411b-995e-a53d98c583ba} - - - - - Misc - - - Docs - - - System\Linux - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - AppHost\Dialogs - - - - - Misc - - - Misc - - - Misc - - - Misc\Utilities - - - System - - - System - - - System - - - System - - - System - - - System - - - System - - - System - - - System - - - System - - - System\ISO - - - System\Ps2 - - - System\Ps2 - - - System\Ps2\EmotionEngine - - - System\Ps2\EmotionEngine\Hardware - - - System\Ps2\EmotionEngine\Hardware - - - System\Ps2\EmotionEngine\Hardware - - - System\Ps2\EmotionEngine\Hardware - - - System\Ps2\EmotionEngine\Memory - - - System\Ps2\EmotionEngine\Memory - - - System\Ps2\EmotionEngine\Memory - - - System\Ps2\EmotionEngine\Memory - - - System\Ps2\EmotionEngine\VU - - - System\Ps2\EmotionEngine\VU - - - System\Ps2\EmotionEngine\VU - - - System\Ps2\EmotionEngine\VU\Dynarec - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\Super VU - - - System\Ps2\EmotionEngine\VU\Dynarec\Super VU - - - System\Ps2\EmotionEngine\VU\Dynarec\Super VU - - - System\Ps2\EmotionEngine\VU\Dynarec\Super VU - - - System\Ps2\EmotionEngine\VU\Interpreter - - - System\Ps2\EmotionEngine\VU\Interpreter - - - System\Ps2\EmotionEngine\VU\Interpreter - - - System\Ps2\EmotionEngine\VU\Interpreter - - - System\Ps2\EmotionEngine\VU\Interpreter - - - System\Ps2\EmotionEngine\VU\Interpreter - - - System\Ps2\EmotionEngine\VU\Interpreter - - - System\Ps2\EmotionEngine\DMAC\Sif - - - System\Ps2\EmotionEngine\DMAC\Sif - - - System\Ps2\EmotionEngine\DMAC\Sif - - - System\Ps2\EmotionEngine\DMAC\Vif - - - System\Ps2\EmotionEngine\DMAC\Vif - - - System\Ps2\EmotionEngine\DMAC\Vif - - - System\Ps2\EmotionEngine\DMAC\Vif - - - System\Ps2\EmotionEngine\DMAC\Vif - - - System\Ps2\EmotionEngine\DMAC\Vif - - - System\Ps2\EmotionEngine\DMAC\Vif\Unpack - - - System\Ps2\EmotionEngine\DMAC\Vif\Unpack\newVif - - - System\Ps2\EmotionEngine\DMAC\Vif\Unpack\newVif\Dynarec - - - System\Ps2\EmotionEngine\DMAC\Vif\Unpack\newVif\Dynarec - - - System\Ps2\EmotionEngine\DMAC\SPR - - - System\Ps2\EmotionEngine\DMAC\Gif - - - System\Ps2\EmotionEngine\EE - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 - - - System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 - - - System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 - - - System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 - - - System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 - - - System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 - - - System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 - - - System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 - - - System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 - - - System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 - - - System\Ps2\EmotionEngine\EE\Interpreter - - - System\Ps2\EmotionEngine\EE\Interpreter - - - System\Ps2\EmotionEngine\EE\Interpreter - - - System\Ps2\EmotionEngine\EE\Interpreter - - - System\Ps2\EmotionEngine\EE\Interpreter - - - System\Ps2\EmotionEngine\EE\Interpreter - - - System\Ps2\EmotionEngine\EE\Interpreter - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop\Dynarec - - - System\Ps2\Iop\Dynarec - - - System\Ps2\Iop\Hardware - - - System\Ps2\Iop\Hardware - - - System\Ps2\Iop\Hardware - - - System\Ps2\Iop\CDVD - - - System\Ps2\Iop\CDVD - - - System\Ps2\Iop\CDVD - - - System\Ps2\Iop\CDVD - - - System\Ps2\IPU - - - System\Ps2\IPU - - - System\Ps2\IPU - - - System\Ps2\IPU\mpeg2lib - - - System\Ps2\IPU\mpeg2lib - - - System\Ps2\GS - - - System\Ps2\GS - - - System\Ps2\GS - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug\rdebug - - - System\Ps2\Debug\rdebug - - - System\Ps2\Debug\rdebug - - - System\Ps2\Debug\rdebug - - - System\Ps2\Debug\rdebug - - - System\Ps2\Debug\rdebug - - - System\Ps2\iCore - - - System\Ps2\iCore - - - System\Windows - - - System\IsoFS - - - System\IsoFS - - - System\IsoFS - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Win32 - - - AppHost\Win32 - - - AppHost\Win32 - - - AppHost\Linux - - - AppHost\Cheats - - - AppHost\Cheats - - - - - - - - - - - System\Ps2\IPU - - - System\Ps2 - - - AppHost - - - AppHost - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Panels - - - AppHost\Panels - - - System\Ps2\GS - - - System\Ps2\GS - - - System\ISO - - - System\ISO - - - System\ISO - - - System\ISO - - - System\ISO - - - AppHost\Debugger - - - AppHost\Debugger - - - AppHost\Debugger - - - AppHost\Debugger - - - AppHost\Debugger - - - AppHost\Debugger - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - AppHost\Debugger - - - System\Ps2\EmotionEngine\DMAC\Sif - - - System\ISO - - - System\Ps2\Debug - - - System\ISO - - - System\ISO - - - System\ISO - - - AppHost\Win32 - - - - - Misc - - - Misc - - - Misc\Utilities - - - System\ISO - - - System\ISO - - - System\Include - - - System\Include - - - System\Include - - - System\Include - - - System\Include - - - System\Include - - - System\Include - - - System\Include - - - System\Include - - - System\Include - - - System\Ps2\EmotionEngine - - - System\Ps2\EmotionEngine\Hardware - - - System\Ps2\EmotionEngine\Hardware - - - System\Ps2\EmotionEngine\Hardware - - - System\Ps2\EmotionEngine\Memory - - - System\Ps2\EmotionEngine\Memory - - - System\Ps2\EmotionEngine\Memory - - - System\Ps2\EmotionEngine\VU - - - System\Ps2\EmotionEngine\VU - - - System\Ps2\EmotionEngine\VU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\Ps2\EmotionEngine\VU\Dynarec\Super VU - - - System\Ps2\EmotionEngine\VU\Dynarec\Super VU - - - System\Ps2\EmotionEngine\VU\Dynarec\Super VU - - - System\Ps2\EmotionEngine\VU\Interpreter - - - System\Ps2\EmotionEngine\VU\Interpreter - - - System\Ps2\EmotionEngine\DMAC\Sif - - - System\Ps2\EmotionEngine\DMAC\Sif - - - System\Ps2\EmotionEngine\DMAC\Vif - - - System\Ps2\EmotionEngine\DMAC\Vif - - - System\Ps2\EmotionEngine\DMAC\Vif\Unpack - - - System\Ps2\EmotionEngine\DMAC\Vif\Unpack\newVif - - - System\Ps2\EmotionEngine\DMAC\Vif\Unpack\newVif - - - System\Ps2\EmotionEngine\DMAC\Vif\Unpack\newVif\Dynarec - - - System\Ps2\EmotionEngine\DMAC\SPR - - - System\Ps2\EmotionEngine\DMAC\Gif - - - System\Ps2\EmotionEngine\EE - - - System\Ps2\EmotionEngine\EE - - - System\Ps2\EmotionEngine\EE - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\EmotionEngine\EE\Dynarec - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop - - - System\Ps2\Iop\Dynarec - - - System\Ps2\Iop\Hardware - - - System\Ps2\Iop\Hardware - - - System\Ps2\Iop\CDVD - - - System\Ps2\Iop\CDVD - - - System\Ps2\Iop\CDVD - - - System\Ps2\Iop\CDVD - - - System\Ps2\Iop\CDVD - - - System\Ps2\IPU - - - System\Ps2\IPU - - - System\Ps2\IPU - - - System\Ps2\IPU\mpeg2lib - - - System\Ps2\IPU\mpeg2lib - - - System\Ps2\GS - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Include - - - System\Ps2\Include - - - System\Ps2\iCore - - - System\IsoFS - - - System\IsoFS - - - System\IsoFS - - - System\IsoFS - - - System\IsoFS - - - System\IsoFS - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Dialogs - - - AppHost\Resources - - - AppHost\Panels - - - AppHost\Panels - - - AppHost\Include - - - AppHost\Include - - - AppHost\Include - - - AppHost\Include - - - AppHost\Include - - - AppHost\Include - - - AppHost\Include - - - AppHost\Include - - - AppHost\Include - - - AppHost\Include - - - AppHost\Include - - - AppHost\Include - - - AppHost\Include - - - AppHost\Cheats - - - - - - - - - System\Ps2\IPU - - - AppHost - - - AppHost\Panels - - - System\Ps2\GS - - - System\Ps2\EmotionEngine\VU\Dynarec\microVU - - - System\ISO - - - AppHost\Debugger - - - AppHost\Debugger - - - AppHost\Debugger - - - AppHost\Debugger - - - AppHost\Debugger - - - AppHost\Debugger - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - System\Ps2\Debug - - - AppHost\Debugger - - - System\ISO - - - System\Ps2\Debug - - - System\ISO - - - System\ISO - - - System\ISO - - - System\ISO - - - System\ISO - - - - - AppHost\Resources - - - AppHost\Resources - - - - - System\Ps2\Debug\rdebug - - - System\Ps2\Debug\rdebug - - - System\Ps2\Debug\rdebug - - - System\Ps2\Debug\rdebug - - - System\Ps2\Debug\rdebug - - - System\Ps2\Debug\rdebug - - - System\Ps2\Debug\rdebug - - - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - - AppHost\Resources - - + + + + + {d1e5f218-107b-4e8c-9527-55cb9388b544} + + + {acd41072-b36e-4653-a430-40ade53fb78a} + + + {5dc872c1-db13-4c70-9d44-a3fc4b6fc241} + + + {3cda6808-a2bd-48a7-912e-161a7d0f5bce} + + + {a3f5cf44-2d2b-4822-b530-57286c85374a} + + + {a7187804-2892-4f90-9360-cf2bd6c31540} + + + {8cb5090c-c891-498b-bec2-183d4deca91f} + + + {1c7a3f63-9285-4202-84c5-278a854db932} + + + {33efddb9-1e44-44dc-b857-45b49b22c750} + + + {c1691a12-a08a-4ca7-ba66-b4ff4c7f30a5} + + + {57bf864f-d216-4d97-968d-4c0ff4f166ec} + + + {7865c84c-6431-4781-a016-45eeac5cad2c} + + + {c4ee1612-1ce9-4c74-8323-f98851014558} + + + {a210a307-e8bf-4bbc-8770-e720cc7fc953} + + + {f9ec43a5-e1d5-4b0b-831a-eed6947e8552} + + + {e14056ea-b126-4e5b-94e0-3ce09463970b} + + + {4ba4f2e2-5195-471b-9a0d-d84fa3fb96aa} + + + {088d96f1-2b69-4c53-9f14-026db3368905} + + + {259f9912-d495-45da-b894-8312fde18364} + + + {5f98cd09-41cd-4c1e-ad7d-06a8859e770c} + + + {620afa6f-3aea-4093-bed0-46fd37a5ad6d} + + + {f9de9bc0-4bc5-4fb5-8a1f-04bc31a82b07} + + + {a6b34a13-67af-45fd-a2fb-2c86a762dd39} + + + {89c4908d-b0a1-4c69-9104-00e0af69a714} + + + {f5c8a322-8f48-44a8-97ad-4bd0017bdfe7} + + + {79aa85ae-b75b-421a-838c-8144d9dacd76} + + + {094486fe-8ffc-4b98-81d6-6c381554fd8e} + + + {409f8654-a1cd-4624-9ede-3ae83a707876} + + + {e373743e-ee9f-421c-aa28-2d02a08bb252} + + + {5a3ec813-4719-4ca1-9988-3587ea402a2b} + + + {a11bcdd7-008e-40aa-9376-d1cc2bf4e67c} + + + {8aa116a4-8bae-4ec0-a919-be8a320491eb} + + + {4dab2d06-69e0-4f3e-b6d3-45e5e85af940} + + + {67e51016-d1db-44d2-910d-349d2833f798} + + + {5602cc18-9d1c-49c8-9509-7e4cf9ecd91b} + + + {ffa6c572-1615-4dad-80c3-333e3eb476f2} + + + {bba4d866-e26f-49c8-83fb-fb970c33798b} + + + {96937113-fef0-4e63-92e5-a30edcc78dc2} + + + {5e741f2d-9e0b-4e43-b2a2-44a8370e1546} + + + {3c918e82-4f67-4058-9818-4aff906dfa4a} + + + {c5237754-2509-4291-b869-c5dacc1a8aba} + + + {99a8dd4e-22db-4818-8799-7646b363b725} + + + {03bc7561-2b23-469a-936d-0463fb0ee9d2} + + + {1f18feb4-85f0-455d-927a-d4d6b226d8a5} + + + {ebbed875-840b-4b7b-96e4-4da2d4e38d4b} + + + {510ab530-0308-44f7-a7e3-08e474065651} + + + {485e39c6-aa13-4094-8ec8-3113cd0a1734} + + + {f8e51d3e-dc60-4aa9-9d37-c7c1ccaacd02} + + + {b9da6fbf-4fd9-4cfb-89f7-34ac0f933ce9} + + + {b49e5139-daa9-411b-995e-a53d98c583ba} + + + + + Misc + + + Docs + + + System\Linux + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + AppHost\Dialogs + + + + + Misc + + + Misc + + + Misc + + + Misc\Utilities + + + System + + + System + + + System + + + System + + + System + + + System + + + System + + + System + + + System + + + System + + + System\ISO + + + System\Ps2 + + + System\Ps2 + + + System\Ps2\EmotionEngine + + + System\Ps2\EmotionEngine\Hardware + + + System\Ps2\EmotionEngine\Hardware + + + System\Ps2\EmotionEngine\Hardware + + + System\Ps2\EmotionEngine\Hardware + + + System\Ps2\EmotionEngine\Memory + + + System\Ps2\EmotionEngine\Memory + + + System\Ps2\EmotionEngine\Memory + + + System\Ps2\EmotionEngine\Memory + + + System\Ps2\EmotionEngine\VU + + + System\Ps2\EmotionEngine\VU + + + System\Ps2\EmotionEngine\VU + + + System\Ps2\EmotionEngine\VU\Dynarec + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\Super VU + + + System\Ps2\EmotionEngine\VU\Dynarec\Super VU + + + System\Ps2\EmotionEngine\VU\Dynarec\Super VU + + + System\Ps2\EmotionEngine\VU\Dynarec\Super VU + + + System\Ps2\EmotionEngine\VU\Interpreter + + + System\Ps2\EmotionEngine\VU\Interpreter + + + System\Ps2\EmotionEngine\VU\Interpreter + + + System\Ps2\EmotionEngine\VU\Interpreter + + + System\Ps2\EmotionEngine\VU\Interpreter + + + System\Ps2\EmotionEngine\VU\Interpreter + + + System\Ps2\EmotionEngine\VU\Interpreter + + + System\Ps2\EmotionEngine\DMAC\Sif + + + System\Ps2\EmotionEngine\DMAC\Sif + + + System\Ps2\EmotionEngine\DMAC\Sif + + + System\Ps2\EmotionEngine\DMAC\Vif + + + System\Ps2\EmotionEngine\DMAC\Vif + + + System\Ps2\EmotionEngine\DMAC\Vif + + + System\Ps2\EmotionEngine\DMAC\Vif + + + System\Ps2\EmotionEngine\DMAC\Vif + + + System\Ps2\EmotionEngine\DMAC\Vif + + + System\Ps2\EmotionEngine\DMAC\Vif\Unpack + + + System\Ps2\EmotionEngine\DMAC\Vif\Unpack\newVif + + + System\Ps2\EmotionEngine\DMAC\Vif\Unpack\newVif\Dynarec + + + System\Ps2\EmotionEngine\DMAC\Vif\Unpack\newVif\Dynarec + + + System\Ps2\EmotionEngine\DMAC\SPR + + + System\Ps2\EmotionEngine\DMAC\Gif + + + System\Ps2\EmotionEngine\EE + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 + + + System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 + + + System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 + + + System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 + + + System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 + + + System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 + + + System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 + + + System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 + + + System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 + + + System\Ps2\EmotionEngine\EE\Dynarec\ix86-32 + + + System\Ps2\EmotionEngine\EE\Interpreter + + + System\Ps2\EmotionEngine\EE\Interpreter + + + System\Ps2\EmotionEngine\EE\Interpreter + + + System\Ps2\EmotionEngine\EE\Interpreter + + + System\Ps2\EmotionEngine\EE\Interpreter + + + System\Ps2\EmotionEngine\EE\Interpreter + + + System\Ps2\EmotionEngine\EE\Interpreter + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop\Dynarec + + + System\Ps2\Iop\Dynarec + + + System\Ps2\Iop\Hardware + + + System\Ps2\Iop\Hardware + + + System\Ps2\Iop\Hardware + + + System\Ps2\Iop\CDVD + + + System\Ps2\Iop\CDVD + + + System\Ps2\Iop\CDVD + + + System\Ps2\Iop\CDVD + + + System\Ps2\IPU + + + System\Ps2\IPU + + + System\Ps2\IPU + + + System\Ps2\IPU\mpeg2lib + + + System\Ps2\IPU\mpeg2lib + + + System\Ps2\GS + + + System\Ps2\GS + + + System\Ps2\GS + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug\rdebug + + + System\Ps2\Debug\rdebug + + + System\Ps2\Debug\rdebug + + + System\Ps2\Debug\rdebug + + + System\Ps2\Debug\rdebug + + + System\Ps2\Debug\rdebug + + + System\Ps2\iCore + + + System\Ps2\iCore + + + System\Windows + + + System\IsoFS + + + System\IsoFS + + + System\IsoFS + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Win32 + + + AppHost\Win32 + + + AppHost\Win32 + + + AppHost\Linux + + + AppHost\Cheats + + + AppHost\Cheats + + + + + + + + + + + System\Ps2\IPU + + + System\Ps2 + + + AppHost + + + AppHost + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Panels + + + AppHost\Panels + + + System\Ps2\GS + + + System\Ps2\GS + + + System\ISO + + + System\ISO + + + System\ISO + + + System\ISO + + + System\ISO + + + AppHost\Debugger + + + AppHost\Debugger + + + AppHost\Debugger + + + AppHost\Debugger + + + AppHost\Debugger + + + AppHost\Debugger + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + AppHost\Debugger + + + System\Ps2\EmotionEngine\DMAC\Sif + + + System\ISO + + + System\Ps2\Debug + + + System\ISO + + + System\ISO + + + System\ISO + + + AppHost\Win32 + + + + + Misc + + + Misc + + + Misc\Utilities + + + System\ISO + + + System\ISO + + + System\Include + + + System\Include + + + System\Include + + + System\Include + + + System\Include + + + System\Include + + + System\Include + + + System\Include + + + System\Include + + + System\Include + + + System\Ps2\EmotionEngine + + + System\Ps2\EmotionEngine\Hardware + + + System\Ps2\EmotionEngine\Hardware + + + System\Ps2\EmotionEngine\Hardware + + + System\Ps2\EmotionEngine\Memory + + + System\Ps2\EmotionEngine\Memory + + + System\Ps2\EmotionEngine\Memory + + + System\Ps2\EmotionEngine\VU + + + System\Ps2\EmotionEngine\VU + + + System\Ps2\EmotionEngine\VU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\Ps2\EmotionEngine\VU\Dynarec\Super VU + + + System\Ps2\EmotionEngine\VU\Dynarec\Super VU + + + System\Ps2\EmotionEngine\VU\Dynarec\Super VU + + + System\Ps2\EmotionEngine\VU\Interpreter + + + System\Ps2\EmotionEngine\VU\Interpreter + + + System\Ps2\EmotionEngine\DMAC\Sif + + + System\Ps2\EmotionEngine\DMAC\Sif + + + System\Ps2\EmotionEngine\DMAC\Vif + + + System\Ps2\EmotionEngine\DMAC\Vif + + + System\Ps2\EmotionEngine\DMAC\Vif\Unpack + + + System\Ps2\EmotionEngine\DMAC\Vif\Unpack\newVif + + + System\Ps2\EmotionEngine\DMAC\Vif\Unpack\newVif + + + System\Ps2\EmotionEngine\DMAC\Vif\Unpack\newVif\Dynarec + + + System\Ps2\EmotionEngine\DMAC\SPR + + + System\Ps2\EmotionEngine\DMAC\Gif + + + System\Ps2\EmotionEngine\EE + + + System\Ps2\EmotionEngine\EE + + + System\Ps2\EmotionEngine\EE + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\EmotionEngine\EE\Dynarec + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop + + + System\Ps2\Iop\Dynarec + + + System\Ps2\Iop\Hardware + + + System\Ps2\Iop\Hardware + + + System\Ps2\Iop\CDVD + + + System\Ps2\Iop\CDVD + + + System\Ps2\Iop\CDVD + + + System\Ps2\Iop\CDVD + + + System\Ps2\Iop\CDVD + + + System\Ps2\IPU + + + System\Ps2\IPU + + + System\Ps2\IPU + + + System\Ps2\IPU\mpeg2lib + + + System\Ps2\IPU\mpeg2lib + + + System\Ps2\GS + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Include + + + System\Ps2\Include + + + System\Ps2\iCore + + + System\IsoFS + + + System\IsoFS + + + System\IsoFS + + + System\IsoFS + + + System\IsoFS + + + System\IsoFS + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Dialogs + + + AppHost\Resources + + + AppHost\Panels + + + AppHost\Panels + + + AppHost\Include + + + AppHost\Include + + + AppHost\Include + + + AppHost\Include + + + AppHost\Include + + + AppHost\Include + + + AppHost\Include + + + AppHost\Include + + + AppHost\Include + + + AppHost\Include + + + AppHost\Include + + + AppHost\Include + + + AppHost\Include + + + AppHost\Cheats + + + + + + + + + System\Ps2\IPU + + + AppHost + + + AppHost\Panels + + + System\Ps2\GS + + + System\Ps2\EmotionEngine\VU\Dynarec\microVU + + + System\ISO + + + AppHost\Debugger + + + AppHost\Debugger + + + AppHost\Debugger + + + AppHost\Debugger + + + AppHost\Debugger + + + AppHost\Debugger + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + System\Ps2\Debug + + + AppHost\Debugger + + + System\ISO + + + System\Ps2\Debug + + + System\ISO + + + System\ISO + + + System\ISO + + + System\ISO + + + System\ISO + + + + + AppHost\Resources + + + AppHost\Resources + + + + + System\Ps2\Debug\rdebug + + + System\Ps2\Debug\rdebug + + + System\Ps2\Debug\rdebug + + + System\Ps2\Debug\rdebug + + + System\Ps2\Debug\rdebug + + + System\Ps2\Debug\rdebug + + + System\Ps2\Debug\rdebug + + + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + + AppHost\Resources + + \ No newline at end of file diff --git a/pcsx2/windows/VCprojects/vsprops/common.props b/pcsx2/windows/VCprojects/vsprops/common.props index c381047722..7ab06f7e4b 100644 --- a/pcsx2/windows/VCprojects/vsprops/common.props +++ b/pcsx2/windows/VCprojects/vsprops/common.props @@ -1,49 +1,49 @@ - - - - $(ProjectDir)\..\.. - $(ProjectRootDir)\.. - $(SvnRootDir)\common - - - - <_ProjectFileVersion>10.0.30128.1 - false - - - - ./;../../;../../x86;../../x86/ix86-32;../../IPU;../../System;%(AdditionalIncludeDirectories) - _M_X86;__i386__;TIXML_USE_STL;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - false - $(IntDir)pcsx2.pch - Default - true - _ARCH_64=1;_M_X86_64;%(PreprocessorDefinitions) - _ARCH_32=1;_M_X86_32;%(PreprocessorDefinitions) - - - odbc32.lib;odbccp32.lib;comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;%(AdditionalDependencies) - ..\;..\libs;%(AdditionalLibraryDirectories) - true - Windows - - - - - - - - - $(ProjectRootDir) - - - $(SvnRootDir) - - - $(SvnCommonDir) - - - $(PcsxSubsection) - - - + + + + $(ProjectDir)\..\.. + $(ProjectRootDir)\.. + $(SvnRootDir)\common + + + + <_ProjectFileVersion>10.0.30128.1 + false + + + + ./;../../;../../x86;../../x86/ix86-32;../../IPU;../../System;%(AdditionalIncludeDirectories) + _M_X86;__i386__;TIXML_USE_STL;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + false + $(IntDir)pcsx2.pch + Default + true + _ARCH_64=1;_M_X86_64;%(PreprocessorDefinitions) + _ARCH_32=1;_M_X86_32;%(PreprocessorDefinitions) + + + odbc32.lib;odbccp32.lib;comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;%(AdditionalDependencies) + ..\;..\libs;%(AdditionalLibraryDirectories) + true + Windows + + + + + + + + + $(ProjectRootDir) + + + $(SvnRootDir) + + + $(SvnCommonDir) + + + $(PcsxSubsection) + + + diff --git a/pcsx2/windows/VCprojects/vsprops/devbuild.props b/pcsx2/windows/VCprojects/vsprops/devbuild.props index dffb1f1306..fc1f215b13 100644 --- a/pcsx2/windows/VCprojects/vsprops/devbuild.props +++ b/pcsx2/windows/VCprojects/vsprops/devbuild.props @@ -1,11 +1,11 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - - - - PCSX2_DEVBUILD;%(PreprocessorDefinitions) - - + + + + <_ProjectFileVersion>10.0.30128.1 + + + + PCSX2_DEVBUILD;%(PreprocessorDefinitions) + + \ No newline at end of file diff --git a/pcsx2/windows/wxResources.rc b/pcsx2/windows/wxResources.rc index daa61c1579..9b4af792b9 100644 --- a/pcsx2/windows/wxResources.rc +++ b/pcsx2/windows/wxResources.rc @@ -1,72 +1,72 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxresmw.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxresmw.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_ICON2 ICON "AppIcon.ico" -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxresmw.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxresmw.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON2 ICON "AppIcon.ico" +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/pcsx2/x86/microVU_Profiler.h b/pcsx2/x86/microVU_Profiler.h index c080e79f12..0f8bd0a0b7 100644 --- a/pcsx2/x86/microVU_Profiler.h +++ b/pcsx2/x86/microVU_Profiler.h @@ -1,143 +1,143 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2010 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 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 PCSX2. - * If not, see . - */ - -#pragma once - -enum microOpcode { - // Upper Instructions - opABS, opCLIP, opOPMULA, opOPMSUB, opNOP, - opADD, opADDi, opADDq, opADDx, opADDy, opADDz, opADDw, - opADDA, opADDAi, opADDAq, opADDAx, opADDAy, opADDAz, opADDAw, - opSUB, opSUBi, opSUBq, opSUBx, opSUBy, opSUBz, opSUBw, - opSUBA, opSUBAi, opSUBAq, opSUBAx, opSUBAy, opSUBAz, opSUBAw, - opMUL, opMULi, opMULq, opMULx, opMULy, opMULz, opMULw, - opMULA, opMULAi, opMULAq, opMULAx, opMULAy, opMULAz, opMULAw, - opMADD, opMADDi, opMADDq, opMADDx, opMADDy, opMADDz, opMADDw, - opMADDA, opMADDAi, opMADDAq, opMADDAx, opMADDAy, opMADDAz, opMADDAw, - opMSUB, opMSUBi, opMSUBq, opMSUBx, opMSUBy, opMSUBz, opMSUBw, - opMSUBA, opMSUBAi, opMSUBAq, opMSUBAx, opMSUBAy, opMSUBAz, opMSUBAw, - opMAX, opMAXi, opMAXx, opMAXy, opMAXz, opMAXw, - opMINI, opMINIi, opMINIx, opMINIy, opMINIz, opMINIw, - opFTOI0, opFTOI4, opFTOI12, opFTOI15, - opITOF0, opITOF4, opITOF12, opITOF15, - // Lower Instructions - opDIV, opSQRT, opRSQRT, - opIADD, opIADDI, opIADDIU, - opIAND, opIOR, - opISUB, opISUBIU, - opMOVE, opMFIR, opMTIR, opMR32, opMFP, - opLQ, opLQD, opLQI, - opSQ, opSQD, opSQI, - opILW, opISW, opILWR, opISWR, - opRINIT, opRGET, opRNEXT, opRXOR, - opWAITQ, opWAITP, - opFSAND, opFSEQ, opFSOR, opFSSET, - opFMAND, opFMEQ, opFMOR, - opFCAND, opFCEQ, opFCOR, opFCSET, opFCGET, - opIBEQ, opIBGEZ, opIBGTZ, opIBLTZ, opIBLEZ, opIBNE, - opB, opBAL, opJR, opJALR, - opESADD, opERSADD, opELENG, opERLENG, - opEATANxy, opEATANxz, opESUM, opERCPR, - opESQRT, opERSQRT, opESIN, opEATAN, - opEEXP, opXITOP, opXTOP, opXGKICK, - opLastOpcode -}; - -static const char microOpcodeName[][16] = { - // Upper Instructions - "ABS", "CLIP", "OPMULA", "OPMSUB", "NOP", - "ADD", "ADDi", "ADDq", "ADDx", "ADDy", "ADDz", "ADDw", - "ADDA", "ADDAi", "ADDAq", "ADDAx", "ADDAy", "ADDAz", "ADDAw", - "SUB", "SUBi", "SUBq", "SUBx", "SUBy", "SUBz", "SUBw", - "SUBA", "SUBAi", "SUBAq", "SUBAx", "SUBAy", "SUBAz", "SUBAw", - "MUL", "MULi", "MULq", "MULx", "MULy", "MULz", "MULw", - "MULA", "MULAi", "MULAq", "MULAx", "MULAy", "MULAz", "MULAw", - "MADD", "MADDi", "MADDq", "MADDx", "MADDy", "MADDz", "MADDw", - "MADDA", "MADDAi", "MADDAq", "MADDAx", "MADDAy", "MADDAz", "MADDAw", - "MSUB", "MSUBi", "MSUBq", "MSUBx", "MSUBy", "MSUBz", "MSUBw", - "MSUBA", "MSUBAi", "MSUBAq", "MSUBAx", "MSUBAy", "MSUBAz", "MSUBAw", - "MAX", "MAXi", "MAXx", "MAXy", "MAXz", "MAXw", - "MINI", "MINIi", "MINIx", "MINIy", "MINIz", "MINIw", - "FTOI0", "FTOI4", "FTOI12", "FTOI15", - "ITOF0", "ITOF4", "ITOF12", "ITOF15", - // Lower Instructions - "DIV", "SQRT", "RSQRT", - "IADD", "IADDI", "IADDIU", - "IAND", "IOR", - "ISUB", "ISUBIU", - "MOVE", "MFIR", "MTIR", "MR32", "MFP", - "LQ", "LQD", "LQI", - "SQ", "SQD", "SQI", - "ILW", "ISW", "ILWR", "ISWR", - "RINIT", "RGET", "RNEXT", "RXOR", - "WAITQ", "WAITP", - "FSAND", "FSEQ", "FSOR", "FSSET", - "FMAND", "FMEQ", "FMOR", - "FCAND", "FCEQ", "FCOR", "FCSET", "FCGET", - "IBEQ", "IBGEZ", "IBGTZ", "IBLTZ", "IBLEZ", "IBNE", - "B", "BAL", "JR", "JALR", - "ESADD", "ERSADD", "ELENG", "ERLENG", - "EATANxy", "EATANxz", "ESUM", "ERCPR", - "ESQRT", "ERSQRT", "ESIN", "EATAN", - "EEXP", "XITOP", "XTOP", "XGKICK" -}; - -#ifdef mVUprofileProg -#include -#include -#include - -struct microProfiler { - static const u32 progLimit = 10000; - u64 opStats[opLastOpcode]; - u32 progCount; - int index; - void Reset(int _index) { memzero(*this); index = _index; } - void EmitOp(microOpcode op) { - xADD(ptr32[&(((u32*)opStats)[op*2+0])], 1); - xADC(ptr32[&(((u32*)opStats)[op*2+1])], 0); - } - void Print() { - progCount++; - if ((progCount % progLimit) == 0) { - u64 total = 0; - std::vector< std::pair > v; - for(int i = 0; i < opLastOpcode; i++) { - total += opStats[i]; - v.push_back(std::make_pair(opStats[i], i)); - } - std::sort (v.begin(), v.end()); - std::reverse(v.begin(), v.end()); - double dTotal = (double)total; - DevCon.WriteLn("microVU%d Profiler:", index); - for(u32 i = 0; i < v.size(); i++) { - u64 count = v[i].first; - double stat = (double)count / dTotal * 100.0; - std::string str = microOpcodeName[v[i].second]; - str.resize(8, ' '); - DevCon.WriteLn("%s - [%3.4f%%][count=%u]", - str.c_str(), stat, (u32)count); - } - DevCon.WriteLn("Total = 0x%x%x\n\n", (u32)(u64)(total>>32),(u32)total); - } - } -}; -#else -struct microProfiler { - __fi void Reset(int _index) {} - __fi void EmitOp(microOpcode op) {} - __fi void Print() {} -}; -#endif +/* PCSX2 - PS2 Emulator for PCs + * Copyright (C) 2002-2010 PCSX2 Dev Team + * + * PCSX2 is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * PCSX2 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 PCSX2. + * If not, see . + */ + +#pragma once + +enum microOpcode { + // Upper Instructions + opABS, opCLIP, opOPMULA, opOPMSUB, opNOP, + opADD, opADDi, opADDq, opADDx, opADDy, opADDz, opADDw, + opADDA, opADDAi, opADDAq, opADDAx, opADDAy, opADDAz, opADDAw, + opSUB, opSUBi, opSUBq, opSUBx, opSUBy, opSUBz, opSUBw, + opSUBA, opSUBAi, opSUBAq, opSUBAx, opSUBAy, opSUBAz, opSUBAw, + opMUL, opMULi, opMULq, opMULx, opMULy, opMULz, opMULw, + opMULA, opMULAi, opMULAq, opMULAx, opMULAy, opMULAz, opMULAw, + opMADD, opMADDi, opMADDq, opMADDx, opMADDy, opMADDz, opMADDw, + opMADDA, opMADDAi, opMADDAq, opMADDAx, opMADDAy, opMADDAz, opMADDAw, + opMSUB, opMSUBi, opMSUBq, opMSUBx, opMSUBy, opMSUBz, opMSUBw, + opMSUBA, opMSUBAi, opMSUBAq, opMSUBAx, opMSUBAy, opMSUBAz, opMSUBAw, + opMAX, opMAXi, opMAXx, opMAXy, opMAXz, opMAXw, + opMINI, opMINIi, opMINIx, opMINIy, opMINIz, opMINIw, + opFTOI0, opFTOI4, opFTOI12, opFTOI15, + opITOF0, opITOF4, opITOF12, opITOF15, + // Lower Instructions + opDIV, opSQRT, opRSQRT, + opIADD, opIADDI, opIADDIU, + opIAND, opIOR, + opISUB, opISUBIU, + opMOVE, opMFIR, opMTIR, opMR32, opMFP, + opLQ, opLQD, opLQI, + opSQ, opSQD, opSQI, + opILW, opISW, opILWR, opISWR, + opRINIT, opRGET, opRNEXT, opRXOR, + opWAITQ, opWAITP, + opFSAND, opFSEQ, opFSOR, opFSSET, + opFMAND, opFMEQ, opFMOR, + opFCAND, opFCEQ, opFCOR, opFCSET, opFCGET, + opIBEQ, opIBGEZ, opIBGTZ, opIBLTZ, opIBLEZ, opIBNE, + opB, opBAL, opJR, opJALR, + opESADD, opERSADD, opELENG, opERLENG, + opEATANxy, opEATANxz, opESUM, opERCPR, + opESQRT, opERSQRT, opESIN, opEATAN, + opEEXP, opXITOP, opXTOP, opXGKICK, + opLastOpcode +}; + +static const char microOpcodeName[][16] = { + // Upper Instructions + "ABS", "CLIP", "OPMULA", "OPMSUB", "NOP", + "ADD", "ADDi", "ADDq", "ADDx", "ADDy", "ADDz", "ADDw", + "ADDA", "ADDAi", "ADDAq", "ADDAx", "ADDAy", "ADDAz", "ADDAw", + "SUB", "SUBi", "SUBq", "SUBx", "SUBy", "SUBz", "SUBw", + "SUBA", "SUBAi", "SUBAq", "SUBAx", "SUBAy", "SUBAz", "SUBAw", + "MUL", "MULi", "MULq", "MULx", "MULy", "MULz", "MULw", + "MULA", "MULAi", "MULAq", "MULAx", "MULAy", "MULAz", "MULAw", + "MADD", "MADDi", "MADDq", "MADDx", "MADDy", "MADDz", "MADDw", + "MADDA", "MADDAi", "MADDAq", "MADDAx", "MADDAy", "MADDAz", "MADDAw", + "MSUB", "MSUBi", "MSUBq", "MSUBx", "MSUBy", "MSUBz", "MSUBw", + "MSUBA", "MSUBAi", "MSUBAq", "MSUBAx", "MSUBAy", "MSUBAz", "MSUBAw", + "MAX", "MAXi", "MAXx", "MAXy", "MAXz", "MAXw", + "MINI", "MINIi", "MINIx", "MINIy", "MINIz", "MINIw", + "FTOI0", "FTOI4", "FTOI12", "FTOI15", + "ITOF0", "ITOF4", "ITOF12", "ITOF15", + // Lower Instructions + "DIV", "SQRT", "RSQRT", + "IADD", "IADDI", "IADDIU", + "IAND", "IOR", + "ISUB", "ISUBIU", + "MOVE", "MFIR", "MTIR", "MR32", "MFP", + "LQ", "LQD", "LQI", + "SQ", "SQD", "SQI", + "ILW", "ISW", "ILWR", "ISWR", + "RINIT", "RGET", "RNEXT", "RXOR", + "WAITQ", "WAITP", + "FSAND", "FSEQ", "FSOR", "FSSET", + "FMAND", "FMEQ", "FMOR", + "FCAND", "FCEQ", "FCOR", "FCSET", "FCGET", + "IBEQ", "IBGEZ", "IBGTZ", "IBLTZ", "IBLEZ", "IBNE", + "B", "BAL", "JR", "JALR", + "ESADD", "ERSADD", "ELENG", "ERLENG", + "EATANxy", "EATANxz", "ESUM", "ERCPR", + "ESQRT", "ERSQRT", "ESIN", "EATAN", + "EEXP", "XITOP", "XTOP", "XGKICK" +}; + +#ifdef mVUprofileProg +#include +#include +#include + +struct microProfiler { + static const u32 progLimit = 10000; + u64 opStats[opLastOpcode]; + u32 progCount; + int index; + void Reset(int _index) { memzero(*this); index = _index; } + void EmitOp(microOpcode op) { + xADD(ptr32[&(((u32*)opStats)[op*2+0])], 1); + xADC(ptr32[&(((u32*)opStats)[op*2+1])], 0); + } + void Print() { + progCount++; + if ((progCount % progLimit) == 0) { + u64 total = 0; + std::vector< std::pair > v; + for(int i = 0; i < opLastOpcode; i++) { + total += opStats[i]; + v.push_back(std::make_pair(opStats[i], i)); + } + std::sort (v.begin(), v.end()); + std::reverse(v.begin(), v.end()); + double dTotal = (double)total; + DevCon.WriteLn("microVU%d Profiler:", index); + for(u32 i = 0; i < v.size(); i++) { + u64 count = v[i].first; + double stat = (double)count / dTotal * 100.0; + std::string str = microOpcodeName[v[i].second]; + str.resize(8, ' '); + DevCon.WriteLn("%s - [%3.4f%%][count=%u]", + str.c_str(), stat, (u32)count); + } + DevCon.WriteLn("Total = 0x%x%x\n\n", (u32)(u64)(total>>32),(u32)total); + } + } +}; +#else +struct microProfiler { + __fi void Reset(int _index) {} + __fi void EmitOp(microOpcode op) {} + __fi void Print() {} +}; +#endif diff --git a/pcsx2_suite_2012.sln b/pcsx2_suite_2012.sln index aa26c5b145..1d4cd1f910 100644 --- a/pcsx2_suite_2012.sln +++ b/pcsx2_suite_2012.sln @@ -1,1285 +1,1285 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Nulls", "Nulls", "{E1828E40-2FBB-48FE-AE7F-5587755DCE0E}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3rdparty", "3rdparty", "{78EBE642-7A4D-4EA7-86BE-5639C6646C38}" - ProjectSection(SolutionItems) = preProject - 3rdparty\svn_readme.txt = 3rdparty\svn_readme.txt - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{703FD00B-D7A0-41E3-BD03-CEC86B385DAF}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{88F517F9-CE1C-4005-9BDF-4481FEB55053}" - ProjectSection(SolutionItems) = preProject - common\svn_readme.txt = common\svn_readme.txt - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Include", "Include", "{0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C}" - ProjectSection(SolutionItems) = preProject - common\include\afxresmw.h = common\include\afxresmw.h - common\include\intrin_x86.h = common\include\intrin_x86.h - common\include\Pcsx2Api.h = common\include\Pcsx2Api.h - common\include\Pcsx2Defs.h = common\include\Pcsx2Defs.h - common\include\Pcsx2Types.h = common\include\Pcsx2Types.h - common\include\PluginCallbacks.h = common\include\PluginCallbacks.h - common\include\PS2Etypes.h = common\include\PS2Etypes.h - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wx", "wx", "{62BF822E-6A12-49A8-BE8C-C55A9BCA24DA}" - ProjectSection(SolutionItems) = preProject - common\include\wx\folderdesc.txt = common\include\wx\folderdesc.txt - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{2D6F0A62-A247-4CCF-947F-FCD54BE16103}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pcsx2", "pcsx2\windows\VCprojects\pcsx2_vs2012.vcxproj", "{1CEFD830-2B76-4596-A4EE-BCD7280A60BD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPU2-X", "plugins\spu2-x\src\Windows\Spu2-X_vs2012.vcxproj", "{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GSdx", "plugins\GSdx\GSdx_vs2012.vcxproj", "{18E42F6F-3A62-41EE-B42F-79366C4F1E95}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SoundTouch", "3rdparty\soundtouch\SoundTouch_vs2012.vcxproj", "{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "3rdparty\zlib\zlib_vs2012.vcxproj", "{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LilyPad", "plugins\LilyPad\LilyPad_vs2012.vcxproj", "{E4081455-398C-4610-A87C-90A8A7D72DC3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w32pthreads.v4", "3rdparty\w32pthreads\pthreads_vs2012.vcxproj", "{26511268-2902-4997-8421-ECD7055F9E28}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xpad", "plugins\xpad\xpad_vs2012.vcxproj", "{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CDVDnull", "plugins\CDVDnull\Windows\CDVDnull_vs2012.vcxproj", "{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "USBnull", "plugins\USBnull\Windows\USBnull_vs2012.vcxproj", "{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FWnull", "plugins\FWnull\Windows\FWnull_vs2012.vcxproj", "{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DEV9null", "plugins\dev9null\Windows\DEV9null_vs2012.vcxproj", "{04439C5F-05FB-4A9C-AAD1-5388C25377DB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x86emitter", "common\build\x86emitter\x86emitter_vs2012.vcxproj", "{A51123F5-9505-4EAE-85E7-D320290A272C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utilities", "common\build\Utilities\utilities_vs2012.vcxproj", "{4639972E-424E-4E13-8B07-CA403C481346}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bin2cpp", "tools\bin2cpp\bin2c_vs2012.vcxproj", "{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg7", "3rdparty\libjpeg\libjpeg_vs2012.vcxproj", "{BC236261-77E8-4567-8D09-45CD02965EB6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w32pthreads_lib", "3rdparty\w32pthreads\pthreads_lib_vs2012.vcxproj", "{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdvdGigaherz", "plugins\cdvdGigaherz\src\Windows\cdvdGigaherz_vs2012.vcxproj", "{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GSnull", "plugins\GSnull\Windows\GSnull_vs2012.vcxproj", "{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Padnull", "plugins\PadNull\Windows\PadNull_vs2012.vcxproj", "{6BC4D85D-A399-407E-96A9-CD5416A54269}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "3rdparty\portaudio\build\msvc\portaudio_vs2012.vcxproj", "{0A18A071-125E-442F-AFF7-A3F68ABECF99}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "USBqemu", "plugins\USBqemu\Win32\USBqemu_vs2012.vcxproj", "{E613DA9F-41B4-4613-9911-E418EF5533BC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DEV9ghzdrk", "plugins\dev9ghzdrk\Win32\DEV9ghzdrk_vs2012.vcxproj", "{BBE4E5FB-530A-4D18-A633-35AF0577B7F3}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Experimental", "Experimental", "{7A407562-D70F-4F0A-9D3E-B32506416003}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "3rdparty\libpng\projects\vstudio\libpng\libpng_vs2012.vcxproj", "{D6973076-9317-4EF2-A0B8-B7A18AC0713E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxConfig30", "3rdparty\wxwidgets3.0\build\msw\wx30_config_vs2012.vcxproj", "{01F4CE10-2CFB-41A8-B41F-E54337868A1D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxBase30", "3rdparty\wxwidgets3.0\build\msw\wx30_base_vs2012.vcxproj", "{3FCC50C2-81E9-5DB2-B8D8-2129427568B1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxCore30", "3rdparty\wxwidgets3.0\build\msw\wx30_core_vs2012.vcxproj", "{6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxAdv30", "3rdparty\wxwidgets3.0\build\msw\wx30_adv_vs2012.vcxproj", "{24C45343-FD20-5C92-81C1-35A2AE841E79}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug AVX|Win32 = Debug AVX|Win32 - Debug AVX|x64 = Debug AVX|x64 - Debug AVX2|Win32 = Debug AVX2|Win32 - Debug AVX2|x64 = Debug AVX2|x64 - Debug SSE2|Win32 = Debug SSE2|Win32 - Debug SSE2|x64 = Debug SSE2|x64 - Debug SSE4|Win32 = Debug SSE4|Win32 - Debug SSE4|x64 = Debug SSE4|x64 - Debug SSSE3|Win32 = Debug SSSE3|Win32 - Debug SSSE3|x64 = Debug SSSE3|x64 - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Devel|Win32 = Devel|Win32 - Devel|x64 = Devel|x64 - Release AVX|Win32 = Release AVX|Win32 - Release AVX|x64 = Release AVX|x64 - Release AVX2|Win32 = Release AVX2|Win32 - Release AVX2|x64 = Release AVX2|x64 - Release SSE2|Win32 = Release SSE2|Win32 - Release SSE2|x64 = Release SSE2|x64 - Release SSE4|Win32 = Release SSE4|Win32 - Release SSE4|x64 = Release SSE4|x64 - Release SSSE3|Win32 = Release SSSE3|Win32 - Release SSSE3|x64 = Release SSSE3|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX|Win32.Build.0 = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|Win32.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|Win32.Build.0 = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|x64.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Devel|Win32.ActiveCfg = Devel|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Devel|Win32.Build.0 = Devel|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Devel|x64.ActiveCfg = Devel|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX|Win32.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX|Win32.Build.0 = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX|x64.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX2|Win32.Build.0 = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX2|x64.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE2|Win32.Build.0 = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE2|x64.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE4|Win32.Build.0 = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE4|x64.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|Win32.Build.0 = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|Win32.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|Win32.Build.0 = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|x64.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX|Win32.Build.0 = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|Win32.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|Win32.Build.0 = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|x64.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Devel|Win32.ActiveCfg = Devel|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Devel|Win32.Build.0 = Devel|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Devel|x64.ActiveCfg = Devel|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX|Win32.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX|Win32.Build.0 = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX|x64.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX2|Win32.Build.0 = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX2|x64.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE2|Win32.Build.0 = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE2|x64.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE4|Win32.Build.0 = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE4|x64.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|Win32.Build.0 = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|Win32.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|Win32.Build.0 = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|x64.ActiveCfg = Release|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|Win32.ActiveCfg = Debug AVX|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|Win32.Build.0 = Debug AVX|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|x64.ActiveCfg = Debug AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|x64.Build.0 = Debug AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|Win32.ActiveCfg = Debug AVX2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|Win32.Build.0 = Debug AVX2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|x64.ActiveCfg = Debug AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|x64.Build.0 = Debug AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|Win32.ActiveCfg = Debug SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|Win32.Build.0 = Debug SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|x64.ActiveCfg = Debug SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|x64.Build.0 = Debug SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|Win32.ActiveCfg = Debug SSE4|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|Win32.Build.0 = Debug SSE4|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|x64.ActiveCfg = Debug SSE4|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|x64.Build.0 = Debug SSE4|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|Win32.ActiveCfg = Debug SSSE3|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|Win32.Build.0 = Debug SSSE3|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|x64.ActiveCfg = Debug SSSE3|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|x64.Build.0 = Debug SSSE3|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|Win32.ActiveCfg = Debug SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|Win32.Build.0 = Debug SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|x64.ActiveCfg = Debug SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|x64.Build.0 = Debug SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|Win32.ActiveCfg = Release SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|Win32.Build.0 = Release SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|x64.ActiveCfg = Release SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|x64.Build.0 = Release SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|Win32.ActiveCfg = Release AVX|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|Win32.Build.0 = Release AVX|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|x64.ActiveCfg = Release AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|x64.Build.0 = Release AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|Win32.ActiveCfg = Release AVX2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|Win32.Build.0 = Release AVX2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|x64.ActiveCfg = Release AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|x64.Build.0 = Release AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|Win32.ActiveCfg = Release SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|Win32.Build.0 = Release SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|x64.ActiveCfg = Release SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|x64.Build.0 = Release SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|Win32.ActiveCfg = Release SSE4|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|Win32.Build.0 = Release SSE4|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|x64.ActiveCfg = Release SSE4|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|x64.Build.0 = Release SSE4|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|Win32.ActiveCfg = Release SSSE3|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|Win32.Build.0 = Release SSSE3|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|x64.ActiveCfg = Release SSSE3|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|x64.Build.0 = Release SSSE3|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|Win32.ActiveCfg = Release SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|Win32.Build.0 = Release SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|x64.ActiveCfg = Release SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|x64.Build.0 = Release SSE2|x64 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX|Win32.Build.0 = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|Win32.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|Win32.Build.0 = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|x64.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Devel|Win32.ActiveCfg = Devel|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Devel|Win32.Build.0 = Devel|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Devel|x64.ActiveCfg = Devel|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX|Win32.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX|Win32.Build.0 = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX|x64.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX2|Win32.Build.0 = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX2|x64.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE2|Win32.Build.0 = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE2|x64.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE4|Win32.Build.0 = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE4|x64.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|Win32.Build.0 = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|Win32.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|Win32.Build.0 = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|x64.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX|Win32.Build.0 = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|Win32.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|Win32.Build.0 = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|x64.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Devel|Win32.ActiveCfg = Devel|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Devel|Win32.Build.0 = Devel|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Devel|x64.ActiveCfg = Devel|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX|Win32.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX|Win32.Build.0 = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX|x64.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX2|Win32.Build.0 = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX2|x64.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE2|Win32.Build.0 = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE2|x64.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE4|Win32.Build.0 = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE4|x64.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|Win32.Build.0 = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|Win32.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|Win32.Build.0 = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|x64.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX|x64.ActiveCfg = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX|x64.Build.0 = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX2|x64.Build.0 = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE2|x64.Build.0 = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE4|x64.Build.0 = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSSE3|x64.Build.0 = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|Win32.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|Win32.Build.0 = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|x64.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Devel|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Devel|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Devel|x64.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX|x64.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX2|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX2|x64.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE2|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE2|x64.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE4|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE4|x64.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|x64.ActiveCfg = Release|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|x64.Build.0 = Release|x64 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX|Win32.Build.0 = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug|Win32.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug|Win32.Build.0 = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug|x64.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Devel|Win32.ActiveCfg = Devel|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Devel|Win32.Build.0 = Devel|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Devel|x64.ActiveCfg = Devel|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX|Win32.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX|Win32.Build.0 = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX|x64.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX2|Win32.Build.0 = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX2|x64.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE2|Win32.Build.0 = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE2|x64.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE4|Win32.Build.0 = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE4|x64.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|Win32.Build.0 = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release|Win32.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release|Win32.Build.0 = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release|x64.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX|x64.ActiveCfg = Debug|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|Win32.ActiveCfg = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|Win32.Build.0 = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|x64.ActiveCfg = Debug|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Devel|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Devel|Win32.Build.0 = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Devel|x64.ActiveCfg = Release|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX|Win32.Build.0 = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX|x64.ActiveCfg = Release|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX2|Win32.Build.0 = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX2|x64.ActiveCfg = Release|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE2|Win32.Build.0 = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE2|x64.ActiveCfg = Release|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE4|Win32.Build.0 = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE4|x64.ActiveCfg = Release|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|Win32.Build.0 = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|x64.ActiveCfg = Release|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release|x64.ActiveCfg = Release|x64 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX2|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX2|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE2|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE2|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE4|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE4|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSSE3|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSSE3|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Devel|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Devel|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Devel|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX2|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX2|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE2|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE2|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE4|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE4|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release|x64.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|Win32.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|Win32.Build.0 = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Devel|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Devel|Win32.Build.0 = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Devel|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX|Win32.Build.0 = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX|x64.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX2|Win32.Build.0 = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX2|x64.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE2|Win32.Build.0 = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE2|x64.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE4|Win32.Build.0 = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE4|x64.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|Win32.Build.0 = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release|x64.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|Win32.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|Win32.Build.0 = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Devel|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Devel|Win32.Build.0 = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Devel|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX|Win32.Build.0 = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX|x64.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX2|Win32.Build.0 = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX2|x64.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE2|Win32.Build.0 = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE2|x64.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE4|Win32.Build.0 = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE4|x64.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|Win32.Build.0 = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|x64.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|Win32.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|Win32.Build.0 = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Devel|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Devel|Win32.Build.0 = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Devel|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX|Win32.Build.0 = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX|x64.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX2|Win32.Build.0 = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX2|x64.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE2|Win32.Build.0 = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE2|x64.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE4|Win32.Build.0 = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE4|x64.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|Win32.Build.0 = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release|x64.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX|Win32.Build.0 = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|Win32.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|Win32.Build.0 = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|x64.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Devel|Win32.ActiveCfg = Devel|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Devel|Win32.Build.0 = Devel|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Devel|x64.ActiveCfg = Devel|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX|Win32.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX|Win32.Build.0 = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX|x64.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX2|Win32.Build.0 = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX2|x64.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE2|Win32.Build.0 = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE2|x64.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE4|Win32.Build.0 = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE4|x64.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|Win32.Build.0 = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release|Win32.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release|Win32.Build.0 = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release|x64.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX|Win32.Build.0 = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug|Win32.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug|Win32.Build.0 = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug|x64.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Devel|Win32.ActiveCfg = Devel|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Devel|Win32.Build.0 = Devel|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Devel|x64.ActiveCfg = Devel|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX|Win32.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX|Win32.Build.0 = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX|x64.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX2|Win32.Build.0 = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX2|x64.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE2|Win32.Build.0 = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE2|x64.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE4|Win32.Build.0 = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE4|x64.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|Win32.Build.0 = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release|Win32.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release|Win32.Build.0 = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release|x64.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX|Win32.Build.0 = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Devel|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Devel|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Devel|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX|x64.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX2|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX2|x64.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE2|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE2|x64.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE4|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE4|x64.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|x64.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX|Win32.Build.0 = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|Win32.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|Win32.Build.0 = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Devel|Win32.ActiveCfg = Devel|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Devel|Win32.Build.0 = Devel|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Devel|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX|Win32.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX|Win32.Build.0 = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX|x64.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX2|Win32.Build.0 = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX2|x64.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE2|Win32.Build.0 = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE2|x64.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE4|Win32.Build.0 = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE4|x64.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|Win32.Build.0 = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release|Win32.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release|Win32.Build.0 = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release|x64.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX|Win32.Build.0 = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|Win32.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|Win32.Build.0 = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|x64.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Devel|Win32.ActiveCfg = Devel|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Devel|Win32.Build.0 = Devel|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Devel|x64.ActiveCfg = Devel|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX|Win32.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX|Win32.Build.0 = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX|x64.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX2|Win32.Build.0 = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX2|x64.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE2|Win32.Build.0 = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE2|x64.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE4|Win32.Build.0 = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE4|x64.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|Win32.Build.0 = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|Win32.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|Win32.Build.0 = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|x64.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX|Win32.Build.0 = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|Win32.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|Win32.Build.0 = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Devel|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Devel|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Devel|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX|x64.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX2|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX2|x64.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE2|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE2|x64.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE4|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE4|x64.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|x64.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|Win32.Build.0 = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|Win32.Build.0 = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX|Win32.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX|Win32.Build.0 = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX|x64.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX2|Win32.Build.0 = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX2|x64.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|Win32.Build.0 = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|x64.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|Win32.Build.0 = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|x64.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|Win32.Build.0 = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|Win32.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|x64.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug|Win32.Build.0 = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Devel|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Devel|Win32.Build.0 = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Devel|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX|Win32.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX|Win32.Build.0 = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX|x64.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX2|Win32.Build.0 = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX2|x64.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE2|Win32.Build.0 = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE2|x64.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE4|Win32.Build.0 = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE4|x64.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSSE3|Win32.Build.0 = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release|Win32.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release|x64.ActiveCfg = Release|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX|Win32.ActiveCfg = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX|x64.ActiveCfg = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX|x64.Build.0 = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX2|Win32.ActiveCfg = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX2|x64.ActiveCfg = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX2|x64.Build.0 = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE2|Win32.ActiveCfg = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE2|x64.ActiveCfg = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE2|x64.Build.0 = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE4|Win32.ActiveCfg = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE4|x64.ActiveCfg = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE4|x64.Build.0 = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSSE3|Win32.ActiveCfg = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSSE3|x64.ActiveCfg = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSSE3|x64.Build.0 = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|Win32.ActiveCfg = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|Win32.Build.0 = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|x64.ActiveCfg = Debug|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|x64.Build.0 = Debug|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|Win32.ActiveCfg = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|Win32.Build.0 = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|x64.ActiveCfg = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|x64.Build.0 = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|Win32.ActiveCfg = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|Win32.Build.0 = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|x64.ActiveCfg = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|x64.Build.0 = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|Win32.ActiveCfg = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|Win32.Build.0 = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|x64.ActiveCfg = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|x64.Build.0 = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|Win32.ActiveCfg = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|Win32.Build.0 = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|x64.ActiveCfg = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|x64.Build.0 = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|Win32.ActiveCfg = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|Win32.Build.0 = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|x64.ActiveCfg = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|x64.Build.0 = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX|Win32.Build.0 = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug|Win32.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug|Win32.Build.0 = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug|x64.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Devel|Win32.ActiveCfg = Devel|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Devel|Win32.Build.0 = Devel|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Devel|x64.ActiveCfg = Devel|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX|Win32.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX|Win32.Build.0 = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX|x64.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX2|Win32.Build.0 = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX2|x64.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE2|Win32.Build.0 = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE2|x64.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE4|Win32.Build.0 = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE4|x64.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSSE3|Win32.Build.0 = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release|Win32.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release|Win32.Build.0 = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release|x64.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Devel|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Devel|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Devel|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX|Win32.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX|Win32.Build.0 = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX|x64.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX2|Win32.Build.0 = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX2|x64.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE2|Win32.Build.0 = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE2|x64.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE4|Win32.Build.0 = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE4|x64.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSSE3|Win32.Build.0 = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release|Win32.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release|Win32.Build.0 = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release|x64.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|x64.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Devel|Win32.ActiveCfg = Devel|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Devel|Win32.Build.0 = Devel|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Devel|x64.ActiveCfg = Devel|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX|Win32.Build.0 = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX|x64.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX2|Win32.Build.0 = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX2|x64.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE2|Win32.Build.0 = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE2|x64.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE4|Win32.Build.0 = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE4|x64.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSSE3|Win32.Build.0 = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.Build.0 = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|x64.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|Win32.Build.0 = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|x64.ActiveCfg = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|x64.Build.0 = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|x64.Build.0 = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|x64.Build.0 = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|x64.Build.0 = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|x64.Build.0 = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|Win32.ActiveCfg = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|Win32.Build.0 = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|x64.ActiveCfg = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|x64.Build.0 = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|Win32.ActiveCfg = Devel|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|Win32.Build.0 = Devel|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|x64.ActiveCfg = Devel|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|x64.Build.0 = Devel|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|Win32.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|Win32.Build.0 = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|x64.ActiveCfg = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|x64.Build.0 = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|Win32.Build.0 = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|x64.ActiveCfg = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|x64.Build.0 = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|Win32.Build.0 = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|x64.ActiveCfg = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|x64.Build.0 = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|Win32.Build.0 = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|x64.ActiveCfg = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|x64.Build.0 = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|Win32.Build.0 = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|x64.ActiveCfg = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|x64.Build.0 = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|Win32.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|Win32.Build.0 = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|x64.ActiveCfg = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|x64.Build.0 = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|Win32.Build.0 = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|x64.ActiveCfg = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|x64.Build.0 = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|x64.Build.0 = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|x64.Build.0 = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|x64.Build.0 = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|x64.Build.0 = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|Win32.ActiveCfg = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|Win32.Build.0 = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|x64.ActiveCfg = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|x64.Build.0 = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|Win32.ActiveCfg = Devel|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|Win32.Build.0 = Devel|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|x64.ActiveCfg = Devel|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|x64.Build.0 = Devel|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|Win32.ActiveCfg = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|Win32.Build.0 = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|x64.ActiveCfg = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|x64.Build.0 = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|Win32.Build.0 = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|x64.ActiveCfg = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|x64.Build.0 = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|Win32.Build.0 = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|x64.ActiveCfg = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|x64.Build.0 = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|Win32.Build.0 = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|x64.ActiveCfg = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|x64.Build.0 = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|Win32.Build.0 = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|x64.ActiveCfg = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|x64.Build.0 = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|Win32.ActiveCfg = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|Win32.Build.0 = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|x64.ActiveCfg = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|x64.Build.0 = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|Win32.Build.0 = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|x64.ActiveCfg = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|x64.Build.0 = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|x64.Build.0 = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|x64.Build.0 = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|x64.Build.0 = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|x64.Build.0 = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|Win32.ActiveCfg = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|Win32.Build.0 = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|x64.ActiveCfg = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|x64.Build.0 = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|Win32.ActiveCfg = Devel|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|Win32.Build.0 = Devel|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|x64.ActiveCfg = Devel|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|x64.Build.0 = Devel|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|Win32.ActiveCfg = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|Win32.Build.0 = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|x64.ActiveCfg = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|x64.Build.0 = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|Win32.Build.0 = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|x64.ActiveCfg = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|x64.Build.0 = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|Win32.Build.0 = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|x64.ActiveCfg = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|x64.Build.0 = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|Win32.Build.0 = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|x64.ActiveCfg = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|x64.Build.0 = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|Win32.Build.0 = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|x64.ActiveCfg = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|x64.Build.0 = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|Win32.ActiveCfg = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|Win32.Build.0 = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|x64.ActiveCfg = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|x64.Build.0 = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|Win32.Build.0 = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|x64.ActiveCfg = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|x64.Build.0 = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|x64.Build.0 = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|x64.Build.0 = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|x64.Build.0 = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|x64.Build.0 = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|Win32.ActiveCfg = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|Win32.Build.0 = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|x64.ActiveCfg = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|x64.Build.0 = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|Win32.ActiveCfg = Devel|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|Win32.Build.0 = Devel|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|x64.ActiveCfg = Devel|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|x64.Build.0 = Devel|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|Win32.ActiveCfg = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|Win32.Build.0 = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|x64.ActiveCfg = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|x64.Build.0 = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|Win32.Build.0 = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|x64.ActiveCfg = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|x64.Build.0 = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|Win32.Build.0 = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|x64.ActiveCfg = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|x64.Build.0 = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|Win32.Build.0 = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|x64.ActiveCfg = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|x64.Build.0 = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|Win32.Build.0 = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|x64.ActiveCfg = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|x64.Build.0 = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|Win32.ActiveCfg = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|Win32.Build.0 = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|x64.ActiveCfg = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C} = {88F517F9-CE1C-4005-9BDF-4481FEB55053} - {62BF822E-6A12-49A8-BE8C-C55A9BCA24DA} = {0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C} - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {18E42F6F-3A62-41EE-B42F-79366C4F1E95} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {E4081455-398C-4610-A87C-90A8A7D72DC3} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {26511268-2902-4997-8421-ECD7055F9E28} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} - {04439C5F-05FB-4A9C-AAD1-5388C25377DB} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} - {A51123F5-9505-4EAE-85E7-D320290A272C} = {88F517F9-CE1C-4005-9BDF-4481FEB55053} - {4639972E-424E-4E13-8B07-CA403C481346} = {88F517F9-CE1C-4005-9BDF-4481FEB55053} - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213} = {2D6F0A62-A247-4CCF-947F-FCD54BE16103} - {BC236261-77E8-4567-8D09-45CD02965EB6} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} - {6BC4D85D-A399-407E-96A9-CD5416A54269} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} - {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {E613DA9F-41B4-4613-9911-E418EF5533BC} = {7A407562-D70F-4F0A-9D3E-B32506416003} - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3} = {7A407562-D70F-4F0A-9D3E-B32506416003} - {7A407562-D70F-4F0A-9D3E-B32506416003} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {24C45343-FD20-5C92-81C1-35A2AE841E79} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Nulls", "Nulls", "{E1828E40-2FBB-48FE-AE7F-5587755DCE0E}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3rdparty", "3rdparty", "{78EBE642-7A4D-4EA7-86BE-5639C6646C38}" + ProjectSection(SolutionItems) = preProject + 3rdparty\svn_readme.txt = 3rdparty\svn_readme.txt + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{703FD00B-D7A0-41E3-BD03-CEC86B385DAF}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{88F517F9-CE1C-4005-9BDF-4481FEB55053}" + ProjectSection(SolutionItems) = preProject + common\svn_readme.txt = common\svn_readme.txt + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Include", "Include", "{0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C}" + ProjectSection(SolutionItems) = preProject + common\include\afxresmw.h = common\include\afxresmw.h + common\include\intrin_x86.h = common\include\intrin_x86.h + common\include\Pcsx2Api.h = common\include\Pcsx2Api.h + common\include\Pcsx2Defs.h = common\include\Pcsx2Defs.h + common\include\Pcsx2Types.h = common\include\Pcsx2Types.h + common\include\PluginCallbacks.h = common\include\PluginCallbacks.h + common\include\PS2Etypes.h = common\include\PS2Etypes.h + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wx", "wx", "{62BF822E-6A12-49A8-BE8C-C55A9BCA24DA}" + ProjectSection(SolutionItems) = preProject + common\include\wx\folderdesc.txt = common\include\wx\folderdesc.txt + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{2D6F0A62-A247-4CCF-947F-FCD54BE16103}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pcsx2", "pcsx2\windows\VCprojects\pcsx2_vs2012.vcxproj", "{1CEFD830-2B76-4596-A4EE-BCD7280A60BD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPU2-X", "plugins\spu2-x\src\Windows\Spu2-X_vs2012.vcxproj", "{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GSdx", "plugins\GSdx\GSdx_vs2012.vcxproj", "{18E42F6F-3A62-41EE-B42F-79366C4F1E95}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SoundTouch", "3rdparty\soundtouch\SoundTouch_vs2012.vcxproj", "{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "3rdparty\zlib\zlib_vs2012.vcxproj", "{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LilyPad", "plugins\LilyPad\LilyPad_vs2012.vcxproj", "{E4081455-398C-4610-A87C-90A8A7D72DC3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w32pthreads.v4", "3rdparty\w32pthreads\pthreads_vs2012.vcxproj", "{26511268-2902-4997-8421-ECD7055F9E28}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xpad", "plugins\xpad\xpad_vs2012.vcxproj", "{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CDVDnull", "plugins\CDVDnull\Windows\CDVDnull_vs2012.vcxproj", "{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "USBnull", "plugins\USBnull\Windows\USBnull_vs2012.vcxproj", "{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FWnull", "plugins\FWnull\Windows\FWnull_vs2012.vcxproj", "{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DEV9null", "plugins\dev9null\Windows\DEV9null_vs2012.vcxproj", "{04439C5F-05FB-4A9C-AAD1-5388C25377DB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x86emitter", "common\build\x86emitter\x86emitter_vs2012.vcxproj", "{A51123F5-9505-4EAE-85E7-D320290A272C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utilities", "common\build\Utilities\utilities_vs2012.vcxproj", "{4639972E-424E-4E13-8B07-CA403C481346}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bin2cpp", "tools\bin2cpp\bin2c_vs2012.vcxproj", "{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg7", "3rdparty\libjpeg\libjpeg_vs2012.vcxproj", "{BC236261-77E8-4567-8D09-45CD02965EB6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w32pthreads_lib", "3rdparty\w32pthreads\pthreads_lib_vs2012.vcxproj", "{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdvdGigaherz", "plugins\cdvdGigaherz\src\Windows\cdvdGigaherz_vs2012.vcxproj", "{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GSnull", "plugins\GSnull\Windows\GSnull_vs2012.vcxproj", "{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Padnull", "plugins\PadNull\Windows\PadNull_vs2012.vcxproj", "{6BC4D85D-A399-407E-96A9-CD5416A54269}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "3rdparty\portaudio\build\msvc\portaudio_vs2012.vcxproj", "{0A18A071-125E-442F-AFF7-A3F68ABECF99}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "USBqemu", "plugins\USBqemu\Win32\USBqemu_vs2012.vcxproj", "{E613DA9F-41B4-4613-9911-E418EF5533BC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DEV9ghzdrk", "plugins\dev9ghzdrk\Win32\DEV9ghzdrk_vs2012.vcxproj", "{BBE4E5FB-530A-4D18-A633-35AF0577B7F3}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Experimental", "Experimental", "{7A407562-D70F-4F0A-9D3E-B32506416003}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "3rdparty\libpng\projects\vstudio\libpng\libpng_vs2012.vcxproj", "{D6973076-9317-4EF2-A0B8-B7A18AC0713E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxConfig30", "3rdparty\wxwidgets3.0\build\msw\wx30_config_vs2012.vcxproj", "{01F4CE10-2CFB-41A8-B41F-E54337868A1D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxBase30", "3rdparty\wxwidgets3.0\build\msw\wx30_base_vs2012.vcxproj", "{3FCC50C2-81E9-5DB2-B8D8-2129427568B1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxCore30", "3rdparty\wxwidgets3.0\build\msw\wx30_core_vs2012.vcxproj", "{6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxAdv30", "3rdparty\wxwidgets3.0\build\msw\wx30_adv_vs2012.vcxproj", "{24C45343-FD20-5C92-81C1-35A2AE841E79}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug AVX|Win32 = Debug AVX|Win32 + Debug AVX|x64 = Debug AVX|x64 + Debug AVX2|Win32 = Debug AVX2|Win32 + Debug AVX2|x64 = Debug AVX2|x64 + Debug SSE2|Win32 = Debug SSE2|Win32 + Debug SSE2|x64 = Debug SSE2|x64 + Debug SSE4|Win32 = Debug SSE4|Win32 + Debug SSE4|x64 = Debug SSE4|x64 + Debug SSSE3|Win32 = Debug SSSE3|Win32 + Debug SSSE3|x64 = Debug SSSE3|x64 + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Devel|Win32 = Devel|Win32 + Devel|x64 = Devel|x64 + Release AVX|Win32 = Release AVX|Win32 + Release AVX|x64 = Release AVX|x64 + Release AVX2|Win32 = Release AVX2|Win32 + Release AVX2|x64 = Release AVX2|x64 + Release SSE2|Win32 = Release SSE2|Win32 + Release SSE2|x64 = Release SSE2|x64 + Release SSE4|Win32 = Release SSE4|Win32 + Release SSE4|x64 = Release SSE4|x64 + Release SSSE3|Win32 = Release SSSE3|Win32 + Release SSSE3|x64 = Release SSSE3|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX|Win32.Build.0 = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|Win32.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|Win32.Build.0 = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|x64.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Devel|Win32.ActiveCfg = Devel|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Devel|Win32.Build.0 = Devel|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Devel|x64.ActiveCfg = Devel|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX|Win32.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX|Win32.Build.0 = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX|x64.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX2|Win32.Build.0 = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX2|x64.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE2|Win32.Build.0 = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE2|x64.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE4|Win32.Build.0 = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE4|x64.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|Win32.Build.0 = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|Win32.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|Win32.Build.0 = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|x64.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX|Win32.Build.0 = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|Win32.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|Win32.Build.0 = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|x64.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Devel|Win32.ActiveCfg = Devel|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Devel|Win32.Build.0 = Devel|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Devel|x64.ActiveCfg = Devel|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX|Win32.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX|Win32.Build.0 = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX|x64.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX2|Win32.Build.0 = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX2|x64.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE2|Win32.Build.0 = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE2|x64.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE4|Win32.Build.0 = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE4|x64.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|Win32.Build.0 = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|Win32.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|Win32.Build.0 = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|x64.ActiveCfg = Release|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|Win32.ActiveCfg = Debug AVX|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|Win32.Build.0 = Debug AVX|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|x64.ActiveCfg = Debug AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|x64.Build.0 = Debug AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|Win32.ActiveCfg = Debug AVX2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|Win32.Build.0 = Debug AVX2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|x64.ActiveCfg = Debug AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|x64.Build.0 = Debug AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|Win32.ActiveCfg = Debug SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|Win32.Build.0 = Debug SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|x64.ActiveCfg = Debug SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|x64.Build.0 = Debug SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|Win32.ActiveCfg = Debug SSE4|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|Win32.Build.0 = Debug SSE4|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|x64.ActiveCfg = Debug SSE4|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|x64.Build.0 = Debug SSE4|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|Win32.ActiveCfg = Debug SSSE3|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|Win32.Build.0 = Debug SSSE3|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|x64.ActiveCfg = Debug SSSE3|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|x64.Build.0 = Debug SSSE3|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|Win32.ActiveCfg = Debug SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|Win32.Build.0 = Debug SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|x64.ActiveCfg = Debug SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|x64.Build.0 = Debug SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|Win32.ActiveCfg = Release SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|Win32.Build.0 = Release SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|x64.ActiveCfg = Release SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|x64.Build.0 = Release SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|Win32.ActiveCfg = Release AVX|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|Win32.Build.0 = Release AVX|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|x64.ActiveCfg = Release AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|x64.Build.0 = Release AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|Win32.ActiveCfg = Release AVX2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|Win32.Build.0 = Release AVX2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|x64.ActiveCfg = Release AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|x64.Build.0 = Release AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|Win32.ActiveCfg = Release SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|Win32.Build.0 = Release SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|x64.ActiveCfg = Release SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|x64.Build.0 = Release SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|Win32.ActiveCfg = Release SSE4|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|Win32.Build.0 = Release SSE4|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|x64.ActiveCfg = Release SSE4|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|x64.Build.0 = Release SSE4|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|Win32.ActiveCfg = Release SSSE3|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|Win32.Build.0 = Release SSSE3|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|x64.ActiveCfg = Release SSSE3|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|x64.Build.0 = Release SSSE3|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|Win32.ActiveCfg = Release SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|Win32.Build.0 = Release SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|x64.ActiveCfg = Release SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|x64.Build.0 = Release SSE2|x64 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX|Win32.Build.0 = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|Win32.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|Win32.Build.0 = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|x64.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Devel|Win32.ActiveCfg = Devel|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Devel|Win32.Build.0 = Devel|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Devel|x64.ActiveCfg = Devel|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX|Win32.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX|Win32.Build.0 = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX|x64.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX2|Win32.Build.0 = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX2|x64.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE2|Win32.Build.0 = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE2|x64.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE4|Win32.Build.0 = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE4|x64.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|Win32.Build.0 = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|Win32.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|Win32.Build.0 = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|x64.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX|Win32.Build.0 = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|Win32.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|Win32.Build.0 = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|x64.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Devel|Win32.ActiveCfg = Devel|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Devel|Win32.Build.0 = Devel|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Devel|x64.ActiveCfg = Devel|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX|Win32.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX|Win32.Build.0 = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX|x64.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX2|Win32.Build.0 = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX2|x64.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE2|Win32.Build.0 = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE2|x64.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE4|Win32.Build.0 = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE4|x64.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|Win32.Build.0 = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|Win32.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|Win32.Build.0 = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|x64.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX|x64.ActiveCfg = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX|x64.Build.0 = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX2|x64.Build.0 = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE2|x64.Build.0 = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE4|x64.Build.0 = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSSE3|x64.Build.0 = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|Win32.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|Win32.Build.0 = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|x64.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Devel|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Devel|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Devel|x64.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX|x64.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX2|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX2|x64.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE2|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE2|x64.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE4|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE4|x64.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|x64.ActiveCfg = Release|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|x64.Build.0 = Release|x64 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX|Win32.Build.0 = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug|Win32.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug|Win32.Build.0 = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug|x64.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Devel|Win32.ActiveCfg = Devel|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Devel|Win32.Build.0 = Devel|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Devel|x64.ActiveCfg = Devel|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX|Win32.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX|Win32.Build.0 = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX|x64.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX2|Win32.Build.0 = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX2|x64.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE2|Win32.Build.0 = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE2|x64.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE4|Win32.Build.0 = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE4|x64.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|Win32.Build.0 = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release|Win32.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release|Win32.Build.0 = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release|x64.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX|x64.ActiveCfg = Debug|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|Win32.ActiveCfg = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|Win32.Build.0 = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|x64.ActiveCfg = Debug|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Devel|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Devel|Win32.Build.0 = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Devel|x64.ActiveCfg = Release|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX|Win32.Build.0 = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX|x64.ActiveCfg = Release|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX2|Win32.Build.0 = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX2|x64.ActiveCfg = Release|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE2|Win32.Build.0 = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE2|x64.ActiveCfg = Release|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE4|Win32.Build.0 = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE4|x64.ActiveCfg = Release|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|Win32.Build.0 = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|x64.ActiveCfg = Release|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release|x64.ActiveCfg = Release|x64 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX2|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX2|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE2|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE2|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE4|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE4|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSSE3|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSSE3|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Devel|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Devel|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Devel|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX2|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX2|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE2|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE2|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE4|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE4|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release|x64.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|Win32.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|Win32.Build.0 = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Devel|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Devel|Win32.Build.0 = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Devel|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX|Win32.Build.0 = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX|x64.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX2|Win32.Build.0 = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX2|x64.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE2|Win32.Build.0 = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE2|x64.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE4|Win32.Build.0 = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE4|x64.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|Win32.Build.0 = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release|x64.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|Win32.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|Win32.Build.0 = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Devel|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Devel|Win32.Build.0 = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Devel|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX|Win32.Build.0 = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX|x64.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX2|Win32.Build.0 = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX2|x64.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE2|Win32.Build.0 = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE2|x64.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE4|Win32.Build.0 = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE4|x64.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|Win32.Build.0 = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|x64.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|Win32.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|Win32.Build.0 = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Devel|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Devel|Win32.Build.0 = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Devel|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX|Win32.Build.0 = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX|x64.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX2|Win32.Build.0 = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX2|x64.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE2|Win32.Build.0 = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE2|x64.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE4|Win32.Build.0 = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE4|x64.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|Win32.Build.0 = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release|x64.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX|Win32.Build.0 = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|Win32.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|Win32.Build.0 = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|x64.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Devel|Win32.ActiveCfg = Devel|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Devel|Win32.Build.0 = Devel|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Devel|x64.ActiveCfg = Devel|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX|Win32.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX|Win32.Build.0 = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX|x64.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX2|Win32.Build.0 = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX2|x64.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE2|Win32.Build.0 = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE2|x64.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE4|Win32.Build.0 = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE4|x64.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|Win32.Build.0 = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release|Win32.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release|Win32.Build.0 = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release|x64.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX|Win32.Build.0 = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug|Win32.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug|Win32.Build.0 = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug|x64.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Devel|Win32.ActiveCfg = Devel|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Devel|Win32.Build.0 = Devel|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Devel|x64.ActiveCfg = Devel|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX|Win32.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX|Win32.Build.0 = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX|x64.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX2|Win32.Build.0 = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX2|x64.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE2|Win32.Build.0 = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE2|x64.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE4|Win32.Build.0 = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE4|x64.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|Win32.Build.0 = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release|Win32.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release|Win32.Build.0 = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release|x64.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX|Win32.Build.0 = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Devel|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Devel|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Devel|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX|x64.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX2|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX2|x64.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE2|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE2|x64.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE4|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE4|x64.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|x64.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX|Win32.Build.0 = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|Win32.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|Win32.Build.0 = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Devel|Win32.ActiveCfg = Devel|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Devel|Win32.Build.0 = Devel|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Devel|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX|Win32.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX|Win32.Build.0 = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX|x64.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX2|Win32.Build.0 = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX2|x64.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE2|Win32.Build.0 = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE2|x64.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE4|Win32.Build.0 = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE4|x64.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|Win32.Build.0 = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release|Win32.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release|Win32.Build.0 = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release|x64.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX|Win32.Build.0 = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|Win32.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|Win32.Build.0 = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|x64.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Devel|Win32.ActiveCfg = Devel|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Devel|Win32.Build.0 = Devel|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Devel|x64.ActiveCfg = Devel|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX|Win32.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX|Win32.Build.0 = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX|x64.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX2|Win32.Build.0 = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX2|x64.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE2|Win32.Build.0 = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE2|x64.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE4|Win32.Build.0 = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE4|x64.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|Win32.Build.0 = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|Win32.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|Win32.Build.0 = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|x64.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX|Win32.Build.0 = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|Win32.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|Win32.Build.0 = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Devel|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Devel|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Devel|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX|x64.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX2|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX2|x64.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE2|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE2|x64.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE4|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE4|x64.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|x64.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|Win32.Build.0 = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|Win32.Build.0 = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX|Win32.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX|Win32.Build.0 = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX|x64.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX2|Win32.Build.0 = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX2|x64.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|Win32.Build.0 = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|x64.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|Win32.Build.0 = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|x64.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|Win32.Build.0 = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|Win32.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|x64.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug|Win32.Build.0 = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Devel|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Devel|Win32.Build.0 = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Devel|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX|Win32.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX|Win32.Build.0 = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX|x64.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX2|Win32.Build.0 = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX2|x64.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE2|Win32.Build.0 = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE2|x64.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE4|Win32.Build.0 = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE4|x64.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSSE3|Win32.Build.0 = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release|Win32.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release|x64.ActiveCfg = Release|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX|Win32.ActiveCfg = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX|x64.ActiveCfg = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX|x64.Build.0 = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX2|Win32.ActiveCfg = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX2|x64.ActiveCfg = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX2|x64.Build.0 = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE2|Win32.ActiveCfg = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE2|x64.ActiveCfg = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE2|x64.Build.0 = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE4|Win32.ActiveCfg = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE4|x64.ActiveCfg = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE4|x64.Build.0 = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSSE3|Win32.ActiveCfg = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSSE3|x64.ActiveCfg = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSSE3|x64.Build.0 = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|Win32.ActiveCfg = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|Win32.Build.0 = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|x64.ActiveCfg = Debug|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|x64.Build.0 = Debug|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|Win32.ActiveCfg = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|Win32.Build.0 = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|x64.ActiveCfg = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|x64.Build.0 = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|Win32.ActiveCfg = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|Win32.Build.0 = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|x64.ActiveCfg = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|x64.Build.0 = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|Win32.ActiveCfg = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|Win32.Build.0 = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|x64.ActiveCfg = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|x64.Build.0 = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|Win32.ActiveCfg = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|Win32.Build.0 = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|x64.ActiveCfg = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|x64.Build.0 = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|Win32.ActiveCfg = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|Win32.Build.0 = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|x64.ActiveCfg = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|x64.Build.0 = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX|Win32.Build.0 = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug|Win32.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug|Win32.Build.0 = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug|x64.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Devel|Win32.ActiveCfg = Devel|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Devel|Win32.Build.0 = Devel|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Devel|x64.ActiveCfg = Devel|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX|Win32.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX|Win32.Build.0 = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX|x64.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX2|Win32.Build.0 = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX2|x64.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE2|Win32.Build.0 = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE2|x64.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE4|Win32.Build.0 = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE4|x64.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSSE3|Win32.Build.0 = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release|Win32.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release|Win32.Build.0 = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release|x64.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Devel|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Devel|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Devel|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX|Win32.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX|Win32.Build.0 = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX|x64.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX2|Win32.Build.0 = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX2|x64.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE2|Win32.Build.0 = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE2|x64.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE4|Win32.Build.0 = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE4|x64.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSSE3|Win32.Build.0 = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release|Win32.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release|Win32.Build.0 = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release|x64.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|x64.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Devel|Win32.ActiveCfg = Devel|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Devel|Win32.Build.0 = Devel|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Devel|x64.ActiveCfg = Devel|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX|Win32.Build.0 = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX|x64.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX2|Win32.Build.0 = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX2|x64.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE2|Win32.Build.0 = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE2|x64.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE4|Win32.Build.0 = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE4|x64.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSSE3|Win32.Build.0 = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.Build.0 = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|x64.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|Win32.Build.0 = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|x64.ActiveCfg = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|x64.Build.0 = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|x64.Build.0 = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|x64.Build.0 = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|x64.Build.0 = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|x64.Build.0 = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|Win32.ActiveCfg = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|Win32.Build.0 = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|x64.ActiveCfg = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|x64.Build.0 = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|Win32.ActiveCfg = Devel|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|Win32.Build.0 = Devel|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|x64.ActiveCfg = Devel|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|x64.Build.0 = Devel|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|Win32.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|Win32.Build.0 = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|x64.ActiveCfg = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|x64.Build.0 = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|Win32.Build.0 = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|x64.ActiveCfg = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|x64.Build.0 = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|Win32.Build.0 = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|x64.ActiveCfg = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|x64.Build.0 = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|Win32.Build.0 = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|x64.ActiveCfg = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|x64.Build.0 = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|Win32.Build.0 = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|x64.ActiveCfg = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|x64.Build.0 = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|Win32.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|Win32.Build.0 = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|x64.ActiveCfg = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|x64.Build.0 = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|Win32.Build.0 = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|x64.ActiveCfg = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|x64.Build.0 = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|x64.Build.0 = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|x64.Build.0 = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|x64.Build.0 = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|x64.Build.0 = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|Win32.ActiveCfg = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|Win32.Build.0 = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|x64.ActiveCfg = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|x64.Build.0 = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|Win32.ActiveCfg = Devel|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|Win32.Build.0 = Devel|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|x64.ActiveCfg = Devel|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|x64.Build.0 = Devel|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|Win32.ActiveCfg = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|Win32.Build.0 = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|x64.ActiveCfg = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|x64.Build.0 = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|Win32.Build.0 = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|x64.ActiveCfg = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|x64.Build.0 = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|Win32.Build.0 = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|x64.ActiveCfg = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|x64.Build.0 = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|Win32.Build.0 = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|x64.ActiveCfg = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|x64.Build.0 = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|Win32.Build.0 = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|x64.ActiveCfg = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|x64.Build.0 = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|Win32.ActiveCfg = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|Win32.Build.0 = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|x64.ActiveCfg = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|x64.Build.0 = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|Win32.Build.0 = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|x64.ActiveCfg = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|x64.Build.0 = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|x64.Build.0 = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|x64.Build.0 = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|x64.Build.0 = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|x64.Build.0 = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|Win32.ActiveCfg = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|Win32.Build.0 = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|x64.ActiveCfg = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|x64.Build.0 = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|Win32.ActiveCfg = Devel|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|Win32.Build.0 = Devel|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|x64.ActiveCfg = Devel|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|x64.Build.0 = Devel|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|Win32.ActiveCfg = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|Win32.Build.0 = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|x64.ActiveCfg = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|x64.Build.0 = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|Win32.Build.0 = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|x64.ActiveCfg = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|x64.Build.0 = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|Win32.Build.0 = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|x64.ActiveCfg = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|x64.Build.0 = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|Win32.Build.0 = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|x64.ActiveCfg = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|x64.Build.0 = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|Win32.Build.0 = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|x64.ActiveCfg = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|x64.Build.0 = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|Win32.ActiveCfg = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|Win32.Build.0 = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|x64.ActiveCfg = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|x64.Build.0 = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|Win32.Build.0 = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|x64.ActiveCfg = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|x64.Build.0 = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|x64.Build.0 = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|x64.Build.0 = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|x64.Build.0 = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|x64.Build.0 = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|Win32.ActiveCfg = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|Win32.Build.0 = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|x64.ActiveCfg = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|x64.Build.0 = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|Win32.ActiveCfg = Devel|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|Win32.Build.0 = Devel|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|x64.ActiveCfg = Devel|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|x64.Build.0 = Devel|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|Win32.ActiveCfg = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|Win32.Build.0 = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|x64.ActiveCfg = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|x64.Build.0 = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|Win32.Build.0 = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|x64.ActiveCfg = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|x64.Build.0 = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|Win32.Build.0 = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|x64.ActiveCfg = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|x64.Build.0 = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|Win32.Build.0 = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|x64.ActiveCfg = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|x64.Build.0 = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|Win32.Build.0 = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|x64.ActiveCfg = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|x64.Build.0 = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|Win32.ActiveCfg = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|Win32.Build.0 = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|x64.ActiveCfg = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C} = {88F517F9-CE1C-4005-9BDF-4481FEB55053} + {62BF822E-6A12-49A8-BE8C-C55A9BCA24DA} = {0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C} + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {18E42F6F-3A62-41EE-B42F-79366C4F1E95} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {E4081455-398C-4610-A87C-90A8A7D72DC3} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {26511268-2902-4997-8421-ECD7055F9E28} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} + {04439C5F-05FB-4A9C-AAD1-5388C25377DB} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} + {A51123F5-9505-4EAE-85E7-D320290A272C} = {88F517F9-CE1C-4005-9BDF-4481FEB55053} + {4639972E-424E-4E13-8B07-CA403C481346} = {88F517F9-CE1C-4005-9BDF-4481FEB55053} + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213} = {2D6F0A62-A247-4CCF-947F-FCD54BE16103} + {BC236261-77E8-4567-8D09-45CD02965EB6} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} + {6BC4D85D-A399-407E-96A9-CD5416A54269} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} + {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {E613DA9F-41B4-4613-9911-E418EF5533BC} = {7A407562-D70F-4F0A-9D3E-B32506416003} + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3} = {7A407562-D70F-4F0A-9D3E-B32506416003} + {7A407562-D70F-4F0A-9D3E-B32506416003} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {24C45343-FD20-5C92-81C1-35A2AE841E79} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + EndGlobalSection +EndGlobal diff --git a/pcsx2_suite_2013.sln b/pcsx2_suite_2013.sln index 99f30b54ea..7cf18faa92 100644 --- a/pcsx2_suite_2013.sln +++ b/pcsx2_suite_2013.sln @@ -1,1345 +1,1345 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.31101.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Nulls", "Nulls", "{E1828E40-2FBB-48FE-AE7F-5587755DCE0E}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3rdparty", "3rdparty", "{78EBE642-7A4D-4EA7-86BE-5639C6646C38}" - ProjectSection(SolutionItems) = preProject - 3rdparty\svn_readme.txt = 3rdparty\svn_readme.txt - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{703FD00B-D7A0-41E3-BD03-CEC86B385DAF}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{88F517F9-CE1C-4005-9BDF-4481FEB55053}" - ProjectSection(SolutionItems) = preProject - common\svn_readme.txt = common\svn_readme.txt - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Include", "Include", "{0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C}" - ProjectSection(SolutionItems) = preProject - common\include\afxresmw.h = common\include\afxresmw.h - common\include\intrin_x86.h = common\include\intrin_x86.h - common\include\Pcsx2Api.h = common\include\Pcsx2Api.h - common\include\Pcsx2Defs.h = common\include\Pcsx2Defs.h - common\include\Pcsx2Types.h = common\include\Pcsx2Types.h - common\include\PluginCallbacks.h = common\include\PluginCallbacks.h - common\include\PS2Etypes.h = common\include\PS2Etypes.h - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wx", "wx", "{62BF822E-6A12-49A8-BE8C-C55A9BCA24DA}" - ProjectSection(SolutionItems) = preProject - common\include\wx\folderdesc.txt = common\include\wx\folderdesc.txt - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{2D6F0A62-A247-4CCF-947F-FCD54BE16103}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pcsx2", "pcsx2\windows\VCprojects\pcsx2_vs2013.vcxproj", "{1CEFD830-2B76-4596-A4EE-BCD7280A60BD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPU2-X", "plugins\spu2-x\src\Windows\Spu2-X_vs2013.vcxproj", "{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GSdx", "plugins\GSdx\GSdx_vs2013.vcxproj", "{18E42F6F-3A62-41EE-B42F-79366C4F1E95}" - ProjectSection(ProjectDependencies) = postProject - {D80D4A75-C385-41BD-AE62-83D2E2B595A7} = {D80D4A75-C385-41BD-AE62-83D2E2B595A7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SoundTouch", "3rdparty\soundtouch\SoundTouch_vs2013.vcxproj", "{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "3rdparty\zlib\zlib_vs2013.vcxproj", "{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LilyPad", "plugins\LilyPad\LilyPad_vs2013.vcxproj", "{E4081455-398C-4610-A87C-90A8A7D72DC3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w32pthreads.v4", "3rdparty\w32pthreads\pthreads_vs2013.vcxproj", "{26511268-2902-4997-8421-ECD7055F9E28}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xpad", "plugins\xpad\xpad_vs2013.vcxproj", "{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CDVDnull", "plugins\CDVDnull\Windows\CDVDnull_vs2013.vcxproj", "{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "USBnull", "plugins\USBnull\Windows\USBnull_vs2013.vcxproj", "{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FWnull", "plugins\FWnull\Windows\FWnull_vs2013.vcxproj", "{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DEV9null", "plugins\dev9null\Windows\DEV9null_vs2013.vcxproj", "{04439C5F-05FB-4A9C-AAD1-5388C25377DB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x86emitter", "common\build\x86emitter\x86emitter_vs2013.vcxproj", "{A51123F5-9505-4EAE-85E7-D320290A272C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utilities", "common\build\Utilities\utilities_vs2013.vcxproj", "{4639972E-424E-4E13-8B07-CA403C481346}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bin2cpp", "tools\bin2cpp\bin2c_vs2013.vcxproj", "{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg7", "3rdparty\libjpeg\libjpeg_vs2013.vcxproj", "{BC236261-77E8-4567-8D09-45CD02965EB6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w32pthreads_lib", "3rdparty\w32pthreads\pthreads_lib_vs2013.vcxproj", "{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdvdGigaherz", "plugins\cdvdGigaherz\src\Windows\cdvdGigaherz_vs2013.vcxproj", "{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GSnull", "plugins\GSnull\Windows\GSnull_vs2013.vcxproj", "{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Padnull", "plugins\PadNull\Windows\PadNull_vs2013.vcxproj", "{6BC4D85D-A399-407E-96A9-CD5416A54269}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "3rdparty\portaudio\build\msvc\portaudio_vs2013.vcxproj", "{0A18A071-125E-442F-AFF7-A3F68ABECF99}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "USBqemu", "plugins\USBqemu\Win32\USBqemu_vs2013.vcxproj", "{E613DA9F-41B4-4613-9911-E418EF5533BC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DEV9ghzdrk", "plugins\dev9ghzdrk\Win32\DEV9ghzdrk_vs2013.vcxproj", "{BBE4E5FB-530A-4D18-A633-35AF0577B7F3}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Experimental", "Experimental", "{7A407562-D70F-4F0A-9D3E-B32506416003}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opencl", "3rdparty\opencl\opencl.vcxproj", "{D80D4A75-C385-41BD-AE62-83D2E2B595A7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxConfig30", "3rdparty\wxwidgets3.0\build\msw\wx30_config_vs2013.vcxproj", "{01F4CE10-2CFB-41A8-B41F-E54337868A1D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxBase30", "3rdparty\wxwidgets3.0\build\msw\wx30_base_vs2013.vcxproj", "{3FCC50C2-81E9-5DB2-B8D8-2129427568B1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxAdv30", "3rdparty\wxwidgets3.0\build\msw\wx30_adv_vs2013.vcxproj", "{24C45343-FD20-5C92-81C1-35A2AE841E79}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxCore30", "3rdparty\wxwidgets3.0\build\msw\wx30_core_vs2013.vcxproj", "{6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "3rdparty\libpng\projects\vstudio\libpng\libpng_vs2013.vcxproj", "{D6973076-9317-4EF2-A0B8-B7A18AC0713E}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug AVX|Win32 = Debug AVX|Win32 - Debug AVX|x64 = Debug AVX|x64 - Debug AVX2|Win32 = Debug AVX2|Win32 - Debug AVX2|x64 = Debug AVX2|x64 - Debug SSE2|Win32 = Debug SSE2|Win32 - Debug SSE2|x64 = Debug SSE2|x64 - Debug SSE4|Win32 = Debug SSE4|Win32 - Debug SSE4|x64 = Debug SSE4|x64 - Debug SSSE3|Win32 = Debug SSSE3|Win32 - Debug SSSE3|x64 = Debug SSSE3|x64 - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Devel|Win32 = Devel|Win32 - Devel|x64 = Devel|x64 - Release AVX|Win32 = Release AVX|Win32 - Release AVX|x64 = Release AVX|x64 - Release AVX2|Win32 = Release AVX2|Win32 - Release AVX2|x64 = Release AVX2|x64 - Release SSE2|Win32 = Release SSE2|Win32 - Release SSE2|x64 = Release SSE2|x64 - Release SSE4|Win32 = Release SSE4|Win32 - Release SSE4|x64 = Release SSE4|x64 - Release SSSE3|Win32 = Release SSSE3|Win32 - Release SSSE3|x64 = Release SSSE3|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX|Win32.Build.0 = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|Win32.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|Win32.Build.0 = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|x64.ActiveCfg = Debug|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Devel|Win32.ActiveCfg = Devel|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Devel|Win32.Build.0 = Devel|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Devel|x64.ActiveCfg = Devel|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX|Win32.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX|Win32.Build.0 = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX|x64.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX2|Win32.Build.0 = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX2|x64.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE2|Win32.Build.0 = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE2|x64.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE4|Win32.Build.0 = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE4|x64.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|Win32.Build.0 = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|Win32.ActiveCfg = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|Win32.Build.0 = Release|Win32 - {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|x64.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX|Win32.Build.0 = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|Win32.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|Win32.Build.0 = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|x64.ActiveCfg = Debug|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Devel|Win32.ActiveCfg = Devel|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Devel|Win32.Build.0 = Devel|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Devel|x64.ActiveCfg = Devel|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX|Win32.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX|Win32.Build.0 = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX|x64.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX2|Win32.Build.0 = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX2|x64.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE2|Win32.Build.0 = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE2|x64.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE4|Win32.Build.0 = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE4|x64.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|Win32.Build.0 = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|Win32.ActiveCfg = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|Win32.Build.0 = Release|Win32 - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|x64.ActiveCfg = Release|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|Win32.ActiveCfg = Debug AVX|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|Win32.Build.0 = Debug AVX|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|x64.ActiveCfg = Debug AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|x64.Build.0 = Debug AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|Win32.ActiveCfg = Debug AVX2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|Win32.Build.0 = Debug AVX2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|x64.ActiveCfg = Debug AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|x64.Build.0 = Debug AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|Win32.ActiveCfg = Debug SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|Win32.Build.0 = Debug SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|x64.ActiveCfg = Debug SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|x64.Build.0 = Debug SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|Win32.ActiveCfg = Debug SSE4|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|Win32.Build.0 = Debug SSE4|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|x64.ActiveCfg = Debug SSE4|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|x64.Build.0 = Debug SSE4|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|Win32.ActiveCfg = Debug SSSE3|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|Win32.Build.0 = Debug SSSE3|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|x64.ActiveCfg = Debug SSSE3|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|x64.Build.0 = Debug SSSE3|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|Win32.ActiveCfg = Debug SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|Win32.Build.0 = Debug SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|x64.ActiveCfg = Debug SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|x64.Build.0 = Debug SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|Win32.ActiveCfg = Release SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|Win32.Build.0 = Release SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|x64.ActiveCfg = Release SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|x64.Build.0 = Release SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|Win32.ActiveCfg = Release AVX|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|Win32.Build.0 = Release AVX|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|x64.ActiveCfg = Release AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|x64.Build.0 = Release AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|Win32.ActiveCfg = Release AVX2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|Win32.Build.0 = Release AVX2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|x64.ActiveCfg = Release AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|x64.Build.0 = Release AVX|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|Win32.ActiveCfg = Release SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|Win32.Build.0 = Release SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|x64.ActiveCfg = Release SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|x64.Build.0 = Release SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|Win32.ActiveCfg = Release SSE4|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|Win32.Build.0 = Release SSE4|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|x64.ActiveCfg = Release SSE4|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|x64.Build.0 = Release SSE4|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|Win32.ActiveCfg = Release SSSE3|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|Win32.Build.0 = Release SSSE3|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|x64.ActiveCfg = Release SSSE3|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|x64.Build.0 = Release SSSE3|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|Win32.ActiveCfg = Release SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|Win32.Build.0 = Release SSE2|Win32 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|x64.ActiveCfg = Release SSE2|x64 - {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|x64.Build.0 = Release SSE2|x64 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX|Win32.Build.0 = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|Win32.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|Win32.Build.0 = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|x64.ActiveCfg = Debug|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Devel|Win32.ActiveCfg = Devel|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Devel|Win32.Build.0 = Devel|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Devel|x64.ActiveCfg = Devel|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX|Win32.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX|Win32.Build.0 = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX|x64.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX2|Win32.Build.0 = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX2|x64.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE2|Win32.Build.0 = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE2|x64.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE4|Win32.Build.0 = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE4|x64.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|Win32.Build.0 = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|Win32.ActiveCfg = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|Win32.Build.0 = Release|Win32 - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|x64.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX|Win32.Build.0 = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|Win32.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|Win32.Build.0 = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|x64.ActiveCfg = Debug|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Devel|Win32.ActiveCfg = Devel|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Devel|Win32.Build.0 = Devel|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Devel|x64.ActiveCfg = Devel|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX|Win32.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX|Win32.Build.0 = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX|x64.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX2|Win32.Build.0 = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX2|x64.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE2|Win32.Build.0 = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE2|x64.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE4|Win32.Build.0 = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE4|x64.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|Win32.Build.0 = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|Win32.ActiveCfg = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|Win32.Build.0 = Release|Win32 - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|x64.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX|x64.ActiveCfg = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX|x64.Build.0 = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX2|x64.Build.0 = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE2|x64.Build.0 = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE4|x64.Build.0 = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSSE3|x64.Build.0 = Debug|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|Win32.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|Win32.Build.0 = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|x64.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Devel|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Devel|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Devel|x64.ActiveCfg = Debug|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX|x64.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX2|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX2|x64.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE2|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE2|x64.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE4|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE4|x64.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|Win32.ActiveCfg = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|Win32.Build.0 = Release|Win32 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|x64.ActiveCfg = Release|x64 - {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|x64.Build.0 = Release|x64 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX|Win32.Build.0 = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug|Win32.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug|Win32.Build.0 = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Debug|x64.ActiveCfg = Debug|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Devel|Win32.ActiveCfg = Devel|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Devel|Win32.Build.0 = Devel|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Devel|x64.ActiveCfg = Devel|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX|Win32.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX|Win32.Build.0 = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX|x64.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX2|Win32.Build.0 = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX2|x64.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE2|Win32.Build.0 = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE2|x64.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE4|Win32.Build.0 = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE4|x64.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|Win32.Build.0 = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release|Win32.ActiveCfg = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release|Win32.Build.0 = Release|Win32 - {26511268-2902-4997-8421-ECD7055F9E28}.Release|x64.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX|x64.ActiveCfg = Debug|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|Win32.ActiveCfg = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|Win32.Build.0 = Debug|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|x64.ActiveCfg = Debug|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Devel|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Devel|Win32.Build.0 = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Devel|x64.ActiveCfg = Release|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX|Win32.Build.0 = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX|x64.ActiveCfg = Release|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX2|Win32.Build.0 = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX2|x64.ActiveCfg = Release|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE2|Win32.Build.0 = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE2|x64.ActiveCfg = Release|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE4|Win32.Build.0 = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE4|x64.ActiveCfg = Release|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|Win32.Build.0 = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|x64.ActiveCfg = Release|x64 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release|Win32.ActiveCfg = Release|Win32 - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release|x64.ActiveCfg = Release|x64 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX2|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX2|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE2|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE2|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE4|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE4|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSSE3|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSSE3|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Devel|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Devel|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Devel|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX2|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX2|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE2|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE2|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE4|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE4|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|Win32.Build.0 = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release|Win32.ActiveCfg = Release|Win32 - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release|x64.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|Win32.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|Win32.Build.0 = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Devel|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Devel|Win32.Build.0 = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Devel|x64.ActiveCfg = Debug|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX|Win32.Build.0 = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX|x64.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX2|Win32.Build.0 = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX2|x64.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE2|Win32.Build.0 = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE2|x64.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE4|Win32.Build.0 = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE4|x64.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|Win32.Build.0 = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release|Win32.ActiveCfg = Release|Win32 - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release|x64.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|Win32.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|Win32.Build.0 = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Devel|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Devel|Win32.Build.0 = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Devel|x64.ActiveCfg = Debug|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX|Win32.Build.0 = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX|x64.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX2|Win32.Build.0 = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX2|x64.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE2|Win32.Build.0 = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE2|x64.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE4|Win32.Build.0 = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE4|x64.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|Win32.Build.0 = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|Win32.ActiveCfg = Release|Win32 - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|x64.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|Win32.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|Win32.Build.0 = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Devel|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Devel|Win32.Build.0 = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Devel|x64.ActiveCfg = Debug|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX|Win32.Build.0 = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX|x64.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX2|Win32.Build.0 = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX2|x64.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE2|Win32.Build.0 = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE2|x64.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE4|Win32.Build.0 = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE4|x64.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|Win32.Build.0 = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release|Win32.ActiveCfg = Release|Win32 - {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release|x64.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX|Win32.Build.0 = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|Win32.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|Win32.Build.0 = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|x64.ActiveCfg = Debug|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Devel|Win32.ActiveCfg = Devel|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Devel|Win32.Build.0 = Devel|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Devel|x64.ActiveCfg = Devel|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX|Win32.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX|Win32.Build.0 = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX|x64.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX2|Win32.Build.0 = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX2|x64.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE2|Win32.Build.0 = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE2|x64.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE4|Win32.Build.0 = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE4|x64.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|Win32.Build.0 = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release|Win32.ActiveCfg = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release|Win32.Build.0 = Release|Win32 - {A51123F5-9505-4EAE-85E7-D320290A272C}.Release|x64.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX|Win32.Build.0 = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug|Win32.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug|Win32.Build.0 = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Debug|x64.ActiveCfg = Debug|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Devel|Win32.ActiveCfg = Devel|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Devel|Win32.Build.0 = Devel|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Devel|x64.ActiveCfg = Devel|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX|Win32.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX|Win32.Build.0 = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX|x64.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX2|Win32.Build.0 = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX2|x64.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE2|Win32.Build.0 = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE2|x64.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE4|Win32.Build.0 = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE4|x64.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|Win32.Build.0 = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release|Win32.ActiveCfg = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release|Win32.Build.0 = Release|Win32 - {4639972E-424E-4E13-8B07-CA403C481346}.Release|x64.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX|Win32.Build.0 = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Devel|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Devel|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Devel|x64.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX|x64.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX2|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX2|x64.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE2|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE2|x64.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE4|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE4|x64.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.Build.0 = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|x64.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX|Win32.Build.0 = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|Win32.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|Win32.Build.0 = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Devel|Win32.ActiveCfg = Devel|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Devel|Win32.Build.0 = Devel|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Devel|x64.ActiveCfg = Debug|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX|Win32.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX|Win32.Build.0 = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX|x64.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX2|Win32.Build.0 = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX2|x64.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE2|Win32.Build.0 = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE2|x64.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE4|Win32.Build.0 = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE4|x64.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|Win32.Build.0 = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release|Win32.ActiveCfg = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release|Win32.Build.0 = Release|Win32 - {BC236261-77E8-4567-8D09-45CD02965EB6}.Release|x64.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX|Win32.Build.0 = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|Win32.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|Win32.Build.0 = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|x64.ActiveCfg = Debug|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Devel|Win32.ActiveCfg = Devel|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Devel|Win32.Build.0 = Devel|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Devel|x64.ActiveCfg = Devel|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX|Win32.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX|Win32.Build.0 = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX|x64.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX2|Win32.Build.0 = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX2|x64.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE2|Win32.Build.0 = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE2|x64.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE4|Win32.Build.0 = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE4|x64.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|Win32.Build.0 = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|Win32.ActiveCfg = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|Win32.Build.0 = Release|Win32 - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|x64.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX|Win32.Build.0 = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|Win32.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|Win32.Build.0 = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Devel|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Devel|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Devel|x64.ActiveCfg = Debug|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX|x64.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX2|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX2|x64.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE2|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE2|x64.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE4|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE4|x64.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|Win32.ActiveCfg = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|Win32.Build.0 = Release|Win32 - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|x64.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|Win32.Build.0 = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|Win32.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|Win32.Build.0 = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|x64.ActiveCfg = Debug|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX|Win32.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX|Win32.Build.0 = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX|x64.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX2|Win32.Build.0 = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX2|x64.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|Win32.Build.0 = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|x64.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|Win32.Build.0 = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|x64.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|Win32.Build.0 = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|Win32.ActiveCfg = Release|Win32 - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|x64.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug|Win32.Build.0 = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Devel|Win32.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Devel|Win32.Build.0 = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Devel|x64.ActiveCfg = Debug|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX|Win32.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX|Win32.Build.0 = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX|x64.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX2|Win32.Build.0 = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX2|x64.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE2|Win32.Build.0 = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE2|x64.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE4|Win32.Build.0 = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE4|x64.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSSE3|Win32.Build.0 = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release|Win32.ActiveCfg = Release|Win32 - {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release|x64.ActiveCfg = Release|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX|Win32.ActiveCfg = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX|x64.ActiveCfg = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX|x64.Build.0 = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX2|Win32.ActiveCfg = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX2|x64.ActiveCfg = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX2|x64.Build.0 = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE2|Win32.ActiveCfg = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE2|x64.ActiveCfg = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE2|x64.Build.0 = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE4|Win32.ActiveCfg = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE4|x64.ActiveCfg = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE4|x64.Build.0 = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSSE3|Win32.ActiveCfg = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSSE3|x64.ActiveCfg = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSSE3|x64.Build.0 = Debug (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|Win32.ActiveCfg = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|Win32.Build.0 = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|x64.ActiveCfg = Debug|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|x64.Build.0 = Debug|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|Win32.ActiveCfg = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|Win32.Build.0 = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|x64.ActiveCfg = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|x64.Build.0 = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|Win32.ActiveCfg = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|Win32.Build.0 = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|x64.ActiveCfg = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|x64.Build.0 = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|Win32.ActiveCfg = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|Win32.Build.0 = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|x64.ActiveCfg = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|x64.Build.0 = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|Win32.ActiveCfg = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|Win32.Build.0 = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|x64.ActiveCfg = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|x64.Build.0 = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|Win32.ActiveCfg = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|Win32.Build.0 = Release (NO ASIO)|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|x64.ActiveCfg = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|x64.Build.0 = Release (NO ASIO)|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX|Win32.Build.0 = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug|Win32.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug|Win32.Build.0 = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug|x64.ActiveCfg = Debug|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Devel|Win32.ActiveCfg = Devel|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Devel|Win32.Build.0 = Devel|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Devel|x64.ActiveCfg = Devel|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX|Win32.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX|Win32.Build.0 = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX|x64.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX2|Win32.Build.0 = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX2|x64.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE2|Win32.Build.0 = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE2|x64.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE4|Win32.Build.0 = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE4|x64.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSSE3|Win32.Build.0 = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release|Win32.ActiveCfg = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release|Win32.Build.0 = Release|Win32 - {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release|x64.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Devel|Win32.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Devel|Win32.Build.0 = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Devel|x64.ActiveCfg = Debug|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX|Win32.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX|Win32.Build.0 = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX|x64.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX2|Win32.Build.0 = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX2|x64.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE2|Win32.Build.0 = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE2|x64.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE4|Win32.Build.0 = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE4|x64.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSSE3|Win32.Build.0 = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release|Win32.ActiveCfg = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release|Win32.Build.0 = Release|Win32 - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release|x64.ActiveCfg = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX|Win32.Build.0 = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX|x64.ActiveCfg = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX|x64.Build.0 = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX2|x64.Build.0 = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE2|x64.Build.0 = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE4|x64.Build.0 = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSSE3|x64.Build.0 = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug|Win32.ActiveCfg = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug|Win32.Build.0 = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug|x64.ActiveCfg = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug|x64.Build.0 = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Devel|Win32.ActiveCfg = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Devel|Win32.Build.0 = Debug|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Devel|x64.ActiveCfg = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Devel|x64.Build.0 = Debug|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX|Win32.ActiveCfg = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX|Win32.Build.0 = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX|x64.ActiveCfg = Release|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX|x64.Build.0 = Release|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX2|Win32.Build.0 = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX2|x64.ActiveCfg = Release|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX2|x64.Build.0 = Release|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE2|Win32.Build.0 = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE2|x64.ActiveCfg = Release|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE2|x64.Build.0 = Release|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE4|Win32.Build.0 = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE4|x64.ActiveCfg = Release|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE4|x64.Build.0 = Release|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSSE3|Win32.Build.0 = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSSE3|x64.ActiveCfg = Release|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSSE3|x64.Build.0 = Release|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release|Win32.ActiveCfg = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release|Win32.Build.0 = Release|Win32 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release|x64.ActiveCfg = Release|x64 - {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release|x64.Build.0 = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|Win32.Build.0 = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|x64.ActiveCfg = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|x64.Build.0 = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|x64.Build.0 = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|x64.Build.0 = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|x64.Build.0 = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|x64.Build.0 = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|Win32.ActiveCfg = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|Win32.Build.0 = Debug|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|x64.ActiveCfg = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|x64.Build.0 = Debug|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|Win32.ActiveCfg = Devel|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|Win32.Build.0 = Devel|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|x64.ActiveCfg = Devel|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|x64.Build.0 = Devel|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|Win32.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|Win32.Build.0 = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|x64.ActiveCfg = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|x64.Build.0 = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|Win32.Build.0 = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|x64.ActiveCfg = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|x64.Build.0 = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|Win32.Build.0 = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|x64.ActiveCfg = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|x64.Build.0 = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|Win32.Build.0 = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|x64.ActiveCfg = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|x64.Build.0 = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|Win32.Build.0 = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|x64.ActiveCfg = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|x64.Build.0 = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|Win32.ActiveCfg = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|Win32.Build.0 = Release|Win32 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|x64.ActiveCfg = Release|x64 - {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|x64.Build.0 = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|Win32.Build.0 = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|x64.ActiveCfg = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|x64.Build.0 = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|x64.Build.0 = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|x64.Build.0 = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|x64.Build.0 = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|x64.Build.0 = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|Win32.ActiveCfg = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|Win32.Build.0 = Debug|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|x64.ActiveCfg = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|x64.Build.0 = Debug|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|Win32.ActiveCfg = Devel|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|Win32.Build.0 = Devel|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|x64.ActiveCfg = Devel|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|x64.Build.0 = Devel|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|Win32.ActiveCfg = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|Win32.Build.0 = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|x64.ActiveCfg = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|x64.Build.0 = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|Win32.Build.0 = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|x64.ActiveCfg = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|x64.Build.0 = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|Win32.Build.0 = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|x64.ActiveCfg = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|x64.Build.0 = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|Win32.Build.0 = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|x64.ActiveCfg = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|x64.Build.0 = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|Win32.Build.0 = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|x64.ActiveCfg = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|x64.Build.0 = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|Win32.ActiveCfg = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|Win32.Build.0 = Release|Win32 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|x64.ActiveCfg = Release|x64 - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|x64.Build.0 = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|Win32.Build.0 = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|x64.ActiveCfg = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|x64.Build.0 = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|x64.Build.0 = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|x64.Build.0 = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|x64.Build.0 = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|x64.Build.0 = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|Win32.ActiveCfg = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|Win32.Build.0 = Debug|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|x64.ActiveCfg = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|x64.Build.0 = Debug|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|Win32.ActiveCfg = Devel|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|Win32.Build.0 = Devel|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|x64.ActiveCfg = Devel|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|x64.Build.0 = Devel|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|Win32.ActiveCfg = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|Win32.Build.0 = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|x64.ActiveCfg = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|x64.Build.0 = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|Win32.Build.0 = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|x64.ActiveCfg = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|x64.Build.0 = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|Win32.Build.0 = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|x64.ActiveCfg = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|x64.Build.0 = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|Win32.Build.0 = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|x64.ActiveCfg = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|x64.Build.0 = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|Win32.Build.0 = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|x64.ActiveCfg = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|x64.Build.0 = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|Win32.ActiveCfg = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|Win32.Build.0 = Release|Win32 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|x64.ActiveCfg = Release|x64 - {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|x64.Build.0 = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|Win32.Build.0 = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|x64.ActiveCfg = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|x64.Build.0 = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|x64.ActiveCfg = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|x64.Build.0 = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|x64.ActiveCfg = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|x64.Build.0 = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|x64.ActiveCfg = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|x64.Build.0 = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|x64.ActiveCfg = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|x64.Build.0 = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|Win32.ActiveCfg = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|Win32.Build.0 = Debug|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|x64.ActiveCfg = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|x64.Build.0 = Debug|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|Win32.ActiveCfg = Devel|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|Win32.Build.0 = Devel|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|x64.ActiveCfg = Devel|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|x64.Build.0 = Devel|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|Win32.ActiveCfg = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|Win32.Build.0 = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|x64.ActiveCfg = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|x64.Build.0 = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|Win32.Build.0 = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|x64.ActiveCfg = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|x64.Build.0 = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|Win32.Build.0 = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|x64.ActiveCfg = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|x64.Build.0 = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|Win32.Build.0 = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|x64.ActiveCfg = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|x64.Build.0 = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|Win32.Build.0 = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|x64.ActiveCfg = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|x64.Build.0 = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|Win32.ActiveCfg = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|Win32.Build.0 = Release|Win32 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|x64.ActiveCfg = Release|x64 - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|x64.Build.0 = Release|x64 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX|x64.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX2|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX2|x64.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE2|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE2|x64.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE4|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE4|x64.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSSE3|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|x64.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Devel|Win32.ActiveCfg = Devel|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Devel|Win32.Build.0 = Devel|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Devel|x64.ActiveCfg = Devel|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX|Win32.Build.0 = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX|x64.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX2|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX2|Win32.Build.0 = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX2|x64.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE2|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE2|Win32.Build.0 = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE2|x64.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE4|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE4|Win32.Build.0 = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE4|x64.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSSE3|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSSE3|Win32.Build.0 = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSSE3|x64.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.Build.0 = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|x64.ActiveCfg = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C} = {88F517F9-CE1C-4005-9BDF-4481FEB55053} - {62BF822E-6A12-49A8-BE8C-C55A9BCA24DA} = {0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C} - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {18E42F6F-3A62-41EE-B42F-79366C4F1E95} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {E4081455-398C-4610-A87C-90A8A7D72DC3} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {26511268-2902-4997-8421-ECD7055F9E28} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} - {04439C5F-05FB-4A9C-AAD1-5388C25377DB} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} - {A51123F5-9505-4EAE-85E7-D320290A272C} = {88F517F9-CE1C-4005-9BDF-4481FEB55053} - {4639972E-424E-4E13-8B07-CA403C481346} = {88F517F9-CE1C-4005-9BDF-4481FEB55053} - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213} = {2D6F0A62-A247-4CCF-947F-FCD54BE16103} - {BC236261-77E8-4567-8D09-45CD02965EB6} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} - {6BC4D85D-A399-407E-96A9-CD5416A54269} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} - {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {E613DA9F-41B4-4613-9911-E418EF5533BC} = {7A407562-D70F-4F0A-9D3E-B32506416003} - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3} = {7A407562-D70F-4F0A-9D3E-B32506416003} - {7A407562-D70F-4F0A-9D3E-B32506416003} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} - {D80D4A75-C385-41BD-AE62-83D2E2B595A7} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {3FCC50C2-81E9-5DB2-B8D8-2129427568B1} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {24C45343-FD20-5C92-81C1-35A2AE841E79} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Nulls", "Nulls", "{E1828E40-2FBB-48FE-AE7F-5587755DCE0E}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3rdparty", "3rdparty", "{78EBE642-7A4D-4EA7-86BE-5639C6646C38}" + ProjectSection(SolutionItems) = preProject + 3rdparty\svn_readme.txt = 3rdparty\svn_readme.txt + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{703FD00B-D7A0-41E3-BD03-CEC86B385DAF}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{88F517F9-CE1C-4005-9BDF-4481FEB55053}" + ProjectSection(SolutionItems) = preProject + common\svn_readme.txt = common\svn_readme.txt + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Include", "Include", "{0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C}" + ProjectSection(SolutionItems) = preProject + common\include\afxresmw.h = common\include\afxresmw.h + common\include\intrin_x86.h = common\include\intrin_x86.h + common\include\Pcsx2Api.h = common\include\Pcsx2Api.h + common\include\Pcsx2Defs.h = common\include\Pcsx2Defs.h + common\include\Pcsx2Types.h = common\include\Pcsx2Types.h + common\include\PluginCallbacks.h = common\include\PluginCallbacks.h + common\include\PS2Etypes.h = common\include\PS2Etypes.h + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wx", "wx", "{62BF822E-6A12-49A8-BE8C-C55A9BCA24DA}" + ProjectSection(SolutionItems) = preProject + common\include\wx\folderdesc.txt = common\include\wx\folderdesc.txt + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{2D6F0A62-A247-4CCF-947F-FCD54BE16103}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pcsx2", "pcsx2\windows\VCprojects\pcsx2_vs2013.vcxproj", "{1CEFD830-2B76-4596-A4EE-BCD7280A60BD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPU2-X", "plugins\spu2-x\src\Windows\Spu2-X_vs2013.vcxproj", "{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GSdx", "plugins\GSdx\GSdx_vs2013.vcxproj", "{18E42F6F-3A62-41EE-B42F-79366C4F1E95}" + ProjectSection(ProjectDependencies) = postProject + {D80D4A75-C385-41BD-AE62-83D2E2B595A7} = {D80D4A75-C385-41BD-AE62-83D2E2B595A7} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SoundTouch", "3rdparty\soundtouch\SoundTouch_vs2013.vcxproj", "{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "3rdparty\zlib\zlib_vs2013.vcxproj", "{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LilyPad", "plugins\LilyPad\LilyPad_vs2013.vcxproj", "{E4081455-398C-4610-A87C-90A8A7D72DC3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w32pthreads.v4", "3rdparty\w32pthreads\pthreads_vs2013.vcxproj", "{26511268-2902-4997-8421-ECD7055F9E28}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xpad", "plugins\xpad\xpad_vs2013.vcxproj", "{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CDVDnull", "plugins\CDVDnull\Windows\CDVDnull_vs2013.vcxproj", "{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "USBnull", "plugins\USBnull\Windows\USBnull_vs2013.vcxproj", "{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FWnull", "plugins\FWnull\Windows\FWnull_vs2013.vcxproj", "{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DEV9null", "plugins\dev9null\Windows\DEV9null_vs2013.vcxproj", "{04439C5F-05FB-4A9C-AAD1-5388C25377DB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x86emitter", "common\build\x86emitter\x86emitter_vs2013.vcxproj", "{A51123F5-9505-4EAE-85E7-D320290A272C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utilities", "common\build\Utilities\utilities_vs2013.vcxproj", "{4639972E-424E-4E13-8B07-CA403C481346}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bin2cpp", "tools\bin2cpp\bin2c_vs2013.vcxproj", "{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg7", "3rdparty\libjpeg\libjpeg_vs2013.vcxproj", "{BC236261-77E8-4567-8D09-45CD02965EB6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w32pthreads_lib", "3rdparty\w32pthreads\pthreads_lib_vs2013.vcxproj", "{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdvdGigaherz", "plugins\cdvdGigaherz\src\Windows\cdvdGigaherz_vs2013.vcxproj", "{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GSnull", "plugins\GSnull\Windows\GSnull_vs2013.vcxproj", "{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Padnull", "plugins\PadNull\Windows\PadNull_vs2013.vcxproj", "{6BC4D85D-A399-407E-96A9-CD5416A54269}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "3rdparty\portaudio\build\msvc\portaudio_vs2013.vcxproj", "{0A18A071-125E-442F-AFF7-A3F68ABECF99}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "USBqemu", "plugins\USBqemu\Win32\USBqemu_vs2013.vcxproj", "{E613DA9F-41B4-4613-9911-E418EF5533BC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DEV9ghzdrk", "plugins\dev9ghzdrk\Win32\DEV9ghzdrk_vs2013.vcxproj", "{BBE4E5FB-530A-4D18-A633-35AF0577B7F3}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Experimental", "Experimental", "{7A407562-D70F-4F0A-9D3E-B32506416003}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opencl", "3rdparty\opencl\opencl.vcxproj", "{D80D4A75-C385-41BD-AE62-83D2E2B595A7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxConfig30", "3rdparty\wxwidgets3.0\build\msw\wx30_config_vs2013.vcxproj", "{01F4CE10-2CFB-41A8-B41F-E54337868A1D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxBase30", "3rdparty\wxwidgets3.0\build\msw\wx30_base_vs2013.vcxproj", "{3FCC50C2-81E9-5DB2-B8D8-2129427568B1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxAdv30", "3rdparty\wxwidgets3.0\build\msw\wx30_adv_vs2013.vcxproj", "{24C45343-FD20-5C92-81C1-35A2AE841E79}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxCore30", "3rdparty\wxwidgets3.0\build\msw\wx30_core_vs2013.vcxproj", "{6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "3rdparty\libpng\projects\vstudio\libpng\libpng_vs2013.vcxproj", "{D6973076-9317-4EF2-A0B8-B7A18AC0713E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug AVX|Win32 = Debug AVX|Win32 + Debug AVX|x64 = Debug AVX|x64 + Debug AVX2|Win32 = Debug AVX2|Win32 + Debug AVX2|x64 = Debug AVX2|x64 + Debug SSE2|Win32 = Debug SSE2|Win32 + Debug SSE2|x64 = Debug SSE2|x64 + Debug SSE4|Win32 = Debug SSE4|Win32 + Debug SSE4|x64 = Debug SSE4|x64 + Debug SSSE3|Win32 = Debug SSSE3|Win32 + Debug SSSE3|x64 = Debug SSSE3|x64 + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Devel|Win32 = Devel|Win32 + Devel|x64 = Devel|x64 + Release AVX|Win32 = Release AVX|Win32 + Release AVX|x64 = Release AVX|x64 + Release AVX2|Win32 = Release AVX2|Win32 + Release AVX2|x64 = Release AVX2|x64 + Release SSE2|Win32 = Release SSE2|Win32 + Release SSE2|x64 = Release SSE2|x64 + Release SSE4|Win32 = Release SSE4|Win32 + Release SSE4|x64 = Release SSE4|x64 + Release SSSE3|Win32 = Release SSSE3|Win32 + Release SSSE3|x64 = Release SSSE3|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX|Win32.Build.0 = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|Win32.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|Win32.Build.0 = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|x64.ActiveCfg = Debug|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Devel|Win32.ActiveCfg = Devel|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Devel|Win32.Build.0 = Devel|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Devel|x64.ActiveCfg = Devel|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX|Win32.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX|Win32.Build.0 = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX|x64.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX2|Win32.Build.0 = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release AVX2|x64.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE2|Win32.Build.0 = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE2|x64.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE4|Win32.Build.0 = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSE4|x64.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|Win32.Build.0 = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|Win32.ActiveCfg = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|Win32.Build.0 = Release|Win32 + {1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|x64.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX|Win32.Build.0 = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|Win32.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|Win32.Build.0 = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|x64.ActiveCfg = Debug|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Devel|Win32.ActiveCfg = Devel|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Devel|Win32.Build.0 = Devel|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Devel|x64.ActiveCfg = Devel|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX|Win32.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX|Win32.Build.0 = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX|x64.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX2|Win32.Build.0 = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release AVX2|x64.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE2|Win32.Build.0 = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE2|x64.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE4|Win32.Build.0 = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSE4|x64.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|Win32.Build.0 = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|Win32.ActiveCfg = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|Win32.Build.0 = Release|Win32 + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|x64.ActiveCfg = Release|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|Win32.ActiveCfg = Debug AVX|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|Win32.Build.0 = Debug AVX|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|x64.ActiveCfg = Debug AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX|x64.Build.0 = Debug AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|Win32.ActiveCfg = Debug AVX2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|Win32.Build.0 = Debug AVX2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|x64.ActiveCfg = Debug AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug AVX2|x64.Build.0 = Debug AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|Win32.ActiveCfg = Debug SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|Win32.Build.0 = Debug SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|x64.ActiveCfg = Debug SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE2|x64.Build.0 = Debug SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|Win32.ActiveCfg = Debug SSE4|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|Win32.Build.0 = Debug SSE4|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|x64.ActiveCfg = Debug SSE4|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSE4|x64.Build.0 = Debug SSE4|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|Win32.ActiveCfg = Debug SSSE3|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|Win32.Build.0 = Debug SSSE3|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|x64.ActiveCfg = Debug SSSE3|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug SSSE3|x64.Build.0 = Debug SSSE3|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|Win32.ActiveCfg = Debug SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|Win32.Build.0 = Debug SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|x64.ActiveCfg = Debug SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|x64.Build.0 = Debug SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|Win32.ActiveCfg = Release SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|Win32.Build.0 = Release SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|x64.ActiveCfg = Release SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Devel|x64.Build.0 = Release SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|Win32.ActiveCfg = Release AVX|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|Win32.Build.0 = Release AVX|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|x64.ActiveCfg = Release AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX|x64.Build.0 = Release AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|Win32.ActiveCfg = Release AVX2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|Win32.Build.0 = Release AVX2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|x64.ActiveCfg = Release AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release AVX2|x64.Build.0 = Release AVX|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|Win32.ActiveCfg = Release SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|Win32.Build.0 = Release SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|x64.ActiveCfg = Release SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE2|x64.Build.0 = Release SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|Win32.ActiveCfg = Release SSE4|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|Win32.Build.0 = Release SSE4|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|x64.ActiveCfg = Release SSE4|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSE4|x64.Build.0 = Release SSE4|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|Win32.ActiveCfg = Release SSSE3|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|Win32.Build.0 = Release SSSE3|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|x64.ActiveCfg = Release SSSE3|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|x64.Build.0 = Release SSSE3|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|Win32.ActiveCfg = Release SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|Win32.Build.0 = Release SSE2|Win32 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|x64.ActiveCfg = Release SSE2|x64 + {18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|x64.Build.0 = Release SSE2|x64 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX|Win32.Build.0 = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|Win32.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|Win32.Build.0 = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|x64.ActiveCfg = Debug|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Devel|Win32.ActiveCfg = Devel|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Devel|Win32.Build.0 = Devel|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Devel|x64.ActiveCfg = Devel|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX|Win32.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX|Win32.Build.0 = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX|x64.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX2|Win32.Build.0 = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release AVX2|x64.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE2|Win32.Build.0 = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE2|x64.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE4|Win32.Build.0 = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSE4|x64.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|Win32.Build.0 = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|Win32.ActiveCfg = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|Win32.Build.0 = Release|Win32 + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|x64.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX|Win32.Build.0 = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|Win32.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|Win32.Build.0 = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|x64.ActiveCfg = Debug|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Devel|Win32.ActiveCfg = Devel|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Devel|Win32.Build.0 = Devel|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Devel|x64.ActiveCfg = Devel|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX|Win32.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX|Win32.Build.0 = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX|x64.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX2|Win32.Build.0 = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release AVX2|x64.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE2|Win32.Build.0 = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE2|x64.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE4|Win32.Build.0 = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSE4|x64.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|Win32.Build.0 = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|Win32.ActiveCfg = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|Win32.Build.0 = Release|Win32 + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|x64.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX|x64.ActiveCfg = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX|x64.Build.0 = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug AVX2|x64.Build.0 = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE2|x64.Build.0 = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSE4|x64.Build.0 = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug SSSE3|x64.Build.0 = Debug|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|Win32.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|Win32.Build.0 = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|x64.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Devel|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Devel|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Devel|x64.ActiveCfg = Debug|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX|x64.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX2|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release AVX2|x64.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE2|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE2|x64.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE4|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSE4|x64.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|Win32.ActiveCfg = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|Win32.Build.0 = Release|Win32 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|x64.ActiveCfg = Release|x64 + {E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|x64.Build.0 = Release|x64 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX|Win32.Build.0 = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug|Win32.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug|Win32.Build.0 = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Debug|x64.ActiveCfg = Debug|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Devel|Win32.ActiveCfg = Devel|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Devel|Win32.Build.0 = Devel|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Devel|x64.ActiveCfg = Devel|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX|Win32.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX|Win32.Build.0 = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX|x64.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX2|Win32.Build.0 = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release AVX2|x64.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE2|Win32.Build.0 = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE2|x64.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE4|Win32.Build.0 = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSE4|x64.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|Win32.Build.0 = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release|Win32.ActiveCfg = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release|Win32.Build.0 = Release|Win32 + {26511268-2902-4997-8421-ECD7055F9E28}.Release|x64.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX|x64.ActiveCfg = Debug|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|Win32.ActiveCfg = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|Win32.Build.0 = Debug|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|x64.ActiveCfg = Debug|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Devel|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Devel|Win32.Build.0 = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Devel|x64.ActiveCfg = Release|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX|Win32.Build.0 = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX|x64.ActiveCfg = Release|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX2|Win32.Build.0 = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release AVX2|x64.ActiveCfg = Release|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE2|Win32.Build.0 = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE2|x64.ActiveCfg = Release|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE4|Win32.Build.0 = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSE4|x64.ActiveCfg = Release|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|Win32.Build.0 = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|x64.ActiveCfg = Release|x64 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release|Win32.ActiveCfg = Release|Win32 + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release|x64.ActiveCfg = Release|x64 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX2|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug AVX2|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE2|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE2|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE4|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSE4|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSSE3|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug SSSE3|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Devel|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Devel|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Devel|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX2|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release AVX2|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE2|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE2|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE4|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSE4|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|Win32.Build.0 = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release|Win32.ActiveCfg = Release|Win32 + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release|x64.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|Win32.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|Win32.Build.0 = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Devel|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Devel|Win32.Build.0 = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Devel|x64.ActiveCfg = Debug|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX|Win32.Build.0 = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX|x64.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX2|Win32.Build.0 = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release AVX2|x64.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE2|Win32.Build.0 = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE2|x64.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE4|Win32.Build.0 = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSE4|x64.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|Win32.Build.0 = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release|Win32.ActiveCfg = Release|Win32 + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release|x64.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|Win32.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|Win32.Build.0 = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Devel|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Devel|Win32.Build.0 = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Devel|x64.ActiveCfg = Debug|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX|Win32.Build.0 = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX|x64.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX2|Win32.Build.0 = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release AVX2|x64.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE2|Win32.Build.0 = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE2|x64.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE4|Win32.Build.0 = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSE4|x64.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|Win32.Build.0 = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|Win32.ActiveCfg = Release|Win32 + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|x64.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|Win32.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|Win32.Build.0 = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Devel|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Devel|Win32.Build.0 = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Devel|x64.ActiveCfg = Debug|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX|Win32.Build.0 = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX|x64.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX2|Win32.Build.0 = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release AVX2|x64.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE2|Win32.Build.0 = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE2|x64.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE4|Win32.Build.0 = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSE4|x64.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|Win32.Build.0 = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release|Win32.ActiveCfg = Release|Win32 + {04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release|x64.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX|Win32.Build.0 = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|Win32.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|Win32.Build.0 = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|x64.ActiveCfg = Debug|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Devel|Win32.ActiveCfg = Devel|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Devel|Win32.Build.0 = Devel|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Devel|x64.ActiveCfg = Devel|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX|Win32.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX|Win32.Build.0 = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX|x64.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX2|Win32.Build.0 = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release AVX2|x64.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE2|Win32.Build.0 = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE2|x64.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE4|Win32.Build.0 = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSE4|x64.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|Win32.Build.0 = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release|Win32.ActiveCfg = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release|Win32.Build.0 = Release|Win32 + {A51123F5-9505-4EAE-85E7-D320290A272C}.Release|x64.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX|Win32.Build.0 = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug|Win32.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug|Win32.Build.0 = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Debug|x64.ActiveCfg = Debug|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Devel|Win32.ActiveCfg = Devel|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Devel|Win32.Build.0 = Devel|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Devel|x64.ActiveCfg = Devel|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX|Win32.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX|Win32.Build.0 = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX|x64.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX2|Win32.Build.0 = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release AVX2|x64.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE2|Win32.Build.0 = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE2|x64.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE4|Win32.Build.0 = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSE4|x64.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|Win32.Build.0 = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release|Win32.ActiveCfg = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release|Win32.Build.0 = Release|Win32 + {4639972E-424E-4E13-8B07-CA403C481346}.Release|x64.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX|Win32.Build.0 = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Devel|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Devel|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Devel|x64.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX|x64.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX2|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release AVX2|x64.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE2|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE2|x64.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE4|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSE4|x64.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.Build.0 = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|x64.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX|Win32.Build.0 = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|Win32.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|Win32.Build.0 = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Devel|Win32.ActiveCfg = Devel|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Devel|Win32.Build.0 = Devel|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Devel|x64.ActiveCfg = Debug|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX|Win32.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX|Win32.Build.0 = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX|x64.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX2|Win32.Build.0 = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release AVX2|x64.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE2|Win32.Build.0 = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE2|x64.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE4|Win32.Build.0 = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSE4|x64.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|Win32.Build.0 = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release|Win32.ActiveCfg = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release|Win32.Build.0 = Release|Win32 + {BC236261-77E8-4567-8D09-45CD02965EB6}.Release|x64.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX|Win32.Build.0 = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|Win32.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|Win32.Build.0 = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|x64.ActiveCfg = Debug|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Devel|Win32.ActiveCfg = Devel|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Devel|Win32.Build.0 = Devel|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Devel|x64.ActiveCfg = Devel|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX|Win32.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX|Win32.Build.0 = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX|x64.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX2|Win32.Build.0 = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release AVX2|x64.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE2|Win32.Build.0 = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE2|x64.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE4|Win32.Build.0 = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSE4|x64.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|Win32.Build.0 = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|Win32.ActiveCfg = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|Win32.Build.0 = Release|Win32 + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|x64.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX|Win32.Build.0 = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|Win32.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|Win32.Build.0 = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Devel|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Devel|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Devel|x64.ActiveCfg = Debug|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX|x64.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX2|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release AVX2|x64.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE2|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE2|x64.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE4|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSE4|x64.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|Win32.ActiveCfg = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|Win32.Build.0 = Release|Win32 + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|x64.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|Win32.Build.0 = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|Win32.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|Win32.Build.0 = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|x64.ActiveCfg = Debug|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX|Win32.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX|Win32.Build.0 = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX|x64.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX2|Win32.Build.0 = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release AVX2|x64.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|Win32.Build.0 = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|x64.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|Win32.Build.0 = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|x64.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|Win32.Build.0 = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|Win32.ActiveCfg = Release|Win32 + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|x64.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug|Win32.Build.0 = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Debug|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Devel|Win32.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Devel|Win32.Build.0 = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Devel|x64.ActiveCfg = Debug|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX|Win32.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX|Win32.Build.0 = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX|x64.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX2|Win32.Build.0 = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release AVX2|x64.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE2|Win32.Build.0 = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE2|x64.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE4|Win32.Build.0 = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSE4|x64.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSSE3|Win32.Build.0 = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release|Win32.ActiveCfg = Release|Win32 + {6BC4D85D-A399-407E-96A9-CD5416A54269}.Release|x64.ActiveCfg = Release|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX|Win32.ActiveCfg = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX|x64.ActiveCfg = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX|x64.Build.0 = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX2|Win32.ActiveCfg = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX2|x64.ActiveCfg = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug AVX2|x64.Build.0 = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE2|Win32.ActiveCfg = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE2|x64.ActiveCfg = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE2|x64.Build.0 = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE4|Win32.ActiveCfg = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE4|x64.ActiveCfg = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSE4|x64.Build.0 = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSSE3|Win32.ActiveCfg = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSSE3|x64.ActiveCfg = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug SSSE3|x64.Build.0 = Debug (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|Win32.ActiveCfg = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|Win32.Build.0 = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|x64.ActiveCfg = Debug|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Devel|x64.Build.0 = Debug|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|Win32.ActiveCfg = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|Win32.Build.0 = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|x64.ActiveCfg = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX|x64.Build.0 = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|Win32.ActiveCfg = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|Win32.Build.0 = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|x64.ActiveCfg = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release AVX2|x64.Build.0 = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|Win32.ActiveCfg = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|Win32.Build.0 = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|x64.ActiveCfg = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE2|x64.Build.0 = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|Win32.ActiveCfg = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|Win32.Build.0 = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|x64.ActiveCfg = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSE4|x64.Build.0 = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|Win32.ActiveCfg = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|Win32.Build.0 = Release (NO ASIO)|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|x64.ActiveCfg = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release SSSE3|x64.Build.0 = Release (NO ASIO)|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX|Win32.Build.0 = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug|Win32.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug|Win32.Build.0 = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Debug|x64.ActiveCfg = Debug|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Devel|Win32.ActiveCfg = Devel|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Devel|Win32.Build.0 = Devel|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Devel|x64.ActiveCfg = Devel|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX|Win32.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX|Win32.Build.0 = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX|x64.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX2|Win32.Build.0 = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release AVX2|x64.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE2|Win32.Build.0 = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE2|x64.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE4|Win32.Build.0 = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSE4|x64.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSSE3|Win32.Build.0 = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release|Win32.ActiveCfg = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release|Win32.Build.0 = Release|Win32 + {E613DA9F-41B4-4613-9911-E418EF5533BC}.Release|x64.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Debug|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Devel|Win32.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Devel|Win32.Build.0 = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Devel|x64.ActiveCfg = Debug|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX|Win32.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX|Win32.Build.0 = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX|x64.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX2|Win32.Build.0 = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release AVX2|x64.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE2|Win32.Build.0 = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE2|x64.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE4|Win32.Build.0 = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSE4|x64.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSSE3|Win32.Build.0 = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release|Win32.ActiveCfg = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release|Win32.Build.0 = Release|Win32 + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3}.Release|x64.ActiveCfg = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX|Win32.Build.0 = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX|x64.ActiveCfg = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX|x64.Build.0 = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug AVX2|x64.Build.0 = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE2|x64.Build.0 = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSE4|x64.Build.0 = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug SSSE3|x64.Build.0 = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug|Win32.ActiveCfg = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug|Win32.Build.0 = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug|x64.ActiveCfg = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Debug|x64.Build.0 = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Devel|Win32.ActiveCfg = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Devel|Win32.Build.0 = Debug|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Devel|x64.ActiveCfg = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Devel|x64.Build.0 = Debug|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX|Win32.ActiveCfg = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX|Win32.Build.0 = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX|x64.ActiveCfg = Release|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX|x64.Build.0 = Release|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX2|Win32.Build.0 = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX2|x64.ActiveCfg = Release|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release AVX2|x64.Build.0 = Release|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE2|Win32.Build.0 = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE2|x64.ActiveCfg = Release|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE2|x64.Build.0 = Release|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE4|Win32.Build.0 = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE4|x64.ActiveCfg = Release|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSE4|x64.Build.0 = Release|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSSE3|Win32.Build.0 = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSSE3|x64.ActiveCfg = Release|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release SSSE3|x64.Build.0 = Release|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release|Win32.ActiveCfg = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release|Win32.Build.0 = Release|Win32 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release|x64.ActiveCfg = Release|x64 + {D80D4A75-C385-41BD-AE62-83D2E2B595A7}.Release|x64.Build.0 = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|Win32.Build.0 = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|x64.ActiveCfg = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX|x64.Build.0 = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug AVX2|x64.Build.0 = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE2|x64.Build.0 = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSE4|x64.Build.0 = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug SSSE3|x64.Build.0 = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|Win32.ActiveCfg = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|Win32.Build.0 = Debug|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|x64.ActiveCfg = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|x64.Build.0 = Debug|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|Win32.ActiveCfg = Devel|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|Win32.Build.0 = Devel|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|x64.ActiveCfg = Devel|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Devel|x64.Build.0 = Devel|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|Win32.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|Win32.Build.0 = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|x64.ActiveCfg = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX|x64.Build.0 = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|Win32.Build.0 = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|x64.ActiveCfg = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release AVX2|x64.Build.0 = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|Win32.Build.0 = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|x64.ActiveCfg = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE2|x64.Build.0 = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|Win32.Build.0 = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|x64.ActiveCfg = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSE4|x64.Build.0 = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|Win32.Build.0 = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|x64.ActiveCfg = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release SSSE3|x64.Build.0 = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|Win32.ActiveCfg = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|Win32.Build.0 = Release|Win32 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|x64.ActiveCfg = Release|x64 + {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|x64.Build.0 = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|Win32.Build.0 = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|x64.ActiveCfg = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX|x64.Build.0 = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug AVX2|x64.Build.0 = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE2|x64.Build.0 = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSE4|x64.Build.0 = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug SSSE3|x64.Build.0 = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|Win32.ActiveCfg = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|Win32.Build.0 = Debug|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|x64.ActiveCfg = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|x64.Build.0 = Debug|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|Win32.ActiveCfg = Devel|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|Win32.Build.0 = Devel|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|x64.ActiveCfg = Devel|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Devel|x64.Build.0 = Devel|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|Win32.ActiveCfg = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|Win32.Build.0 = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|x64.ActiveCfg = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX|x64.Build.0 = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|Win32.Build.0 = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|x64.ActiveCfg = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release AVX2|x64.Build.0 = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|Win32.Build.0 = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|x64.ActiveCfg = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE2|x64.Build.0 = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|Win32.Build.0 = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|x64.ActiveCfg = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSE4|x64.Build.0 = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|Win32.Build.0 = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|x64.ActiveCfg = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release SSSE3|x64.Build.0 = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|Win32.ActiveCfg = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|Win32.Build.0 = Release|Win32 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|x64.ActiveCfg = Release|x64 + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|x64.Build.0 = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|Win32.Build.0 = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|x64.ActiveCfg = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX|x64.Build.0 = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug AVX2|x64.Build.0 = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE2|x64.Build.0 = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSE4|x64.Build.0 = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug SSSE3|x64.Build.0 = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|Win32.ActiveCfg = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|Win32.Build.0 = Debug|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|x64.ActiveCfg = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|x64.Build.0 = Debug|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|Win32.ActiveCfg = Devel|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|Win32.Build.0 = Devel|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|x64.ActiveCfg = Devel|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Devel|x64.Build.0 = Devel|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|Win32.ActiveCfg = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|Win32.Build.0 = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|x64.ActiveCfg = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX|x64.Build.0 = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|Win32.Build.0 = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|x64.ActiveCfg = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release AVX2|x64.Build.0 = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|Win32.Build.0 = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|x64.ActiveCfg = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE2|x64.Build.0 = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|Win32.Build.0 = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|x64.ActiveCfg = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSE4|x64.Build.0 = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|Win32.Build.0 = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|x64.ActiveCfg = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release SSSE3|x64.Build.0 = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|Win32.ActiveCfg = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|Win32.Build.0 = Release|Win32 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|x64.ActiveCfg = Release|x64 + {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|x64.Build.0 = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|Win32.Build.0 = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|x64.ActiveCfg = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX|x64.Build.0 = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug AVX2|x64.Build.0 = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|x64.ActiveCfg = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE2|x64.Build.0 = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|x64.ActiveCfg = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSE4|x64.Build.0 = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|x64.ActiveCfg = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug SSSE3|x64.Build.0 = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|Win32.ActiveCfg = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|Win32.Build.0 = Debug|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|x64.ActiveCfg = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|x64.Build.0 = Debug|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|Win32.ActiveCfg = Devel|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|Win32.Build.0 = Devel|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|x64.ActiveCfg = Devel|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Devel|x64.Build.0 = Devel|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|Win32.ActiveCfg = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|Win32.Build.0 = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|x64.ActiveCfg = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX|x64.Build.0 = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|Win32.Build.0 = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|x64.ActiveCfg = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release AVX2|x64.Build.0 = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|Win32.Build.0 = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|x64.ActiveCfg = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE2|x64.Build.0 = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|Win32.Build.0 = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|x64.ActiveCfg = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSE4|x64.Build.0 = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|Win32.Build.0 = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|x64.ActiveCfg = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release SSSE3|x64.Build.0 = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|Win32.ActiveCfg = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|Win32.Build.0 = Release|Win32 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|x64.ActiveCfg = Release|x64 + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|x64.Build.0 = Release|x64 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX|x64.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug AVX2|x64.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE2|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE2|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE2|x64.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE4|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE4|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSE4|x64.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSSE3|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSSE3|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug SSSE3|x64.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.Build.0 = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|x64.ActiveCfg = Debug|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Devel|Win32.ActiveCfg = Devel|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Devel|Win32.Build.0 = Devel|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Devel|x64.ActiveCfg = Devel|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX|Win32.Build.0 = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX|x64.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX2|Win32.Build.0 = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release AVX2|x64.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE2|Win32.Build.0 = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE2|x64.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE4|Win32.Build.0 = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSE4|x64.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSSE3|Win32.Build.0 = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.ActiveCfg = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.Build.0 = Release|Win32 + {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|x64.ActiveCfg = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C} = {88F517F9-CE1C-4005-9BDF-4481FEB55053} + {62BF822E-6A12-49A8-BE8C-C55A9BCA24DA} = {0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C} + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {18E42F6F-3A62-41EE-B42F-79366C4F1E95} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {E4081455-398C-4610-A87C-90A8A7D72DC3} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {26511268-2902-4997-8421-ECD7055F9E28} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} + {04439C5F-05FB-4A9C-AAD1-5388C25377DB} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} + {A51123F5-9505-4EAE-85E7-D320290A272C} = {88F517F9-CE1C-4005-9BDF-4481FEB55053} + {4639972E-424E-4E13-8B07-CA403C481346} = {88F517F9-CE1C-4005-9BDF-4481FEB55053} + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213} = {2D6F0A62-A247-4CCF-947F-FCD54BE16103} + {BC236261-77E8-4567-8D09-45CD02965EB6} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} + {6BC4D85D-A399-407E-96A9-CD5416A54269} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} + {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {E613DA9F-41B4-4613-9911-E418EF5533BC} = {7A407562-D70F-4F0A-9D3E-B32506416003} + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3} = {7A407562-D70F-4F0A-9D3E-B32506416003} + {7A407562-D70F-4F0A-9D3E-B32506416003} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {D80D4A75-C385-41BD-AE62-83D2E2B595A7} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {3FCC50C2-81E9-5DB2-B8D8-2129427568B1} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {24C45343-FD20-5C92-81C1-35A2AE841E79} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + EndGlobalSection +EndGlobal diff --git a/plugins/CDVDiso/src/Windows/CDVDiso.def b/plugins/CDVDiso/src/Windows/CDVDiso.def index 23583e964a..30dbfff001 100644 --- a/plugins/CDVDiso/src/Windows/CDVDiso.def +++ b/plugins/CDVDiso/src/Windows/CDVDiso.def @@ -1,26 +1,26 @@ -; CDVDiso.def : Declares the module parameters for the DLL. - -EXPORTS - ; Explicit exports can go here - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - CDVDinit @5 - CDVDshutdown @6 - CDVDopen @7 - CDVDclose @8 - CDVDreadTrack @9 - CDVDgetBuffer @10 - CDVDreadSubQ @11 - CDVDgetTN @12 - CDVDgetTD @13 - CDVDgetTOC @14 - CDVDgetDiskType @15 - CDVDgetTrayStatus @16 - CDVDctrlTrayOpen @17 - CDVDctrlTrayClose @18 - - CDVDconfigure @19 - CDVDtest @20 - CDVDabout @21 - +; CDVDiso.def : Declares the module parameters for the DLL. + +EXPORTS + ; Explicit exports can go here + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + CDVDinit @5 + CDVDshutdown @6 + CDVDopen @7 + CDVDclose @8 + CDVDreadTrack @9 + CDVDgetBuffer @10 + CDVDreadSubQ @11 + CDVDgetTN @12 + CDVDgetTD @13 + CDVDgetTOC @14 + CDVDgetDiskType @15 + CDVDgetTrayStatus @16 + CDVDctrlTrayOpen @17 + CDVDctrlTrayClose @18 + + CDVDconfigure @19 + CDVDtest @20 + CDVDabout @21 + diff --git a/plugins/CDVDiso/src/Windows/CDVDiso.rc b/plugins/CDVDiso/src/Windows/CDVDiso.rc index ac5e128ca1..32a37514ba 100644 --- a/plugins/CDVDiso/src/Windows/CDVDiso.rc +++ b/plugins/CDVDiso/src/Windows/CDVDiso.rc @@ -1,127 +1,127 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxresmw.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Spanish (Argentina) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESS) -#ifdef _WIN32 -LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxresmw.h""\r\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOGEX 0, 0, 212, 161 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "CDVDconfigure" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,105,140,50,14 - EDITTEXT IDC_ISOFILE,10,10,145,14,ES_AUTOHSCROLL - PUSHBUTTON "Cancel",IDCANCEL,160,140,50,14 - PUSHBUTTON "Select Iso",IDC_SELECTISO,160,10,45,14 - PUSHBUTTON "Compress Iso",IDC_COMPRESSISO,33,75,65,14 - PUSHBUTTON "Decompress Iso",IDC_DECOMPRESSISO,113,75,65,14 - COMBOBOX IDC_METHOD,120,55,85,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,10,35,145,14 - LTEXT "Compression Method:",IDC_STATIC,29,57,69,8 - PUSHBUTTON "Stop",IDC_STOP,160,35,45,14 - GROUPBOX "",IDC_STATIC,5,0,205,95 - GROUPBOX "Options",IDC_STATIC,5,100,205,30 - CONTROL "Enable Block Dump => ""ISO name.dump""",IDC_BLOCKDUMP, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,115,148,10 -END - -IDD_ABOUT DIALOG 0, 0, 177, 106 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "CDVDabout" -FONT 8, "MS Sans Serif" -BEGIN - DEFPUSHBUTTON "OK",IDOK,65,85,50,14 - LTEXT "CDVDiso Driver",IDC_NAME,70,10,50,8 - GROUPBOX "",IDC_STATIC,5,35,170,40 - LTEXT "Thanks to:\n mooby - coding hints and .bz support\n Brenden Conte - linux conf bugfix",IDC_STATIC,10,45,160,25 - LTEXT "Author: linuzappz ",IDC_STATIC,20,20,141,10 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 205 - TOPMARGIN, 7 - BOTTOMMARGIN, 154 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 170 - TOPMARGIN, 7 - BOTTOMMARGIN, 99 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Spanish (Argentina) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxresmw.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Spanish (Argentina) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESS) +#ifdef _WIN32 +LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxresmw.h""\r\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 212, 161 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "CDVDconfigure" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,105,140,50,14 + EDITTEXT IDC_ISOFILE,10,10,145,14,ES_AUTOHSCROLL + PUSHBUTTON "Cancel",IDCANCEL,160,140,50,14 + PUSHBUTTON "Select Iso",IDC_SELECTISO,160,10,45,14 + PUSHBUTTON "Compress Iso",IDC_COMPRESSISO,33,75,65,14 + PUSHBUTTON "Decompress Iso",IDC_DECOMPRESSISO,113,75,65,14 + COMBOBOX IDC_METHOD,120,55,85,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,10,35,145,14 + LTEXT "Compression Method:",IDC_STATIC,29,57,69,8 + PUSHBUTTON "Stop",IDC_STOP,160,35,45,14 + GROUPBOX "",IDC_STATIC,5,0,205,95 + GROUPBOX "Options",IDC_STATIC,5,100,205,30 + CONTROL "Enable Block Dump => ""ISO name.dump""",IDC_BLOCKDUMP, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,115,148,10 +END + +IDD_ABOUT DIALOG 0, 0, 177, 106 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "CDVDabout" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",IDOK,65,85,50,14 + LTEXT "CDVDiso Driver",IDC_NAME,70,10,50,8 + GROUPBOX "",IDC_STATIC,5,35,170,40 + LTEXT "Thanks to:\n mooby - coding hints and .bz support\n Brenden Conte - linux conf bugfix",IDC_STATIC,10,45,160,25 + LTEXT "Author: linuzappz ",IDC_STATIC,20,20,141,10 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 205 + TOPMARGIN, 7 + BOTTOMMARGIN, 154 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 170 + TOPMARGIN, 7 + BOTTOMMARGIN, 99 + END +END +#endif // APSTUDIO_INVOKED + +#endif // Spanish (Argentina) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/CDVDiso/src/Windows/CDVDiso_vs2012.vcxproj b/plugins/CDVDiso/src/Windows/CDVDiso_vs2012.vcxproj index ff269f3166..a04376cd91 100644 --- a/plugins/CDVDiso/src/Windows/CDVDiso_vs2012.vcxproj +++ b/plugins/CDVDiso/src/Windows/CDVDiso_vs2012.vcxproj @@ -1,169 +1,169 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - CDVDiso - {5F78E90B-BD22-47B1-9CA5-7A80F4DF5EF3} - CDVDiso - - - - DynamicLibrary - false - MultiByte - false - v110_xp - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - false - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(Configuration)\ - true - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName)-dev - - - - Disabled - - - $(SvnRootDir)\3rdparty\bzip2;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) - - - bzip2-dbg.lib;zlib-dbg.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - .\CDVDiso.def - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - - - $(SvnRootDir)\3rdparty\bzip2;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) - - - bzip2.lib;zlib.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - .\CDVDiso.def - true - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - - - Level3 - ProgramDatabase - $(SvnRootDir)\3rdparty\bzip2;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) - - - bzip2-dev.lib;zlib-dev.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - .\CDVDiso.def - true - MachineX86 - - - - - CompileAsCpp - CompileAsCpp - - - CompileAsCpp - CompileAsCpp - - - CompileAsCpp - CompileAsCpp - - - CompileAsCpp - CompileAsCpp - - - - - - - - - - - - - - {f4eb4ab2-c595-4b05-8bc0-059024bc796c} - false - - - {2f6c0388-20cb-4242-9f6c-a6ebb6a83f47} - false - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + CDVDiso + {5F78E90B-BD22-47B1-9CA5-7A80F4DF5EF3} + CDVDiso + + + + DynamicLibrary + false + MultiByte + false + v110_xp + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + false + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + true + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)-dev + + + + Disabled + + + $(SvnRootDir)\3rdparty\bzip2;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) + + + bzip2-dbg.lib;zlib-dbg.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + .\CDVDiso.def + MachineX86 + + + + + NDEBUG;%(PreprocessorDefinitions) + + + $(SvnRootDir)\3rdparty\bzip2;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) + + + bzip2.lib;zlib.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + .\CDVDiso.def + true + MachineX86 + + + + + NDEBUG;%(PreprocessorDefinitions) + + + Level3 + ProgramDatabase + $(SvnRootDir)\3rdparty\bzip2;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) + + + bzip2-dev.lib;zlib-dev.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + .\CDVDiso.def + true + MachineX86 + + + + + CompileAsCpp + CompileAsCpp + + + CompileAsCpp + CompileAsCpp + + + CompileAsCpp + CompileAsCpp + + + CompileAsCpp + CompileAsCpp + + + + + + + + + + + + + + {f4eb4ab2-c595-4b05-8bc0-059024bc796c} + false + + + {2f6c0388-20cb-4242-9f6c-a6ebb6a83f47} + false + + + + + \ No newline at end of file diff --git a/plugins/CDVDiso/src/Windows/CDVDiso_vs2012.vcxproj.filters b/plugins/CDVDiso/src/Windows/CDVDiso_vs2012.vcxproj.filters index 46f33e8fe0..f7173d0e4f 100644 --- a/plugins/CDVDiso/src/Windows/CDVDiso_vs2012.vcxproj.filters +++ b/plugins/CDVDiso/src/Windows/CDVDiso_vs2012.vcxproj.filters @@ -1,50 +1,50 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + \ No newline at end of file diff --git a/plugins/CDVDnull/ReadMe.txt b/plugins/CDVDnull/ReadMe.txt index 24a667467c..8038977bf7 100644 --- a/plugins/CDVDnull/ReadMe.txt +++ b/plugins/CDVDnull/ReadMe.txt @@ -1,39 +1,39 @@ -CDVDnull v0.6 ---------------- - - This is an extension to use with playstation2 emulators - as PCSX2 (only one right now). - The plugin is free open source code. - -Using: ------ - Place the file "CDVDnull.dll" at the Plugins directory - of the Emulator to use it. - -Changes: -------- - v0.6: - * added vsnet2003 project files. - * added support for functions in new plugin version - - v0.5: - * added vsnet2005beta1 project files. 64bit plugin should be okay now (Not tested!) - - v0.4: - * updated to 0.4.3 specifications - - v0.3: - * updated to 0.4.0 specifications - - v0.2: - * add the 0.2.9 specifications - * CDVDopen refixed - - v0.1: - * First Release - * Tested with Pcsx2 - -Authors: -------- - - +CDVDnull v0.6 +--------------- + + This is an extension to use with playstation2 emulators + as PCSX2 (only one right now). + The plugin is free open source code. + +Using: +----- + Place the file "CDVDnull.dll" at the Plugins directory + of the Emulator to use it. + +Changes: +------- + v0.6: + * added vsnet2003 project files. + * added support for functions in new plugin version + + v0.5: + * added vsnet2005beta1 project files. 64bit plugin should be okay now (Not tested!) + + v0.4: + * updated to 0.4.3 specifications + + v0.3: + * updated to 0.4.0 specifications + + v0.2: + * add the 0.2.9 specifications + * CDVDopen refixed + + v0.1: + * First Release + * Tested with Pcsx2 + +Authors: +------- + + diff --git a/plugins/CDVDnull/Windows/CDVDnull.def b/plugins/CDVDnull/Windows/CDVDnull.def index 899b7c7a3a..9617d934ef 100644 --- a/plugins/CDVDnull/Windows/CDVDnull.def +++ b/plugins/CDVDnull/Windows/CDVDnull.def @@ -1,29 +1,29 @@ -; CDVDnull.def : Declares the module parameters for the DLL. - -;LIBRARY "CDVDnull" -;DESCRIPTION 'CDVD Null Driver' - -EXPORTS - ; Explicit exports can go here - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - CDVDinit @5 - CDVDshutdown @6 - CDVDopen @7 - CDVDclose @8 - CDVDreadTrack @9 - CDVDgetBuffer @10 - CDVDreadSubQ @11 - CDVDgetTN @12 - CDVDgetTD @13 - CDVDgetTOC @14 - CDVDgetDiskType @15 - CDVDgetTrayStatus @16 - CDVDctrlTrayOpen @17 - CDVDctrlTrayClose @18 - - CDVDconfigure @19 - CDVDtest @20 - CDVDabout @21 - +; CDVDnull.def : Declares the module parameters for the DLL. + +;LIBRARY "CDVDnull" +;DESCRIPTION 'CDVD Null Driver' + +EXPORTS + ; Explicit exports can go here + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + CDVDinit @5 + CDVDshutdown @6 + CDVDopen @7 + CDVDclose @8 + CDVDreadTrack @9 + CDVDgetBuffer @10 + CDVDreadSubQ @11 + CDVDgetTN @12 + CDVDgetTD @13 + CDVDgetTOC @14 + CDVDgetDiskType @15 + CDVDgetTrayStatus @16 + CDVDctrlTrayOpen @17 + CDVDctrlTrayClose @18 + + CDVDconfigure @19 + CDVDtest @20 + CDVDabout @21 + diff --git a/plugins/CDVDnull/Windows/CDVDnull_vs2012.vcxproj b/plugins/CDVDnull/Windows/CDVDnull_vs2012.vcxproj index 033273950e..164085b9f0 100644 --- a/plugins/CDVDnull/Windows/CDVDnull_vs2012.vcxproj +++ b/plugins/CDVDnull/Windows/CDVDnull_vs2012.vcxproj @@ -1,73 +1,73 @@ - - - - - Release - Win32 - - - - CDVDnull - {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0} - CDVDnull - - - - DynamicLibrary - MultiByte - true - v110_xp - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - false - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - - - NDEBUG;_USRDLL;CDVDNULL_EXPORTS;%(PreprocessorDefinitions) - Level3 - - - NDEBUG;%(PreprocessorDefinitions) - 0x2c0a - - - /MACHINE:I386 %(AdditionalOptions) - odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - true - .\CDVDnull.def - false - - - - - - - - - - - - - - - - + + + + + Release + Win32 + + + + CDVDnull + {F38D9DF0-F68D-49D9-B3A0-932E74FB74A0} + CDVDnull + + + + DynamicLibrary + MultiByte + true + v110_xp + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + false + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + NDEBUG;_USRDLL;CDVDNULL_EXPORTS;%(PreprocessorDefinitions) + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x2c0a + + + /MACHINE:I386 %(AdditionalOptions) + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + true + .\CDVDnull.def + false + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/CDVDnull/Windows/CDVDnull_vs2012.vcxproj.filters b/plugins/CDVDnull/Windows/CDVDnull_vs2012.vcxproj.filters index 03451ae10b..53f700a0a9 100644 --- a/plugins/CDVDnull/Windows/CDVDnull_vs2012.vcxproj.filters +++ b/plugins/CDVDnull/Windows/CDVDnull_vs2012.vcxproj.filters @@ -1,24 +1,24 @@ - - - - - {4a528d75-fc57-4a25-8f63-9efd961ebaac} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - - - Source Files - - - - - Source Files - - - - - Source Files - - + + + + + {4a528d75-fc57-4a25-8f63-9efd961ebaac} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + + + Source Files + + + + + Source Files + + + + + Source Files + + \ No newline at end of file diff --git a/plugins/CDVDnull/Windows/ProjectRootDir.props b/plugins/CDVDnull/Windows/ProjectRootDir.props index 8d9f9ad374..423e907385 100644 --- a/plugins/CDVDnull/Windows/ProjectRootDir.props +++ b/plugins/CDVDnull/Windows/ProjectRootDir.props @@ -1,15 +1,15 @@ - - - - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(SvnRootDir) - - + + + + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/plugins/CDVDnull/Windows/plugin.def b/plugins/CDVDnull/Windows/plugin.def index 4d19ae2002..50003fa4b6 100644 --- a/plugins/CDVDnull/Windows/plugin.def +++ b/plugins/CDVDnull/Windows/plugin.def @@ -1,21 +1,21 @@ -EXPORTS - PS2EgetLibType = PS2EgetLibType@0 @2 - PS2EgetLibName = PS2EgetLibName@0 @3 - PS2EgetLibVersion2 = PS2EgetLibVersion2@4 @4 - CDVDinit = CDVDinit@0 @5 - CDVDshutdown = CDVDshutdown@0 @6 - CDVDopen = CDVDopen@0 @7 - CDVDclose = CDVDclose@0 @8 - CDVDreadTrack = CDVDreadTrack@8 @9 - CDVDgetBuffer = CDVDgetBuffer@0 @10 - CDVDreadSubQ = CDVDreadSubQ@8 @11 - CDVDgetTN = CDVDgetTN@4 @12 - CDVDgetTD = CDVDgetTD@8 @13 - CDVDgetTOC = CDVDgetTOC@4 @14 - CDVDgetDiskType = CDVDgetDiskType@0 @15 - CDVDgetTrayStatus = CDVDgetTrayStatus@0 @16 - CDVDctrlTrayOpen = CDVDctrlTrayOpen@0 @17 - CDVDctrlTrayClose = CDVDctrlTrayClose@0 @18 - CDVDconfigure = CDVDconfigure@0 @19 - CDVDtest = CDVDtest@0 @20 - CDVDabout = CDVDabout@0 @21 +EXPORTS + PS2EgetLibType = PS2EgetLibType@0 @2 + PS2EgetLibName = PS2EgetLibName@0 @3 + PS2EgetLibVersion2 = PS2EgetLibVersion2@4 @4 + CDVDinit = CDVDinit@0 @5 + CDVDshutdown = CDVDshutdown@0 @6 + CDVDopen = CDVDopen@0 @7 + CDVDclose = CDVDclose@0 @8 + CDVDreadTrack = CDVDreadTrack@8 @9 + CDVDgetBuffer = CDVDgetBuffer@0 @10 + CDVDreadSubQ = CDVDreadSubQ@8 @11 + CDVDgetTN = CDVDgetTN@4 @12 + CDVDgetTD = CDVDgetTD@8 @13 + CDVDgetTOC = CDVDgetTOC@4 @14 + CDVDgetDiskType = CDVDgetDiskType@0 @15 + CDVDgetTrayStatus = CDVDgetTrayStatus@0 @16 + CDVDctrlTrayOpen = CDVDctrlTrayOpen@0 @17 + CDVDctrlTrayClose = CDVDctrlTrayClose@0 @18 + CDVDconfigure = CDVDconfigure@0 @19 + CDVDtest = CDVDtest@0 @20 + CDVDabout = CDVDabout@0 @21 diff --git a/plugins/CDVDolio/cdvd.def b/plugins/CDVDolio/cdvd.def index c47fee74cb..d384810c13 100644 --- a/plugins/CDVDolio/cdvd.def +++ b/plugins/CDVDolio/cdvd.def @@ -1,26 +1,26 @@ -; cdvd.def : Declares the module parameters for the DLL. - -LIBRARY "CDVDolio" - -EXPORTS - ; Explicit exports can go here - PS2EgetLibType - PS2EgetLibName - PS2EgetLibVersion2 - CDVDinit - CDVDshutdown - CDVDopen - CDVDclose - CDVDreadTrack - CDVDgetBuffer - CDVDreadSubQ - CDVDgetTN - CDVDgetTD - CDVDgetTOC - CDVDgetDiskType - CDVDgetTrayStatus - CDVDctrlTrayOpen - CDVDctrlTrayClose - CDVDconfigure - CDVDtest - CDVDabout +; cdvd.def : Declares the module parameters for the DLL. + +LIBRARY "CDVDolio" + +EXPORTS + ; Explicit exports can go here + PS2EgetLibType + PS2EgetLibName + PS2EgetLibVersion2 + CDVDinit + CDVDshutdown + CDVDopen + CDVDclose + CDVDreadTrack + CDVDgetBuffer + CDVDreadSubQ + CDVDgetTN + CDVDgetTD + CDVDgetTOC + CDVDgetDiskType + CDVDgetTrayStatus + CDVDctrlTrayOpen + CDVDctrlTrayClose + CDVDconfigure + CDVDtest + CDVDabout diff --git a/plugins/CDVDolio/cdvd.props b/plugins/CDVDolio/cdvd.props index fa21c56152..016390bc50 100644 --- a/plugins/CDVDolio/cdvd.props +++ b/plugins/CDVDolio/cdvd.props @@ -1,13 +1,13 @@ - - - - - <_PropertySheetDisplayName>cdvd - - - - "$(SolutionDir)common\vsprops\preBuild.cmd" "$(ProjectDir)." - - - + + + + + <_PropertySheetDisplayName>cdvd + + + + "$(SolutionDir)common\vsprops\preBuild.cmd" "$(ProjectDir)." + + + \ No newline at end of file diff --git a/plugins/CDVDolio/cdvd.rc b/plugins/CDVDolio/cdvd.rc index d8052fb412..9a4d9df1c0 100644 --- a/plugins/CDVDolio/cdvd.rc +++ b/plugins/CDVDolio/cdvd.rc @@ -1,175 +1,175 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Hungarian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_HUN) -#ifdef _WIN32 -LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT -#pragma code_page(1250) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "#define _AFX_NO_SPLITTER_RESOURCES\r\n" - "#define _AFX_NO_OLE_RESOURCES\r\n" - "#define _AFX_NO_TRACKER_RESOURCES\r\n" - "#define _AFX_NO_PROPERTY_RESOURCES\r\n" - "\r\n" - "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" - "LANGUAGE 9, 1\r\n" - "#pragma code_page(1252)\r\n" - "#include ""res\\cdvd.rc2"" // non-Microsoft Visual C++ edited resources\r\n" - "#endif\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // Hungarian resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,0 - PRODUCTVERSION 1,0,0,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "Comments", "http://guliverkli.sf.net/" - VALUE "CompanyName", "Gabest" - VALUE "FileDescription", "CDVD plugin for ps2 emulators" - VALUE "FileVersion", "1, 0, 0, 0" - VALUE "InternalName", "xpad.dll" - VALUE "LegalCopyright", "Copyright (c) 2007-2008 Gabest. All rights reserved." - VALUE "OriginalFilename", "cdvd.dll" - VALUE "ProductName", "cdvd" - VALUE "ProductVersion", "1, 0, 0, 0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOGEX 0, 0, 211, 71 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Settings..." -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - COMBOBOX IDC_COMBO1,7,7,197,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_GROUP | WS_TABSTOP - EDITTEXT IDC_EDIT1,7,24,143,14,ES_AUTOHSCROLL | ES_READONLY - PUSHBUTTON "Browse...",IDC_BUTTON1,154,24,50,14 - DEFPUSHBUTTON "OK",IDOK,53,50,50,14 - PUSHBUTTON "Cancel",IDCANCEL,107,50,50,14 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 204 - TOPMARGIN, 7 - BOTTOMMARGIN, 64 - HORZGUIDE, 13 - HORZGUIDE, 31 - END -END -#endif // APSTUDIO_INVOKED - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// -#define _AFX_NO_SPLITTER_RESOURCES -#define _AFX_NO_OLE_RESOURCES -#define _AFX_NO_TRACKER_RESOURCES -#define _AFX_NO_PROPERTY_RESOURCES - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE 9, 1 -#pragma code_page(1252) -#include "res\cdvd.rc2" // non-Microsoft Visual C++ edited resources -#endif - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Hungarian resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_HUN) +#ifdef _WIN32 +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT +#pragma code_page(1250) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#include ""res\\cdvd.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // Hungarian resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,0 + PRODUCTVERSION 1,0,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "Comments", "http://guliverkli.sf.net/" + VALUE "CompanyName", "Gabest" + VALUE "FileDescription", "CDVD plugin for ps2 emulators" + VALUE "FileVersion", "1, 0, 0, 0" + VALUE "InternalName", "xpad.dll" + VALUE "LegalCopyright", "Copyright (c) 2007-2008 Gabest. All rights reserved." + VALUE "OriginalFilename", "cdvd.dll" + VALUE "ProductName", "cdvd" + VALUE "ProductVersion", "1, 0, 0, 0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 211, 71 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Settings..." +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + COMBOBOX IDC_COMBO1,7,7,197,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_GROUP | WS_TABSTOP + EDITTEXT IDC_EDIT1,7,24,143,14,ES_AUTOHSCROLL | ES_READONLY + PUSHBUTTON "Browse...",IDC_BUTTON1,154,24,50,14 + DEFPUSHBUTTON "OK",IDOK,53,50,50,14 + PUSHBUTTON "Cancel",IDCANCEL,107,50,50,14 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 204 + TOPMARGIN, 7 + BOTTOMMARGIN, 64 + HORZGUIDE, 13 + HORZGUIDE, 31 + END +END +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE 9, 1 +#pragma code_page(1252) +#include "res\cdvd.rc2" // non-Microsoft Visual C++ edited resources +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/CDVDolio/cdvd_vs2012.vcxproj b/plugins/CDVDolio/cdvd_vs2012.vcxproj index 743f00981f..06a018d275 100644 --- a/plugins/CDVDolio/cdvd_vs2012.vcxproj +++ b/plugins/CDVDolio/cdvd_vs2012.vcxproj @@ -1,563 +1,563 @@ - - - - - Debug SSE2 - Win32 - - - Debug SSE2 - x64 - - - Debug SSE4 - Win32 - - - Debug SSE4 - x64 - - - Debug SSSE3 - Win32 - - - Debug SSSE3 - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release SSE2 - Win32 - - - Release SSE2 - x64 - - - Release SSE4 - Win32 - - - Release SSE4 - x64 - - - Release SSSE3 - Win32 - - - Release SSSE3 - x64 - - - Release - Win32 - - - Release - x64 - - - Template - Win32 - - - Template - x64 - - - - CDVDolio - {FCDF5AE2-EA47-4CC6-9F20-23A0517FEBCB} - cdvd - Win32Proj - - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - false - MultiByte - v110_xp - - - DynamicLibrary - false - MultiByte - v110_xp - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - false - MultiByte - v110_xp - - - Application - v110_xp - - - DynamicLibrary - Static - MultiByte - true - v110_xp - - - DynamicLibrary - Static - MultiByte - v110_xp - - - DynamicLibrary - Static - MultiByte - v110_xp - - - DynamicLibrary - Static - MultiByte - true - v110_xp - - - DynamicLibrary - Static - MultiByte - true - v110_xp - - - DynamicLibrary - Static - MultiByte - false - v110_xp - - - DynamicLibrary - Static - MultiByte - true - v110_xp - - - DynamicLibrary - Static - MultiByte - v110_xp - - - v110_xp - - - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(Configuration)\ - $(ProjectName) - $(ProjectName)-dbg - - - - Use - - - .\cdvd.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - X64 - - - Use - - - - - - - MachineX64 - - - - - Use - - - .\cdvd.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - X64 - - - Use - - - - - - - MachineX64 - - - - - Use - - - - - MachineX64 - - - - - Use - - - .\cdvd.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - Use - - - - - MachineX64 - - - - - Use - - - .\cdvd.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - Use - - - - - MachineX64 - - - - - Use - - - .\cdvd.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - Use - - - - - MachineX64 - - - - - Use - - - .\cdvd.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - X64 - - - Use - - - - - MachineX64 - - - - - Use - - - .\cdvd.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - X64 - - - Use - - - - - MachineX64 - - - - - - - - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug SSE2 + Win32 + + + Debug SSE2 + x64 + + + Debug SSE4 + Win32 + + + Debug SSE4 + x64 + + + Debug SSSE3 + Win32 + + + Debug SSSE3 + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release SSE2 + Win32 + + + Release SSE2 + x64 + + + Release SSE4 + Win32 + + + Release SSE4 + x64 + + + Release SSSE3 + Win32 + + + Release SSSE3 + x64 + + + Release + Win32 + + + Release + x64 + + + Template + Win32 + + + Template + x64 + + + + CDVDolio + {FCDF5AE2-EA47-4CC6-9F20-23A0517FEBCB} + cdvd + Win32Proj + + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + false + MultiByte + v110_xp + + + DynamicLibrary + false + MultiByte + v110_xp + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + false + MultiByte + v110_xp + + + Application + v110_xp + + + DynamicLibrary + Static + MultiByte + true + v110_xp + + + DynamicLibrary + Static + MultiByte + v110_xp + + + DynamicLibrary + Static + MultiByte + v110_xp + + + DynamicLibrary + Static + MultiByte + true + v110_xp + + + DynamicLibrary + Static + MultiByte + true + v110_xp + + + DynamicLibrary + Static + MultiByte + false + v110_xp + + + DynamicLibrary + Static + MultiByte + true + v110_xp + + + DynamicLibrary + Static + MultiByte + v110_xp + + + v110_xp + + + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(ProjectName) + $(ProjectName)-dbg + + + + Use + + + .\cdvd.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + X64 + + + Use + + + + + + + MachineX64 + + + + + Use + + + .\cdvd.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + X64 + + + Use + + + + + + + MachineX64 + + + + + Use + + + + + MachineX64 + + + + + Use + + + .\cdvd.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + Use + + + + + MachineX64 + + + + + Use + + + .\cdvd.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + Use + + + + + MachineX64 + + + + + Use + + + .\cdvd.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + Use + + + + + MachineX64 + + + + + Use + + + .\cdvd.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + X64 + + + Use + + + + + MachineX64 + + + + + Use + + + .\cdvd.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + X64 + + + Use + + + + + MachineX64 + + + + + + + + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/CDVDolio/cdvd_vs2012.vcxproj.filters b/plugins/CDVDolio/cdvd_vs2012.vcxproj.filters index cd1c662dc2..8b59440026 100644 --- a/plugins/CDVDolio/cdvd_vs2012.vcxproj.filters +++ b/plugins/CDVDolio/cdvd_vs2012.vcxproj.filters @@ -1,64 +1,64 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Source Files - - - Resource Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Resource Files - - - - - Resource Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Source Files + + + Resource Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Resource Files + + + + + Resource Files + + \ No newline at end of file diff --git a/plugins/CDVDolio/res/cdvd.rc2 b/plugins/CDVDolio/res/cdvd.rc2 index 71775f03b0..8b49f71fe0 100644 --- a/plugins/CDVDolio/res/cdvd.rc2 +++ b/plugins/CDVDolio/res/cdvd.rc2 @@ -1,14 +1,14 @@ -// -// cdvd.RC2 - resources Microsoft Visual C++ does not edit directly -// - -#ifdef APSTUDIO_INVOKED -#error this file is not editable by Microsoft Visual C++ -#endif //APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// Add manually edited resources here... - - -///////////////////////////////////////////////////////////////////////////// +// +// cdvd.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED +#error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + + +///////////////////////////////////////////////////////////////////////////// diff --git a/plugins/CDVDolio/vsprops/ProjectRootDir.props b/plugins/CDVDolio/vsprops/ProjectRootDir.props index 0456ef11c9..b78b467682 100644 --- a/plugins/CDVDolio/vsprops/ProjectRootDir.props +++ b/plugins/CDVDolio/vsprops/ProjectRootDir.props @@ -1,26 +1,26 @@ - - - - $(ProjectDir). - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - plugins - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(ProjectRootDir) - - - $(SvnRootDir) - - - $(SvnCommonDir) - - - $(PcsxSubsection) - - + + + + $(ProjectDir). + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + plugins + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(ProjectRootDir) + + + $(SvnRootDir) + + + $(SvnCommonDir) + + + $(PcsxSubsection) + + \ No newline at end of file diff --git a/plugins/CDVDolio/vsprops/common.props b/plugins/CDVDolio/vsprops/common.props index fc08aac80e..d4ef481d29 100644 --- a/plugins/CDVDolio/vsprops/common.props +++ b/plugins/CDVDolio/vsprops/common.props @@ -1,26 +1,26 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - - - - true - WIN32;_WINDOWS;_WIN32_WINNT=0x500;%(PreprocessorDefinitions) - Fast - false - Level4 - ProgramDatabase - 4995;4324;%(DisableSpecificWarnings) - - - winmm.lib;%(AdditionalDependencies) - ..\..\bin\plugins\$(ProjectName).dll - true - Windows - false - - + + + + <_ProjectFileVersion>10.0.30128.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + true + WIN32;_WINDOWS;_WIN32_WINNT=0x500;%(PreprocessorDefinitions) + Fast + false + Level4 + ProgramDatabase + 4995;4324;%(DisableSpecificWarnings) + + + winmm.lib;%(AdditionalDependencies) + ..\..\bin\plugins\$(ProjectName).dll + true + Windows + false + + \ No newline at end of file diff --git a/plugins/CDVDolio/vsprops/debug.props b/plugins/CDVDolio/vsprops/debug.props index e7fbf0688c..f3bc693c29 100644 --- a/plugins/CDVDolio/vsprops/debug.props +++ b/plugins/CDVDolio/vsprops/debug.props @@ -1,16 +1,16 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - true - - - - Disabled - _DEBUG;%(PreprocessorDefinitions) - true - StackFrameRuntimeCheck - MultiThreadedDebugDLL - - + + + + <_ProjectFileVersion>10.0.30128.1 + true + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + true + StackFrameRuntimeCheck + MultiThreadedDebugDLL + + \ No newline at end of file diff --git a/plugins/CDVDolio/vsprops/release.props b/plugins/CDVDolio/vsprops/release.props index c2c34b8f40..b1f648cd51 100644 --- a/plugins/CDVDolio/vsprops/release.props +++ b/plugins/CDVDolio/vsprops/release.props @@ -1,25 +1,25 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - false - - - - MaxSpeed - AnySuitable - true - Speed - true - true - NDEBUG;_SECURE_SCL=0;%(PreprocessorDefinitions) - true - MultiThreadedDLL - false - - - true - true - - + + + + <_ProjectFileVersion>10.0.30128.1 + false + + + + MaxSpeed + AnySuitable + true + Speed + true + true + NDEBUG;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + + + true + true + + \ No newline at end of file diff --git a/plugins/CDVDolio/vsprops/sse2.props b/plugins/CDVDolio/vsprops/sse2.props index 0d00e53dc7..d44efb76ce 100644 --- a/plugins/CDVDolio/vsprops/sse2.props +++ b/plugins/CDVDolio/vsprops/sse2.props @@ -1,12 +1,12 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - - - - StreamingSIMDExtensions2 - _M_SSE=0x200;%(PreprocessorDefinitions) - - + + + + <_ProjectFileVersion>10.0.30128.1 + + + + StreamingSIMDExtensions2 + _M_SSE=0x200;%(PreprocessorDefinitions) + + \ No newline at end of file diff --git a/plugins/CDVDolio/vsprops/sse4.props b/plugins/CDVDolio/vsprops/sse4.props index 2cf2b9d740..11f7adcb54 100644 --- a/plugins/CDVDolio/vsprops/sse4.props +++ b/plugins/CDVDolio/vsprops/sse4.props @@ -1,12 +1,12 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - - - - _M_SSE=0x401;%(PreprocessorDefinitions) - StreamingSIMDExtensions2 - - + + + + <_ProjectFileVersion>10.0.30128.1 + + + + _M_SSE=0x401;%(PreprocessorDefinitions) + StreamingSIMDExtensions2 + + \ No newline at end of file diff --git a/plugins/CDVDolio/vsprops/ssse3.props b/plugins/CDVDolio/vsprops/ssse3.props index c3e75d766a..7afc002f82 100644 --- a/plugins/CDVDolio/vsprops/ssse3.props +++ b/plugins/CDVDolio/vsprops/ssse3.props @@ -1,13 +1,13 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - <_PropertySheetDisplayName>sse3 - - - - StreamingSIMDExtensions2 - _M_SSE=0x301;%(PreprocessorDefinitions) - - + + + + <_ProjectFileVersion>10.0.30128.1 + <_PropertySheetDisplayName>sse3 + + + + StreamingSIMDExtensions2 + _M_SSE=0x301;%(PreprocessorDefinitions) + + \ No newline at end of file diff --git a/plugins/CDVDpeops/CLEAN.BAT b/plugins/CDVDpeops/CLEAN.BAT index cbeb91c994..3adbec0535 100644 --- a/plugins/CDVDpeops/CLEAN.BAT +++ b/plugins/CDVDpeops/CLEAN.BAT @@ -1,3 +1,3 @@ -del *.o -del *.c~ +del *.o +del *.c~ del *.h~ \ No newline at end of file diff --git a/plugins/CDVDpeops/ReadMe.txt b/plugins/CDVDpeops/ReadMe.txt index 3eff73e5c1..dd3229b964 100644 --- a/plugins/CDVDpeops/ReadMe.txt +++ b/plugins/CDVDpeops/ReadMe.txt @@ -1,37 +1,37 @@ -======================================================================== - DYNAMIC LINK LIBRARY : cdrPeops -======================================================================== - - -AppWizard has created this cdrPeops DLL for you. - -This file contains a summary of what you will find in each of the files that -make up your cdrPeops application. - -cdrPeops.dsp - This file (the project file) contains information at the project level and - is used to build a single project or subproject. Other users can share the - project (.dsp) file, but they should export the makefiles locally. - -cdrPeops.cpp - This is the main DLL source file. - -cdrPeops.h - This file contains your DLL exports. - -///////////////////////////////////////////////////////////////////////////// -Other standard files: - -StdAfx.h, StdAfx.cpp - These files are used to build a precompiled header (PCH) file - named cdrPeops.pch and a precompiled types file named StdAfx.obj. - - -///////////////////////////////////////////////////////////////////////////// -Other notes: - -AppWizard uses "TODO:" to indicate parts of the source code you -should add to or customize. - - -///////////////////////////////////////////////////////////////////////////// +======================================================================== + DYNAMIC LINK LIBRARY : cdrPeops +======================================================================== + + +AppWizard has created this cdrPeops DLL for you. + +This file contains a summary of what you will find in each of the files that +make up your cdrPeops application. + +cdrPeops.dsp + This file (the project file) contains information at the project level and + is used to build a single project or subproject. Other users can share the + project (.dsp) file, but they should export the makefiles locally. + +cdrPeops.cpp + This is the main DLL source file. + +cdrPeops.h + This file contains your DLL exports. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named cdrPeops.pch and a precompiled types file named StdAfx.obj. + + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" to indicate parts of the source code you +should add to or customize. + + +///////////////////////////////////////////////////////////////////////////// diff --git a/plugins/CDVDpeops/cdvdPeops.def b/plugins/CDVDpeops/cdvdPeops.def index 90bdc5c8a9..bc401b9cad 100644 --- a/plugins/CDVDpeops/cdvdPeops.def +++ b/plugins/CDVDpeops/cdvdPeops.def @@ -1,30 +1,30 @@ -; cdvdPeops.def : Declares the module parameters for the DLL. - -LIBRARY "cdvdPeops" - -EXPORTS - ; Explicit exports can go here - - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - CDVDinit @5 - CDVDshutdown @6 - CDVDopen @7 - CDVDclose @8 - CDVDconfigure @9 - CDVDabout @10 - CDVDtest @11 - CDVDgetTN @12 - CDVDgetTD @13 - CDVDreadTrack @14 - CDVDgetBuffer @15 - CDVDgetDiskType @16 - CDVDgetTrayStatus @17 - CDVDreadSubQ @18 - CDVDgetTOC @19 - CDVDctrlTrayOpen @20 - CDVDctrlTrayClose @21 -; PS2EgetCpuPlatform @18 - - +; cdvdPeops.def : Declares the module parameters for the DLL. + +LIBRARY "cdvdPeops" + +EXPORTS + ; Explicit exports can go here + + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + CDVDinit @5 + CDVDshutdown @6 + CDVDopen @7 + CDVDclose @8 + CDVDconfigure @9 + CDVDabout @10 + CDVDtest @11 + CDVDgetTN @12 + CDVDgetTD @13 + CDVDreadTrack @14 + CDVDgetBuffer @15 + CDVDgetDiskType @16 + CDVDgetTrayStatus @17 + CDVDreadSubQ @18 + CDVDgetTOC @19 + CDVDctrlTrayOpen @20 + CDVDctrlTrayClose @21 +; PS2EgetCpuPlatform @18 + + diff --git a/plugins/CDVDpeops/cdvdPeops.dev b/plugins/CDVDpeops/cdvdPeops.dev index 968ed2bc77..bcffd20054 100644 --- a/plugins/CDVDpeops/cdvdPeops.dev +++ b/plugins/CDVDpeops/cdvdPeops.dev @@ -1,418 +1,418 @@ -[Project] -FileName=cdvdPeops.dev -Name=cdvdPeops -Ver=1 -IsCpp=1 -Type=3 -Compiler=-D__GNUWIN32__ -mcpu=pentium -D_M_IX86=500 -W -DWIN32 -DNDEBUG -D_WINDOWS -D_GCC_@@_ -CppCompiler=-D__GNUWIN32__ -mcpu=pentium -D_M_IX86=500 -W -DWIN32 -DNDEBUG -D_WINDOWS -D_GCC_@@_ -Includes=d:\vs\vc98\MFC\include -Linker=-lkernel32 -luser32 -ladvapi32 -lcomdlg32 --add-stdcall-alias_@@_ -Libs= -UnitCount=37 -Folders="Documentation files","Header Files","Resource Files","Source Files" -ObjFiles= -PrivateResource=cdvdPeops_private.rc -ResourceIncludes= -MakeIncludes= -Icon= -ExeOutput=..\..\..\emus\pcsx2_0.6\plugins -ObjectOutput=Release -OverrideOutput=1 -OverrideOutputName=cdvdPeops.dll -HostApplication= -CommandLine= -UseCustomMakefile=0 -CustomMakefile=OwnMakefile.win -IncludeVersionInfo=0 -SupportXPThemes=0 -CompilerSet=0 -CompilerSettings=0000000001001000000000 - -[Unit1] -FileName=cdr.c -CompileCpp=0 -Folder="Source Files" -Compile=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit2] -FileName=cdvdPeops.c -Folder="Source Files" -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit3] -FileName=cdvdPeops.def -Folder="Source Files" -Compile=0 -CompileCpp=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit4] -FileName=cfg.c -Folder="Source Files" -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit5] -FileName=generic.c -Folder="Source Files" -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit6] -FileName=ioctrl.c -Folder="Source Files" -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit7] -FileName=ppf.c -Folder="Source Files" -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit8] -FileName=read.c -Folder="Source Files" -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit9] -FileName=scsi.c -Folder="Source Files" -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit10] -FileName=StdAfx.c -Folder="Source Files" -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit11] -FileName=sub.c -Folder="Source Files" -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit12] -FileName=toc.c -Folder="Source Files" -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit13] -FileName=cdda.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit14] -FileName=cdr.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit15] -FileName=cdvdPeops.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit16] -FileName=cfg.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit17] -FileName=defines.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit18] -FileName=externals.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit19] -FileName=generic.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit20] -FileName=ioctrl.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit21] -FileName=ppf.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit22] -FileName=read.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit23] -FileName=resource.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit24] -FileName=scsi.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit25] -FileName=scsidefs.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit26] -FileName=StdAfx.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit27] -FileName=sub.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit28] -FileName=toc.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit29] -FileName=wnaspi32.h -Folder="Header Files" -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit30] -FileName=cdvdPeops.rc -Folder="Resource Files" -Compile=1 -CompileCpp=1 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit31] -FileName=changelog.txt -Folder="Documentation files" -Compile=0 -CompileCpp=1 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit32] -FileName=filemap.txt -Folder="Documentation files" -Compile=0 -CompileCpp=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit33] -FileName=license.txt -Folder="Documentation files" -Compile=0 -CompileCpp=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit34] -FileName=cdda.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd=$(CC) -c cdda.c -o cdda.o $(CFLAGS) - -[VersionInfo] -Major=0 -Minor=1 -Release=1 -Build=1 -LanguageID=1033 -CharsetID=1252 -CompanyName= -FileVersion=0.1 -FileDescription=Developed using the Dev-C++ IDE -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename=cdvdPeops.exe -ProductName=cdvdPeops -ProductVersion=0.1 -AutoIncBuildNr=0 - -[Unit35] -FileName=i386.asm -Folder=Source Files -Compile=1 -Link=1 -Priority=1000 -OverrideBuildCmd=1 -BuildCmd=nasmw.exe -f win32 -D__WIN32__ -D__i386__ i386.asm -o release\i386.o - -[Unit36] -FileName=PS2Edefs.h -CompileCpp=1 -Folder=Header Files -Compile=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit37] -FileName=PS2Etypes.h -CompileCpp=1 -Folder=Header Files -Compile=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - +[Project] +FileName=cdvdPeops.dev +Name=cdvdPeops +Ver=1 +IsCpp=1 +Type=3 +Compiler=-D__GNUWIN32__ -mcpu=pentium -D_M_IX86=500 -W -DWIN32 -DNDEBUG -D_WINDOWS -D_GCC_@@_ +CppCompiler=-D__GNUWIN32__ -mcpu=pentium -D_M_IX86=500 -W -DWIN32 -DNDEBUG -D_WINDOWS -D_GCC_@@_ +Includes=d:\vs\vc98\MFC\include +Linker=-lkernel32 -luser32 -ladvapi32 -lcomdlg32 --add-stdcall-alias_@@_ +Libs= +UnitCount=37 +Folders="Documentation files","Header Files","Resource Files","Source Files" +ObjFiles= +PrivateResource=cdvdPeops_private.rc +ResourceIncludes= +MakeIncludes= +Icon= +ExeOutput=..\..\..\emus\pcsx2_0.6\plugins +ObjectOutput=Release +OverrideOutput=1 +OverrideOutputName=cdvdPeops.dll +HostApplication= +CommandLine= +UseCustomMakefile=0 +CustomMakefile=OwnMakefile.win +IncludeVersionInfo=0 +SupportXPThemes=0 +CompilerSet=0 +CompilerSettings=0000000001001000000000 + +[Unit1] +FileName=cdr.c +CompileCpp=0 +Folder="Source Files" +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit2] +FileName=cdvdPeops.c +Folder="Source Files" +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit3] +FileName=cdvdPeops.def +Folder="Source Files" +Compile=0 +CompileCpp=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit4] +FileName=cfg.c +Folder="Source Files" +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit5] +FileName=generic.c +Folder="Source Files" +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit6] +FileName=ioctrl.c +Folder="Source Files" +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit7] +FileName=ppf.c +Folder="Source Files" +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit8] +FileName=read.c +Folder="Source Files" +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit9] +FileName=scsi.c +Folder="Source Files" +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit10] +FileName=StdAfx.c +Folder="Source Files" +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit11] +FileName=sub.c +Folder="Source Files" +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit12] +FileName=toc.c +Folder="Source Files" +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit13] +FileName=cdda.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit14] +FileName=cdr.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit15] +FileName=cdvdPeops.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit16] +FileName=cfg.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit17] +FileName=defines.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit18] +FileName=externals.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit19] +FileName=generic.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit20] +FileName=ioctrl.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit21] +FileName=ppf.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit22] +FileName=read.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit23] +FileName=resource.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit24] +FileName=scsi.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit25] +FileName=scsidefs.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit26] +FileName=StdAfx.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit27] +FileName=sub.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit28] +FileName=toc.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit29] +FileName=wnaspi32.h +Folder="Header Files" +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit30] +FileName=cdvdPeops.rc +Folder="Resource Files" +Compile=1 +CompileCpp=1 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit31] +FileName=changelog.txt +Folder="Documentation files" +Compile=0 +CompileCpp=1 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit32] +FileName=filemap.txt +Folder="Documentation files" +Compile=0 +CompileCpp=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit33] +FileName=license.txt +Folder="Documentation files" +Compile=0 +CompileCpp=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit34] +FileName=cdda.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c cdda.c -o cdda.o $(CFLAGS) + +[VersionInfo] +Major=0 +Minor=1 +Release=1 +Build=1 +LanguageID=1033 +CharsetID=1252 +CompanyName= +FileVersion=0.1 +FileDescription=Developed using the Dev-C++ IDE +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename=cdvdPeops.exe +ProductName=cdvdPeops +ProductVersion=0.1 +AutoIncBuildNr=0 + +[Unit35] +FileName=i386.asm +Folder=Source Files +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=1 +BuildCmd=nasmw.exe -f win32 -D__WIN32__ -D__i386__ i386.asm -o release\i386.o + +[Unit36] +FileName=PS2Edefs.h +CompileCpp=1 +Folder=Header Files +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit37] +FileName=PS2Etypes.h +CompileCpp=1 +Folder=Header Files +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + diff --git a/plugins/CDVDpeops/cdvdPeops.rc b/plugins/CDVDpeops/cdvdPeops.rc index 83e137a969..0a313829aa 100644 --- a/plugins/CDVDpeops/cdvdPeops.rc +++ b/plugins/CDVDpeops/cdvdPeops.rc @@ -1,235 +1,235 @@ -//Microsoft Developer Studio generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Neutral resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) -#ifdef _WIN32 -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#pragma code_page(1252) -#endif //_WIN32 - -#ifndef _MAC -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,2,0 - PRODUCTVERSION 1,0,2,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040704b0" - BEGIN - VALUE "Comments", "\0" - VALUE "CompanyName", "Pete Bernert and the P.E.Op.S. team\0" - VALUE "FileDescription", "cdvdPeops\0" - VALUE "FileVersion", "1, 0, 2, 0\0" - VALUE "InternalName", "cdvdPeops\0" - VALUE "LegalCopyright", "Copyright © 2003-2004\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "cdvdPeops.dll\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "cdvdPeops\0" - VALUE "ProductVersion", "1, 0, 2, 0\0" - VALUE "SpecialBuild", "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x407, 1200 - END -END - -#endif // !_MAC - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOG DISCARDABLE 0, 0, 287, 239 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Configure the P.E.Op.S. ASPI/IOCTL PS2 CDVD Driver..." -FONT 8, "MS Sans Serif" -BEGIN - COMBOBOX IDC_IMODE,63,6,199,52,CBS_DROPDOWNLIST | WS_VSCROLL | - WS_TABSTOP - COMBOBOX IDC_DRIVE,63,22,199,52,CBS_DROPDOWNLIST | WS_VSCROLL | - WS_TABSTOP - COMBOBOX IDC_CACHE,63,39,199,65,CBS_DROPDOWNLIST | WS_VSCROLL | - WS_TABSTOP - CONTROL "Use additional 4 MByte data cache",IDC_DATACACHE,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,63,55,156,11 - CONTROL "Try to limit speed (not supported by all drives)", - IDC_SPEEDLIMIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13, - 76,156,11 - COMBOBOX IDC_SPEED,204,75,33,93,CBS_DROPDOWNLIST | WS_VSCROLL | - WS_TABSTOP - CONTROL "Don't wait until drive is ready (needed by a few drives)", - IDC_NOWAIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,89, - 198,11 - CONTROL "Check tray state (not tested, you can leave that off)", - IDC_TRAYSTATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13, - 102,186,11 - CONTROL "Try again on reading error. Retry count (1-10):", - IDC_TRYAGAIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13, - 129,156,11 - EDITTEXT IDC_RETRY,204,128,33,13,ES_AUTOHSCROLL - CONTROL "Show message box on reading error",IDC_SHOWREADERR, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,142,156,11 - CONTROL "Use PPF patch file:",IDC_USEPPF,"Button", - BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,13,168,74,11 - EDITTEXT IDC_PPFFILE,89,168,167,12,ES_AUTOHSCROLL | WS_DISABLED - PUSHBUTTON "...",IDC_CHOOSEFILE,259,168,13,12,WS_DISABLED - COMBOBOX IDC_SUBCHAN0,13,197,261,52,CBS_DROPDOWNLIST | - WS_DISABLED | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_SUBFILE,63,197,193,12,ES_AUTOHSCROLL | WS_DISABLED - PUSHBUTTON "...",IDC_CHOOSESUBF,259,197,13,12,WS_DISABLED - DEFPUSHBUTTON "OK",IDOK,63,221,50,14 - PUSHBUTTON "Cancel",IDCANCEL,175,221,50,14 - RTEXT "Drive:",IDC_STATIC,37,24,21,11 - RTEXT "Caching mode:",IDC_STATIC,9,41,49,11 - GROUPBOX "Error handling",IDC_STATIC,6,119,275,38 - GROUPBOX "PPF patches",IDC_STATIC,6,158,275,28 - GROUPBOX "Misc",IDC_STATIC,6,66,275,52 - RTEXT "Interface:",IDC_STATIC,15,8,43,11 - GROUPBOX "Subchannel reading",IDC_STATIC,6,187,275,29 - RTEXT "File:",IDC_SFSTATIC,26,198,30,11,SS_CENTERIMAGE -END - -IDD_ABOUT DIALOGEX 0, 0, 238, 210 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "About the P.E.Op.S. ASPI/IOCTL PS2 CDVD Driver..." -FONT 8, "MS Sans Serif" -BEGIN - DEFPUSHBUTTON "OK",IDOK,98,188,44,14 - RTEXT "Version :",IDC_STATIC,5,5,74,9 - RTEXT "Release date :",IDC_STATIC,5,16,74,9 - RTEXT "Coded by :",IDC_STATIC,5,27,74,9 - RTEXT "Pete's EMail :",IDC_STATIC,5,40,74,9 - RTEXT "Pete's homepage :",IDC_STATIC,5,51,74,9 - LTEXT "1.2",IDC_STATIC,82,5,154,9 - LTEXT "25.12.2004",IDC_STATIC,81,16,154,9 - LTEXT "Pete Bernert and the P.E.Op.S. team",IDC_STATIC,81,27, - 154,9 - LTEXT "BlackDove@addcom.de",IDC_STATIC,81,39,154,9 - LTEXT "http://www.pbernert.com",IDC_STATIC,81,51,154,9 - CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,9,100,218,81, - WS_EX_DLGMODALFRAME - RTEXT "Thanks to :",IDC_STATIC,16,109,38,9 - LTEXT "the PCSX2 team - special thanx to shadow for kicking my ass", - IDC_STATIC,57,109,161,18 - LTEXT "My girlfriend Heike... because everything I do wouldn't be the same without her", - IDC_STATIC,57,130,161,19 - RTEXT "P.E.Op.S. homepage :",IDC_STATIC,5,80,74,9 - LTEXT "https://sourceforge.net/projects/peops/",IDC_STATIC,81, - 80,154,9 - RTEXT "linuzappz :",IDC_STATIC,10,63,69,10 - LTEXT "http://www.pcsx.net",IDC_STATIC,81,63,142,10 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 280 - TOPMARGIN, 7 - BOTTOMMARGIN, 232 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 231 - TOPMARGIN, 7 - BOTTOMMARGIN, 203 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Neutral resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// German (Germany) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) -#ifdef _WIN32 -LANGUAGE LANG_GERMAN, SUBLANG_GERMAN -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // German (Germany) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Neutral resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) +#ifdef _WIN32 +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL +#pragma code_page(1252) +#endif //_WIN32 + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,2,0 + PRODUCTVERSION 1,0,2,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040704b0" + BEGIN + VALUE "Comments", "\0" + VALUE "CompanyName", "Pete Bernert and the P.E.Op.S. team\0" + VALUE "FileDescription", "cdvdPeops\0" + VALUE "FileVersion", "1, 0, 2, 0\0" + VALUE "InternalName", "cdvdPeops\0" + VALUE "LegalCopyright", "Copyright © 2003-2004\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "cdvdPeops.dll\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "cdvdPeops\0" + VALUE "ProductVersion", "1, 0, 2, 0\0" + VALUE "SpecialBuild", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x407, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOG DISCARDABLE 0, 0, 287, 239 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Configure the P.E.Op.S. ASPI/IOCTL PS2 CDVD Driver..." +FONT 8, "MS Sans Serif" +BEGIN + COMBOBOX IDC_IMODE,63,6,199,52,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP + COMBOBOX IDC_DRIVE,63,22,199,52,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP + COMBOBOX IDC_CACHE,63,39,199,65,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP + CONTROL "Use additional 4 MByte data cache",IDC_DATACACHE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,63,55,156,11 + CONTROL "Try to limit speed (not supported by all drives)", + IDC_SPEEDLIMIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13, + 76,156,11 + COMBOBOX IDC_SPEED,204,75,33,93,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP + CONTROL "Don't wait until drive is ready (needed by a few drives)", + IDC_NOWAIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,89, + 198,11 + CONTROL "Check tray state (not tested, you can leave that off)", + IDC_TRAYSTATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13, + 102,186,11 + CONTROL "Try again on reading error. Retry count (1-10):", + IDC_TRYAGAIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13, + 129,156,11 + EDITTEXT IDC_RETRY,204,128,33,13,ES_AUTOHSCROLL + CONTROL "Show message box on reading error",IDC_SHOWREADERR, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,142,156,11 + CONTROL "Use PPF patch file:",IDC_USEPPF,"Button", + BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,13,168,74,11 + EDITTEXT IDC_PPFFILE,89,168,167,12,ES_AUTOHSCROLL | WS_DISABLED + PUSHBUTTON "...",IDC_CHOOSEFILE,259,168,13,12,WS_DISABLED + COMBOBOX IDC_SUBCHAN0,13,197,261,52,CBS_DROPDOWNLIST | + WS_DISABLED | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_SUBFILE,63,197,193,12,ES_AUTOHSCROLL | WS_DISABLED + PUSHBUTTON "...",IDC_CHOOSESUBF,259,197,13,12,WS_DISABLED + DEFPUSHBUTTON "OK",IDOK,63,221,50,14 + PUSHBUTTON "Cancel",IDCANCEL,175,221,50,14 + RTEXT "Drive:",IDC_STATIC,37,24,21,11 + RTEXT "Caching mode:",IDC_STATIC,9,41,49,11 + GROUPBOX "Error handling",IDC_STATIC,6,119,275,38 + GROUPBOX "PPF patches",IDC_STATIC,6,158,275,28 + GROUPBOX "Misc",IDC_STATIC,6,66,275,52 + RTEXT "Interface:",IDC_STATIC,15,8,43,11 + GROUPBOX "Subchannel reading",IDC_STATIC,6,187,275,29 + RTEXT "File:",IDC_SFSTATIC,26,198,30,11,SS_CENTERIMAGE +END + +IDD_ABOUT DIALOGEX 0, 0, 238, 210 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About the P.E.Op.S. ASPI/IOCTL PS2 CDVD Driver..." +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",IDOK,98,188,44,14 + RTEXT "Version :",IDC_STATIC,5,5,74,9 + RTEXT "Release date :",IDC_STATIC,5,16,74,9 + RTEXT "Coded by :",IDC_STATIC,5,27,74,9 + RTEXT "Pete's EMail :",IDC_STATIC,5,40,74,9 + RTEXT "Pete's homepage :",IDC_STATIC,5,51,74,9 + LTEXT "1.2",IDC_STATIC,82,5,154,9 + LTEXT "25.12.2004",IDC_STATIC,81,16,154,9 + LTEXT "Pete Bernert and the P.E.Op.S. team",IDC_STATIC,81,27, + 154,9 + LTEXT "BlackDove@addcom.de",IDC_STATIC,81,39,154,9 + LTEXT "http://www.pbernert.com",IDC_STATIC,81,51,154,9 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,9,100,218,81, + WS_EX_DLGMODALFRAME + RTEXT "Thanks to :",IDC_STATIC,16,109,38,9 + LTEXT "the PCSX2 team - special thanx to shadow for kicking my ass", + IDC_STATIC,57,109,161,18 + LTEXT "My girlfriend Heike... because everything I do wouldn't be the same without her", + IDC_STATIC,57,130,161,19 + RTEXT "P.E.Op.S. homepage :",IDC_STATIC,5,80,74,9 + LTEXT "https://sourceforge.net/projects/peops/",IDC_STATIC,81, + 80,154,9 + RTEXT "linuzappz :",IDC_STATIC,10,63,69,10 + LTEXT "http://www.pcsx.net",IDC_STATIC,81,63,142,10 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 280 + TOPMARGIN, 7 + BOTTOMMARGIN, 232 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 231 + TOPMARGIN, 7 + BOTTOMMARGIN, 203 + END +END +#endif // APSTUDIO_INVOKED + +#endif // Neutral resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// German (Germany) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) +#ifdef _WIN32 +LANGUAGE LANG_GERMAN, SUBLANG_GERMAN +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // German (Germany) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/CDVDpeops/cdvdPeops.sln b/plugins/CDVDpeops/cdvdPeops.sln index 3793c5cbad..e8f4b6eb3b 100644 --- a/plugins/CDVDpeops/cdvdPeops.sln +++ b/plugins/CDVDpeops/cdvdPeops.sln @@ -1,21 +1,21 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdvdPeops", "cdvdPeops.vcproj", "{74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Debug.ActiveCfg = Debug|Win32 - {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Debug.Build.0 = Debug|Win32 - {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Release.ActiveCfg = Release|Win32 - {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdvdPeops", "cdvdPeops.vcproj", "{74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Debug.ActiveCfg = Debug|Win32 + {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Debug.Build.0 = Debug|Win32 + {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Release.ActiveCfg = Release|Win32 + {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/plugins/CDVDpeops/cdvdPeops_2005.sln b/plugins/CDVDpeops/cdvdPeops_2005.sln index 8f88a950c3..2af405f9d5 100644 --- a/plugins/CDVDpeops/cdvdPeops_2005.sln +++ b/plugins/CDVDpeops/cdvdPeops_2005.sln @@ -1,19 +1,19 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdvdPeops", "cdvdPeops_2005.vcproj", "{74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Debug|Win32.ActiveCfg = Debug|Win32 - {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Debug|Win32.Build.0 = Debug|Win32 - {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Release|Win32.ActiveCfg = Release|Win32 - {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdvdPeops", "cdvdPeops_2005.vcproj", "{74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Debug|Win32.ActiveCfg = Debug|Win32 + {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Debug|Win32.Build.0 = Debug|Win32 + {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Release|Win32.ActiveCfg = Release|Win32 + {74689B0D-A4E7-4D0E-A2D8-8A30EA455BC6}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/plugins/CDVDpeops/cdvdPeops_private.rc b/plugins/CDVDpeops/cdvdPeops_private.rc index ae59fb028f..33f47feb7f 100644 --- a/plugins/CDVDpeops/cdvdPeops_private.rc +++ b/plugins/CDVDpeops/cdvdPeops_private.rc @@ -1,4 +1,4 @@ -// THIS FILE WILL BE OVERWRITTEN BY DEV-C++! -// DO NOT EDIT! - -#include "cdvdPeops.rc" +// THIS FILE WILL BE OVERWRITTEN BY DEV-C++! +// DO NOT EDIT! + +#include "cdvdPeops.rc" diff --git a/plugins/CDVDpeops/changelog.txt b/plugins/CDVDpeops/changelog.txt index 83c8f0a391..ee350326a5 100644 --- a/plugins/CDVDpeops/changelog.txt +++ b/plugins/CDVDpeops/changelog.txt @@ -1,19 +1,19 @@ -######################################################################### - -Version 1.2 ------------ -- Pete: added an hack in CDVDgetTD for big dvds -- Pete: fixed a track size calculation bug - - -Version 1.1 ------------ -- Pete: added dvd support for Plextor PX-708A - -Version 1.0 ------------ -- First release - Pete Bernert: ported the P.E.Op.S. PSX cdr plugin to PS2 needs - -######################################################################### - +######################################################################### + +Version 1.2 +----------- +- Pete: added an hack in CDVDgetTD for big dvds +- Pete: fixed a track size calculation bug + + +Version 1.1 +----------- +- Pete: added dvd support for Plextor PX-708A + +Version 1.0 +----------- +- First release + Pete Bernert: ported the P.E.Op.S. PSX cdr plugin to PS2 needs + +######################################################################### + diff --git a/plugins/CDVDpeops/filemap.txt b/plugins/CDVDpeops/filemap.txt index e111546181..e4aca5272d 100644 --- a/plugins/CDVDpeops/filemap.txt +++ b/plugins/CDVDpeops/filemap.txt @@ -1,52 +1,52 @@ -######################################################################### - -- cdr.c / cdr.h - main plugin interface funcs - -- cdda.c / cdda.h - audio playing funcs - -- cfg.c / cfg.h - configuration dialogs/file reading funcs - -- cdvdPeops.* - Windows dll related files (including msvc/devc++ project files) - -- generic.c / generic.h - generic stuff - -- ioctrl.c / ioctrl.h - w2k/xp ioctl functions - -- ppf.c / ppf.h - ppf caching funcs - -- read.c / read.h - the different read caching modes - -- scsi.c / scsi.h - all the used scsi commands - -- stdafx.h - main include file - -- sub.c / sub.h - sub data caching - -- toc.c / toc.h - toc related funcs - -- externals.h - generic defines/external vars - -- defines.h - typedef structs/defines/inline funcs - -- resource.h - Windows resource header - -- i386.asm - NASM funcs - -######################################################################### - +######################################################################### + +- cdr.c / cdr.h + main plugin interface funcs + +- cdda.c / cdda.h + audio playing funcs + +- cfg.c / cfg.h + configuration dialogs/file reading funcs + +- cdvdPeops.* + Windows dll related files (including msvc/devc++ project files) + +- generic.c / generic.h + generic stuff + +- ioctrl.c / ioctrl.h + w2k/xp ioctl functions + +- ppf.c / ppf.h + ppf caching funcs + +- read.c / read.h + the different read caching modes + +- scsi.c / scsi.h + all the used scsi commands + +- stdafx.h + main include file + +- sub.c / sub.h + sub data caching + +- toc.c / toc.h + toc related funcs + +- externals.h + generic defines/external vars + +- defines.h + typedef structs/defines/inline funcs + +- resource.h + Windows resource header + +- i386.asm + NASM funcs + +######################################################################### + diff --git a/plugins/CDVDpeops/i386.asm b/plugins/CDVDpeops/i386.asm index e6f11ac0ac..480bbc94d8 100644 --- a/plugins/CDVDpeops/i386.asm +++ b/plugins/CDVDpeops/i386.asm @@ -1,32 +1,32 @@ -; i386.asm - description -; ------------------- -; begin : Sun Nov 08 2001 -; copyright : (C) 2001 by Pete Bernert -; email : BlackDove@addcom.de - -; This program is free software; you can redistribute it and/or modify * -; it under the terms of the GNU General Public License as published by * -; the Free Software Foundation; either version 2 of the License, or * -; (at your option) any later version. See also the license.txt file for * -; additional informations. * - - -bits 32 - -section .text - -%include "macros.inc" - -;----------------------------------------------------------------- -NEWSYM i386_reOrder - push ebp - mov ebp, esp - - mov eax, [ebp+8] - bswap eax - - mov esp, ebp - pop ebp - ret - - +; i386.asm - description +; ------------------- +; begin : Sun Nov 08 2001 +; copyright : (C) 2001 by Pete Bernert +; email : BlackDove@addcom.de + +; This program is free software; you can redistribute it and/or modify * +; it under the terms of the GNU General Public License as published by * +; the Free Software Foundation; either version 2 of the License, or * +; (at your option) any later version. See also the license.txt file for * +; additional informations. * + + +bits 32 + +section .text + +%include "macros.inc" + +;----------------------------------------------------------------- +NEWSYM i386_reOrder + push ebp + mov ebp, esp + + mov eax, [ebp+8] + bswap eax + + mov esp, ebp + pop ebp + ret + + diff --git a/plugins/CDVDpeops/readme_1_2.txt b/plugins/CDVDpeops/readme_1_2.txt index 1a31d5b341..bdd89e70e1 100644 --- a/plugins/CDVDpeops/readme_1_2.txt +++ b/plugins/CDVDpeops/readme_1_2.txt @@ -1,198 +1,198 @@ -P.E.Op.S. PS2 CDVD emulation plugin ---------------------------------------------------------------------------- - -The P.E.Op.S. PS2 CDVD plugin is based on the P.E.Op.S. PSX -CDR plugin which is based on Pete's CDR ASPI/IOCTL plugin -for Windows. - ---------------------------------------------------------------------------- -Introduction - 19.11.2003 ----------------------------------------------------------------------------- - -PS2 emulation is growing. - -Oh, don't get me wrong, it will still need a lot of time until -you can really play your favourite PS2 games on the PC (ehe... -and I remember how I got flamed away nearly two years ago by -die-hard know-it-alls when I predicted that it will need at -least 'a couple of years' for 'playable' PS2 emulation). - -But yeah, it is growing. Lotsa nice guys are spending their -free time coding on PCSX2, for example. One of them is Shadow... -and he never gets tired to ask me for some PS2 plugins, ehe. - -Well, what to say? Last week I had some free time as well, -Shadow asked for a CDVD plugin, and so I got to work. I took -the P.E.Op.S. cdr sources, added the PCSX2 interface, changed -some lines of code, asked a few stupid questions (hi to -linuzappz), tested it with a few PS2 dvds and cds, and it was -done. - -Of course it's not 100% complete. There are a few (but not -important) things missing, more cd/dvd modes have to get -investigated and added, etc. But basically I hope it will -work just fine with the current PCSX2 version. So go on, -and give it a try :) - ----------------------------------------------------------------------------- - -Requirements: - -* A cdrom/dvd drive (yeah, you need a dvd drive to play dvds... - no emails please telling me that your cd drive doesn't work - correctly with dvds). -* The ASPI layer with W9x/ME -* Nothing special with W2K/WXP -* Some PS2 cds/dvds. - ----------------------------------------------------------------------------- - -Installation: - -just copy the file cdvdPeops.dll into your PCSX2 \plugins -directory, that's all. - ----------------------------------------------------------------------------- - -Configuration (similar to the P.E.Op.S. psx cdr plugin): - -You HAVE TO configure the plugin before you use -it the first time. There are only a few options -available: - -0) Interface ------------------ - -If you are using W9x/ME, you have to use the ASPI Interface. -If you are using NT/W2K/XP, you have the free choice: -ASPI (if it's installed), or IOCTL scsi commands. - -1) Drive --------------- - -Well, that's self-explaining. Just select the drive -you want to use. "NONE" is NO drive... you have to -select a real one. - -2.) Caching -------------------------------------- - -To get more speed, there are five caching modes: -None, Read ahead, Async, Thread and Smooth. - -- 'None' is the slowest mode, but it should work on -most drives. -- 'Read ahead' will read more sectors at once, speeding up -mdecs. There is a small chance that a few drives cannot -do it, so set it to 'None', if you are having troubles. -- The 'Async mode' will do read ahead and some additional -'intelligent' asynchronous reads... that mode is recommended -with the ASPI interface, it can squeeze some more speed -out of your drive :) -- The 'Thread mode' will speed up the IOCTL interfaces, -since that ones can't do real async reading. So, when -you are using W2K/XP, and you have no ASPI installed, -try this mode for best speed. -- Some drives will have speed problems reading ps2 -cds/dvds, this caching mode will try to solve such issues. - - -Also available: an additional data cache option, which -will store up to 4 MBytes of already read sectors. This -can speed up certain games, which are re-reading the -same range of sectors again and again. - - -3.) Speed limitation -------------------------------- - -Some drives will work better (less noisy and smoother) -if you limit the drive speed. Not all drives are supporting -the "set speed" command I am using, though. -If your drive doesn't support it, a message will be displayed -on startup. There are some tools in the net which will -offer the same function, prolly for a wider range of drives, -so you can also try one of them, if the plugin speed limit fails. - - -4.) Don't wait til drive is ready ------------------------------------------------ - -By default my plugin is asking the cd/dvd drive on startup, -if its state is ready (that means: a cd is inserted and the -drive can start reading). -A few drives will not answer that question (bah, bah, bah), -and the screen will stay black... forever :) -If you are encoutering that problem, you can turn on the -"Don't wait..." option, but be warned: it can cause problems -(blue screens, for example) if the plugin starts reading and -there is a problem with the drive... - - -5.) Check drive tray state ------------------------------------------------ -PCSX2 may ask the plugin if the tray is open or closed. If -this option is turned off, the plugion always will respond -"closed". If this option is enabled, the plugin will try -to ask the drive for the tray state. Since I couldn't test -this option yet, I suggest to leave it off (and honestly, -are you able to run a multi-dvd game which needs disc -changing right now in PCSX2?) :) - - -6.) Try again on reading error ------------------------------------------------ -It might happen that your drive can't read a certain sector at -the first time, if your cd/dvd is scratched. Therefore I've added -that option, by activating it you can tell the plugin to try it -up to 10 times again before reporting the read error to the -main emu. -If you want, you can also activate some error message box, -if a sector is not readable (just to inform you something is -going wrong). - - -7.) Use PPF patches (not available yet) ---------------------------------------- - -- TODO :) - - -8.) Subchannel reading (not available yet) ------------------------------------------- - -- MAYBE TODO :) - ----------------------------------------------------------------------------- - -Conclusion: - -You never ever can escape your Shadow ;) - -For version infos read the "version.txt" file. - -And, peops, have fun! - -Pete Bernert - ----------------------------------------------------------------------------- - -P.E.Op.S. page on sourceforge: https://sourceforge.net/projects/peops/ - -P.E.Op.S. developer: - -Pete Bernert http://www.pbernert.com -Lewpy http://lewpy.psxemu.com/ -lu_zero http://brsk.virtualave.net/lu_zero/ -linuzappz http://www.pcsx.net -Darko Matesic http://mrdario.tripod.com -syo http://www.geocities.co.jp/SiliconValley-Bay/2072/ - ----------------------------------------------------------------------------- - -Disclaimer/Licence: - -This plugin is under GPL... check out the license.txt file in the /src -directory for details. - ----------------------------------------------------------------------------- +P.E.Op.S. PS2 CDVD emulation plugin +--------------------------------------------------------------------------- + +The P.E.Op.S. PS2 CDVD plugin is based on the P.E.Op.S. PSX +CDR plugin which is based on Pete's CDR ASPI/IOCTL plugin +for Windows. + +--------------------------------------------------------------------------- +Introduction - 19.11.2003 +---------------------------------------------------------------------------- + +PS2 emulation is growing. + +Oh, don't get me wrong, it will still need a lot of time until +you can really play your favourite PS2 games on the PC (ehe... +and I remember how I got flamed away nearly two years ago by +die-hard know-it-alls when I predicted that it will need at +least 'a couple of years' for 'playable' PS2 emulation). + +But yeah, it is growing. Lotsa nice guys are spending their +free time coding on PCSX2, for example. One of them is Shadow... +and he never gets tired to ask me for some PS2 plugins, ehe. + +Well, what to say? Last week I had some free time as well, +Shadow asked for a CDVD plugin, and so I got to work. I took +the P.E.Op.S. cdr sources, added the PCSX2 interface, changed +some lines of code, asked a few stupid questions (hi to +linuzappz), tested it with a few PS2 dvds and cds, and it was +done. + +Of course it's not 100% complete. There are a few (but not +important) things missing, more cd/dvd modes have to get +investigated and added, etc. But basically I hope it will +work just fine with the current PCSX2 version. So go on, +and give it a try :) + +---------------------------------------------------------------------------- + +Requirements: + +* A cdrom/dvd drive (yeah, you need a dvd drive to play dvds... + no emails please telling me that your cd drive doesn't work + correctly with dvds). +* The ASPI layer with W9x/ME +* Nothing special with W2K/WXP +* Some PS2 cds/dvds. + +---------------------------------------------------------------------------- + +Installation: + +just copy the file cdvdPeops.dll into your PCSX2 \plugins +directory, that's all. + +---------------------------------------------------------------------------- + +Configuration (similar to the P.E.Op.S. psx cdr plugin): + +You HAVE TO configure the plugin before you use +it the first time. There are only a few options +available: + +0) Interface +----------------- + +If you are using W9x/ME, you have to use the ASPI Interface. +If you are using NT/W2K/XP, you have the free choice: +ASPI (if it's installed), or IOCTL scsi commands. + +1) Drive +-------------- + +Well, that's self-explaining. Just select the drive +you want to use. "NONE" is NO drive... you have to +select a real one. + +2.) Caching +------------------------------------- + +To get more speed, there are five caching modes: +None, Read ahead, Async, Thread and Smooth. + +- 'None' is the slowest mode, but it should work on +most drives. +- 'Read ahead' will read more sectors at once, speeding up +mdecs. There is a small chance that a few drives cannot +do it, so set it to 'None', if you are having troubles. +- The 'Async mode' will do read ahead and some additional +'intelligent' asynchronous reads... that mode is recommended +with the ASPI interface, it can squeeze some more speed +out of your drive :) +- The 'Thread mode' will speed up the IOCTL interfaces, +since that ones can't do real async reading. So, when +you are using W2K/XP, and you have no ASPI installed, +try this mode for best speed. +- Some drives will have speed problems reading ps2 +cds/dvds, this caching mode will try to solve such issues. + + +Also available: an additional data cache option, which +will store up to 4 MBytes of already read sectors. This +can speed up certain games, which are re-reading the +same range of sectors again and again. + + +3.) Speed limitation +------------------------------- + +Some drives will work better (less noisy and smoother) +if you limit the drive speed. Not all drives are supporting +the "set speed" command I am using, though. +If your drive doesn't support it, a message will be displayed +on startup. There are some tools in the net which will +offer the same function, prolly for a wider range of drives, +so you can also try one of them, if the plugin speed limit fails. + + +4.) Don't wait til drive is ready +----------------------------------------------- + +By default my plugin is asking the cd/dvd drive on startup, +if its state is ready (that means: a cd is inserted and the +drive can start reading). +A few drives will not answer that question (bah, bah, bah), +and the screen will stay black... forever :) +If you are encoutering that problem, you can turn on the +"Don't wait..." option, but be warned: it can cause problems +(blue screens, for example) if the plugin starts reading and +there is a problem with the drive... + + +5.) Check drive tray state +----------------------------------------------- +PCSX2 may ask the plugin if the tray is open or closed. If +this option is turned off, the plugion always will respond +"closed". If this option is enabled, the plugin will try +to ask the drive for the tray state. Since I couldn't test +this option yet, I suggest to leave it off (and honestly, +are you able to run a multi-dvd game which needs disc +changing right now in PCSX2?) :) + + +6.) Try again on reading error +----------------------------------------------- +It might happen that your drive can't read a certain sector at +the first time, if your cd/dvd is scratched. Therefore I've added +that option, by activating it you can tell the plugin to try it +up to 10 times again before reporting the read error to the +main emu. +If you want, you can also activate some error message box, +if a sector is not readable (just to inform you something is +going wrong). + + +7.) Use PPF patches (not available yet) +--------------------------------------- + +- TODO :) + + +8.) Subchannel reading (not available yet) +------------------------------------------ + +- MAYBE TODO :) + +---------------------------------------------------------------------------- + +Conclusion: + +You never ever can escape your Shadow ;) + +For version infos read the "version.txt" file. + +And, peops, have fun! + +Pete Bernert + +---------------------------------------------------------------------------- + +P.E.Op.S. page on sourceforge: https://sourceforge.net/projects/peops/ + +P.E.Op.S. developer: + +Pete Bernert http://www.pbernert.com +Lewpy http://lewpy.psxemu.com/ +lu_zero http://brsk.virtualave.net/lu_zero/ +linuzappz http://www.pcsx.net +Darko Matesic http://mrdario.tripod.com +syo http://www.geocities.co.jp/SiliconValley-Bay/2072/ + +---------------------------------------------------------------------------- + +Disclaimer/Licence: + +This plugin is under GPL... check out the license.txt file in the /src +directory for details. + +---------------------------------------------------------------------------- diff --git a/plugins/CDVDpeops/version_1_2.txt b/plugins/CDVDpeops/version_1_2.txt index 560e71cc61..6c227502ed 100644 --- a/plugins/CDVDpeops/version_1_2.txt +++ b/plugins/CDVDpeops/version_1_2.txt @@ -1,61 +1,61 @@ --------------------------------------------------------------------------- -25. December, 2004 Version 1.2 - -- The plugin is tested with PCSX2 0.7! - -- I've repaired a stupid bug concerning calculating the track sizes. - -- I've added an hack for big DVDs (fake minute info in the CDVDgetTD - function). - - --------------------------------------------------------------------------- -29. March, 2004 Version 1.1 - -- Ah, to make it short: I've got some times this weekend, tried the - PCSX2 0.6 version, noticed that my relatively new Plextor PX-708A - drive didn't work with the P.E.Op.S. dvd plugin, and therefore - added a new good working reading mode. - - So, if you had just some error message like 'unable to open dvd - plugin' with PCSX2 and the P.E.Op.S. dvd plugin in the past, chances - are high that this version will now give better results on your - system. At least I was able to see the first intro screens of some - games without problems :) - - --------------------------------------------------------------------------- - -19. November, 2003 Version 1.0 - -- What to say? Blame Shadow of the PCSX2 team... he wanted - a PS2 CDVD plugin from me, and he didn't give up asking until - I made one, sigh ;) - - Ok, I have done this plugin using my old P.E.Op.S. PSX cdr - plugin sources, so you will notice some similaries, of course. - - This plugin is able to play PS2 CDs and PS2 DVDs in your - PC's CD/DVD drives, and since all the old P.E.Op.S. cdr read - caching modes are available, the speed should be fine as well. - - For the plugin settings, check out the included readme file - (but if you are familar with the P.E.Op.S. cdr config, you - will not have much troubles... the new plugin's config is even - easier to use, since you don't have to specify a read method). - - I cannot say much about compatibility (since I did the plugin - in a few hours last weekend, and I only have a Liteon DVD drive - for tests available right now), but I think it's free of major - bugs, so feel free to try it. - - Some stuff is not available right now: PPF support and subchannel - reading, for example (but both are not very important at the - moment, imho). - - The sources of the plugin (license: GPL) can be found on the - P.E.Op.S. site on sourceforge, I've added a MS VisualStudio 6 - project file, as well as a Bloodshed Dev-C++ one (you will - also need NASM for this one). - - Ok, have fun :) +-------------------------------------------------------------------------- +25. December, 2004 Version 1.2 + +- The plugin is tested with PCSX2 0.7! + +- I've repaired a stupid bug concerning calculating the track sizes. + +- I've added an hack for big DVDs (fake minute info in the CDVDgetTD + function). + + +-------------------------------------------------------------------------- +29. March, 2004 Version 1.1 + +- Ah, to make it short: I've got some times this weekend, tried the + PCSX2 0.6 version, noticed that my relatively new Plextor PX-708A + drive didn't work with the P.E.Op.S. dvd plugin, and therefore + added a new good working reading mode. + + So, if you had just some error message like 'unable to open dvd + plugin' with PCSX2 and the P.E.Op.S. dvd plugin in the past, chances + are high that this version will now give better results on your + system. At least I was able to see the first intro screens of some + games without problems :) + + +-------------------------------------------------------------------------- + +19. November, 2003 Version 1.0 + +- What to say? Blame Shadow of the PCSX2 team... he wanted + a PS2 CDVD plugin from me, and he didn't give up asking until + I made one, sigh ;) + + Ok, I have done this plugin using my old P.E.Op.S. PSX cdr + plugin sources, so you will notice some similaries, of course. + + This plugin is able to play PS2 CDs and PS2 DVDs in your + PC's CD/DVD drives, and since all the old P.E.Op.S. cdr read + caching modes are available, the speed should be fine as well. + + For the plugin settings, check out the included readme file + (but if you are familar with the P.E.Op.S. cdr config, you + will not have much troubles... the new plugin's config is even + easier to use, since you don't have to specify a read method). + + I cannot say much about compatibility (since I did the plugin + in a few hours last weekend, and I only have a Liteon DVD drive + for tests available right now), but I think it's free of major + bugs, so feel free to try it. + + Some stuff is not available right now: PPF support and subchannel + reading, for example (but both are not very important at the + moment, imho). + + The sources of the plugin (license: GPL) can be found on the + P.E.Op.S. site on sourceforge, I've added a MS VisualStudio 6 + project file, as well as a Bloodshed Dev-C++ one (you will + also need NASM for this one). + + Ok, have fun :) diff --git a/plugins/FWnull/License.txt b/plugins/FWnull/License.txt index 7d1f8605f8..1bcc46f53a 100644 --- a/plugins/FWnull/License.txt +++ b/plugins/FWnull/License.txt @@ -1,342 +1,342 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - - + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + + diff --git a/plugins/FWnull/ReadMe.txt b/plugins/FWnull/ReadMe.txt index f2ae2f5baf..af19ffa308 100644 --- a/plugins/FWnull/ReadMe.txt +++ b/plugins/FWnull/ReadMe.txt @@ -1,34 +1,34 @@ -FireWire v0.3 -------------- - - This is an extension to use with play station2 emulators - as PCSX2 (only one right now). - The plugin is free open source code. - -Usage: ------ - Place the file "FireWirePlugin.so" (linux) or "FireWirePlugin.dll" (win32) - at the Plugin directory of the Emulator to use it. - -Changes: -------- - v0.4: -*Added vsnet2005 beta1 support. 64bit dll should work okay (not tested yet!) - - v0.3: - *up to specs 0.5.5 - *added logging option and ini saving - - v0.2: - *new specs - v0.1: - * First Release - * Tested with Pcsx2 - -Authors: -------- - shadow - linuzappz - - - +FireWire v0.3 +------------- + + This is an extension to use with play station2 emulators + as PCSX2 (only one right now). + The plugin is free open source code. + +Usage: +----- + Place the file "FireWirePlugin.so" (linux) or "FireWirePlugin.dll" (win32) + at the Plugin directory of the Emulator to use it. + +Changes: +------- + v0.4: +*Added vsnet2005 beta1 support. 64bit dll should work okay (not tested yet!) + + v0.3: + *up to specs 0.5.5 + *added logging option and ini saving + + v0.2: + *new specs + v0.1: + * First Release + * Tested with Pcsx2 + +Authors: +------- + shadow + linuzappz + + + diff --git a/plugins/FWnull/Windows/FWnull_vs2012.vcxproj b/plugins/FWnull/Windows/FWnull_vs2012.vcxproj index b9e00b727c..766b989fd8 100644 --- a/plugins/FWnull/Windows/FWnull_vs2012.vcxproj +++ b/plugins/FWnull/Windows/FWnull_vs2012.vcxproj @@ -1,91 +1,91 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - FWnull - {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C} - FWnull - Win32Proj - - - - DynamicLibrary - MultiByte - true - v110_xp - - - DynamicLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(ProjectName) - - - - - - - - $(OutDir)$(TargetName)$(TargetExt) - FireWireNull.def - false - MachineX86 - - - - - - - - - FireWireNull.def - false - MachineX86 - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + FWnull + {3D0EB14D-32F3-4D82-9C6D-B806ADBB859C} + FWnull + Win32Proj + + + + DynamicLibrary + MultiByte + true + v110_xp + + + DynamicLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(ProjectName) + + + + + + + + $(OutDir)$(TargetName)$(TargetExt) + FireWireNull.def + false + MachineX86 + + + + + + + + + FireWireNull.def + false + MachineX86 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/FWnull/Windows/FWnull_vs2012.vcxproj.filters b/plugins/FWnull/Windows/FWnull_vs2012.vcxproj.filters index bc9405fe2f..b3b952a936 100644 --- a/plugins/FWnull/Windows/FWnull_vs2012.vcxproj.filters +++ b/plugins/FWnull/Windows/FWnull_vs2012.vcxproj.filters @@ -1,38 +1,38 @@ - - - - - {9f8ea85e-c353-4a00-870a-573daa04f2d4} - cpp;c;cxx;def;odl;idl;hpj;bat;asm - - - {5090ab82-143a-459e-b92d-5bdb2847f6bc} - h;hpp;hxx;hm;inl;inc - - - {df8b3ed3-4204-43dd-9ddb-17f06e45b699} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - - - Resource Files - - + + + + + {9f8ea85e-c353-4a00-870a-573daa04f2d4} + cpp;c;cxx;def;odl;idl;hpj;bat;asm + + + {5090ab82-143a-459e-b92d-5bdb2847f6bc} + h;hpp;hxx;hm;inl;inc + + + {df8b3ed3-4204-43dd-9ddb-17f06e45b699} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + + + Resource Files + + \ No newline at end of file diff --git a/plugins/FWnull/Windows/FireWireNull.def b/plugins/FWnull/Windows/FireWireNull.def index 71ff4db09e..bf9a116f9e 100644 --- a/plugins/FWnull/Windows/FireWireNull.def +++ b/plugins/FWnull/Windows/FireWireNull.def @@ -1,21 +1,21 @@ -; FireWire.def : Declares the module parameters for the DLL. - -;LIBRARY "FWnull" - -EXPORTS - ; Explicit exports can go here - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - FWinit @5 - FWshutdown @6 - FWopen @7 - FWclose @8 - FWread32 @11 - FWwrite32 @14 - FWirqCallback @15 - FWconfigure @17 - FWtest @18 - FWabout @19 - - FWsetSettingsDir +; FireWire.def : Declares the module parameters for the DLL. + +;LIBRARY "FWnull" + +EXPORTS + ; Explicit exports can go here + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + FWinit @5 + FWshutdown @6 + FWopen @7 + FWclose @8 + FWread32 @11 + FWwrite32 @14 + FWirqCallback @15 + FWconfigure @17 + FWtest @18 + FWabout @19 + + FWsetSettingsDir diff --git a/plugins/FWnull/Windows/FireWireNull.rc b/plugins/FWnull/Windows/FireWireNull.rc index a505f6108d..2720315fad 100644 --- a/plugins/FWnull/Windows/FireWireNull.rc +++ b/plugins/FWnull/Windows/FireWireNull.rc @@ -1,116 +1,116 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxresmw.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Spanish (Argentina) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESS) -#ifdef _WIN32 -LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxresmw.h""\r\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOGEX 0, 0, 212, 121 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Firewireconfigure" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,48,100,50,14 - PUSHBUTTON "Cancel",IDCANCEL,113,100,50,14 - CONTROL "Enable Logging (for develop use only)",IDC_LOGGING, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,187,13 -END - -IDD_ABOUT DIALOGEX 0, 0, 177, 106 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "FireWire About" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,65,85,50,14 - LTEXT "FireWire Driver",IDC_NAME,70,10,48,8 - GROUPBOX "",IDC_STATIC,5,35,170,40 - LTEXT "Author: Shadow and linuzappz",IDC_STATIC,29,19,141,10 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 205 - TOPMARGIN, 7 - BOTTOMMARGIN, 114 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 170 - TOPMARGIN, 7 - BOTTOMMARGIN, 99 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Spanish (Argentina) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxresmw.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Spanish (Argentina) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESS) +#ifdef _WIN32 +LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxresmw.h""\r\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 212, 121 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Firewireconfigure" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,48,100,50,14 + PUSHBUTTON "Cancel",IDCANCEL,113,100,50,14 + CONTROL "Enable Logging (for develop use only)",IDC_LOGGING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,187,13 +END + +IDD_ABOUT DIALOGEX 0, 0, 177, 106 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "FireWire About" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,65,85,50,14 + LTEXT "FireWire Driver",IDC_NAME,70,10,48,8 + GROUPBOX "",IDC_STATIC,5,35,170,40 + LTEXT "Author: Shadow and linuzappz",IDC_STATIC,29,19,141,10 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 205 + TOPMARGIN, 7 + BOTTOMMARGIN, 114 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 170 + TOPMARGIN, 7 + BOTTOMMARGIN, 99 + END +END +#endif // APSTUDIO_INVOKED + +#endif // Spanish (Argentina) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/FWnull/Windows/ProjectRootDir.props b/plugins/FWnull/Windows/ProjectRootDir.props index 8d9f9ad374..423e907385 100644 --- a/plugins/FWnull/Windows/ProjectRootDir.props +++ b/plugins/FWnull/Windows/ProjectRootDir.props @@ -1,15 +1,15 @@ - - - - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(SvnRootDir) - - + + + + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/plugins/GSdx/GSDrawScanlineCodeGenerator.x86.avx2.cpp b/plugins/GSdx/GSDrawScanlineCodeGenerator.x86.avx2.cpp index c453598aee..7ee865c0ec 100644 --- a/plugins/GSdx/GSDrawScanlineCodeGenerator.x86.avx2.cpp +++ b/plugins/GSdx/GSDrawScanlineCodeGenerator.x86.avx2.cpp @@ -1,2970 +1,2970 @@ -/* - * Copyright (C) 2007-2009 Gabest - * http://www.gabest.org - * - * 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 GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include "stdafx.h" -#include "GSDrawScanlineCodeGenerator.h" -#include "GSVertexSW.h" - -#if _M_SSE >= 0x501 && !(defined(_M_AMD64) || defined(_WIN64)) - -static const int _args = 16; -static const int _top = _args + 4; -static const int _v = _args + 8; - -void GSDrawScanlineCodeGenerator::Generate() -{ -//ret(8); - - push(ebx); - push(esi); - push(edi); - push(ebp); - - //db(0xcc); - - Init(); - - if(!m_sel.edge) - { - align(16); - } - -L("loop"); - - // ecx = steps - // esi = fzbr - // edi = fzbc - // ymm0 = z/zi - // ymm2 = s/u (tme) - // ymm3 = t/v (tme) - // ymm4 = q (tme) - // ymm5 = rb (!tme) - // ymm6 = ga (!tme) - // ymm7 = test - - bool tme = m_sel.tfx != TFX_NONE; - - TestZ(tme ? ymm5 : ymm2, tme ? ymm6 : ymm3); - - // ecx = steps - // esi = fzbr - // edi = fzbc - // ebp = za - // - ymm0 - // ymm2 = s/u (tme) - // ymm3 = t/v (tme) - // ymm4 = q (tme) - // ymm5 = rb (!tme) - // ymm6 = ga (!tme) - // ymm7 = test - - if(m_sel.mmin) - { - SampleTextureLOD(); - } - else - { - SampleTexture(); - } - - // ecx = steps - // esi = fzbr - // edi = fzbc - // ebp = za - // - ymm2 - // - ymm3 - // - ymm4 - // ymm5 = rb - // ymm6 = ga - // ymm7 = test - - AlphaTFX(); - - // ecx = steps - // esi = fzbr - // edi = fzbc - // ebp = za - // ymm2 = gaf (TFX_HIGHLIGHT || TFX_HIGHLIGHT2 && !tcc) - // ymm5 = rb - // ymm6 = ga - // ymm7 = test - - ReadMask(); - - // ecx = steps - // esi = fzbr - // edi = fzbc - // ebp = za - // ymm2 = gaf (TFX_HIGHLIGHT || TFX_HIGHLIGHT2 && !tcc) - // ymm3 = fm - // ymm4 = zm - // ymm5 = rb - // ymm6 = ga - // ymm7 = test - - TestAlpha(); - - // ecx = steps - // esi = fzbr - // edi = fzbc - // ebp = za - // ymm2 = gaf (TFX_HIGHLIGHT || TFX_HIGHLIGHT2 && !tcc) - // ymm3 = fm - // ymm4 = zm - // ymm5 = rb - // ymm6 = ga - // ymm7 = test - - ColorTFX(); - - // ecx = steps - // esi = fzbr - // edi = fzbc - // ebp = za - // ymm3 = fm - // ymm4 = zm - // ymm5 = rb - // ymm6 = ga - // ymm7 = test - - Fog(); - - // ecx = steps - // esi = fzbr - // edi = fzbc - // ebp = za - // ymm3 = fm - // ymm4 = zm - // ymm5 = rb - // ymm6 = ga - // ymm7 = test - - ReadFrame(); - - // ecx = steps - // esi = fzbr - // edi = fzbc - // ebp = za - // ymm2 = fd - // ymm3 = fm - // ymm4 = zm - // ymm5 = rb - // ymm6 = ga - // ymm7 = test - - TestDestAlpha(); - - // ecx = steps - // esi = fzbr - // edi = fzbc - // ebp = za - // ymm2 = fd - // ymm3 = fm - // ymm4 = zm - // ymm5 = rb - // ymm6 = ga - // ymm7 = test - - WriteMask(); - - // ebx = fa - // ecx = steps - // edx = fzm - // esi = fzbr - // edi = fzbc - // ebp = za - // ymm2 = fd - // ymm3 = fm - // ymm4 = zm - // ymm5 = rb - // ymm6 = ga - - WriteZBuf(); - - // ebx = fa - // ecx = steps - // edx = fzm - // esi = fzbr - // edi = fzbc - // - ebp - // ymm2 = fd - // ymm3 = fm - // - ymm4 - // ymm5 = rb - // ymm6 = ga - - AlphaBlend(); - - // ebx = fa - // ecx = steps - // edx = fzm - // esi = fzbr - // edi = fzbc - // ymm2 = fd - // ymm3 = fm - // ymm5 = rb - // ymm6 = ga - - WriteFrame(); - -L("step"); - - // if(steps <= 0) break; - - if(!m_sel.edge) - { - test(ecx, ecx); - - jle("exit", T_NEAR); - - Step(); - - jmp("loop", T_NEAR); - } - -L("exit"); - - pop(ebp); - pop(edi); - pop(esi); - pop(ebx); - - ret(8); -} - -void GSDrawScanlineCodeGenerator::Init() -{ - if(!m_sel.notest) - { - // int skip = left & 7; - - mov(ebx, edx); - and(edx, 7); - - // int steps = pixels + skip - 8; - - lea(ecx, ptr[ecx + edx - 8]); - - // left -= skip; - - sub(ebx, edx); - - // GSVector4i test = m_test[skip] | m_test[15 + (steps & (steps >> 31))]; - - mov(eax, ecx); - sar(eax, 31); - and(eax, ecx); - - vpmovsxbd(ymm7, ptr[edx * 8 + (size_t)&m_test[0]]); - vpmovsxbd(ymm0, ptr[eax * 8 + (size_t)&m_test[15]]); - vpor(ymm7, ymm0); - - shl(edx, 5); - } - else - { - mov(ebx, edx); // left - xor(edx, edx); // skip - lea(ecx, ptr[ecx - 8]); // steps - } - - // GSVector2i* fza_base = &m_local.gd->fzbr[top]; - - mov(esi, ptr[esp + _top]); - lea(esi, ptr[esi * 8]); - add(esi, ptr[&m_local.gd->fzbr]); - - // GSVector2i* fza_offset = &m_local.gd->fzbc[left >> 2]; - - lea(edi, ptr[ebx * 2]); - add(edi, ptr[&m_local.gd->fzbc]); - - if(m_sel.prim != GS_SPRITE_CLASS && (m_sel.fwrite && m_sel.fge || m_sel.zb) || m_sel.fb && (m_sel.edge || m_sel.tfx != TFX_NONE || m_sel.iip)) - { - // edx = &m_local.d[skip] - - lea(edx, ptr[edx * 8 + (size_t)m_local.d]); - - // ebx = &v - - mov(ebx, ptr[esp + _v]); - } - - if(m_sel.prim != GS_SPRITE_CLASS) - { - if(m_sel.fwrite && m_sel.fge || m_sel.zb) - { - vbroadcastf128(ymm0, ptr[ebx + offsetof(GSVertexSW, p)]); // v.p - - if(m_sel.fwrite && m_sel.fge) - { - // f = GSVector8i(vp).zzzzh().zzzz().add16(m_local.d[skip].f); - - vcvttps2dq(ymm1, ymm0); - vpshufhw(ymm1, ymm1, _MM_SHUFFLE(2, 2, 2, 2)); - vpshufd(ymm1, ymm1, _MM_SHUFFLE(2, 2, 2, 2)); - vpaddw(ymm1, ptr[edx + offsetof(GSScanlineLocalData::skip, f)]); - - vmovdqa(ptr[&m_local.temp.f], ymm1); - } - - if(m_sel.zb) - { - // z = vp.zzzz() + m_local.d[skip].z; - - vshufps(ymm0, ymm0, _MM_SHUFFLE(2, 2, 2, 2)); - vmovaps(ptr[&m_local.temp.z], ymm0); - vmovaps(ymm2, ptr[edx + offsetof(GSScanlineLocalData::skip, z)]); - vmovaps(ptr[&m_local.temp.zo], ymm2); - vaddps(ymm0, ymm2); - } - } - } - else - { - if(m_sel.ztest) - { - vpbroadcastd(ymm0, ptr[&m_local.p.z]); - } - } - - if(m_sel.fb) - { - if(m_sel.edge || m_sel.tfx != TFX_NONE) - { - vbroadcastf128(ymm4, ptr[ebx + offsetof(GSVertexSW, t)]); // v.t - } - - if(m_sel.edge) - { - // m_local.temp.cov = GSVector4i::cast(v.t).zzzzh().wwww().srl16(9); - - vpshufhw(ymm3, ymm4, _MM_SHUFFLE(2, 2, 2, 2)); - vpshufd(ymm3, ymm3, _MM_SHUFFLE(3, 3, 3, 3)); - vpsrlw(ymm3, 9); - - vmovdqa(ptr[&m_local.temp.cov], ymm3); - } - - if(m_sel.tfx != TFX_NONE) - { - if(m_sel.fst) - { - // GSVector4i vti(vt); - - vcvttps2dq(ymm6, ymm4); - - // s = vti.xxxx() + m_local.d[skip].s; - // t = vti.yyyy(); if(!sprite) t += m_local.d[skip].t; - - vpshufd(ymm2, ymm6, _MM_SHUFFLE(0, 0, 0, 0)); - vpshufd(ymm3, ymm6, _MM_SHUFFLE(1, 1, 1, 1)); - - vpaddd(ymm2, ptr[edx + offsetof(GSScanlineLocalData::skip, s)]); - - if(m_sel.prim != GS_SPRITE_CLASS || m_sel.mmin) - { - vpaddd(ymm3, ptr[edx + offsetof(GSScanlineLocalData::skip, t)]); - } - else - { - if(m_sel.ltf) - { - vpshuflw(ymm6, ymm3, _MM_SHUFFLE(2, 2, 0, 0)); - vpshufhw(ymm6, ymm6, _MM_SHUFFLE(2, 2, 0, 0)); - vpsrlw(ymm6, 12); - vmovdqa(ptr[&m_local.temp.vf], ymm6); - } - } - - vmovdqa(ptr[&m_local.temp.s], ymm2); - vmovdqa(ptr[&m_local.temp.t], ymm3); - } - else - { - // s = vt.xxxx() + m_local.d[skip].s; - // t = vt.yyyy() + m_local.d[skip].t; - // q = vt.zzzz() + m_local.d[skip].q; - - vshufps(ymm2, ymm4, ymm4, _MM_SHUFFLE(0, 0, 0, 0)); - vshufps(ymm3, ymm4, ymm4, _MM_SHUFFLE(1, 1, 1, 1)); - vshufps(ymm4, ymm4, ymm4, _MM_SHUFFLE(2, 2, 2, 2)); - - vaddps(ymm2, ptr[edx + offsetof(GSScanlineLocalData::skip, s)]); - vaddps(ymm3, ptr[edx + offsetof(GSScanlineLocalData::skip, t)]); - vaddps(ymm4, ptr[edx + offsetof(GSScanlineLocalData::skip, q)]); - - vmovaps(ptr[&m_local.temp.s], ymm2); - vmovaps(ptr[&m_local.temp.t], ymm3); - vmovaps(ptr[&m_local.temp.q], ymm4); - } - } - - if(!(m_sel.tfx == TFX_DECAL && m_sel.tcc)) - { - if(m_sel.iip) - { - // GSVector4i vc = GSVector4i(v.c); - - vbroadcastf128(ymm6, ptr[ebx + offsetof(GSVertexSW, c)]); // v.c - vcvttps2dq(ymm6, ymm6); - - // vc = vc.upl16(vc.zwxy()); - - vpshufd(ymm5, ymm6, _MM_SHUFFLE(1, 0, 3, 2)); - vpunpcklwd(ymm6, ymm5); - - // rb = vc.xxxx().add16(m_local.d[skip].rb); - // ga = vc.zzzz().add16(m_local.d[skip].ga); - - vpshufd(ymm5, ymm6, _MM_SHUFFLE(0, 0, 0, 0)); - vpshufd(ymm6, ymm6, _MM_SHUFFLE(2, 2, 2, 2)); - - vpaddw(ymm5, ptr[edx + offsetof(GSScanlineLocalData::skip, rb)]); - vpaddw(ymm6, ptr[edx + offsetof(GSScanlineLocalData::skip, ga)]); - - vmovdqa(ptr[&m_local.temp.rb], ymm5); - vmovdqa(ptr[&m_local.temp.ga], ymm6); - } - else - { - if(m_sel.tfx == TFX_NONE) - { - vmovdqa(ymm5, ptr[&m_local.c.rb]); - vmovdqa(ymm6, ptr[&m_local.c.ga]); - } - } - } - } -} - -void GSDrawScanlineCodeGenerator::Step() -{ - // steps -= 8; - - sub(ecx, 8); - - // fza_offset += 2; - - add(edi, 16); - - if(m_sel.prim != GS_SPRITE_CLASS) - { - // zo += GSVector8::broadcast32(&m_local.d8.p.z); - - if(m_sel.zb) - { - vbroadcastss(ymm0, ptr[&m_local.d8.p.z]); - vaddps(ymm0, ptr[&m_local.temp.zo]); - vmovaps(ptr[&m_local.temp.zo], ymm0); - vaddps(ymm0, ptr[&m_local.temp.z]); - } - - // f = f.add16(GSVector8i::broadcast16(&m_local.d8.p.f)); - - if(m_sel.fwrite && m_sel.fge) - { - vpbroadcastw(ymm1, ptr[&m_local.d8.p.f]); - vpaddw(ymm1, ptr[&m_local.temp.f]); - vmovdqa(ptr[&m_local.temp.f], ymm1); - } - } - else - { - if(m_sel.ztest) - { - vpbroadcastd(ymm0, ptr[&m_local.p.z]); - } - } - - if(m_sel.fb) - { - if(m_sel.tfx != TFX_NONE) - { - if(m_sel.fst) - { - // GSVector8i stq = GSVector8i::cast(GSVector8(m_local.d8.stq)); - - vbroadcasti128(ymm4, ptr[&m_local.d8.stq]); - - // s = GSVector8::cast(GSVector8i::cast(s) + stq.xxxx()); - - vpshufd(ymm2, ymm4, _MM_SHUFFLE(0, 0, 0, 0)); - vpaddd(ymm2, ptr[&m_local.temp.s]); - vmovdqa(ptr[&m_local.temp.s], ymm2); - - if(m_sel.prim != GS_SPRITE_CLASS || m_sel.mmin) - { - // t = GSVector8::cast(GSVector8i::cast(t) + stq.yyyy()); - - vpshufd(ymm3, ymm4, _MM_SHUFFLE(1, 1, 1, 1)); - vpaddd(ymm3, ptr[&m_local.temp.t]); - vmovdqa(ptr[&m_local.temp.t], ymm3); - } - else - { - vmovdqa(ymm3, ptr[&m_local.temp.t]); - } - } - else - { - // GSVector8 stq(m_local.d8.stq); - - // s += stq.xxxx(); - // t += stq.yyyy(); - // q += stq.zzzz(); - - vbroadcastf128(ymm4, ptr[&m_local.d8.stq]); - - vshufps(ymm2, ymm4, ymm4, _MM_SHUFFLE(0, 0, 0, 0)); - vshufps(ymm3, ymm4, ymm4, _MM_SHUFFLE(1, 1, 1, 1)); - vshufps(ymm4, ymm4, ymm4, _MM_SHUFFLE(2, 2, 2, 2)); - - vaddps(ymm2, ptr[&m_local.temp.s]); - vaddps(ymm3, ptr[&m_local.temp.t]); - vaddps(ymm4, ptr[&m_local.temp.q]); - - vmovaps(ptr[&m_local.temp.s], ymm2); - vmovaps(ptr[&m_local.temp.t], ymm3); - vmovaps(ptr[&m_local.temp.q], ymm4); - } - } - - if(!(m_sel.tfx == TFX_DECAL && m_sel.tcc)) - { - if(m_sel.iip) - { - // GSVector8i c = GSVector8i::broadcast64(&m_local.d8.c); - - vpbroadcastq(ymm7, ptr[&m_local.d8.c]); - - // rb = rb.add16(c.xxxx()).max_i16(GSVector8i::zero()); - // ga = ga.add16(c.yyyy()).max_i16(GSVector8i::zero()); - - vpshufd(ymm5, ymm7, _MM_SHUFFLE(0, 0, 0, 0)); - vpshufd(ymm6, ymm7, _MM_SHUFFLE(1, 1, 1, 1)); - - vpaddw(ymm5, ptr[&m_local.temp.rb]); - vpaddw(ymm6, ptr[&m_local.temp.ga]); - - // FIXME: color may underflow and roll over at the end of the line, if decreasing - - vpxor(ymm7, ymm7); - vpmaxsw(ymm5, ymm7); - vpmaxsw(ymm6, ymm7); - - vmovdqa(ptr[&m_local.temp.rb], ymm5); - vmovdqa(ptr[&m_local.temp.ga], ymm6); - } - else - { - if(m_sel.tfx == TFX_NONE) - { - vmovdqa(ymm5, ptr[&m_local.c.rb]); - vmovdqa(ymm6, ptr[&m_local.c.ga]); - } - } - } - } - - if(!m_sel.notest) - { - // test = m_test[15 + (steps & (steps >> 31))]; - - mov(edx, ecx); - sar(edx, 31); - and(edx, ecx); - - vpmovsxbd(ymm7, ptr[edx * 8 + (size_t)&m_test[15]]); - } -} - -void GSDrawScanlineCodeGenerator::TestZ(const Ymm& temp1, const Ymm& temp2) -{ - if(!m_sel.zb) - { - return; - } - - // int za = fza_base.y + fza_offset->y; - - mov(ebp, ptr[esi + 4]); - add(ebp, ptr[edi + 4]); - - // GSVector8i zs = zi; - - if(m_sel.prim != GS_SPRITE_CLASS) - { - if(m_sel.zoverflow) - { - // zs = (GSVector8i(z * 0.5f) << 1) | (GSVector8i(z) & GSVector8i::x00000001()); - - vbroadcastss(temp1, ptr[&GSVector8::m_half]); - vmulps(temp1, ymm0); - vcvttps2dq(temp1, temp1); - vpslld(temp1, 1); - - vcvttps2dq(ymm0, ymm0); - vpcmpeqd(temp2, temp2); - vpsrld(temp2, 31); - vpand(ymm0, temp2); - - vpor(ymm0, temp1); - } - else - { - // zs = GSVector8i(z); - - vcvttps2dq(ymm0, ymm0); - } - - if(m_sel.zwrite) - { - vmovdqa(ptr[&m_local.temp.zs], ymm0); - } - } - - if(m_sel.ztest) - { - ReadPixel(ymm1, temp1, ebp); - - if(m_sel.zwrite && m_sel.zpsm < 2) - { - vmovdqa(ptr[&m_local.temp.zd], ymm1); - } - - // zd &= 0xffffffff >> m_sel.zpsm * 8; - - if(m_sel.zpsm) - { - vpslld(ymm1, (uint8)(m_sel.zpsm * 8)); - vpsrld(ymm1, (uint8)(m_sel.zpsm * 8)); - } - - if(m_sel.zoverflow || m_sel.zpsm == 0) - { - // GSVector8i o = GSVector8i::x80000000(); - - vpcmpeqd(temp1, temp1); - vpslld(temp1, 31); - - // GSVector8i zso = zs - o; - // GSVector8i zdo = zd - o; - - vpsubd(ymm0, temp1); - vpsubd(ymm1, temp1); - } - - switch(m_sel.ztst) - { - case ZTST_GEQUAL: - // test |= zso < zdo; // ~(zso >= zdo) - vpcmpgtd(ymm1, ymm0); - vpor(ymm7, ymm1); - break; - - case ZTST_GREATER: // TODO: tidus hair and chocobo wings only appear fully when this is tested as ZTST_GEQUAL - // test |= zso <= zdo; // ~(zso > zdo) - vpcmpgtd(ymm0, ymm1); - vpcmpeqd(temp1, temp1); - vpxor(ymm0, temp1); - vpor(ymm7, ymm0); - break; - } - - alltrue(); - } -} - -void GSDrawScanlineCodeGenerator::SampleTexture() -{ - if(!m_sel.fb || m_sel.tfx == TFX_NONE) - { - return; - } - - mov(ebx, ptr[&m_local.gd->tex[0]]); - - if(m_sel.tlu) - { - mov(edx, ptr[&m_local.gd->clut]); - } - - // ebx = tex - // edx = clut - - if(!m_sel.fst) - { - vrcpps(ymm0, ymm4); - - vmulps(ymm2, ymm0); - vmulps(ymm3, ymm0); - - vcvttps2dq(ymm2, ymm2); - vcvttps2dq(ymm3, ymm3); - - if(m_sel.ltf) - { - // u -= 0x8000; - // v -= 0x8000; - - mov(eax, 0x8000); - vmovd(xmm4, eax); - vpbroadcastd(ymm4, xmm4); - - vpsubd(ymm2, ymm4); - vpsubd(ymm3, ymm4); - } - } - - // ymm2 = u - // ymm3 = v - - if(m_sel.ltf) - { - // GSVector8i uf = u.xxzzlh().srl16(1); - - vpshuflw(ymm0, ymm2, _MM_SHUFFLE(2, 2, 0, 0)); - vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); - vpsrlw(ymm0, 12); - vmovdqa(ptr[&m_local.temp.uf], ymm0); - - if(m_sel.prim != GS_SPRITE_CLASS) - { - // GSVector8i vf = v.xxzzlh().srl16(1); - - vpshuflw(ymm0, ymm3, _MM_SHUFFLE(2, 2, 0, 0)); - vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); - vpsrlw(ymm0, 12); - vmovdqa(ptr[&m_local.temp.vf], ymm0); - } - } - - // GSVector8i uv0 = u.sra32(16).ps32(v.sra32(16)); - - vpsrad(ymm2, 16); - vpsrad(ymm3, 16); - vpackssdw(ymm2, ymm3); - - if(m_sel.ltf) - { - // GSVector8i uv1 = uv0.add16(GSVector8i::x0001()); - - vpcmpeqd(ymm1, ymm1); - vpsrlw(ymm1, 15); - vpaddw(ymm3, ymm2, ymm1); - - // uv0 = Wrap(uv0); - // uv1 = Wrap(uv1); - - Wrap(ymm2, ymm3); - } - else - { - // uv0 = Wrap(uv0); - - Wrap(ymm2); - } - - // ymm2 = uv0 - // ymm3 = uv1 (ltf) - // ymm0, ymm1, ymm4, ymm5, ymm6 = free - // ymm7 = used - - // GSVector8i y0 = uv0.uph16() << tw; - // GSVector8i x0 = uv0.upl16(); - - vpxor(ymm0, ymm0); - - vpunpcklwd(ymm4, ymm2, ymm0); - vpunpckhwd(ymm2, ymm2, ymm0); - vpslld(ymm2, (uint8)(m_sel.tw + 3)); - - // ymm0 = 0 - // ymm2 = y0 - // ymm3 = uv1 (ltf) - // ymm4 = x0 - // ymm1, ymm5, ymm6 = free - // ymm7 = used - - if(m_sel.ltf) - { - // GSVector8i y1 = uv1.uph16() << tw; - // GSVector8i x1 = uv1.upl16(); - - vpunpcklwd(ymm6, ymm3, ymm0); - vpunpckhwd(ymm3, ymm3, ymm0); - vpslld(ymm3, (uint8)(m_sel.tw + 3)); - - // ymm2 = y0 - // ymm3 = y1 - // ymm4 = x0 - // ymm6 = x1 - // ymm0, ymm5, ymm6 = free - // ymm7 = used - - // GSVector8i addr00 = y0 + x0; - // GSVector8i addr01 = y0 + x1; - // GSVector8i addr10 = y1 + x0; - // GSVector8i addr11 = y1 + x1; - - vpaddd(ymm5, ymm2, ymm4); - vpaddd(ymm2, ymm2, ymm6); - vpaddd(ymm0, ymm3, ymm4); - vpaddd(ymm3, ymm3, ymm6); - - // ymm5 = addr00 - // ymm2 = addr01 - // ymm0 = addr10 - // ymm3 = addr11 - // ymm1, ymm4, ymm6 = free - // ymm7 = used - - // c00 = addr00.gather32_32((const uint32/uint8*)tex[, clut]); - // c01 = addr01.gather32_32((const uint32/uint8*)tex[, clut]); - // c10 = addr10.gather32_32((const uint32/uint8*)tex[, clut]); - // c11 = addr11.gather32_32((const uint32/uint8*)tex[, clut]); - - ReadTexel(4, 0); - - // ymm6 = c00 - // ymm4 = c01 - // ymm1 = c10 - // ymm5 = c11 - // ymm0, ymm2, ymm3 = free - // ymm7 = used - - vmovdqa(ymm0, ptr[&m_local.temp.uf]); - - // GSVector8i rb00 = c00 & mask; - // GSVector8i ga00 = (c00 >> 8) & mask; - - vpsllw(ymm2, ymm6, 8); - vpsrlw(ymm2, 8); - vpsrlw(ymm6, 8); - - // GSVector8i rb01 = c01 & mask; - // GSVector8i ga01 = (c01 >> 8) & mask; - - vpsllw(ymm3, ymm4, 8); - vpsrlw(ymm3, 8); - vpsrlw(ymm4, 8); - - // ymm0 = uf - // ymm2 = rb00 - // ymm3 = rb01 - // ymm6 = ga00 - // ymm4 = ga01 - // ymm1 = c10 - // ymm5 = c11 - // ymm7 = used - - // rb00 = rb00.lerp16_4(rb01, uf); - // ga00 = ga00.lerp16_4(ga01, uf); - - lerp16_4(ymm3, ymm2, ymm0); - lerp16_4(ymm4, ymm6, ymm0); - - // ymm0 = uf - // ymm3 = rb00 - // ymm4 = ga00 - // ymm1 = c10 - // ymm5 = c11 - // ymm2, ymm6 = free - // ymm7 = used - - // GSVector8i rb10 = c10 & mask; - // GSVector8i ga10 = (c10 >> 8) & mask; - - vpsrlw(ymm2, ymm1, 8); - vpsllw(ymm1, 8); - vpsrlw(ymm1, 8); - - // GSVector8i rb11 = c11 & mask; - // GSVector8i ga11 = (c11 >> 8) & mask; - - vpsrlw(ymm6, ymm5, 8); - vpsllw(ymm5, 8); - vpsrlw(ymm5, 8); - - // ymm0 = uf - // ymm3 = rb00 - // ymm4 = ga00 - // ymm1 = rb10 - // ymm5 = rb11 - // ymm2 = ga10 - // ymm6 = ga11 - // ymm7 = used - - // rb10 = rb10.lerp16_4(rb11, uf); - // ga10 = ga10.lerp16_4(ga11, uf); - - lerp16_4(ymm5, ymm1, ymm0); - lerp16_4(ymm6, ymm2, ymm0); - - // ymm3 = rb00 - // ymm4 = ga00 - // ymm5 = rb10 - // ymm6 = ga10 - // ymm0, ymm1, ymm2 = free - // ymm7 = used - - // rb00 = rb00.lerp16_4(rb10, vf); - // ga00 = ga00.lerp16_4(ga10, vf); - - vmovdqa(ymm0, ptr[&m_local.temp.vf]); - - lerp16_4(ymm5, ymm3, ymm0); - lerp16_4(ymm6, ymm4, ymm0); - } - else - { - // GSVector8i addr00 = y0 + x0; - - vpaddd(ymm5, ymm2, ymm4); - - // c00 = addr00.gather32_32((const uint32/uint8*)tex[, clut]); - - ReadTexel(1, 0); - - // GSVector8i mask = GSVector8i::x00ff(); - - // c[0] = c00 & mask; - // c[1] = (c00 >> 8) & mask; - - vpsllw(ymm5, ymm6, 8); - vpsrlw(ymm5, 8); - vpsrlw(ymm6, 8); - } -} - -void GSDrawScanlineCodeGenerator::Wrap(const Ymm& uv) -{ - // ymm0, ymm1, ymm4, ymm5, ymm6 = free - - int wms_clamp = ((m_sel.wms + 1) >> 1) & 1; - int wmt_clamp = ((m_sel.wmt + 1) >> 1) & 1; - - int region = ((m_sel.wms | m_sel.wmt) >> 1) & 1; - - if(wms_clamp == wmt_clamp) - { - if(wms_clamp) - { - if(region) - { - vbroadcasti128(ymm0, ptr[&m_local.gd->t.min]); - vpmaxsw(uv, ymm0); - } - else - { - vpxor(ymm0, ymm0); - vpmaxsw(uv, ymm0); - } - - vbroadcasti128(ymm0, ptr[&m_local.gd->t.max]); - vpminsw(uv, ymm0); - } - else - { - vbroadcasti128(ymm0, ptr[&m_local.gd->t.min]); - vpand(uv, ymm0); - - if(region) - { - vbroadcasti128(ymm0, ptr[&m_local.gd->t.max]); - vpor(uv, ymm0); - } - } - } - else - { - vbroadcasti128(ymm4, ptr[&m_local.gd->t.min]); - vbroadcasti128(ymm5, ptr[&m_local.gd->t.max]); - vbroadcasti128(ymm0, ptr[&m_local.gd->t.mask]); - - // GSVector8i repeat = (t & m_local.gd->t.min) | m_local.gd->t.max; - - vpand(ymm1, uv, ymm4); - - if(region) - { - vpor(ymm1, ymm5); - } - - // GSVector8i clamp = t.sat_i16(m_local.gd->t.min, m_local.gd->t.max); - - vpmaxsw(uv, ymm4); - vpminsw(uv, ymm5); - - // clamp.blend8(repeat, m_local.gd->t.mask); - - vpblendvb(uv, ymm1, ymm0); - } -} - -void GSDrawScanlineCodeGenerator::Wrap(const Ymm& uv0, const Ymm& uv1) -{ - // ymm0, ymm1, ymm4, ymm5, ymm6 = free - - int wms_clamp = ((m_sel.wms + 1) >> 1) & 1; - int wmt_clamp = ((m_sel.wmt + 1) >> 1) & 1; - - int region = ((m_sel.wms | m_sel.wmt) >> 1) & 1; - - if(wms_clamp == wmt_clamp) - { - if(wms_clamp) - { - if(region) - { - vbroadcasti128(ymm4, ptr[&m_local.gd->t.min]); - vpmaxsw(uv0, ymm4); - vpmaxsw(uv1, ymm4); - } - else - { - vpxor(ymm0, ymm0); - vpmaxsw(uv0, ymm0); - vpmaxsw(uv1, ymm0); - } - - vbroadcasti128(ymm5, ptr[&m_local.gd->t.max]); - vpminsw(uv0, ymm5); - vpminsw(uv1, ymm5); - } - else - { - vbroadcasti128(ymm4, ptr[&m_local.gd->t.min]); - vpand(uv0, ymm4); - vpand(uv1, ymm4); - - if(region) - { - vbroadcasti128(ymm5, ptr[&m_local.gd->t.max]); - vpor(uv0, ymm5); - vpor(uv1, ymm5); - } - } - } - else - { - vbroadcasti128(ymm4, ptr[&m_local.gd->t.min]); - vbroadcasti128(ymm5, ptr[&m_local.gd->t.max]); - vbroadcasti128(ymm0, ptr[&m_local.gd->t.mask]); - - // uv0 - - // GSVector8i repeat = (t & m_local.gd->t.min) | m_local.gd->t.max; - - vpand(ymm1, uv0, ymm4); - - if(region) - { - vpor(ymm1, ymm5); - } - - // GSVector8i clamp = t.sat_i16(m_local.gd->t.min, m_local.gd->t.max); - - vpmaxsw(uv0, ymm4); - vpminsw(uv0, ymm5); - - // clamp.blend8(repeat, m_local.gd->t.mask); - - vpblendvb(uv0, ymm1, ymm0); - - // uv1 - - // GSVector8i repeat = (t & m_local.gd->t.min) | m_local.gd->t.max; - - vpand(ymm1, uv1, ymm4); - - if(region) - { - vpor(ymm1, ymm5); - } - - // GSVector4i clamp = t.sat_i16(m_local.gd->t.min, m_local.gd->t.max); - - vpmaxsw(uv1, ymm4); - vpminsw(uv1, ymm5); - - // clamp.blend8(repeat, m_local.gd->t.mask); - - vpblendvb(uv1, ymm1, ymm0); - } -} - -void GSDrawScanlineCodeGenerator::SampleTextureLOD() -{ - if(!m_sel.fb || m_sel.tfx == TFX_NONE) - { - return; - } - - push(ebp); - - mov(ebp, (size_t)m_local.gd->tex); - - if(m_sel.tlu) - { - mov(edx, ptr[&m_local.gd->clut]); - } - - if(!m_sel.fst) - { - vrcpps(ymm0, ymm4); - - vmulps(ymm2, ymm0); - vmulps(ymm3, ymm0); - - vcvttps2dq(ymm2, ymm2); - vcvttps2dq(ymm3, ymm3); - } - - // ymm2 = u - // ymm3 = v - // ymm4 = q - // ymm0 = ymm1 = ymm5 = ymm6 = free - - // TODO: if the fractional part is not needed in round-off mode then there is a faster integer log2 (just take the exp) (but can we round it?) - - if(!m_sel.lcm) - { - // lod = -log2(Q) * (1 << L) + K - - vpcmpeqd(ymm1, ymm1); - vpsrld(ymm1, ymm1, 25); - vpslld(ymm0, ymm4, 1); - vpsrld(ymm0, ymm0, 24); - vpsubd(ymm0, ymm1); - vcvtdq2ps(ymm0, ymm0); - - // ymm0 = (float)(exp(q) - 127) - - vpslld(ymm4, ymm4, 9); - vpsrld(ymm4, ymm4, 9); - vorps(ymm4, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[3]]); - - // ymm4 = mant(q) | 1.0f - - if(m_cpu.has(util::Cpu::tFMA)) - { - vmovaps(ymm5, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[0]]); // c0 - vfmadd213ps(ymm5, ymm4, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[1]]); // c0 * ymm4 + c1 - vfmadd213ps(ymm5, ymm4, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[2]]); // (c0 * ymm4 + c1) * ymm4 + c2 - vsubps(ymm4, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[3]]); // ymm4 - 1.0f - vfmadd213ps(ymm4, ymm5, ymm0); // ((c0 * ymm4 + c1) * ymm4 + c2) * (ymm4 - 1.0f) + ymm0 - } - else - { - vmulps(ymm5, ymm4, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[0]]); - vaddps(ymm5, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[1]]); - vmulps(ymm5, ymm4); - vsubps(ymm4, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[3]]); - vaddps(ymm5, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[2]]); - vmulps(ymm4, ymm5); - vaddps(ymm4, ymm0); - } - - // ymm4 = log2(Q) = ((((c0 * ymm4) + c1) * ymm4) + c2) * (ymm4 - 1.0f) + ymm0 - - if(m_cpu.has(util::Cpu::tFMA)) - { - vmovaps(ymm5, ptr[&m_local.gd->l]); - vfmadd213ps(ymm4, ymm5, ptr[&m_local.gd->k]); - } - else - { - vmulps(ymm4, ptr[&m_local.gd->l]); - vaddps(ymm4, ptr[&m_local.gd->k]); - } - - // ymm4 = (-log2(Q) * (1 << L) + K) * 0x10000 - - vxorps(ymm0, ymm0); - vminps(ymm4, ptr[&m_local.gd->mxl]); - vmaxps(ymm4, ymm0); - vcvtps2dq(ymm4, ymm4); - - if(m_sel.mmin == 1) // round-off mode - { - mov(eax, 0x8000); - vmovd(xmm0, eax); - vpbroadcastd(ymm0, xmm0); - vpaddd(ymm4, ymm0); - } - - vpsrld(ymm0, ymm4, 16); - - vmovdqa(ptr[&m_local.temp.lod.i], ymm0); -/* -vpslld(ymm5, ymm0, 6); -vpslld(ymm6, ymm4, 16); -vpsrld(ymm6, ymm6, 24); -return; -*/ - if(m_sel.mmin == 2) // trilinear mode - { - vpshuflw(ymm1, ymm4, _MM_SHUFFLE(2, 2, 0, 0)); - vpshufhw(ymm1, ymm1, _MM_SHUFFLE(2, 2, 0, 0)); - vmovdqa(ptr[&m_local.temp.lod.f], ymm1); - } - - // shift u/v/minmax by (int)lod - - vpsravd(ymm2, ymm2, ymm0); - vpsravd(ymm3, ymm3, ymm0); - - vmovdqa(ptr[&m_local.temp.uv[0]], ymm2); - vmovdqa(ptr[&m_local.temp.uv[1]], ymm3); - - // m_local.gd->t.minmax => m_local.temp.uv_minmax[0/1] - - vpxor(ymm1, ymm1); - - vbroadcasti128(ymm4, ptr[&m_local.gd->t.min]); - vpunpcklwd(ymm5, ymm4, ymm1); // minu - vpunpckhwd(ymm6, ymm4, ymm1); // minv - vpsrlvd(ymm5, ymm5, ymm0); - vpsrlvd(ymm6, ymm6, ymm0); - vpackusdw(ymm5, ymm6); - - vbroadcasti128(ymm4, ptr[&m_local.gd->t.max]); - vpunpcklwd(ymm6, ymm4, ymm1); // maxu - vpunpckhwd(ymm4, ymm4, ymm1); // maxv - vpsrlvd(ymm6, ymm6, ymm0); - vpsrlvd(ymm4, ymm4, ymm0); - vpackusdw(ymm6, ymm4); - - vmovdqa(ptr[&m_local.temp.uv_minmax[0]], ymm5); - vmovdqa(ptr[&m_local.temp.uv_minmax[1]], ymm6); - } - else - { - // lod = K - - vmovd(xmm0, ptr[&m_local.gd->lod.i.u32[0]]); - - vpsrad(ymm2, xmm0); - vpsrad(ymm3, xmm0); - - vmovdqa(ptr[&m_local.temp.uv[0]], ymm2); - vmovdqa(ptr[&m_local.temp.uv[1]], ymm3); - - vmovdqa(ymm5, ptr[&m_local.temp.uv_minmax[0]]); - vmovdqa(ymm6, ptr[&m_local.temp.uv_minmax[1]]); - } - - // ymm2 = m_local.temp.uv[0] = u (level m) - // ymm3 = m_local.temp.uv[1] = v (level m) - // ymm5 = minuv - // ymm6 = maxuv - - if(m_sel.ltf) - { - // u -= 0x8000; - // v -= 0x8000; - - mov(eax, 0x8000); - vmovd(xmm4, eax); - vpbroadcastd(ymm4, xmm4); - - vpsubd(ymm2, ymm4); - vpsubd(ymm3, ymm4); - - // GSVector8i uf = u.xxzzlh().srl16(1); - - vpshuflw(ymm0, ymm2, _MM_SHUFFLE(2, 2, 0, 0)); - vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); - vpsrlw(ymm0, 12); - vmovdqa(ptr[&m_local.temp.uf], ymm0); - - // GSVector8i vf = v.xxzzlh().srl16(1); - - vpshuflw(ymm0, ymm3, _MM_SHUFFLE(2, 2, 0, 0)); - vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); - vpsrlw(ymm0, 12); - vmovdqa(ptr[&m_local.temp.vf], ymm0); - } - - // GSVector8i uv0 = u.sra32(16).ps32(v.sra32(16)); - - vpsrad(ymm2, 16); - vpsrad(ymm3, 16); - vpackssdw(ymm2, ymm3); - - if(m_sel.ltf) - { - // GSVector8i uv1 = uv0.add16(GSVector8i::x0001()); - - vpcmpeqd(ymm1, ymm1); - vpsrlw(ymm1, 15); - vpaddw(ymm3, ymm2, ymm1); - - // uv0 = Wrap(uv0); - // uv1 = Wrap(uv1); - - WrapLOD(ymm2, ymm3); - } - else - { - // uv0 = Wrap(uv0); - - WrapLOD(ymm2); - } - - // ymm2 = uv0 - // ymm3 = uv1 (ltf) - // ymm0, ymm1, ymm4, ymm5, ymm6 = free - // ymm7 = used - - // GSVector8i x0 = uv0.upl16(); - // GSVector8i y0 = uv0.uph16() << tw; - - vpxor(ymm0, ymm0); - - vpunpcklwd(ymm4, ymm2, ymm0); - vpunpckhwd(ymm2, ymm2, ymm0); - vpslld(ymm2, (uint8)(m_sel.tw + 3)); - - // ymm0 = 0 - // ymm2 = y0 - // ymm3 = uv1 (ltf) - // ymm4 = x0 - // ymm1, ymm5, ymm6 = free - // ymm7 = used - - if(m_sel.ltf) - { - // GSVector8i x1 = uv1.upl16(); - // GSVector8i y1 = uv1.uph16() << tw; - - vpunpcklwd(ymm6, ymm3, ymm0); - vpunpckhwd(ymm3, ymm3, ymm0); - vpslld(ymm3, (uint8)(m_sel.tw + 3)); - - // ymm2 = y0 - // ymm3 = y1 - // ymm4 = x0 - // ymm6 = x1 - // ymm0, ymm5, ymm6 = free - // ymm7 = used - - // GSVector8i addr00 = y0 + x0; - // GSVector8i addr01 = y0 + x1; - // GSVector8i addr10 = y1 + x0; - // GSVector8i addr11 = y1 + x1; - - vpaddd(ymm5, ymm2, ymm4); - vpaddd(ymm2, ymm2, ymm6); - vpaddd(ymm0, ymm3, ymm4); - vpaddd(ymm3, ymm3, ymm6); - - // ymm5 = addr00 - // ymm2 = addr01 - // ymm0 = addr10 - // ymm3 = addr11 - // ymm1, ymm4, ymm6 = free - // ymm7 = used - - // c00 = addr00.gather32_32((const uint32/uint8*)tex[, clut]); - // c01 = addr01.gather32_32((const uint32/uint8*)tex[, clut]); - // c10 = addr10.gather32_32((const uint32/uint8*)tex[, clut]); - // c11 = addr11.gather32_32((const uint32/uint8*)tex[, clut]); - - ReadTexel(4, 0); - - // ymm6 = c00 - // ymm4 = c01 - // ymm1 = c10 - // ymm5 = c11 - // ymm0, ymm2, ymm3 = free - // ymm7 = used - - vmovdqa(ymm0, ptr[&m_local.temp.uf]); - - // GSVector8i rb00 = c00 & mask; - // GSVector8i ga00 = (c00 >> 8) & mask; - - vpsllw(ymm2, ymm6, 8); - vpsrlw(ymm2, 8); - vpsrlw(ymm6, 8); - - // GSVector8i rb01 = c01 & mask; - // GSVector8i ga01 = (c01 >> 8) & mask; - - vpsllw(ymm3, ymm4, 8); - vpsrlw(ymm3, 8); - vpsrlw(ymm4, 8); - - // ymm0 = uf - // ymm2 = rb00 - // ymm3 = rb01 - // ymm6 = ga00 - // ymm4 = ga01 - // ymm1 = c10 - // ymm5 = c11 - // ymm7 = used - - // rb00 = rb00.lerp16_4(rb01, uf); - // ga00 = ga00.lerp16_4(ga01, uf); - - lerp16_4(ymm3, ymm2, ymm0); - lerp16_4(ymm4, ymm6, ymm0); - - // ymm0 = uf - // ymm3 = rb00 - // ymm4 = ga00 - // ymm1 = c10 - // ymm5 = c11 - // ymm2, ymm6 = free - // ymm7 = used - - // GSVector8i rb10 = c10 & mask; - // GSVector8i ga10 = (c10 >> 8) & mask; - - vpsrlw(ymm2, ymm1, 8); - vpsllw(ymm1, 8); - vpsrlw(ymm1, 8); - - // GSVector8i rb11 = c11 & mask; - // GSVector8i ga11 = (c11 >> 8) & mask; - - vpsrlw(ymm6, ymm5, 8); - vpsllw(ymm5, 8); - vpsrlw(ymm5, 8); - - // ymm0 = uf - // ymm3 = rb00 - // ymm4 = ga00 - // ymm1 = rb10 - // ymm5 = rb11 - // ymm2 = ga10 - // ymm6 = ga11 - // ymm7 = used - - // rb10 = rb10.lerp16_4(rb11, uf); - // ga10 = ga10.lerp16_4(ga11, uf); - - lerp16_4(ymm5, ymm1, ymm0); - lerp16_4(ymm6, ymm2, ymm0); - - // ymm3 = rb00 - // ymm4 = ga00 - // ymm5 = rb10 - // ymm6 = ga10 - // ymm0, ymm1, ymm2 = free - // ymm7 = used - - // rb00 = rb00.lerp16_4(rb10, vf); - // ga00 = ga00.lerp16_4(ga10, vf); - - vmovdqa(ymm0, ptr[&m_local.temp.vf]); - - lerp16_4(ymm5, ymm3, ymm0); - lerp16_4(ymm6, ymm4, ymm0); - } - else - { - // GSVector8i addr00 = y0 + x0; - - vpaddd(ymm5, ymm2, ymm4); - - // c00 = addr00.gather32_32((const uint32/uint8*)tex[, clut]); - - ReadTexel(1, 0); - - // GSVector8i mask = GSVector8i::x00ff(); - - // c[0] = c00 & mask; - // c[1] = (c00 >> 8) & mask; - - vpsllw(ymm5, ymm6, 8); - vpsrlw(ymm5, 8); - vpsrlw(ymm6, 8); - } - - if(m_sel.mmin != 1) // !round-off mode - { - vmovdqa(ptr[&m_local.temp.trb], ymm5); - vmovdqa(ptr[&m_local.temp.tga], ymm6); - - vmovdqa(ymm2, ptr[&m_local.temp.uv[0]]); - vmovdqa(ymm3, ptr[&m_local.temp.uv[1]]); - - vpsrad(ymm2, 1); - vpsrad(ymm3, 1); - - vmovdqa(ymm5, ptr[&m_local.temp.uv_minmax[0]]); - vmovdqa(ymm6, ptr[&m_local.temp.uv_minmax[1]]); - - vpsrlw(ymm5, 1); - vpsrlw(ymm6, 1); - - if(m_sel.ltf) - { - // u -= 0x8000; - // v -= 0x8000; - - mov(eax, 0x8000); - vmovd(xmm4, eax); - vpbroadcastd(ymm4, xmm4); - - vpsubd(ymm2, ymm4); - vpsubd(ymm3, ymm4); - - // GSVector8i uf = u.xxzzlh().srl16(1); - - vpshuflw(ymm0, ymm2, _MM_SHUFFLE(2, 2, 0, 0)); - vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); - vpsrlw(ymm0, 12); - vmovdqa(ptr[&m_local.temp.uf], ymm0); - - // GSVector8i vf = v.xxzzlh().srl16(1); - - vpshuflw(ymm0, ymm3, _MM_SHUFFLE(2, 2, 0, 0)); - vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); - vpsrlw(ymm0, 12); - vmovdqa(ptr[&m_local.temp.vf], ymm0); - } - - // GSVector8i uv0 = u.sra32(16).ps32(v.sra32(16)); - - vpsrad(ymm2, 16); - vpsrad(ymm3, 16); - vpackssdw(ymm2, ymm3); - - if(m_sel.ltf) - { - // GSVector8i uv1 = uv0.add16(GSVector4i::x0001()); - - vpcmpeqd(ymm1, ymm1); - vpsrlw(ymm1, 15); - vpaddw(ymm3, ymm2, ymm1); - - // uv0 = Wrap(uv0); - // uv1 = Wrap(uv1); - - WrapLOD(ymm2, ymm3); - } - else - { - // uv0 = Wrap(uv0); - - WrapLOD(ymm2); - } - - // ymm2 = uv0 - // ymm3 = uv1 (ltf) - // ymm0, ymm1, ymm4, ymm5, ymm6 = free - // ymm7 = used - - // GSVector8i x0 = uv0.upl16(); - // GSVector8i y0 = uv0.uph16() << tw; - - vpxor(ymm0, ymm0); - - vpunpcklwd(ymm4, ymm2, ymm0); - vpunpckhwd(ymm2, ymm2, ymm0); - vpslld(ymm2, (uint8)(m_sel.tw + 3)); - - // ymm0 = 0 - // ymm2 = y0 - // ymm3 = uv1 (ltf) - // ymm4 = x0 - // ymm1, ymm5, ymm6 = free - // ymm7 = used - - if(m_sel.ltf) - { - // GSVector8i x1 = uv1.upl16(); - // GSVector8i y1 = uv1.uph16() << tw; - - vpunpcklwd(ymm6, ymm3, ymm0); - vpunpckhwd(ymm3, ymm3, ymm0); - vpslld(ymm3, (uint8)(m_sel.tw + 3)); - - // ymm2 = y0 - // ymm3 = y1 - // ymm4 = x0 - // ymm6 = x1 - // ymm0, ymm5, ymm6 = free - // ymm7 = used - - // GSVector8i addr00 = y0 + x0; - // GSVector8i addr01 = y0 + x1; - // GSVector8i addr10 = y1 + x0; - // GSVector8i addr11 = y1 + x1; - - vpaddd(ymm5, ymm2, ymm4); - vpaddd(ymm2, ymm2, ymm6); - vpaddd(ymm0, ymm3, ymm4); - vpaddd(ymm3, ymm3, ymm6); - - // ymm5 = addr00 - // ymm2 = addr01 - // ymm0 = addr10 - // ymm3 = addr11 - // ymm1, ymm4, ymm6 = free - // ymm7 = used - - // c00 = addr00.gather32_32((const uint32/uint8*)tex[, clut]); - // c01 = addr01.gather32_32((const uint32/uint8*)tex[, clut]); - // c10 = addr10.gather32_32((const uint32/uint8*)tex[, clut]); - // c11 = addr11.gather32_32((const uint32/uint8*)tex[, clut]); - - ReadTexel(4, 1); - - // ymm6 = c00 - // ymm4 = c01 - // ymm1 = c10 - // ymm5 = c11 - // ymm0, ymm2, ymm3 = free - // ymm7 = used - - vmovdqa(ymm0, ptr[&m_local.temp.uf]); - - // GSVector8i rb00 = c00 & mask; - // GSVector8i ga00 = (c00 >> 8) & mask; - - vpsllw(ymm2, ymm6, 8); - vpsrlw(ymm2, 8); - vpsrlw(ymm6, 8); - - // GSVector8i rb01 = c01 & mask; - // GSVector8i ga01 = (c01 >> 8) & mask; - - vpsllw(ymm3, ymm4, 8); - vpsrlw(ymm3, 8); - vpsrlw(ymm4, 8); - - // ymm0 = uf - // ymm2 = rb00 - // ymm3 = rb01 - // ymm6 = ga00 - // ymm4 = ga01 - // ymm1 = c10 - // ymm5 = c11 - // ymm7 = used - - // rb00 = rb00.lerp16_4(rb01, uf); - // ga00 = ga00.lerp16_4(ga01, uf); - - lerp16_4(ymm3, ymm2, ymm0); - lerp16_4(ymm4, ymm6, ymm0); - - // ymm0 = uf - // ymm3 = rb00 - // ymm4 = ga00 - // ymm1 = c10 - // ymm5 = c11 - // ymm2, ymm6 = free - // ymm7 = used - - // GSVector8i rb10 = c10 & mask; - // GSVector8i ga10 = (c10 >> 8) & mask; - - vpsrlw(ymm2, ymm1, 8); - vpsllw(ymm1, 8); - vpsrlw(ymm1, 8); - - // GSVector8i rb11 = c11 & mask; - // GSVector8i ga11 = (c11 >> 8) & mask; - - vpsrlw(ymm6, ymm5, 8); - vpsllw(ymm5, 8); - vpsrlw(ymm5, 8); - - // ymm0 = uf - // ymm3 = rb00 - // ymm4 = ga00 - // ymm1 = rb10 - // ymm5 = rb11 - // ymm2 = ga10 - // ymm6 = ga11 - // ymm7 = used - - // rb10 = rb10.lerp16_4(rb11, uf); - // ga10 = ga10.lerp16_4(ga11, uf); - - lerp16_4(ymm5, ymm1, ymm0); - lerp16_4(ymm6, ymm2, ymm0); - - // ymm3 = rb00 - // ymm4 = ga00 - // ymm5 = rb10 - // ymm6 = ga10 - // ymm0, ymm1, ymm2 = free - // ymm7 = used - - // rb00 = rb00.lerp16_4(rb10, vf); - // ga00 = ga00.lerp16_4(ga10, vf); - - vmovdqa(ymm0, ptr[&m_local.temp.vf]); - - lerp16_4(ymm5, ymm3, ymm0); - lerp16_4(ymm6, ymm4, ymm0); - } - else - { - // GSVector8i addr00 = y0 + x0; - - vpaddd(ymm5, ymm2, ymm4); - - // c00 = addr00.gather32_32((const uint32/uint8*)tex[, clut]); - - ReadTexel(1, 1); - - // GSVector8i mask = GSVector8i::x00ff(); - - // c[0] = c00 & mask; - // c[1] = (c00 >> 8) & mask; - - vpsllw(ymm5, ymm6, 8); - vpsrlw(ymm5, 8); - vpsrlw(ymm6, 8); - } - - vmovdqa(ymm0, ptr[m_sel.lcm ? &m_local.gd->lod.f : &m_local.temp.lod.f]); - vpsrlw(ymm0, ymm0, 1); - - vmovdqa(ymm2, ptr[&m_local.temp.trb]); - vmovdqa(ymm3, ptr[&m_local.temp.tga]); - - lerp16(ymm5, ymm2, ymm0, 0); - lerp16(ymm6, ymm3, ymm0, 0); - } - - pop(ebp); -} - -void GSDrawScanlineCodeGenerator::WrapLOD(const Ymm& uv) -{ - // ymm5 = minuv - // ymm6 = maxuv - // ymm0, ymm1, ymm4 = free - - int wms_clamp = ((m_sel.wms + 1) >> 1) & 1; - int wmt_clamp = ((m_sel.wmt + 1) >> 1) & 1; - - int region = ((m_sel.wms | m_sel.wmt) >> 1) & 1; - - if(wms_clamp == wmt_clamp) - { - if(wms_clamp) - { - if(region) - { - vpmaxsw(uv, ymm5); - } - else - { - vpxor(ymm0, ymm0); - vpmaxsw(uv, ymm0); - } - - vpminsw(uv, ymm6); - } - else - { - vpand(uv, ymm5); - - if(region) - { - vpor(uv, ymm6); - } - } - } - else - { - vbroadcasti128(ymm0, ptr[&m_local.gd->t.mask]); - - // GSVector8i repeat = (t & m_local.gd->t.min) | m_local.gd->t.max; - - vpand(ymm1, uv, ymm5); - - if(region) - { - vpor(ymm1, ymm6); - } - - // GSVector8i clamp = t.sat_i16(m_local.gd->t.min, m_local.gd->t.max); - - vpmaxsw(uv, ymm5); - vpminsw(uv, ymm6); - - // clamp.blend8(repeat, m_local.gd->t.mask); - - vpblendvb(uv, ymm1, ymm0); - } -} - -void GSDrawScanlineCodeGenerator::WrapLOD(const Ymm& uv0, const Ymm& uv1) -{ - // ymm5 = minuv - // ymm6 = maxuv - // ymm0, ymm1, ymm4 = free - - int wms_clamp = ((m_sel.wms + 1) >> 1) & 1; - int wmt_clamp = ((m_sel.wmt + 1) >> 1) & 1; - - int region = ((m_sel.wms | m_sel.wmt) >> 1) & 1; - - if(wms_clamp == wmt_clamp) - { - if(wms_clamp) - { - if(region) - { - vpmaxsw(uv0, ymm5); - vpmaxsw(uv1, ymm5); - } - else - { - vpxor(ymm0, ymm0); - vpmaxsw(uv0, ymm0); - vpmaxsw(uv1, ymm0); - } - - vpminsw(uv0, ymm6); - vpminsw(uv1, ymm6); - } - else - { - vpand(uv0, ymm5); - vpand(uv1, ymm5); - - if(region) - { - vpor(uv0, ymm6); - vpor(uv1, ymm6); - } - } - } - else - { - vbroadcasti128(ymm0, ptr[&m_local.gd->t.mask]); - - // uv0 - - // GSVector8i repeat = (t & m_local.gd->t.min) | m_local.gd->t.max; - - vpand(ymm1, uv0, ymm5); - - if(region) - { - vpor(ymm1, ymm6); - } - - // GSVector8i clamp = t.sat_i16(m_local.gd->t.min, m_local.gd->t.max); - - vpmaxsw(uv0, ymm5); - vpminsw(uv0, ymm6); - - // clamp.blend8(repeat, m_local.gd->t.mask); - - vpblendvb(uv0, ymm1, ymm0); - - // uv1 - - // GSVector8i repeat = (t & m_local.gd->t.min) | m_local.gd->t.max; - - vpand(ymm1, uv1, ymm5); - - if(region) - { - vpor(ymm1, ymm6); - } - - // GSVector8i clamp = t.sat_i16(m_local.gd->t.min, m_local.gd->t.max); - - vpmaxsw(uv1, ymm5); - vpminsw(uv1, ymm6); - - // clamp.blend8(repeat, m_local.gd->t.mask); - - vpblendvb(uv1, ymm1, ymm0); - } -} - -void GSDrawScanlineCodeGenerator::AlphaTFX() -{ - if(!m_sel.fb) - { - return; - } - - switch(m_sel.tfx) - { - case TFX_MODULATE: - - // GSVector8i ga = iip ? gaf : m_local.c.ga; - - vmovdqa(ymm4, ptr[m_sel.iip ? &m_local.temp.ga : &m_local.c.ga]); - - // gat = gat.modulate16<1>(ga).clamp8(); - - modulate16(ymm6, ymm4, 1); - - clamp16(ymm6, ymm3); - - // if(!tcc) gat = gat.mix16(ga.srl16(7)); - - if(!m_sel.tcc) - { - vpsrlw(ymm4, 7); - - mix16(ymm6, ymm4, ymm3); - } - - break; - - case TFX_DECAL: - - // if(!tcc) gat = gat.mix16(ga.srl16(7)); - - if(!m_sel.tcc) - { - // GSVector4i ga = iip ? gaf : m_local.c.ga; - - vmovdqa(ymm4, ptr[m_sel.iip ? &m_local.temp.ga : &m_local.c.ga]); - - vpsrlw(ymm4, 7); - - mix16(ymm6, ymm4, ymm3); - } - - break; - - case TFX_HIGHLIGHT: - - // GSVector4i ga = iip ? gaf : m_local.c.ga; - - vmovdqa(ymm4, ptr[m_sel.iip ? &m_local.temp.ga : &m_local.c.ga]); - vmovdqa(ymm2, ymm4); - - // gat = gat.mix16(!tcc ? ga.srl16(7) : gat.addus8(ga.srl16(7))); - - vpsrlw(ymm4, 7); - - if(m_sel.tcc) - { - vpaddusb(ymm4, ymm6); - } - - mix16(ymm6, ymm4, ymm3); - - break; - - case TFX_HIGHLIGHT2: - - // if(!tcc) gat = gat.mix16(ga.srl16(7)); - - if(!m_sel.tcc) - { - // GSVector4i ga = iip ? gaf : m_local.c.ga; - - vmovdqa(ymm4, ptr[m_sel.iip ? &m_local.temp.ga : &m_local.c.ga]); - vmovdqa(ymm2, ymm4); - - vpsrlw(ymm4, 7); - - mix16(ymm6, ymm4, ymm3); - } - - break; - - case TFX_NONE: - - // gat = iip ? ga.srl16(7) : ga; - - if(m_sel.iip) - { - vpsrlw(ymm6, 7); - } - - break; - } - - if(m_sel.aa1) - { - // gs_user figure 3-2: anti-aliasing after tfx, before tests, modifies alpha - - // FIXME: bios config screen cubes - - if(!m_sel.abe) - { - // a = cov - - if(m_sel.edge) - { - vmovdqa(ymm0, ptr[&m_local.temp.cov]); - } - else - { - vpcmpeqd(ymm0, ymm0); - vpsllw(ymm0, 15); - vpsrlw(ymm0, 8); - } - - mix16(ymm6, ymm0, ymm1); - } - else - { - // a = a == 0x80 ? cov : a - - vpcmpeqd(ymm0, ymm0); - vpsllw(ymm0, 15); - vpsrlw(ymm0, 8); - - if(m_sel.edge) - { - vmovdqa(ymm1, ptr[&m_local.temp.cov]); - } - else - { - vmovdqa(ymm1, ymm0); - } - - vpcmpeqw(ymm0, ymm6); - vpsrld(ymm0, 16); - vpslld(ymm0, 16); - - vpblendvb(ymm6, ymm1, ymm0); - } - } -} - -void GSDrawScanlineCodeGenerator::ReadMask() -{ - if(m_sel.fwrite) - { - vpbroadcastd(ymm3, ptr[&m_local.gd->fm]); - } - - if(m_sel.zwrite) - { - vpbroadcastd(ymm4, ptr[&m_local.gd->zm]); - } -} - -void GSDrawScanlineCodeGenerator::TestAlpha() -{ - switch(m_sel.afail) - { - case AFAIL_FB_ONLY: - if(!m_sel.zwrite) return; - break; - - case AFAIL_ZB_ONLY: - if(!m_sel.fwrite) return; - break; - - case AFAIL_RGB_ONLY: - if(!m_sel.zwrite && m_sel.fpsm == 1) return; - break; - } - - switch(m_sel.atst) - { - case ATST_NEVER: - // t = GSVector8i::xffffffff(); - vpcmpeqd(ymm1, ymm1); - break; - - case ATST_ALWAYS: - return; - - case ATST_LESS: - case ATST_LEQUAL: - // t = (ga >> 16) > m_local.gd->aref; - vpsrld(ymm1, ymm6, 16); - vbroadcasti128(ymm0, ptr[&m_local.gd->aref]); - vpcmpgtd(ymm1, ymm0); - break; - - case ATST_EQUAL: - // t = (ga >> 16) != m_local.gd->aref; - vpsrld(ymm1, ymm6, 16); - vbroadcasti128(ymm0, ptr[&m_local.gd->aref]); - vpcmpeqd(ymm1, ymm0); - vpcmpeqd(ymm0, ymm0); - vpxor(ymm1, ymm0); - break; - - case ATST_GEQUAL: - case ATST_GREATER: - // t = (ga >> 16) < m_local.gd->aref; - vpsrld(ymm0, ymm6, 16); - vbroadcasti128(ymm1, ptr[&m_local.gd->aref]); - vpcmpgtd(ymm1, ymm0); - break; - - case ATST_NOTEQUAL: - // t = (ga >> 16) == m_local.gd->aref; - vpsrld(ymm1, ymm6, 16); - vbroadcasti128(ymm0, ptr[&m_local.gd->aref]); - vpcmpeqd(ymm1, ymm0); - break; - } - - switch(m_sel.afail) - { - case AFAIL_KEEP: - // test |= t; - vpor(ymm7, ymm1); - alltrue(); - break; - - case AFAIL_FB_ONLY: - // zm |= t; - vpor(ymm4, ymm1); - break; - - case AFAIL_ZB_ONLY: - // fm |= t; - vpor(ymm3, ymm1); - break; - - case AFAIL_RGB_ONLY: - // zm |= t; - vpor(ymm4, ymm1); - // fm |= t & GSVector8i::xff000000(); - vpsrld(ymm1, 24); - vpslld(ymm1, 24); - vpor(ymm3, ymm1); - break; - } -} - -void GSDrawScanlineCodeGenerator::ColorTFX() -{ - if(!m_sel.fwrite) - { - return; - } - - switch(m_sel.tfx) - { - case TFX_MODULATE: - - // GSVector8i rb = iip ? rbf : m_local.c.rb; - - // rbt = rbt.modulate16<1>(rb).clamp8(); - - modulate16(ymm5, ptr[m_sel.iip ? &m_local.temp.rb : &m_local.c.rb], 1); - - clamp16(ymm5, ymm1); - - break; - - case TFX_DECAL: - - break; - - case TFX_HIGHLIGHT: - case TFX_HIGHLIGHT2: - - if(m_sel.tfx == TFX_HIGHLIGHT2 && m_sel.tcc) - { - // GSVector8i ga = iip ? gaf : m_local.c.ga; - - vmovdqa(ymm2, ptr[m_sel.iip ? &m_local.temp.ga : &m_local.c.ga]); - } - - // gat = gat.modulate16<1>(ga).add16(af).clamp8().mix16(gat); - - vmovdqa(ymm1, ymm6); - - modulate16(ymm6, ymm2, 1); - - vpshuflw(ymm2, ymm2, _MM_SHUFFLE(3, 3, 1, 1)); - vpshufhw(ymm2, ymm2, _MM_SHUFFLE(3, 3, 1, 1)); - vpsrlw(ymm2, 7); - - vpaddw(ymm6, ymm2); - - clamp16(ymm6, ymm0); - - mix16(ymm6, ymm1, ymm0); - - // GSVector8i rb = iip ? rbf : m_local.c.rb; - - // rbt = rbt.modulate16<1>(rb).add16(af).clamp8(); - - modulate16(ymm5, ptr[m_sel.iip ? &m_local.temp.rb : &m_local.c.rb], 1); - - vpaddw(ymm5, ymm2); - - clamp16(ymm5, ymm0); - - break; - - case TFX_NONE: - - // rbt = iip ? rb.srl16(7) : rb; - - if(m_sel.iip) - { - vpsrlw(ymm5, 7); - } - - break; - } -} - -void GSDrawScanlineCodeGenerator::Fog() -{ - if(!m_sel.fwrite || !m_sel.fge) - { - return; - } - - // rb = m_local.gd->frb.lerp16<0>(rb, f); - // ga = m_local.gd->fga.lerp16<0>(ga, f).mix16(ga); - - if(m_sel.prim != GS_SPRITE_CLASS) - { - vmovdqa(ymm0, ptr[&m_local.temp.f]); - } - else - { - vpbroadcastw(ymm0, ptr[&m_local.p.f]); - } - - vmovdqa(ymm1, ymm6); - - vpbroadcastd(ymm2, ptr[&m_local.gd->frb]); - lerp16(ymm5, ymm2, ymm0, 0); - - vpbroadcastd(ymm2, ptr[&m_local.gd->fga]); - lerp16(ymm6, ymm2, ymm0, 0); - mix16(ymm6, ymm1, ymm0); -} - -void GSDrawScanlineCodeGenerator::ReadFrame() -{ - if(!m_sel.fb) - { - return; - } - - // int fa = fza_base.x + fza_offset->x; - - mov(ebx, ptr[esi]); - add(ebx, ptr[edi]); - - if(!m_sel.rfb) - { - return; - } - - ReadPixel(ymm2, ymm0, ebx); -} - -void GSDrawScanlineCodeGenerator::TestDestAlpha() -{ - if(!m_sel.date || m_sel.fpsm != 0 && m_sel.fpsm != 2) - { - return; - } - - // test |= ((fd [<< 16]) ^ m_local.gd->datm).sra32(31); - - if(m_sel.datm) - { - if(m_sel.fpsm == 2) - { - vpxor(ymm0, ymm0); - //vpsrld(ymm1, ymm2, 15); - vpslld(ymm1, ymm2, 16); - vpsrad(ymm1, 31); - vpcmpeqd(ymm1, ymm0); - } - else - { - vpcmpeqd(ymm0, ymm0); - vpxor(ymm1, ymm2, ymm0); - vpsrad(ymm1, 31); - } - } - else - { - if(m_sel.fpsm == 2) - { - vpslld(ymm1, ymm2, 16); - vpsrad(ymm1, 31); - } - else - { - vpsrad(ymm1, ymm2, 31); - } - } - - vpor(ymm7, ymm1); - - alltrue(); -} - -void GSDrawScanlineCodeGenerator::WriteMask() -{ - if(m_sel.notest) - { - return; - } - - // fm |= test; - // zm |= test; - - if(m_sel.fwrite) - { - vpor(ymm3, ymm7); - } - - if(m_sel.zwrite) - { - vpor(ymm4, ymm7); - } - - // int fzm = ~(fm == GSVector8i::xffffffff()).ps32(zm == GSVector8i::xffffffff()).mask(); - - vpcmpeqd(ymm1, ymm1); - - if(m_sel.fwrite && m_sel.zwrite) - { - vpcmpeqd(ymm0, ymm1, ymm4); - vpcmpeqd(ymm1, ymm3); - vpackssdw(ymm1, ymm0); - } - else if(m_sel.fwrite) - { - vpcmpeqd(ymm1, ymm3); - vpackssdw(ymm1, ymm1); - } - else if(m_sel.zwrite) - { - vpcmpeqd(ymm1, ymm4); - vpackssdw(ymm1, ymm1); - } - - vpmovmskb(edx, ymm1); - - not(edx); -} - -void GSDrawScanlineCodeGenerator::WriteZBuf() -{ - if(!m_sel.zwrite) - { - return; - } - - if(m_sel.prim != GS_SPRITE_CLASS) - { - vmovdqa(ymm1, ptr[&m_local.temp.zs]); - } - else - { - vpbroadcastd(ymm1, ptr[&m_local.p.z]); - } - - if(m_sel.ztest && m_sel.zpsm < 2) - { - // zs = zs.blend8(zd, zm); - - vpblendvb(ymm1, ptr[&m_local.temp.zd], ymm4); - } - - bool fast = m_sel.ztest ? m_sel.zpsm < 2 : m_sel.zpsm == 0 && m_sel.notest; - - WritePixel(ymm1, ymm0, ebp, edx, fast, m_sel.zpsm, 1); -} - -void GSDrawScanlineCodeGenerator::AlphaBlend() -{ - if(!m_sel.fwrite) - { - return; - } - - if(m_sel.abe == 0 && m_sel.aa1 == 0) - { - return; - } - - if((m_sel.aba != m_sel.abb) && (m_sel.aba == 1 || m_sel.abb == 1 || m_sel.abc == 1) || m_sel.abd == 1) - { - switch(m_sel.fpsm) - { - case 0: - case 1: - - // c[2] = fd & mask; - // c[3] = (fd >> 8) & mask; - - vpsllw(ymm0, ymm2, 8); - vpsrlw(ymm0, 8); - vpsrlw(ymm1, ymm2, 8); - - break; - - case 2: - - // c[2] = ((fd & 0x7c00) << 9) | ((fd & 0x001f) << 3); - // c[3] = ((fd & 0x8000) << 8) | ((fd & 0x03e0) >> 2); - - vpcmpeqd(ymm7, ymm7); - - vpsrld(ymm7, 27); // 0x0000001f - vpand(ymm0, ymm2, ymm7); - vpslld(ymm0, 3); - - vpslld(ymm7, 10); // 0x00007c00 - vpand(ymm4, ymm2, ymm7); - vpslld(ymm4, 9); - - vpor(ymm0, ymm4); - - vpsrld(ymm7, 5); // 0x000003e0 - vpand(ymm1, ymm2, ymm7); - vpsrld(ymm1, 2); - - vpsllw(ymm7, 10); // 0x00008000 - vpand(ymm4, ymm2, ymm7); - vpslld(ymm4, 8); - - vpor(ymm1, ymm4); - - break; - } - } - - // ymm5, ymm6 = src rb, ga - // ymm0, ymm1 = dst rb, ga - // ymm2, ymm3 = used - // ymm4, ymm7 = free - - if(m_sel.pabe || (m_sel.aba != m_sel.abb) && (m_sel.abb == 0 || m_sel.abd == 0)) - { - vmovdqa(ymm4, ymm5); - } - - if(m_sel.aba != m_sel.abb) - { - // rb = c[aba * 2 + 0]; - - switch(m_sel.aba) - { - case 0: break; - case 1: vmovdqa(ymm5, ymm0); break; - case 2: vpxor(ymm5, ymm5); break; - } - - // rb = rb.sub16(c[abb * 2 + 0]); - - switch(m_sel.abb) - { - case 0: vpsubw(ymm5, ymm4); break; - case 1: vpsubw(ymm5, ymm0); break; - case 2: break; - } - - if(!(m_sel.fpsm == 1 && m_sel.abc == 1)) - { - // GSVector4i a = abc < 2 ? c[abc * 2 + 1].yywwlh().sll16(7) : m_local.gd->afix; - - switch(m_sel.abc) - { - case 0: - case 1: - vpshuflw(ymm7, m_sel.abc ? ymm1 : ymm6, _MM_SHUFFLE(3, 3, 1, 1)); - vpshufhw(ymm7, ymm7, _MM_SHUFFLE(3, 3, 1, 1)); - vpsllw(ymm7, 7); - break; - case 2: - vpbroadcastw(ymm7, ptr[&m_local.gd->afix]); - break; - } - - // rb = rb.modulate16<1>(a); - - modulate16(ymm5, ymm7, 1); - } - - // rb = rb.add16(c[abd * 2 + 0]); - - switch(m_sel.abd) - { - case 0: vpaddw(ymm5, ymm4); break; - case 1: vpaddw(ymm5, ymm0); break; - case 2: break; - } - } - else - { - // rb = c[abd * 2 + 0]; - - switch(m_sel.abd) - { - case 0: break; - case 1: vmovdqa(ymm5, ymm0); break; - case 2: vpxor(ymm5, ymm5); break; - } - } - - if(m_sel.pabe) - { - // mask = (c[1] << 8).sra32(31); - - vpslld(ymm0, ymm6, 8); - vpsrad(ymm0, 31); - - // rb = c[0].blend8(rb, mask); - - vpblendvb(ymm5, ymm4, ymm5, ymm0); - } - - // ymm6 = src ga - // ymm1 = dst ga - // ymm5 = rb - // ymm7 = a - // ymm2, ymm3 = used - // ymm0, ymm4 = free - - vmovdqa(ymm4, ymm6); - - if(m_sel.aba != m_sel.abb) - { - // ga = c[aba * 2 + 1]; - - switch(m_sel.aba) - { - case 0: break; - case 1: vmovdqa(ymm6, ymm1); break; - case 2: vpxor(ymm6, ymm6); break; - } - - // ga = ga.sub16(c[abeb * 2 + 1]); - - switch(m_sel.abb) - { - case 0: vpsubw(ymm6, ymm4); break; - case 1: vpsubw(ymm6, ymm1); break; - case 2: break; - } - - if(!(m_sel.fpsm == 1 && m_sel.abc == 1)) - { - // ga = ga.modulate16<1>(a); - - modulate16(ymm6, ymm7, 1); - } - - // ga = ga.add16(c[abd * 2 + 1]); - - switch(m_sel.abd) - { - case 0: vpaddw(ymm6, ymm4); break; - case 1: vpaddw(ymm6, ymm1); break; - case 2: break; - } - } - else - { - // ga = c[abd * 2 + 1]; - - switch(m_sel.abd) - { - case 0: break; - case 1: vmovdqa(ymm6, ymm1); break; - case 2: vpxor(ymm6, ymm6); break; - } - } - - // ymm4 = src ga - // ymm5 = rb - // ymm6 = ga - // ymm2, ymm3 = used - // ymm0, ymm1, ymm7 = free - - if(m_sel.pabe) - { - vpsrld(ymm0, 16); // zero out high words to select the source alpha in blend (so it also does mix16) - - // ga = c[1].blend8(ga, mask).mix16(c[1]); - - vpblendvb(ymm6, ymm4, ymm6, ymm0); - } - else - { - if(m_sel.fpsm != 1) // TODO: fm == 0xffxxxxxx - { - mix16(ymm6, ymm4, ymm7); - } - } -} - -void GSDrawScanlineCodeGenerator::WriteFrame() -{ - if(!m_sel.fwrite) - { - return; - } - - if(m_sel.fpsm == 2 && m_sel.dthe) - { - mov(eax, ptr[esp + _top]); - and(eax, 3); - shl(eax, 5); - mov(ebp, ptr[&m_local.gd->dimx]); - vbroadcasti128(ymm7, ptr[ebp + eax + sizeof(GSVector4i) * 0]); - vpaddw(ymm5, ymm7); - vbroadcasti128(ymm7, ptr[ebp + eax + sizeof(GSVector4i) * 1]); - vpaddw(ymm6, ymm7); - } - - if(m_sel.colclamp == 0) - { - // c[0] &= 0x00ff00ff; - // c[1] &= 0x00ff00ff; - - vpcmpeqd(ymm7, ymm7); - vpsrlw(ymm7, 8); - vpand(ymm5, ymm7); - vpand(ymm6, ymm7); - } - - // GSVector8i fs = c[0].upl16(c[1]).pu16(c[0].uph16(c[1])); - - vpunpckhwd(ymm7, ymm5, ymm6); - vpunpcklwd(ymm5, ymm6); - vpackuswb(ymm5, ymm7); - - if(m_sel.fba && m_sel.fpsm != 1) - { - // fs |= 0x80000000; - - vpcmpeqd(ymm7, ymm7); - vpslld(ymm7, 31); - vpor(ymm5, ymm7); - } - - if(m_sel.fpsm == 2) - { - // GSVector8i rb = fs & 0x00f800f8; - // GSVector8i ga = fs & 0x8000f800; - - mov(eax, 0x00f800f8); - vmovd(xmm6, eax); - vpbroadcastd(ymm6, xmm6); - - mov(eax, 0x8000f800); - vmovd(xmm7, eax); - vpbroadcastd(ymm7, xmm7); - - vpand(ymm4, ymm5, ymm6); - vpand(ymm5, ymm7); - - // fs = (ga >> 16) | (rb >> 9) | (ga >> 6) | (rb >> 3); - - vpsrld(ymm6, ymm4, 9); - vpsrld(ymm4, 3); - vpsrld(ymm7, ymm5, 16); - vpsrld(ymm5, 6); - - vpor(ymm5, ymm4); - vpor(ymm7, ymm6); - vpor(ymm5, ymm7); - } - - if(m_sel.rfb) - { - // fs = fs.blend(fd, fm); - - blend(ymm5, ymm2, ymm3); // TODO: could be skipped in certain cases, depending on fpsm and fm - } - - bool fast = m_sel.rfb ? m_sel.fpsm < 2 : m_sel.fpsm == 0 && m_sel.notest; - - WritePixel(ymm5, ymm0, ebx, edx, fast, m_sel.fpsm, 0); -} - -void GSDrawScanlineCodeGenerator::ReadPixel(const Ymm& dst, const Ymm& temp, const Reg32& addr) -{ - vmovq(Xmm(dst.getIdx()), qword[addr * 2 + (size_t)m_local.gd->vm]); - vmovhps(Xmm(dst.getIdx()), qword[addr * 2 + (size_t)m_local.gd->vm + 8 * 2]); - vmovq(Xmm(temp.getIdx()), qword[addr * 2 + (size_t)m_local.gd->vm + 16 * 2]); - vmovhps(Xmm(temp.getIdx()), qword[addr * 2 + (size_t)m_local.gd->vm + 24 * 2]); - vinserti128(dst, dst, temp, 1); -/* - vmovdqu(dst, ptr[addr * 2 + (size_t)m_local.gd->vm]); - vmovdqu(temp, ptr[addr * 2 + (size_t)m_local.gd->vm + 16 * 2]); - vpunpcklqdq(dst, dst, temp); - vpermq(dst, dst, _MM_SHUFFLE(3, 1, 2, 0)); -*/ -} - -void GSDrawScanlineCodeGenerator::WritePixel(const Ymm& src, const Ymm& temp, const Reg32& addr, const Reg32& mask, bool fast, int psm, int fz) -{ - Xmm src1 = Xmm(src.getIdx()); - Xmm src2 = Xmm(temp.getIdx()); - - vextracti128(src2, src, 1); - - if(m_sel.notest) - { - if(fast) - { - vmovq(qword[addr * 2 + (size_t)m_local.gd->vm], src1); - vmovhps(qword[addr * 2 + (size_t)m_local.gd->vm + 8 * 2], src1); - vmovq(qword[addr * 2 + (size_t)m_local.gd->vm + 16 * 2], src2); - vmovhps(qword[addr * 2 + (size_t)m_local.gd->vm + 24 * 2], src2); - } - else - { - WritePixel(src1, addr, 0, 0, psm); - WritePixel(src1, addr, 1, 1, psm); - WritePixel(src1, addr, 2, 2, psm); - WritePixel(src1, addr, 3, 3, psm); - WritePixel(src2, addr, 4, 0, psm); - WritePixel(src2, addr, 5, 1, psm); - WritePixel(src2, addr, 6, 2, psm); - WritePixel(src2, addr, 7, 3, psm); - } - } - else - { - // cascade tests? - - if(fast) - { - test(mask, 0x0000000f << (fz * 8)); - je("@f"); - vmovq(qword[addr * 2 + (size_t)m_local.gd->vm], src1); - L("@@"); - - test(mask, 0x000000f0 << (fz * 8)); - je("@f"); - vmovhps(qword[addr * 2 + (size_t)m_local.gd->vm + 8 * 2], src1); - L("@@"); - - test(mask, 0x000f0000 << (fz * 8)); - je("@f"); - vmovq(qword[addr * 2 + (size_t)m_local.gd->vm + 16 * 2], src2); - L("@@"); - - test(mask, 0x00f00000 << (fz * 8)); - je("@f"); - vmovhps(qword[addr * 2 + (size_t)m_local.gd->vm + 24 * 2], src2); - L("@@"); - - // vmaskmovps? - } - else - { - test(mask, 0x00000003 << (fz * 8)); - je("@f"); - WritePixel(src1, addr, 0, 0, psm); - L("@@"); - - test(mask, 0x0000000c << (fz * 8)); - je("@f"); - WritePixel(src1, addr, 1, 1, psm); - L("@@"); - - test(mask, 0x00000030 << (fz * 8)); - je("@f"); - WritePixel(src1, addr, 2, 2, psm); - L("@@"); - - test(mask, 0x000000c0 << (fz * 8)); - je("@f"); - WritePixel(src1, addr, 3, 3, psm); - L("@@"); - - test(mask, 0x00030000 << (fz * 8)); - je("@f"); - WritePixel(src2, addr, 4, 0, psm); - L("@@"); - - test(mask, 0x000c0000 << (fz * 8)); - je("@f"); - WritePixel(src2, addr, 5, 1, psm); - L("@@"); - - test(mask, 0x00300000 << (fz * 8)); - je("@f"); - WritePixel(src2, addr, 6, 2, psm); - L("@@"); - - test(mask, 0x00c00000 << (fz * 8)); - je("@f"); - WritePixel(src2, addr, 7, 3, psm); - L("@@"); - } - } -} - -static const int s_offsets[] = {0, 2, 8, 10, 16, 18, 24, 26}; - -void GSDrawScanlineCodeGenerator::WritePixel(const Xmm& src, const Reg32& addr, uint8 i, uint8 j, int psm) -{ - Address dst = ptr[addr * 2 + (size_t)m_local.gd->vm + s_offsets[i] * 2]; - - switch(psm) - { - case 0: - if(j == 0) vmovd(dst, src); - else vpextrd(dst, src, j); - break; - case 1: - if(j == 0) vmovd(eax, src); - else vpextrd(eax, src, j); - xor(eax, dst); - and(eax, 0xffffff); - xor(dst, eax); - break; - case 2: - if(j == 0) vmovd(eax, src); - else vpextrw(eax, src, j * 2); - mov(dst, ax); - break; - } -} - -void GSDrawScanlineCodeGenerator::ReadTexel(int pixels, int mip_offset) -{ - // in - // ymm5 = addr00 - // ymm2 = addr01 - // ymm0 = addr10 - // ymm3 = addr11 - // ebx = m_local.tex[0] (!m_sel.mmin) - // ebp = m_local.tex (m_sel.mmin) - // edx = m_local.clut (m_sel.tlu) - - // out - // ymm6 = c00 - // ymm4 = c01 - // ymm1 = c10 - // ymm5 = c11 - - ASSERT(pixels == 1 || pixels == 4); - - mip_offset *= sizeof(void*); - - const GSVector8i* lod_i = m_sel.lcm ? &m_local.gd->lod.i : &m_local.temp.lod.i; - - if(m_sel.mmin && !m_sel.lcm) - { - const int r[] = {5, 6, 2, 4, 0, 1, 3, 5}; - const int t[] = {1, 4, 5, 1, 2, 5, 0, 2}; - - for(int i = 0; i < pixels; i++) - { - Ymm src = Ymm(r[i * 2 + 0]); - Ymm dst = Ymm(r[i * 2 + 1]); - Ymm t1 = Ymm(t[i * 2 + 0]); - Ymm t2 = Ymm(t[i * 2 + 1]); - - vextracti128(Xmm(t1.getIdx()), src, 1); - - for(uint8 j = 0; j < 4; j++) - { - mov(ebx, ptr[&lod_i->u32[j + 0]]); - mov(ebx, ptr[ebp + ebx * sizeof(void*) + mip_offset]); - - ReadTexel(dst, src, j); - - mov(ebx, ptr[&lod_i->u32[j + 4]]); - mov(ebx, ptr[ebp + ebx * sizeof(void*) + mip_offset]); - - ReadTexel(t2, t1, j); - } - - vinserti128(dst, dst, t2, 1); - } - } - else - { - const int r[] = {5, 6, 2, 4, 0, 1, 3, 5}; - const int t[] = {1, 4, 5, 1, 2, 5, 0, 2}; - - if(m_sel.mmin && m_sel.lcm) - { - mov(ebx, ptr[&lod_i->u32[0]]); - mov(ebx, ptr[ebp + ebx * sizeof(void*) + mip_offset]); - } - - for(int i = 0; i < pixels; i++) - { - Ymm src = Ymm(r[i * 2 + 0]); - Ymm dst = Ymm(r[i * 2 + 1]); - Ymm t1 = Ymm(t[i * 2 + 0]); - Ymm t2 = Ymm(t[i * 2 + 1]); - - if(!m_sel.tlu) - { - vpcmpeqd(t1, t1); - vpgatherdd(dst, ptr[ebx + src * 4], t1); - } - else - { - vextracti128(Xmm(t1.getIdx()), src, 1); - - for(uint8 j = 0; j < 4; j++) - { - ReadTexel(dst, src, j); - ReadTexel(t2, t1, j); - } - - vinserti128(dst, dst, t2, 1); - /* - vpcmpeqd(t1, t1); - vpgatherdd(t2, ptr[ebx + src * 1], t1); // either this 1x scale, or the latency of two dependendent gathers are too slow - vpslld(t2, 24); - vpsrld(t2, 24); - vpcmpeqd(t1, t1); - vpgatherdd(dst, ptr[edx + t2 * 4], t1); - */ - } - } - } -} - -void GSDrawScanlineCodeGenerator::ReadTexel(const Ymm& dst, const Ymm& addr, uint8 i) -{ - ASSERT(i < 4); - - const Address& src = m_sel.tlu ? ptr[edx + eax * 4] : ptr[ebx + eax * 4]; - - if(i == 0) vmovd(eax, Xmm(addr.getIdx())); - else vpextrd(eax, Xmm(addr.getIdx()), i); - - if(m_sel.tlu) movzx(eax, byte[ebx + eax]); - - if(i == 0) vmovd(Xmm(dst.getIdx()), src); - else vpinsrd(Xmm(dst.getIdx()), src, i); -} - - +/* + * Copyright (C) 2007-2009 Gabest + * http://www.gabest.org + * + * 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 GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#include "stdafx.h" +#include "GSDrawScanlineCodeGenerator.h" +#include "GSVertexSW.h" + +#if _M_SSE >= 0x501 && !(defined(_M_AMD64) || defined(_WIN64)) + +static const int _args = 16; +static const int _top = _args + 4; +static const int _v = _args + 8; + +void GSDrawScanlineCodeGenerator::Generate() +{ +//ret(8); + + push(ebx); + push(esi); + push(edi); + push(ebp); + + //db(0xcc); + + Init(); + + if(!m_sel.edge) + { + align(16); + } + +L("loop"); + + // ecx = steps + // esi = fzbr + // edi = fzbc + // ymm0 = z/zi + // ymm2 = s/u (tme) + // ymm3 = t/v (tme) + // ymm4 = q (tme) + // ymm5 = rb (!tme) + // ymm6 = ga (!tme) + // ymm7 = test + + bool tme = m_sel.tfx != TFX_NONE; + + TestZ(tme ? ymm5 : ymm2, tme ? ymm6 : ymm3); + + // ecx = steps + // esi = fzbr + // edi = fzbc + // ebp = za + // - ymm0 + // ymm2 = s/u (tme) + // ymm3 = t/v (tme) + // ymm4 = q (tme) + // ymm5 = rb (!tme) + // ymm6 = ga (!tme) + // ymm7 = test + + if(m_sel.mmin) + { + SampleTextureLOD(); + } + else + { + SampleTexture(); + } + + // ecx = steps + // esi = fzbr + // edi = fzbc + // ebp = za + // - ymm2 + // - ymm3 + // - ymm4 + // ymm5 = rb + // ymm6 = ga + // ymm7 = test + + AlphaTFX(); + + // ecx = steps + // esi = fzbr + // edi = fzbc + // ebp = za + // ymm2 = gaf (TFX_HIGHLIGHT || TFX_HIGHLIGHT2 && !tcc) + // ymm5 = rb + // ymm6 = ga + // ymm7 = test + + ReadMask(); + + // ecx = steps + // esi = fzbr + // edi = fzbc + // ebp = za + // ymm2 = gaf (TFX_HIGHLIGHT || TFX_HIGHLIGHT2 && !tcc) + // ymm3 = fm + // ymm4 = zm + // ymm5 = rb + // ymm6 = ga + // ymm7 = test + + TestAlpha(); + + // ecx = steps + // esi = fzbr + // edi = fzbc + // ebp = za + // ymm2 = gaf (TFX_HIGHLIGHT || TFX_HIGHLIGHT2 && !tcc) + // ymm3 = fm + // ymm4 = zm + // ymm5 = rb + // ymm6 = ga + // ymm7 = test + + ColorTFX(); + + // ecx = steps + // esi = fzbr + // edi = fzbc + // ebp = za + // ymm3 = fm + // ymm4 = zm + // ymm5 = rb + // ymm6 = ga + // ymm7 = test + + Fog(); + + // ecx = steps + // esi = fzbr + // edi = fzbc + // ebp = za + // ymm3 = fm + // ymm4 = zm + // ymm5 = rb + // ymm6 = ga + // ymm7 = test + + ReadFrame(); + + // ecx = steps + // esi = fzbr + // edi = fzbc + // ebp = za + // ymm2 = fd + // ymm3 = fm + // ymm4 = zm + // ymm5 = rb + // ymm6 = ga + // ymm7 = test + + TestDestAlpha(); + + // ecx = steps + // esi = fzbr + // edi = fzbc + // ebp = za + // ymm2 = fd + // ymm3 = fm + // ymm4 = zm + // ymm5 = rb + // ymm6 = ga + // ymm7 = test + + WriteMask(); + + // ebx = fa + // ecx = steps + // edx = fzm + // esi = fzbr + // edi = fzbc + // ebp = za + // ymm2 = fd + // ymm3 = fm + // ymm4 = zm + // ymm5 = rb + // ymm6 = ga + + WriteZBuf(); + + // ebx = fa + // ecx = steps + // edx = fzm + // esi = fzbr + // edi = fzbc + // - ebp + // ymm2 = fd + // ymm3 = fm + // - ymm4 + // ymm5 = rb + // ymm6 = ga + + AlphaBlend(); + + // ebx = fa + // ecx = steps + // edx = fzm + // esi = fzbr + // edi = fzbc + // ymm2 = fd + // ymm3 = fm + // ymm5 = rb + // ymm6 = ga + + WriteFrame(); + +L("step"); + + // if(steps <= 0) break; + + if(!m_sel.edge) + { + test(ecx, ecx); + + jle("exit", T_NEAR); + + Step(); + + jmp("loop", T_NEAR); + } + +L("exit"); + + pop(ebp); + pop(edi); + pop(esi); + pop(ebx); + + ret(8); +} + +void GSDrawScanlineCodeGenerator::Init() +{ + if(!m_sel.notest) + { + // int skip = left & 7; + + mov(ebx, edx); + and(edx, 7); + + // int steps = pixels + skip - 8; + + lea(ecx, ptr[ecx + edx - 8]); + + // left -= skip; + + sub(ebx, edx); + + // GSVector4i test = m_test[skip] | m_test[15 + (steps & (steps >> 31))]; + + mov(eax, ecx); + sar(eax, 31); + and(eax, ecx); + + vpmovsxbd(ymm7, ptr[edx * 8 + (size_t)&m_test[0]]); + vpmovsxbd(ymm0, ptr[eax * 8 + (size_t)&m_test[15]]); + vpor(ymm7, ymm0); + + shl(edx, 5); + } + else + { + mov(ebx, edx); // left + xor(edx, edx); // skip + lea(ecx, ptr[ecx - 8]); // steps + } + + // GSVector2i* fza_base = &m_local.gd->fzbr[top]; + + mov(esi, ptr[esp + _top]); + lea(esi, ptr[esi * 8]); + add(esi, ptr[&m_local.gd->fzbr]); + + // GSVector2i* fza_offset = &m_local.gd->fzbc[left >> 2]; + + lea(edi, ptr[ebx * 2]); + add(edi, ptr[&m_local.gd->fzbc]); + + if(m_sel.prim != GS_SPRITE_CLASS && (m_sel.fwrite && m_sel.fge || m_sel.zb) || m_sel.fb && (m_sel.edge || m_sel.tfx != TFX_NONE || m_sel.iip)) + { + // edx = &m_local.d[skip] + + lea(edx, ptr[edx * 8 + (size_t)m_local.d]); + + // ebx = &v + + mov(ebx, ptr[esp + _v]); + } + + if(m_sel.prim != GS_SPRITE_CLASS) + { + if(m_sel.fwrite && m_sel.fge || m_sel.zb) + { + vbroadcastf128(ymm0, ptr[ebx + offsetof(GSVertexSW, p)]); // v.p + + if(m_sel.fwrite && m_sel.fge) + { + // f = GSVector8i(vp).zzzzh().zzzz().add16(m_local.d[skip].f); + + vcvttps2dq(ymm1, ymm0); + vpshufhw(ymm1, ymm1, _MM_SHUFFLE(2, 2, 2, 2)); + vpshufd(ymm1, ymm1, _MM_SHUFFLE(2, 2, 2, 2)); + vpaddw(ymm1, ptr[edx + offsetof(GSScanlineLocalData::skip, f)]); + + vmovdqa(ptr[&m_local.temp.f], ymm1); + } + + if(m_sel.zb) + { + // z = vp.zzzz() + m_local.d[skip].z; + + vshufps(ymm0, ymm0, _MM_SHUFFLE(2, 2, 2, 2)); + vmovaps(ptr[&m_local.temp.z], ymm0); + vmovaps(ymm2, ptr[edx + offsetof(GSScanlineLocalData::skip, z)]); + vmovaps(ptr[&m_local.temp.zo], ymm2); + vaddps(ymm0, ymm2); + } + } + } + else + { + if(m_sel.ztest) + { + vpbroadcastd(ymm0, ptr[&m_local.p.z]); + } + } + + if(m_sel.fb) + { + if(m_sel.edge || m_sel.tfx != TFX_NONE) + { + vbroadcastf128(ymm4, ptr[ebx + offsetof(GSVertexSW, t)]); // v.t + } + + if(m_sel.edge) + { + // m_local.temp.cov = GSVector4i::cast(v.t).zzzzh().wwww().srl16(9); + + vpshufhw(ymm3, ymm4, _MM_SHUFFLE(2, 2, 2, 2)); + vpshufd(ymm3, ymm3, _MM_SHUFFLE(3, 3, 3, 3)); + vpsrlw(ymm3, 9); + + vmovdqa(ptr[&m_local.temp.cov], ymm3); + } + + if(m_sel.tfx != TFX_NONE) + { + if(m_sel.fst) + { + // GSVector4i vti(vt); + + vcvttps2dq(ymm6, ymm4); + + // s = vti.xxxx() + m_local.d[skip].s; + // t = vti.yyyy(); if(!sprite) t += m_local.d[skip].t; + + vpshufd(ymm2, ymm6, _MM_SHUFFLE(0, 0, 0, 0)); + vpshufd(ymm3, ymm6, _MM_SHUFFLE(1, 1, 1, 1)); + + vpaddd(ymm2, ptr[edx + offsetof(GSScanlineLocalData::skip, s)]); + + if(m_sel.prim != GS_SPRITE_CLASS || m_sel.mmin) + { + vpaddd(ymm3, ptr[edx + offsetof(GSScanlineLocalData::skip, t)]); + } + else + { + if(m_sel.ltf) + { + vpshuflw(ymm6, ymm3, _MM_SHUFFLE(2, 2, 0, 0)); + vpshufhw(ymm6, ymm6, _MM_SHUFFLE(2, 2, 0, 0)); + vpsrlw(ymm6, 12); + vmovdqa(ptr[&m_local.temp.vf], ymm6); + } + } + + vmovdqa(ptr[&m_local.temp.s], ymm2); + vmovdqa(ptr[&m_local.temp.t], ymm3); + } + else + { + // s = vt.xxxx() + m_local.d[skip].s; + // t = vt.yyyy() + m_local.d[skip].t; + // q = vt.zzzz() + m_local.d[skip].q; + + vshufps(ymm2, ymm4, ymm4, _MM_SHUFFLE(0, 0, 0, 0)); + vshufps(ymm3, ymm4, ymm4, _MM_SHUFFLE(1, 1, 1, 1)); + vshufps(ymm4, ymm4, ymm4, _MM_SHUFFLE(2, 2, 2, 2)); + + vaddps(ymm2, ptr[edx + offsetof(GSScanlineLocalData::skip, s)]); + vaddps(ymm3, ptr[edx + offsetof(GSScanlineLocalData::skip, t)]); + vaddps(ymm4, ptr[edx + offsetof(GSScanlineLocalData::skip, q)]); + + vmovaps(ptr[&m_local.temp.s], ymm2); + vmovaps(ptr[&m_local.temp.t], ymm3); + vmovaps(ptr[&m_local.temp.q], ymm4); + } + } + + if(!(m_sel.tfx == TFX_DECAL && m_sel.tcc)) + { + if(m_sel.iip) + { + // GSVector4i vc = GSVector4i(v.c); + + vbroadcastf128(ymm6, ptr[ebx + offsetof(GSVertexSW, c)]); // v.c + vcvttps2dq(ymm6, ymm6); + + // vc = vc.upl16(vc.zwxy()); + + vpshufd(ymm5, ymm6, _MM_SHUFFLE(1, 0, 3, 2)); + vpunpcklwd(ymm6, ymm5); + + // rb = vc.xxxx().add16(m_local.d[skip].rb); + // ga = vc.zzzz().add16(m_local.d[skip].ga); + + vpshufd(ymm5, ymm6, _MM_SHUFFLE(0, 0, 0, 0)); + vpshufd(ymm6, ymm6, _MM_SHUFFLE(2, 2, 2, 2)); + + vpaddw(ymm5, ptr[edx + offsetof(GSScanlineLocalData::skip, rb)]); + vpaddw(ymm6, ptr[edx + offsetof(GSScanlineLocalData::skip, ga)]); + + vmovdqa(ptr[&m_local.temp.rb], ymm5); + vmovdqa(ptr[&m_local.temp.ga], ymm6); + } + else + { + if(m_sel.tfx == TFX_NONE) + { + vmovdqa(ymm5, ptr[&m_local.c.rb]); + vmovdqa(ymm6, ptr[&m_local.c.ga]); + } + } + } + } +} + +void GSDrawScanlineCodeGenerator::Step() +{ + // steps -= 8; + + sub(ecx, 8); + + // fza_offset += 2; + + add(edi, 16); + + if(m_sel.prim != GS_SPRITE_CLASS) + { + // zo += GSVector8::broadcast32(&m_local.d8.p.z); + + if(m_sel.zb) + { + vbroadcastss(ymm0, ptr[&m_local.d8.p.z]); + vaddps(ymm0, ptr[&m_local.temp.zo]); + vmovaps(ptr[&m_local.temp.zo], ymm0); + vaddps(ymm0, ptr[&m_local.temp.z]); + } + + // f = f.add16(GSVector8i::broadcast16(&m_local.d8.p.f)); + + if(m_sel.fwrite && m_sel.fge) + { + vpbroadcastw(ymm1, ptr[&m_local.d8.p.f]); + vpaddw(ymm1, ptr[&m_local.temp.f]); + vmovdqa(ptr[&m_local.temp.f], ymm1); + } + } + else + { + if(m_sel.ztest) + { + vpbroadcastd(ymm0, ptr[&m_local.p.z]); + } + } + + if(m_sel.fb) + { + if(m_sel.tfx != TFX_NONE) + { + if(m_sel.fst) + { + // GSVector8i stq = GSVector8i::cast(GSVector8(m_local.d8.stq)); + + vbroadcasti128(ymm4, ptr[&m_local.d8.stq]); + + // s = GSVector8::cast(GSVector8i::cast(s) + stq.xxxx()); + + vpshufd(ymm2, ymm4, _MM_SHUFFLE(0, 0, 0, 0)); + vpaddd(ymm2, ptr[&m_local.temp.s]); + vmovdqa(ptr[&m_local.temp.s], ymm2); + + if(m_sel.prim != GS_SPRITE_CLASS || m_sel.mmin) + { + // t = GSVector8::cast(GSVector8i::cast(t) + stq.yyyy()); + + vpshufd(ymm3, ymm4, _MM_SHUFFLE(1, 1, 1, 1)); + vpaddd(ymm3, ptr[&m_local.temp.t]); + vmovdqa(ptr[&m_local.temp.t], ymm3); + } + else + { + vmovdqa(ymm3, ptr[&m_local.temp.t]); + } + } + else + { + // GSVector8 stq(m_local.d8.stq); + + // s += stq.xxxx(); + // t += stq.yyyy(); + // q += stq.zzzz(); + + vbroadcastf128(ymm4, ptr[&m_local.d8.stq]); + + vshufps(ymm2, ymm4, ymm4, _MM_SHUFFLE(0, 0, 0, 0)); + vshufps(ymm3, ymm4, ymm4, _MM_SHUFFLE(1, 1, 1, 1)); + vshufps(ymm4, ymm4, ymm4, _MM_SHUFFLE(2, 2, 2, 2)); + + vaddps(ymm2, ptr[&m_local.temp.s]); + vaddps(ymm3, ptr[&m_local.temp.t]); + vaddps(ymm4, ptr[&m_local.temp.q]); + + vmovaps(ptr[&m_local.temp.s], ymm2); + vmovaps(ptr[&m_local.temp.t], ymm3); + vmovaps(ptr[&m_local.temp.q], ymm4); + } + } + + if(!(m_sel.tfx == TFX_DECAL && m_sel.tcc)) + { + if(m_sel.iip) + { + // GSVector8i c = GSVector8i::broadcast64(&m_local.d8.c); + + vpbroadcastq(ymm7, ptr[&m_local.d8.c]); + + // rb = rb.add16(c.xxxx()).max_i16(GSVector8i::zero()); + // ga = ga.add16(c.yyyy()).max_i16(GSVector8i::zero()); + + vpshufd(ymm5, ymm7, _MM_SHUFFLE(0, 0, 0, 0)); + vpshufd(ymm6, ymm7, _MM_SHUFFLE(1, 1, 1, 1)); + + vpaddw(ymm5, ptr[&m_local.temp.rb]); + vpaddw(ymm6, ptr[&m_local.temp.ga]); + + // FIXME: color may underflow and roll over at the end of the line, if decreasing + + vpxor(ymm7, ymm7); + vpmaxsw(ymm5, ymm7); + vpmaxsw(ymm6, ymm7); + + vmovdqa(ptr[&m_local.temp.rb], ymm5); + vmovdqa(ptr[&m_local.temp.ga], ymm6); + } + else + { + if(m_sel.tfx == TFX_NONE) + { + vmovdqa(ymm5, ptr[&m_local.c.rb]); + vmovdqa(ymm6, ptr[&m_local.c.ga]); + } + } + } + } + + if(!m_sel.notest) + { + // test = m_test[15 + (steps & (steps >> 31))]; + + mov(edx, ecx); + sar(edx, 31); + and(edx, ecx); + + vpmovsxbd(ymm7, ptr[edx * 8 + (size_t)&m_test[15]]); + } +} + +void GSDrawScanlineCodeGenerator::TestZ(const Ymm& temp1, const Ymm& temp2) +{ + if(!m_sel.zb) + { + return; + } + + // int za = fza_base.y + fza_offset->y; + + mov(ebp, ptr[esi + 4]); + add(ebp, ptr[edi + 4]); + + // GSVector8i zs = zi; + + if(m_sel.prim != GS_SPRITE_CLASS) + { + if(m_sel.zoverflow) + { + // zs = (GSVector8i(z * 0.5f) << 1) | (GSVector8i(z) & GSVector8i::x00000001()); + + vbroadcastss(temp1, ptr[&GSVector8::m_half]); + vmulps(temp1, ymm0); + vcvttps2dq(temp1, temp1); + vpslld(temp1, 1); + + vcvttps2dq(ymm0, ymm0); + vpcmpeqd(temp2, temp2); + vpsrld(temp2, 31); + vpand(ymm0, temp2); + + vpor(ymm0, temp1); + } + else + { + // zs = GSVector8i(z); + + vcvttps2dq(ymm0, ymm0); + } + + if(m_sel.zwrite) + { + vmovdqa(ptr[&m_local.temp.zs], ymm0); + } + } + + if(m_sel.ztest) + { + ReadPixel(ymm1, temp1, ebp); + + if(m_sel.zwrite && m_sel.zpsm < 2) + { + vmovdqa(ptr[&m_local.temp.zd], ymm1); + } + + // zd &= 0xffffffff >> m_sel.zpsm * 8; + + if(m_sel.zpsm) + { + vpslld(ymm1, (uint8)(m_sel.zpsm * 8)); + vpsrld(ymm1, (uint8)(m_sel.zpsm * 8)); + } + + if(m_sel.zoverflow || m_sel.zpsm == 0) + { + // GSVector8i o = GSVector8i::x80000000(); + + vpcmpeqd(temp1, temp1); + vpslld(temp1, 31); + + // GSVector8i zso = zs - o; + // GSVector8i zdo = zd - o; + + vpsubd(ymm0, temp1); + vpsubd(ymm1, temp1); + } + + switch(m_sel.ztst) + { + case ZTST_GEQUAL: + // test |= zso < zdo; // ~(zso >= zdo) + vpcmpgtd(ymm1, ymm0); + vpor(ymm7, ymm1); + break; + + case ZTST_GREATER: // TODO: tidus hair and chocobo wings only appear fully when this is tested as ZTST_GEQUAL + // test |= zso <= zdo; // ~(zso > zdo) + vpcmpgtd(ymm0, ymm1); + vpcmpeqd(temp1, temp1); + vpxor(ymm0, temp1); + vpor(ymm7, ymm0); + break; + } + + alltrue(); + } +} + +void GSDrawScanlineCodeGenerator::SampleTexture() +{ + if(!m_sel.fb || m_sel.tfx == TFX_NONE) + { + return; + } + + mov(ebx, ptr[&m_local.gd->tex[0]]); + + if(m_sel.tlu) + { + mov(edx, ptr[&m_local.gd->clut]); + } + + // ebx = tex + // edx = clut + + if(!m_sel.fst) + { + vrcpps(ymm0, ymm4); + + vmulps(ymm2, ymm0); + vmulps(ymm3, ymm0); + + vcvttps2dq(ymm2, ymm2); + vcvttps2dq(ymm3, ymm3); + + if(m_sel.ltf) + { + // u -= 0x8000; + // v -= 0x8000; + + mov(eax, 0x8000); + vmovd(xmm4, eax); + vpbroadcastd(ymm4, xmm4); + + vpsubd(ymm2, ymm4); + vpsubd(ymm3, ymm4); + } + } + + // ymm2 = u + // ymm3 = v + + if(m_sel.ltf) + { + // GSVector8i uf = u.xxzzlh().srl16(1); + + vpshuflw(ymm0, ymm2, _MM_SHUFFLE(2, 2, 0, 0)); + vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); + vpsrlw(ymm0, 12); + vmovdqa(ptr[&m_local.temp.uf], ymm0); + + if(m_sel.prim != GS_SPRITE_CLASS) + { + // GSVector8i vf = v.xxzzlh().srl16(1); + + vpshuflw(ymm0, ymm3, _MM_SHUFFLE(2, 2, 0, 0)); + vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); + vpsrlw(ymm0, 12); + vmovdqa(ptr[&m_local.temp.vf], ymm0); + } + } + + // GSVector8i uv0 = u.sra32(16).ps32(v.sra32(16)); + + vpsrad(ymm2, 16); + vpsrad(ymm3, 16); + vpackssdw(ymm2, ymm3); + + if(m_sel.ltf) + { + // GSVector8i uv1 = uv0.add16(GSVector8i::x0001()); + + vpcmpeqd(ymm1, ymm1); + vpsrlw(ymm1, 15); + vpaddw(ymm3, ymm2, ymm1); + + // uv0 = Wrap(uv0); + // uv1 = Wrap(uv1); + + Wrap(ymm2, ymm3); + } + else + { + // uv0 = Wrap(uv0); + + Wrap(ymm2); + } + + // ymm2 = uv0 + // ymm3 = uv1 (ltf) + // ymm0, ymm1, ymm4, ymm5, ymm6 = free + // ymm7 = used + + // GSVector8i y0 = uv0.uph16() << tw; + // GSVector8i x0 = uv0.upl16(); + + vpxor(ymm0, ymm0); + + vpunpcklwd(ymm4, ymm2, ymm0); + vpunpckhwd(ymm2, ymm2, ymm0); + vpslld(ymm2, (uint8)(m_sel.tw + 3)); + + // ymm0 = 0 + // ymm2 = y0 + // ymm3 = uv1 (ltf) + // ymm4 = x0 + // ymm1, ymm5, ymm6 = free + // ymm7 = used + + if(m_sel.ltf) + { + // GSVector8i y1 = uv1.uph16() << tw; + // GSVector8i x1 = uv1.upl16(); + + vpunpcklwd(ymm6, ymm3, ymm0); + vpunpckhwd(ymm3, ymm3, ymm0); + vpslld(ymm3, (uint8)(m_sel.tw + 3)); + + // ymm2 = y0 + // ymm3 = y1 + // ymm4 = x0 + // ymm6 = x1 + // ymm0, ymm5, ymm6 = free + // ymm7 = used + + // GSVector8i addr00 = y0 + x0; + // GSVector8i addr01 = y0 + x1; + // GSVector8i addr10 = y1 + x0; + // GSVector8i addr11 = y1 + x1; + + vpaddd(ymm5, ymm2, ymm4); + vpaddd(ymm2, ymm2, ymm6); + vpaddd(ymm0, ymm3, ymm4); + vpaddd(ymm3, ymm3, ymm6); + + // ymm5 = addr00 + // ymm2 = addr01 + // ymm0 = addr10 + // ymm3 = addr11 + // ymm1, ymm4, ymm6 = free + // ymm7 = used + + // c00 = addr00.gather32_32((const uint32/uint8*)tex[, clut]); + // c01 = addr01.gather32_32((const uint32/uint8*)tex[, clut]); + // c10 = addr10.gather32_32((const uint32/uint8*)tex[, clut]); + // c11 = addr11.gather32_32((const uint32/uint8*)tex[, clut]); + + ReadTexel(4, 0); + + // ymm6 = c00 + // ymm4 = c01 + // ymm1 = c10 + // ymm5 = c11 + // ymm0, ymm2, ymm3 = free + // ymm7 = used + + vmovdqa(ymm0, ptr[&m_local.temp.uf]); + + // GSVector8i rb00 = c00 & mask; + // GSVector8i ga00 = (c00 >> 8) & mask; + + vpsllw(ymm2, ymm6, 8); + vpsrlw(ymm2, 8); + vpsrlw(ymm6, 8); + + // GSVector8i rb01 = c01 & mask; + // GSVector8i ga01 = (c01 >> 8) & mask; + + vpsllw(ymm3, ymm4, 8); + vpsrlw(ymm3, 8); + vpsrlw(ymm4, 8); + + // ymm0 = uf + // ymm2 = rb00 + // ymm3 = rb01 + // ymm6 = ga00 + // ymm4 = ga01 + // ymm1 = c10 + // ymm5 = c11 + // ymm7 = used + + // rb00 = rb00.lerp16_4(rb01, uf); + // ga00 = ga00.lerp16_4(ga01, uf); + + lerp16_4(ymm3, ymm2, ymm0); + lerp16_4(ymm4, ymm6, ymm0); + + // ymm0 = uf + // ymm3 = rb00 + // ymm4 = ga00 + // ymm1 = c10 + // ymm5 = c11 + // ymm2, ymm6 = free + // ymm7 = used + + // GSVector8i rb10 = c10 & mask; + // GSVector8i ga10 = (c10 >> 8) & mask; + + vpsrlw(ymm2, ymm1, 8); + vpsllw(ymm1, 8); + vpsrlw(ymm1, 8); + + // GSVector8i rb11 = c11 & mask; + // GSVector8i ga11 = (c11 >> 8) & mask; + + vpsrlw(ymm6, ymm5, 8); + vpsllw(ymm5, 8); + vpsrlw(ymm5, 8); + + // ymm0 = uf + // ymm3 = rb00 + // ymm4 = ga00 + // ymm1 = rb10 + // ymm5 = rb11 + // ymm2 = ga10 + // ymm6 = ga11 + // ymm7 = used + + // rb10 = rb10.lerp16_4(rb11, uf); + // ga10 = ga10.lerp16_4(ga11, uf); + + lerp16_4(ymm5, ymm1, ymm0); + lerp16_4(ymm6, ymm2, ymm0); + + // ymm3 = rb00 + // ymm4 = ga00 + // ymm5 = rb10 + // ymm6 = ga10 + // ymm0, ymm1, ymm2 = free + // ymm7 = used + + // rb00 = rb00.lerp16_4(rb10, vf); + // ga00 = ga00.lerp16_4(ga10, vf); + + vmovdqa(ymm0, ptr[&m_local.temp.vf]); + + lerp16_4(ymm5, ymm3, ymm0); + lerp16_4(ymm6, ymm4, ymm0); + } + else + { + // GSVector8i addr00 = y0 + x0; + + vpaddd(ymm5, ymm2, ymm4); + + // c00 = addr00.gather32_32((const uint32/uint8*)tex[, clut]); + + ReadTexel(1, 0); + + // GSVector8i mask = GSVector8i::x00ff(); + + // c[0] = c00 & mask; + // c[1] = (c00 >> 8) & mask; + + vpsllw(ymm5, ymm6, 8); + vpsrlw(ymm5, 8); + vpsrlw(ymm6, 8); + } +} + +void GSDrawScanlineCodeGenerator::Wrap(const Ymm& uv) +{ + // ymm0, ymm1, ymm4, ymm5, ymm6 = free + + int wms_clamp = ((m_sel.wms + 1) >> 1) & 1; + int wmt_clamp = ((m_sel.wmt + 1) >> 1) & 1; + + int region = ((m_sel.wms | m_sel.wmt) >> 1) & 1; + + if(wms_clamp == wmt_clamp) + { + if(wms_clamp) + { + if(region) + { + vbroadcasti128(ymm0, ptr[&m_local.gd->t.min]); + vpmaxsw(uv, ymm0); + } + else + { + vpxor(ymm0, ymm0); + vpmaxsw(uv, ymm0); + } + + vbroadcasti128(ymm0, ptr[&m_local.gd->t.max]); + vpminsw(uv, ymm0); + } + else + { + vbroadcasti128(ymm0, ptr[&m_local.gd->t.min]); + vpand(uv, ymm0); + + if(region) + { + vbroadcasti128(ymm0, ptr[&m_local.gd->t.max]); + vpor(uv, ymm0); + } + } + } + else + { + vbroadcasti128(ymm4, ptr[&m_local.gd->t.min]); + vbroadcasti128(ymm5, ptr[&m_local.gd->t.max]); + vbroadcasti128(ymm0, ptr[&m_local.gd->t.mask]); + + // GSVector8i repeat = (t & m_local.gd->t.min) | m_local.gd->t.max; + + vpand(ymm1, uv, ymm4); + + if(region) + { + vpor(ymm1, ymm5); + } + + // GSVector8i clamp = t.sat_i16(m_local.gd->t.min, m_local.gd->t.max); + + vpmaxsw(uv, ymm4); + vpminsw(uv, ymm5); + + // clamp.blend8(repeat, m_local.gd->t.mask); + + vpblendvb(uv, ymm1, ymm0); + } +} + +void GSDrawScanlineCodeGenerator::Wrap(const Ymm& uv0, const Ymm& uv1) +{ + // ymm0, ymm1, ymm4, ymm5, ymm6 = free + + int wms_clamp = ((m_sel.wms + 1) >> 1) & 1; + int wmt_clamp = ((m_sel.wmt + 1) >> 1) & 1; + + int region = ((m_sel.wms | m_sel.wmt) >> 1) & 1; + + if(wms_clamp == wmt_clamp) + { + if(wms_clamp) + { + if(region) + { + vbroadcasti128(ymm4, ptr[&m_local.gd->t.min]); + vpmaxsw(uv0, ymm4); + vpmaxsw(uv1, ymm4); + } + else + { + vpxor(ymm0, ymm0); + vpmaxsw(uv0, ymm0); + vpmaxsw(uv1, ymm0); + } + + vbroadcasti128(ymm5, ptr[&m_local.gd->t.max]); + vpminsw(uv0, ymm5); + vpminsw(uv1, ymm5); + } + else + { + vbroadcasti128(ymm4, ptr[&m_local.gd->t.min]); + vpand(uv0, ymm4); + vpand(uv1, ymm4); + + if(region) + { + vbroadcasti128(ymm5, ptr[&m_local.gd->t.max]); + vpor(uv0, ymm5); + vpor(uv1, ymm5); + } + } + } + else + { + vbroadcasti128(ymm4, ptr[&m_local.gd->t.min]); + vbroadcasti128(ymm5, ptr[&m_local.gd->t.max]); + vbroadcasti128(ymm0, ptr[&m_local.gd->t.mask]); + + // uv0 + + // GSVector8i repeat = (t & m_local.gd->t.min) | m_local.gd->t.max; + + vpand(ymm1, uv0, ymm4); + + if(region) + { + vpor(ymm1, ymm5); + } + + // GSVector8i clamp = t.sat_i16(m_local.gd->t.min, m_local.gd->t.max); + + vpmaxsw(uv0, ymm4); + vpminsw(uv0, ymm5); + + // clamp.blend8(repeat, m_local.gd->t.mask); + + vpblendvb(uv0, ymm1, ymm0); + + // uv1 + + // GSVector8i repeat = (t & m_local.gd->t.min) | m_local.gd->t.max; + + vpand(ymm1, uv1, ymm4); + + if(region) + { + vpor(ymm1, ymm5); + } + + // GSVector4i clamp = t.sat_i16(m_local.gd->t.min, m_local.gd->t.max); + + vpmaxsw(uv1, ymm4); + vpminsw(uv1, ymm5); + + // clamp.blend8(repeat, m_local.gd->t.mask); + + vpblendvb(uv1, ymm1, ymm0); + } +} + +void GSDrawScanlineCodeGenerator::SampleTextureLOD() +{ + if(!m_sel.fb || m_sel.tfx == TFX_NONE) + { + return; + } + + push(ebp); + + mov(ebp, (size_t)m_local.gd->tex); + + if(m_sel.tlu) + { + mov(edx, ptr[&m_local.gd->clut]); + } + + if(!m_sel.fst) + { + vrcpps(ymm0, ymm4); + + vmulps(ymm2, ymm0); + vmulps(ymm3, ymm0); + + vcvttps2dq(ymm2, ymm2); + vcvttps2dq(ymm3, ymm3); + } + + // ymm2 = u + // ymm3 = v + // ymm4 = q + // ymm0 = ymm1 = ymm5 = ymm6 = free + + // TODO: if the fractional part is not needed in round-off mode then there is a faster integer log2 (just take the exp) (but can we round it?) + + if(!m_sel.lcm) + { + // lod = -log2(Q) * (1 << L) + K + + vpcmpeqd(ymm1, ymm1); + vpsrld(ymm1, ymm1, 25); + vpslld(ymm0, ymm4, 1); + vpsrld(ymm0, ymm0, 24); + vpsubd(ymm0, ymm1); + vcvtdq2ps(ymm0, ymm0); + + // ymm0 = (float)(exp(q) - 127) + + vpslld(ymm4, ymm4, 9); + vpsrld(ymm4, ymm4, 9); + vorps(ymm4, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[3]]); + + // ymm4 = mant(q) | 1.0f + + if(m_cpu.has(util::Cpu::tFMA)) + { + vmovaps(ymm5, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[0]]); // c0 + vfmadd213ps(ymm5, ymm4, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[1]]); // c0 * ymm4 + c1 + vfmadd213ps(ymm5, ymm4, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[2]]); // (c0 * ymm4 + c1) * ymm4 + c2 + vsubps(ymm4, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[3]]); // ymm4 - 1.0f + vfmadd213ps(ymm4, ymm5, ymm0); // ((c0 * ymm4 + c1) * ymm4 + c2) * (ymm4 - 1.0f) + ymm0 + } + else + { + vmulps(ymm5, ymm4, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[0]]); + vaddps(ymm5, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[1]]); + vmulps(ymm5, ymm4); + vsubps(ymm4, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[3]]); + vaddps(ymm5, ptr[&GSDrawScanlineCodeGenerator::m_log2_coef[2]]); + vmulps(ymm4, ymm5); + vaddps(ymm4, ymm0); + } + + // ymm4 = log2(Q) = ((((c0 * ymm4) + c1) * ymm4) + c2) * (ymm4 - 1.0f) + ymm0 + + if(m_cpu.has(util::Cpu::tFMA)) + { + vmovaps(ymm5, ptr[&m_local.gd->l]); + vfmadd213ps(ymm4, ymm5, ptr[&m_local.gd->k]); + } + else + { + vmulps(ymm4, ptr[&m_local.gd->l]); + vaddps(ymm4, ptr[&m_local.gd->k]); + } + + // ymm4 = (-log2(Q) * (1 << L) + K) * 0x10000 + + vxorps(ymm0, ymm0); + vminps(ymm4, ptr[&m_local.gd->mxl]); + vmaxps(ymm4, ymm0); + vcvtps2dq(ymm4, ymm4); + + if(m_sel.mmin == 1) // round-off mode + { + mov(eax, 0x8000); + vmovd(xmm0, eax); + vpbroadcastd(ymm0, xmm0); + vpaddd(ymm4, ymm0); + } + + vpsrld(ymm0, ymm4, 16); + + vmovdqa(ptr[&m_local.temp.lod.i], ymm0); +/* +vpslld(ymm5, ymm0, 6); +vpslld(ymm6, ymm4, 16); +vpsrld(ymm6, ymm6, 24); +return; +*/ + if(m_sel.mmin == 2) // trilinear mode + { + vpshuflw(ymm1, ymm4, _MM_SHUFFLE(2, 2, 0, 0)); + vpshufhw(ymm1, ymm1, _MM_SHUFFLE(2, 2, 0, 0)); + vmovdqa(ptr[&m_local.temp.lod.f], ymm1); + } + + // shift u/v/minmax by (int)lod + + vpsravd(ymm2, ymm2, ymm0); + vpsravd(ymm3, ymm3, ymm0); + + vmovdqa(ptr[&m_local.temp.uv[0]], ymm2); + vmovdqa(ptr[&m_local.temp.uv[1]], ymm3); + + // m_local.gd->t.minmax => m_local.temp.uv_minmax[0/1] + + vpxor(ymm1, ymm1); + + vbroadcasti128(ymm4, ptr[&m_local.gd->t.min]); + vpunpcklwd(ymm5, ymm4, ymm1); // minu + vpunpckhwd(ymm6, ymm4, ymm1); // minv + vpsrlvd(ymm5, ymm5, ymm0); + vpsrlvd(ymm6, ymm6, ymm0); + vpackusdw(ymm5, ymm6); + + vbroadcasti128(ymm4, ptr[&m_local.gd->t.max]); + vpunpcklwd(ymm6, ymm4, ymm1); // maxu + vpunpckhwd(ymm4, ymm4, ymm1); // maxv + vpsrlvd(ymm6, ymm6, ymm0); + vpsrlvd(ymm4, ymm4, ymm0); + vpackusdw(ymm6, ymm4); + + vmovdqa(ptr[&m_local.temp.uv_minmax[0]], ymm5); + vmovdqa(ptr[&m_local.temp.uv_minmax[1]], ymm6); + } + else + { + // lod = K + + vmovd(xmm0, ptr[&m_local.gd->lod.i.u32[0]]); + + vpsrad(ymm2, xmm0); + vpsrad(ymm3, xmm0); + + vmovdqa(ptr[&m_local.temp.uv[0]], ymm2); + vmovdqa(ptr[&m_local.temp.uv[1]], ymm3); + + vmovdqa(ymm5, ptr[&m_local.temp.uv_minmax[0]]); + vmovdqa(ymm6, ptr[&m_local.temp.uv_minmax[1]]); + } + + // ymm2 = m_local.temp.uv[0] = u (level m) + // ymm3 = m_local.temp.uv[1] = v (level m) + // ymm5 = minuv + // ymm6 = maxuv + + if(m_sel.ltf) + { + // u -= 0x8000; + // v -= 0x8000; + + mov(eax, 0x8000); + vmovd(xmm4, eax); + vpbroadcastd(ymm4, xmm4); + + vpsubd(ymm2, ymm4); + vpsubd(ymm3, ymm4); + + // GSVector8i uf = u.xxzzlh().srl16(1); + + vpshuflw(ymm0, ymm2, _MM_SHUFFLE(2, 2, 0, 0)); + vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); + vpsrlw(ymm0, 12); + vmovdqa(ptr[&m_local.temp.uf], ymm0); + + // GSVector8i vf = v.xxzzlh().srl16(1); + + vpshuflw(ymm0, ymm3, _MM_SHUFFLE(2, 2, 0, 0)); + vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); + vpsrlw(ymm0, 12); + vmovdqa(ptr[&m_local.temp.vf], ymm0); + } + + // GSVector8i uv0 = u.sra32(16).ps32(v.sra32(16)); + + vpsrad(ymm2, 16); + vpsrad(ymm3, 16); + vpackssdw(ymm2, ymm3); + + if(m_sel.ltf) + { + // GSVector8i uv1 = uv0.add16(GSVector8i::x0001()); + + vpcmpeqd(ymm1, ymm1); + vpsrlw(ymm1, 15); + vpaddw(ymm3, ymm2, ymm1); + + // uv0 = Wrap(uv0); + // uv1 = Wrap(uv1); + + WrapLOD(ymm2, ymm3); + } + else + { + // uv0 = Wrap(uv0); + + WrapLOD(ymm2); + } + + // ymm2 = uv0 + // ymm3 = uv1 (ltf) + // ymm0, ymm1, ymm4, ymm5, ymm6 = free + // ymm7 = used + + // GSVector8i x0 = uv0.upl16(); + // GSVector8i y0 = uv0.uph16() << tw; + + vpxor(ymm0, ymm0); + + vpunpcklwd(ymm4, ymm2, ymm0); + vpunpckhwd(ymm2, ymm2, ymm0); + vpslld(ymm2, (uint8)(m_sel.tw + 3)); + + // ymm0 = 0 + // ymm2 = y0 + // ymm3 = uv1 (ltf) + // ymm4 = x0 + // ymm1, ymm5, ymm6 = free + // ymm7 = used + + if(m_sel.ltf) + { + // GSVector8i x1 = uv1.upl16(); + // GSVector8i y1 = uv1.uph16() << tw; + + vpunpcklwd(ymm6, ymm3, ymm0); + vpunpckhwd(ymm3, ymm3, ymm0); + vpslld(ymm3, (uint8)(m_sel.tw + 3)); + + // ymm2 = y0 + // ymm3 = y1 + // ymm4 = x0 + // ymm6 = x1 + // ymm0, ymm5, ymm6 = free + // ymm7 = used + + // GSVector8i addr00 = y0 + x0; + // GSVector8i addr01 = y0 + x1; + // GSVector8i addr10 = y1 + x0; + // GSVector8i addr11 = y1 + x1; + + vpaddd(ymm5, ymm2, ymm4); + vpaddd(ymm2, ymm2, ymm6); + vpaddd(ymm0, ymm3, ymm4); + vpaddd(ymm3, ymm3, ymm6); + + // ymm5 = addr00 + // ymm2 = addr01 + // ymm0 = addr10 + // ymm3 = addr11 + // ymm1, ymm4, ymm6 = free + // ymm7 = used + + // c00 = addr00.gather32_32((const uint32/uint8*)tex[, clut]); + // c01 = addr01.gather32_32((const uint32/uint8*)tex[, clut]); + // c10 = addr10.gather32_32((const uint32/uint8*)tex[, clut]); + // c11 = addr11.gather32_32((const uint32/uint8*)tex[, clut]); + + ReadTexel(4, 0); + + // ymm6 = c00 + // ymm4 = c01 + // ymm1 = c10 + // ymm5 = c11 + // ymm0, ymm2, ymm3 = free + // ymm7 = used + + vmovdqa(ymm0, ptr[&m_local.temp.uf]); + + // GSVector8i rb00 = c00 & mask; + // GSVector8i ga00 = (c00 >> 8) & mask; + + vpsllw(ymm2, ymm6, 8); + vpsrlw(ymm2, 8); + vpsrlw(ymm6, 8); + + // GSVector8i rb01 = c01 & mask; + // GSVector8i ga01 = (c01 >> 8) & mask; + + vpsllw(ymm3, ymm4, 8); + vpsrlw(ymm3, 8); + vpsrlw(ymm4, 8); + + // ymm0 = uf + // ymm2 = rb00 + // ymm3 = rb01 + // ymm6 = ga00 + // ymm4 = ga01 + // ymm1 = c10 + // ymm5 = c11 + // ymm7 = used + + // rb00 = rb00.lerp16_4(rb01, uf); + // ga00 = ga00.lerp16_4(ga01, uf); + + lerp16_4(ymm3, ymm2, ymm0); + lerp16_4(ymm4, ymm6, ymm0); + + // ymm0 = uf + // ymm3 = rb00 + // ymm4 = ga00 + // ymm1 = c10 + // ymm5 = c11 + // ymm2, ymm6 = free + // ymm7 = used + + // GSVector8i rb10 = c10 & mask; + // GSVector8i ga10 = (c10 >> 8) & mask; + + vpsrlw(ymm2, ymm1, 8); + vpsllw(ymm1, 8); + vpsrlw(ymm1, 8); + + // GSVector8i rb11 = c11 & mask; + // GSVector8i ga11 = (c11 >> 8) & mask; + + vpsrlw(ymm6, ymm5, 8); + vpsllw(ymm5, 8); + vpsrlw(ymm5, 8); + + // ymm0 = uf + // ymm3 = rb00 + // ymm4 = ga00 + // ymm1 = rb10 + // ymm5 = rb11 + // ymm2 = ga10 + // ymm6 = ga11 + // ymm7 = used + + // rb10 = rb10.lerp16_4(rb11, uf); + // ga10 = ga10.lerp16_4(ga11, uf); + + lerp16_4(ymm5, ymm1, ymm0); + lerp16_4(ymm6, ymm2, ymm0); + + // ymm3 = rb00 + // ymm4 = ga00 + // ymm5 = rb10 + // ymm6 = ga10 + // ymm0, ymm1, ymm2 = free + // ymm7 = used + + // rb00 = rb00.lerp16_4(rb10, vf); + // ga00 = ga00.lerp16_4(ga10, vf); + + vmovdqa(ymm0, ptr[&m_local.temp.vf]); + + lerp16_4(ymm5, ymm3, ymm0); + lerp16_4(ymm6, ymm4, ymm0); + } + else + { + // GSVector8i addr00 = y0 + x0; + + vpaddd(ymm5, ymm2, ymm4); + + // c00 = addr00.gather32_32((const uint32/uint8*)tex[, clut]); + + ReadTexel(1, 0); + + // GSVector8i mask = GSVector8i::x00ff(); + + // c[0] = c00 & mask; + // c[1] = (c00 >> 8) & mask; + + vpsllw(ymm5, ymm6, 8); + vpsrlw(ymm5, 8); + vpsrlw(ymm6, 8); + } + + if(m_sel.mmin != 1) // !round-off mode + { + vmovdqa(ptr[&m_local.temp.trb], ymm5); + vmovdqa(ptr[&m_local.temp.tga], ymm6); + + vmovdqa(ymm2, ptr[&m_local.temp.uv[0]]); + vmovdqa(ymm3, ptr[&m_local.temp.uv[1]]); + + vpsrad(ymm2, 1); + vpsrad(ymm3, 1); + + vmovdqa(ymm5, ptr[&m_local.temp.uv_minmax[0]]); + vmovdqa(ymm6, ptr[&m_local.temp.uv_minmax[1]]); + + vpsrlw(ymm5, 1); + vpsrlw(ymm6, 1); + + if(m_sel.ltf) + { + // u -= 0x8000; + // v -= 0x8000; + + mov(eax, 0x8000); + vmovd(xmm4, eax); + vpbroadcastd(ymm4, xmm4); + + vpsubd(ymm2, ymm4); + vpsubd(ymm3, ymm4); + + // GSVector8i uf = u.xxzzlh().srl16(1); + + vpshuflw(ymm0, ymm2, _MM_SHUFFLE(2, 2, 0, 0)); + vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); + vpsrlw(ymm0, 12); + vmovdqa(ptr[&m_local.temp.uf], ymm0); + + // GSVector8i vf = v.xxzzlh().srl16(1); + + vpshuflw(ymm0, ymm3, _MM_SHUFFLE(2, 2, 0, 0)); + vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); + vpsrlw(ymm0, 12); + vmovdqa(ptr[&m_local.temp.vf], ymm0); + } + + // GSVector8i uv0 = u.sra32(16).ps32(v.sra32(16)); + + vpsrad(ymm2, 16); + vpsrad(ymm3, 16); + vpackssdw(ymm2, ymm3); + + if(m_sel.ltf) + { + // GSVector8i uv1 = uv0.add16(GSVector4i::x0001()); + + vpcmpeqd(ymm1, ymm1); + vpsrlw(ymm1, 15); + vpaddw(ymm3, ymm2, ymm1); + + // uv0 = Wrap(uv0); + // uv1 = Wrap(uv1); + + WrapLOD(ymm2, ymm3); + } + else + { + // uv0 = Wrap(uv0); + + WrapLOD(ymm2); + } + + // ymm2 = uv0 + // ymm3 = uv1 (ltf) + // ymm0, ymm1, ymm4, ymm5, ymm6 = free + // ymm7 = used + + // GSVector8i x0 = uv0.upl16(); + // GSVector8i y0 = uv0.uph16() << tw; + + vpxor(ymm0, ymm0); + + vpunpcklwd(ymm4, ymm2, ymm0); + vpunpckhwd(ymm2, ymm2, ymm0); + vpslld(ymm2, (uint8)(m_sel.tw + 3)); + + // ymm0 = 0 + // ymm2 = y0 + // ymm3 = uv1 (ltf) + // ymm4 = x0 + // ymm1, ymm5, ymm6 = free + // ymm7 = used + + if(m_sel.ltf) + { + // GSVector8i x1 = uv1.upl16(); + // GSVector8i y1 = uv1.uph16() << tw; + + vpunpcklwd(ymm6, ymm3, ymm0); + vpunpckhwd(ymm3, ymm3, ymm0); + vpslld(ymm3, (uint8)(m_sel.tw + 3)); + + // ymm2 = y0 + // ymm3 = y1 + // ymm4 = x0 + // ymm6 = x1 + // ymm0, ymm5, ymm6 = free + // ymm7 = used + + // GSVector8i addr00 = y0 + x0; + // GSVector8i addr01 = y0 + x1; + // GSVector8i addr10 = y1 + x0; + // GSVector8i addr11 = y1 + x1; + + vpaddd(ymm5, ymm2, ymm4); + vpaddd(ymm2, ymm2, ymm6); + vpaddd(ymm0, ymm3, ymm4); + vpaddd(ymm3, ymm3, ymm6); + + // ymm5 = addr00 + // ymm2 = addr01 + // ymm0 = addr10 + // ymm3 = addr11 + // ymm1, ymm4, ymm6 = free + // ymm7 = used + + // c00 = addr00.gather32_32((const uint32/uint8*)tex[, clut]); + // c01 = addr01.gather32_32((const uint32/uint8*)tex[, clut]); + // c10 = addr10.gather32_32((const uint32/uint8*)tex[, clut]); + // c11 = addr11.gather32_32((const uint32/uint8*)tex[, clut]); + + ReadTexel(4, 1); + + // ymm6 = c00 + // ymm4 = c01 + // ymm1 = c10 + // ymm5 = c11 + // ymm0, ymm2, ymm3 = free + // ymm7 = used + + vmovdqa(ymm0, ptr[&m_local.temp.uf]); + + // GSVector8i rb00 = c00 & mask; + // GSVector8i ga00 = (c00 >> 8) & mask; + + vpsllw(ymm2, ymm6, 8); + vpsrlw(ymm2, 8); + vpsrlw(ymm6, 8); + + // GSVector8i rb01 = c01 & mask; + // GSVector8i ga01 = (c01 >> 8) & mask; + + vpsllw(ymm3, ymm4, 8); + vpsrlw(ymm3, 8); + vpsrlw(ymm4, 8); + + // ymm0 = uf + // ymm2 = rb00 + // ymm3 = rb01 + // ymm6 = ga00 + // ymm4 = ga01 + // ymm1 = c10 + // ymm5 = c11 + // ymm7 = used + + // rb00 = rb00.lerp16_4(rb01, uf); + // ga00 = ga00.lerp16_4(ga01, uf); + + lerp16_4(ymm3, ymm2, ymm0); + lerp16_4(ymm4, ymm6, ymm0); + + // ymm0 = uf + // ymm3 = rb00 + // ymm4 = ga00 + // ymm1 = c10 + // ymm5 = c11 + // ymm2, ymm6 = free + // ymm7 = used + + // GSVector8i rb10 = c10 & mask; + // GSVector8i ga10 = (c10 >> 8) & mask; + + vpsrlw(ymm2, ymm1, 8); + vpsllw(ymm1, 8); + vpsrlw(ymm1, 8); + + // GSVector8i rb11 = c11 & mask; + // GSVector8i ga11 = (c11 >> 8) & mask; + + vpsrlw(ymm6, ymm5, 8); + vpsllw(ymm5, 8); + vpsrlw(ymm5, 8); + + // ymm0 = uf + // ymm3 = rb00 + // ymm4 = ga00 + // ymm1 = rb10 + // ymm5 = rb11 + // ymm2 = ga10 + // ymm6 = ga11 + // ymm7 = used + + // rb10 = rb10.lerp16_4(rb11, uf); + // ga10 = ga10.lerp16_4(ga11, uf); + + lerp16_4(ymm5, ymm1, ymm0); + lerp16_4(ymm6, ymm2, ymm0); + + // ymm3 = rb00 + // ymm4 = ga00 + // ymm5 = rb10 + // ymm6 = ga10 + // ymm0, ymm1, ymm2 = free + // ymm7 = used + + // rb00 = rb00.lerp16_4(rb10, vf); + // ga00 = ga00.lerp16_4(ga10, vf); + + vmovdqa(ymm0, ptr[&m_local.temp.vf]); + + lerp16_4(ymm5, ymm3, ymm0); + lerp16_4(ymm6, ymm4, ymm0); + } + else + { + // GSVector8i addr00 = y0 + x0; + + vpaddd(ymm5, ymm2, ymm4); + + // c00 = addr00.gather32_32((const uint32/uint8*)tex[, clut]); + + ReadTexel(1, 1); + + // GSVector8i mask = GSVector8i::x00ff(); + + // c[0] = c00 & mask; + // c[1] = (c00 >> 8) & mask; + + vpsllw(ymm5, ymm6, 8); + vpsrlw(ymm5, 8); + vpsrlw(ymm6, 8); + } + + vmovdqa(ymm0, ptr[m_sel.lcm ? &m_local.gd->lod.f : &m_local.temp.lod.f]); + vpsrlw(ymm0, ymm0, 1); + + vmovdqa(ymm2, ptr[&m_local.temp.trb]); + vmovdqa(ymm3, ptr[&m_local.temp.tga]); + + lerp16(ymm5, ymm2, ymm0, 0); + lerp16(ymm6, ymm3, ymm0, 0); + } + + pop(ebp); +} + +void GSDrawScanlineCodeGenerator::WrapLOD(const Ymm& uv) +{ + // ymm5 = minuv + // ymm6 = maxuv + // ymm0, ymm1, ymm4 = free + + int wms_clamp = ((m_sel.wms + 1) >> 1) & 1; + int wmt_clamp = ((m_sel.wmt + 1) >> 1) & 1; + + int region = ((m_sel.wms | m_sel.wmt) >> 1) & 1; + + if(wms_clamp == wmt_clamp) + { + if(wms_clamp) + { + if(region) + { + vpmaxsw(uv, ymm5); + } + else + { + vpxor(ymm0, ymm0); + vpmaxsw(uv, ymm0); + } + + vpminsw(uv, ymm6); + } + else + { + vpand(uv, ymm5); + + if(region) + { + vpor(uv, ymm6); + } + } + } + else + { + vbroadcasti128(ymm0, ptr[&m_local.gd->t.mask]); + + // GSVector8i repeat = (t & m_local.gd->t.min) | m_local.gd->t.max; + + vpand(ymm1, uv, ymm5); + + if(region) + { + vpor(ymm1, ymm6); + } + + // GSVector8i clamp = t.sat_i16(m_local.gd->t.min, m_local.gd->t.max); + + vpmaxsw(uv, ymm5); + vpminsw(uv, ymm6); + + // clamp.blend8(repeat, m_local.gd->t.mask); + + vpblendvb(uv, ymm1, ymm0); + } +} + +void GSDrawScanlineCodeGenerator::WrapLOD(const Ymm& uv0, const Ymm& uv1) +{ + // ymm5 = minuv + // ymm6 = maxuv + // ymm0, ymm1, ymm4 = free + + int wms_clamp = ((m_sel.wms + 1) >> 1) & 1; + int wmt_clamp = ((m_sel.wmt + 1) >> 1) & 1; + + int region = ((m_sel.wms | m_sel.wmt) >> 1) & 1; + + if(wms_clamp == wmt_clamp) + { + if(wms_clamp) + { + if(region) + { + vpmaxsw(uv0, ymm5); + vpmaxsw(uv1, ymm5); + } + else + { + vpxor(ymm0, ymm0); + vpmaxsw(uv0, ymm0); + vpmaxsw(uv1, ymm0); + } + + vpminsw(uv0, ymm6); + vpminsw(uv1, ymm6); + } + else + { + vpand(uv0, ymm5); + vpand(uv1, ymm5); + + if(region) + { + vpor(uv0, ymm6); + vpor(uv1, ymm6); + } + } + } + else + { + vbroadcasti128(ymm0, ptr[&m_local.gd->t.mask]); + + // uv0 + + // GSVector8i repeat = (t & m_local.gd->t.min) | m_local.gd->t.max; + + vpand(ymm1, uv0, ymm5); + + if(region) + { + vpor(ymm1, ymm6); + } + + // GSVector8i clamp = t.sat_i16(m_local.gd->t.min, m_local.gd->t.max); + + vpmaxsw(uv0, ymm5); + vpminsw(uv0, ymm6); + + // clamp.blend8(repeat, m_local.gd->t.mask); + + vpblendvb(uv0, ymm1, ymm0); + + // uv1 + + // GSVector8i repeat = (t & m_local.gd->t.min) | m_local.gd->t.max; + + vpand(ymm1, uv1, ymm5); + + if(region) + { + vpor(ymm1, ymm6); + } + + // GSVector8i clamp = t.sat_i16(m_local.gd->t.min, m_local.gd->t.max); + + vpmaxsw(uv1, ymm5); + vpminsw(uv1, ymm6); + + // clamp.blend8(repeat, m_local.gd->t.mask); + + vpblendvb(uv1, ymm1, ymm0); + } +} + +void GSDrawScanlineCodeGenerator::AlphaTFX() +{ + if(!m_sel.fb) + { + return; + } + + switch(m_sel.tfx) + { + case TFX_MODULATE: + + // GSVector8i ga = iip ? gaf : m_local.c.ga; + + vmovdqa(ymm4, ptr[m_sel.iip ? &m_local.temp.ga : &m_local.c.ga]); + + // gat = gat.modulate16<1>(ga).clamp8(); + + modulate16(ymm6, ymm4, 1); + + clamp16(ymm6, ymm3); + + // if(!tcc) gat = gat.mix16(ga.srl16(7)); + + if(!m_sel.tcc) + { + vpsrlw(ymm4, 7); + + mix16(ymm6, ymm4, ymm3); + } + + break; + + case TFX_DECAL: + + // if(!tcc) gat = gat.mix16(ga.srl16(7)); + + if(!m_sel.tcc) + { + // GSVector4i ga = iip ? gaf : m_local.c.ga; + + vmovdqa(ymm4, ptr[m_sel.iip ? &m_local.temp.ga : &m_local.c.ga]); + + vpsrlw(ymm4, 7); + + mix16(ymm6, ymm4, ymm3); + } + + break; + + case TFX_HIGHLIGHT: + + // GSVector4i ga = iip ? gaf : m_local.c.ga; + + vmovdqa(ymm4, ptr[m_sel.iip ? &m_local.temp.ga : &m_local.c.ga]); + vmovdqa(ymm2, ymm4); + + // gat = gat.mix16(!tcc ? ga.srl16(7) : gat.addus8(ga.srl16(7))); + + vpsrlw(ymm4, 7); + + if(m_sel.tcc) + { + vpaddusb(ymm4, ymm6); + } + + mix16(ymm6, ymm4, ymm3); + + break; + + case TFX_HIGHLIGHT2: + + // if(!tcc) gat = gat.mix16(ga.srl16(7)); + + if(!m_sel.tcc) + { + // GSVector4i ga = iip ? gaf : m_local.c.ga; + + vmovdqa(ymm4, ptr[m_sel.iip ? &m_local.temp.ga : &m_local.c.ga]); + vmovdqa(ymm2, ymm4); + + vpsrlw(ymm4, 7); + + mix16(ymm6, ymm4, ymm3); + } + + break; + + case TFX_NONE: + + // gat = iip ? ga.srl16(7) : ga; + + if(m_sel.iip) + { + vpsrlw(ymm6, 7); + } + + break; + } + + if(m_sel.aa1) + { + // gs_user figure 3-2: anti-aliasing after tfx, before tests, modifies alpha + + // FIXME: bios config screen cubes + + if(!m_sel.abe) + { + // a = cov + + if(m_sel.edge) + { + vmovdqa(ymm0, ptr[&m_local.temp.cov]); + } + else + { + vpcmpeqd(ymm0, ymm0); + vpsllw(ymm0, 15); + vpsrlw(ymm0, 8); + } + + mix16(ymm6, ymm0, ymm1); + } + else + { + // a = a == 0x80 ? cov : a + + vpcmpeqd(ymm0, ymm0); + vpsllw(ymm0, 15); + vpsrlw(ymm0, 8); + + if(m_sel.edge) + { + vmovdqa(ymm1, ptr[&m_local.temp.cov]); + } + else + { + vmovdqa(ymm1, ymm0); + } + + vpcmpeqw(ymm0, ymm6); + vpsrld(ymm0, 16); + vpslld(ymm0, 16); + + vpblendvb(ymm6, ymm1, ymm0); + } + } +} + +void GSDrawScanlineCodeGenerator::ReadMask() +{ + if(m_sel.fwrite) + { + vpbroadcastd(ymm3, ptr[&m_local.gd->fm]); + } + + if(m_sel.zwrite) + { + vpbroadcastd(ymm4, ptr[&m_local.gd->zm]); + } +} + +void GSDrawScanlineCodeGenerator::TestAlpha() +{ + switch(m_sel.afail) + { + case AFAIL_FB_ONLY: + if(!m_sel.zwrite) return; + break; + + case AFAIL_ZB_ONLY: + if(!m_sel.fwrite) return; + break; + + case AFAIL_RGB_ONLY: + if(!m_sel.zwrite && m_sel.fpsm == 1) return; + break; + } + + switch(m_sel.atst) + { + case ATST_NEVER: + // t = GSVector8i::xffffffff(); + vpcmpeqd(ymm1, ymm1); + break; + + case ATST_ALWAYS: + return; + + case ATST_LESS: + case ATST_LEQUAL: + // t = (ga >> 16) > m_local.gd->aref; + vpsrld(ymm1, ymm6, 16); + vbroadcasti128(ymm0, ptr[&m_local.gd->aref]); + vpcmpgtd(ymm1, ymm0); + break; + + case ATST_EQUAL: + // t = (ga >> 16) != m_local.gd->aref; + vpsrld(ymm1, ymm6, 16); + vbroadcasti128(ymm0, ptr[&m_local.gd->aref]); + vpcmpeqd(ymm1, ymm0); + vpcmpeqd(ymm0, ymm0); + vpxor(ymm1, ymm0); + break; + + case ATST_GEQUAL: + case ATST_GREATER: + // t = (ga >> 16) < m_local.gd->aref; + vpsrld(ymm0, ymm6, 16); + vbroadcasti128(ymm1, ptr[&m_local.gd->aref]); + vpcmpgtd(ymm1, ymm0); + break; + + case ATST_NOTEQUAL: + // t = (ga >> 16) == m_local.gd->aref; + vpsrld(ymm1, ymm6, 16); + vbroadcasti128(ymm0, ptr[&m_local.gd->aref]); + vpcmpeqd(ymm1, ymm0); + break; + } + + switch(m_sel.afail) + { + case AFAIL_KEEP: + // test |= t; + vpor(ymm7, ymm1); + alltrue(); + break; + + case AFAIL_FB_ONLY: + // zm |= t; + vpor(ymm4, ymm1); + break; + + case AFAIL_ZB_ONLY: + // fm |= t; + vpor(ymm3, ymm1); + break; + + case AFAIL_RGB_ONLY: + // zm |= t; + vpor(ymm4, ymm1); + // fm |= t & GSVector8i::xff000000(); + vpsrld(ymm1, 24); + vpslld(ymm1, 24); + vpor(ymm3, ymm1); + break; + } +} + +void GSDrawScanlineCodeGenerator::ColorTFX() +{ + if(!m_sel.fwrite) + { + return; + } + + switch(m_sel.tfx) + { + case TFX_MODULATE: + + // GSVector8i rb = iip ? rbf : m_local.c.rb; + + // rbt = rbt.modulate16<1>(rb).clamp8(); + + modulate16(ymm5, ptr[m_sel.iip ? &m_local.temp.rb : &m_local.c.rb], 1); + + clamp16(ymm5, ymm1); + + break; + + case TFX_DECAL: + + break; + + case TFX_HIGHLIGHT: + case TFX_HIGHLIGHT2: + + if(m_sel.tfx == TFX_HIGHLIGHT2 && m_sel.tcc) + { + // GSVector8i ga = iip ? gaf : m_local.c.ga; + + vmovdqa(ymm2, ptr[m_sel.iip ? &m_local.temp.ga : &m_local.c.ga]); + } + + // gat = gat.modulate16<1>(ga).add16(af).clamp8().mix16(gat); + + vmovdqa(ymm1, ymm6); + + modulate16(ymm6, ymm2, 1); + + vpshuflw(ymm2, ymm2, _MM_SHUFFLE(3, 3, 1, 1)); + vpshufhw(ymm2, ymm2, _MM_SHUFFLE(3, 3, 1, 1)); + vpsrlw(ymm2, 7); + + vpaddw(ymm6, ymm2); + + clamp16(ymm6, ymm0); + + mix16(ymm6, ymm1, ymm0); + + // GSVector8i rb = iip ? rbf : m_local.c.rb; + + // rbt = rbt.modulate16<1>(rb).add16(af).clamp8(); + + modulate16(ymm5, ptr[m_sel.iip ? &m_local.temp.rb : &m_local.c.rb], 1); + + vpaddw(ymm5, ymm2); + + clamp16(ymm5, ymm0); + + break; + + case TFX_NONE: + + // rbt = iip ? rb.srl16(7) : rb; + + if(m_sel.iip) + { + vpsrlw(ymm5, 7); + } + + break; + } +} + +void GSDrawScanlineCodeGenerator::Fog() +{ + if(!m_sel.fwrite || !m_sel.fge) + { + return; + } + + // rb = m_local.gd->frb.lerp16<0>(rb, f); + // ga = m_local.gd->fga.lerp16<0>(ga, f).mix16(ga); + + if(m_sel.prim != GS_SPRITE_CLASS) + { + vmovdqa(ymm0, ptr[&m_local.temp.f]); + } + else + { + vpbroadcastw(ymm0, ptr[&m_local.p.f]); + } + + vmovdqa(ymm1, ymm6); + + vpbroadcastd(ymm2, ptr[&m_local.gd->frb]); + lerp16(ymm5, ymm2, ymm0, 0); + + vpbroadcastd(ymm2, ptr[&m_local.gd->fga]); + lerp16(ymm6, ymm2, ymm0, 0); + mix16(ymm6, ymm1, ymm0); +} + +void GSDrawScanlineCodeGenerator::ReadFrame() +{ + if(!m_sel.fb) + { + return; + } + + // int fa = fza_base.x + fza_offset->x; + + mov(ebx, ptr[esi]); + add(ebx, ptr[edi]); + + if(!m_sel.rfb) + { + return; + } + + ReadPixel(ymm2, ymm0, ebx); +} + +void GSDrawScanlineCodeGenerator::TestDestAlpha() +{ + if(!m_sel.date || m_sel.fpsm != 0 && m_sel.fpsm != 2) + { + return; + } + + // test |= ((fd [<< 16]) ^ m_local.gd->datm).sra32(31); + + if(m_sel.datm) + { + if(m_sel.fpsm == 2) + { + vpxor(ymm0, ymm0); + //vpsrld(ymm1, ymm2, 15); + vpslld(ymm1, ymm2, 16); + vpsrad(ymm1, 31); + vpcmpeqd(ymm1, ymm0); + } + else + { + vpcmpeqd(ymm0, ymm0); + vpxor(ymm1, ymm2, ymm0); + vpsrad(ymm1, 31); + } + } + else + { + if(m_sel.fpsm == 2) + { + vpslld(ymm1, ymm2, 16); + vpsrad(ymm1, 31); + } + else + { + vpsrad(ymm1, ymm2, 31); + } + } + + vpor(ymm7, ymm1); + + alltrue(); +} + +void GSDrawScanlineCodeGenerator::WriteMask() +{ + if(m_sel.notest) + { + return; + } + + // fm |= test; + // zm |= test; + + if(m_sel.fwrite) + { + vpor(ymm3, ymm7); + } + + if(m_sel.zwrite) + { + vpor(ymm4, ymm7); + } + + // int fzm = ~(fm == GSVector8i::xffffffff()).ps32(zm == GSVector8i::xffffffff()).mask(); + + vpcmpeqd(ymm1, ymm1); + + if(m_sel.fwrite && m_sel.zwrite) + { + vpcmpeqd(ymm0, ymm1, ymm4); + vpcmpeqd(ymm1, ymm3); + vpackssdw(ymm1, ymm0); + } + else if(m_sel.fwrite) + { + vpcmpeqd(ymm1, ymm3); + vpackssdw(ymm1, ymm1); + } + else if(m_sel.zwrite) + { + vpcmpeqd(ymm1, ymm4); + vpackssdw(ymm1, ymm1); + } + + vpmovmskb(edx, ymm1); + + not(edx); +} + +void GSDrawScanlineCodeGenerator::WriteZBuf() +{ + if(!m_sel.zwrite) + { + return; + } + + if(m_sel.prim != GS_SPRITE_CLASS) + { + vmovdqa(ymm1, ptr[&m_local.temp.zs]); + } + else + { + vpbroadcastd(ymm1, ptr[&m_local.p.z]); + } + + if(m_sel.ztest && m_sel.zpsm < 2) + { + // zs = zs.blend8(zd, zm); + + vpblendvb(ymm1, ptr[&m_local.temp.zd], ymm4); + } + + bool fast = m_sel.ztest ? m_sel.zpsm < 2 : m_sel.zpsm == 0 && m_sel.notest; + + WritePixel(ymm1, ymm0, ebp, edx, fast, m_sel.zpsm, 1); +} + +void GSDrawScanlineCodeGenerator::AlphaBlend() +{ + if(!m_sel.fwrite) + { + return; + } + + if(m_sel.abe == 0 && m_sel.aa1 == 0) + { + return; + } + + if((m_sel.aba != m_sel.abb) && (m_sel.aba == 1 || m_sel.abb == 1 || m_sel.abc == 1) || m_sel.abd == 1) + { + switch(m_sel.fpsm) + { + case 0: + case 1: + + // c[2] = fd & mask; + // c[3] = (fd >> 8) & mask; + + vpsllw(ymm0, ymm2, 8); + vpsrlw(ymm0, 8); + vpsrlw(ymm1, ymm2, 8); + + break; + + case 2: + + // c[2] = ((fd & 0x7c00) << 9) | ((fd & 0x001f) << 3); + // c[3] = ((fd & 0x8000) << 8) | ((fd & 0x03e0) >> 2); + + vpcmpeqd(ymm7, ymm7); + + vpsrld(ymm7, 27); // 0x0000001f + vpand(ymm0, ymm2, ymm7); + vpslld(ymm0, 3); + + vpslld(ymm7, 10); // 0x00007c00 + vpand(ymm4, ymm2, ymm7); + vpslld(ymm4, 9); + + vpor(ymm0, ymm4); + + vpsrld(ymm7, 5); // 0x000003e0 + vpand(ymm1, ymm2, ymm7); + vpsrld(ymm1, 2); + + vpsllw(ymm7, 10); // 0x00008000 + vpand(ymm4, ymm2, ymm7); + vpslld(ymm4, 8); + + vpor(ymm1, ymm4); + + break; + } + } + + // ymm5, ymm6 = src rb, ga + // ymm0, ymm1 = dst rb, ga + // ymm2, ymm3 = used + // ymm4, ymm7 = free + + if(m_sel.pabe || (m_sel.aba != m_sel.abb) && (m_sel.abb == 0 || m_sel.abd == 0)) + { + vmovdqa(ymm4, ymm5); + } + + if(m_sel.aba != m_sel.abb) + { + // rb = c[aba * 2 + 0]; + + switch(m_sel.aba) + { + case 0: break; + case 1: vmovdqa(ymm5, ymm0); break; + case 2: vpxor(ymm5, ymm5); break; + } + + // rb = rb.sub16(c[abb * 2 + 0]); + + switch(m_sel.abb) + { + case 0: vpsubw(ymm5, ymm4); break; + case 1: vpsubw(ymm5, ymm0); break; + case 2: break; + } + + if(!(m_sel.fpsm == 1 && m_sel.abc == 1)) + { + // GSVector4i a = abc < 2 ? c[abc * 2 + 1].yywwlh().sll16(7) : m_local.gd->afix; + + switch(m_sel.abc) + { + case 0: + case 1: + vpshuflw(ymm7, m_sel.abc ? ymm1 : ymm6, _MM_SHUFFLE(3, 3, 1, 1)); + vpshufhw(ymm7, ymm7, _MM_SHUFFLE(3, 3, 1, 1)); + vpsllw(ymm7, 7); + break; + case 2: + vpbroadcastw(ymm7, ptr[&m_local.gd->afix]); + break; + } + + // rb = rb.modulate16<1>(a); + + modulate16(ymm5, ymm7, 1); + } + + // rb = rb.add16(c[abd * 2 + 0]); + + switch(m_sel.abd) + { + case 0: vpaddw(ymm5, ymm4); break; + case 1: vpaddw(ymm5, ymm0); break; + case 2: break; + } + } + else + { + // rb = c[abd * 2 + 0]; + + switch(m_sel.abd) + { + case 0: break; + case 1: vmovdqa(ymm5, ymm0); break; + case 2: vpxor(ymm5, ymm5); break; + } + } + + if(m_sel.pabe) + { + // mask = (c[1] << 8).sra32(31); + + vpslld(ymm0, ymm6, 8); + vpsrad(ymm0, 31); + + // rb = c[0].blend8(rb, mask); + + vpblendvb(ymm5, ymm4, ymm5, ymm0); + } + + // ymm6 = src ga + // ymm1 = dst ga + // ymm5 = rb + // ymm7 = a + // ymm2, ymm3 = used + // ymm0, ymm4 = free + + vmovdqa(ymm4, ymm6); + + if(m_sel.aba != m_sel.abb) + { + // ga = c[aba * 2 + 1]; + + switch(m_sel.aba) + { + case 0: break; + case 1: vmovdqa(ymm6, ymm1); break; + case 2: vpxor(ymm6, ymm6); break; + } + + // ga = ga.sub16(c[abeb * 2 + 1]); + + switch(m_sel.abb) + { + case 0: vpsubw(ymm6, ymm4); break; + case 1: vpsubw(ymm6, ymm1); break; + case 2: break; + } + + if(!(m_sel.fpsm == 1 && m_sel.abc == 1)) + { + // ga = ga.modulate16<1>(a); + + modulate16(ymm6, ymm7, 1); + } + + // ga = ga.add16(c[abd * 2 + 1]); + + switch(m_sel.abd) + { + case 0: vpaddw(ymm6, ymm4); break; + case 1: vpaddw(ymm6, ymm1); break; + case 2: break; + } + } + else + { + // ga = c[abd * 2 + 1]; + + switch(m_sel.abd) + { + case 0: break; + case 1: vmovdqa(ymm6, ymm1); break; + case 2: vpxor(ymm6, ymm6); break; + } + } + + // ymm4 = src ga + // ymm5 = rb + // ymm6 = ga + // ymm2, ymm3 = used + // ymm0, ymm1, ymm7 = free + + if(m_sel.pabe) + { + vpsrld(ymm0, 16); // zero out high words to select the source alpha in blend (so it also does mix16) + + // ga = c[1].blend8(ga, mask).mix16(c[1]); + + vpblendvb(ymm6, ymm4, ymm6, ymm0); + } + else + { + if(m_sel.fpsm != 1) // TODO: fm == 0xffxxxxxx + { + mix16(ymm6, ymm4, ymm7); + } + } +} + +void GSDrawScanlineCodeGenerator::WriteFrame() +{ + if(!m_sel.fwrite) + { + return; + } + + if(m_sel.fpsm == 2 && m_sel.dthe) + { + mov(eax, ptr[esp + _top]); + and(eax, 3); + shl(eax, 5); + mov(ebp, ptr[&m_local.gd->dimx]); + vbroadcasti128(ymm7, ptr[ebp + eax + sizeof(GSVector4i) * 0]); + vpaddw(ymm5, ymm7); + vbroadcasti128(ymm7, ptr[ebp + eax + sizeof(GSVector4i) * 1]); + vpaddw(ymm6, ymm7); + } + + if(m_sel.colclamp == 0) + { + // c[0] &= 0x00ff00ff; + // c[1] &= 0x00ff00ff; + + vpcmpeqd(ymm7, ymm7); + vpsrlw(ymm7, 8); + vpand(ymm5, ymm7); + vpand(ymm6, ymm7); + } + + // GSVector8i fs = c[0].upl16(c[1]).pu16(c[0].uph16(c[1])); + + vpunpckhwd(ymm7, ymm5, ymm6); + vpunpcklwd(ymm5, ymm6); + vpackuswb(ymm5, ymm7); + + if(m_sel.fba && m_sel.fpsm != 1) + { + // fs |= 0x80000000; + + vpcmpeqd(ymm7, ymm7); + vpslld(ymm7, 31); + vpor(ymm5, ymm7); + } + + if(m_sel.fpsm == 2) + { + // GSVector8i rb = fs & 0x00f800f8; + // GSVector8i ga = fs & 0x8000f800; + + mov(eax, 0x00f800f8); + vmovd(xmm6, eax); + vpbroadcastd(ymm6, xmm6); + + mov(eax, 0x8000f800); + vmovd(xmm7, eax); + vpbroadcastd(ymm7, xmm7); + + vpand(ymm4, ymm5, ymm6); + vpand(ymm5, ymm7); + + // fs = (ga >> 16) | (rb >> 9) | (ga >> 6) | (rb >> 3); + + vpsrld(ymm6, ymm4, 9); + vpsrld(ymm4, 3); + vpsrld(ymm7, ymm5, 16); + vpsrld(ymm5, 6); + + vpor(ymm5, ymm4); + vpor(ymm7, ymm6); + vpor(ymm5, ymm7); + } + + if(m_sel.rfb) + { + // fs = fs.blend(fd, fm); + + blend(ymm5, ymm2, ymm3); // TODO: could be skipped in certain cases, depending on fpsm and fm + } + + bool fast = m_sel.rfb ? m_sel.fpsm < 2 : m_sel.fpsm == 0 && m_sel.notest; + + WritePixel(ymm5, ymm0, ebx, edx, fast, m_sel.fpsm, 0); +} + +void GSDrawScanlineCodeGenerator::ReadPixel(const Ymm& dst, const Ymm& temp, const Reg32& addr) +{ + vmovq(Xmm(dst.getIdx()), qword[addr * 2 + (size_t)m_local.gd->vm]); + vmovhps(Xmm(dst.getIdx()), qword[addr * 2 + (size_t)m_local.gd->vm + 8 * 2]); + vmovq(Xmm(temp.getIdx()), qword[addr * 2 + (size_t)m_local.gd->vm + 16 * 2]); + vmovhps(Xmm(temp.getIdx()), qword[addr * 2 + (size_t)m_local.gd->vm + 24 * 2]); + vinserti128(dst, dst, temp, 1); +/* + vmovdqu(dst, ptr[addr * 2 + (size_t)m_local.gd->vm]); + vmovdqu(temp, ptr[addr * 2 + (size_t)m_local.gd->vm + 16 * 2]); + vpunpcklqdq(dst, dst, temp); + vpermq(dst, dst, _MM_SHUFFLE(3, 1, 2, 0)); +*/ +} + +void GSDrawScanlineCodeGenerator::WritePixel(const Ymm& src, const Ymm& temp, const Reg32& addr, const Reg32& mask, bool fast, int psm, int fz) +{ + Xmm src1 = Xmm(src.getIdx()); + Xmm src2 = Xmm(temp.getIdx()); + + vextracti128(src2, src, 1); + + if(m_sel.notest) + { + if(fast) + { + vmovq(qword[addr * 2 + (size_t)m_local.gd->vm], src1); + vmovhps(qword[addr * 2 + (size_t)m_local.gd->vm + 8 * 2], src1); + vmovq(qword[addr * 2 + (size_t)m_local.gd->vm + 16 * 2], src2); + vmovhps(qword[addr * 2 + (size_t)m_local.gd->vm + 24 * 2], src2); + } + else + { + WritePixel(src1, addr, 0, 0, psm); + WritePixel(src1, addr, 1, 1, psm); + WritePixel(src1, addr, 2, 2, psm); + WritePixel(src1, addr, 3, 3, psm); + WritePixel(src2, addr, 4, 0, psm); + WritePixel(src2, addr, 5, 1, psm); + WritePixel(src2, addr, 6, 2, psm); + WritePixel(src2, addr, 7, 3, psm); + } + } + else + { + // cascade tests? + + if(fast) + { + test(mask, 0x0000000f << (fz * 8)); + je("@f"); + vmovq(qword[addr * 2 + (size_t)m_local.gd->vm], src1); + L("@@"); + + test(mask, 0x000000f0 << (fz * 8)); + je("@f"); + vmovhps(qword[addr * 2 + (size_t)m_local.gd->vm + 8 * 2], src1); + L("@@"); + + test(mask, 0x000f0000 << (fz * 8)); + je("@f"); + vmovq(qword[addr * 2 + (size_t)m_local.gd->vm + 16 * 2], src2); + L("@@"); + + test(mask, 0x00f00000 << (fz * 8)); + je("@f"); + vmovhps(qword[addr * 2 + (size_t)m_local.gd->vm + 24 * 2], src2); + L("@@"); + + // vmaskmovps? + } + else + { + test(mask, 0x00000003 << (fz * 8)); + je("@f"); + WritePixel(src1, addr, 0, 0, psm); + L("@@"); + + test(mask, 0x0000000c << (fz * 8)); + je("@f"); + WritePixel(src1, addr, 1, 1, psm); + L("@@"); + + test(mask, 0x00000030 << (fz * 8)); + je("@f"); + WritePixel(src1, addr, 2, 2, psm); + L("@@"); + + test(mask, 0x000000c0 << (fz * 8)); + je("@f"); + WritePixel(src1, addr, 3, 3, psm); + L("@@"); + + test(mask, 0x00030000 << (fz * 8)); + je("@f"); + WritePixel(src2, addr, 4, 0, psm); + L("@@"); + + test(mask, 0x000c0000 << (fz * 8)); + je("@f"); + WritePixel(src2, addr, 5, 1, psm); + L("@@"); + + test(mask, 0x00300000 << (fz * 8)); + je("@f"); + WritePixel(src2, addr, 6, 2, psm); + L("@@"); + + test(mask, 0x00c00000 << (fz * 8)); + je("@f"); + WritePixel(src2, addr, 7, 3, psm); + L("@@"); + } + } +} + +static const int s_offsets[] = {0, 2, 8, 10, 16, 18, 24, 26}; + +void GSDrawScanlineCodeGenerator::WritePixel(const Xmm& src, const Reg32& addr, uint8 i, uint8 j, int psm) +{ + Address dst = ptr[addr * 2 + (size_t)m_local.gd->vm + s_offsets[i] * 2]; + + switch(psm) + { + case 0: + if(j == 0) vmovd(dst, src); + else vpextrd(dst, src, j); + break; + case 1: + if(j == 0) vmovd(eax, src); + else vpextrd(eax, src, j); + xor(eax, dst); + and(eax, 0xffffff); + xor(dst, eax); + break; + case 2: + if(j == 0) vmovd(eax, src); + else vpextrw(eax, src, j * 2); + mov(dst, ax); + break; + } +} + +void GSDrawScanlineCodeGenerator::ReadTexel(int pixels, int mip_offset) +{ + // in + // ymm5 = addr00 + // ymm2 = addr01 + // ymm0 = addr10 + // ymm3 = addr11 + // ebx = m_local.tex[0] (!m_sel.mmin) + // ebp = m_local.tex (m_sel.mmin) + // edx = m_local.clut (m_sel.tlu) + + // out + // ymm6 = c00 + // ymm4 = c01 + // ymm1 = c10 + // ymm5 = c11 + + ASSERT(pixels == 1 || pixels == 4); + + mip_offset *= sizeof(void*); + + const GSVector8i* lod_i = m_sel.lcm ? &m_local.gd->lod.i : &m_local.temp.lod.i; + + if(m_sel.mmin && !m_sel.lcm) + { + const int r[] = {5, 6, 2, 4, 0, 1, 3, 5}; + const int t[] = {1, 4, 5, 1, 2, 5, 0, 2}; + + for(int i = 0; i < pixels; i++) + { + Ymm src = Ymm(r[i * 2 + 0]); + Ymm dst = Ymm(r[i * 2 + 1]); + Ymm t1 = Ymm(t[i * 2 + 0]); + Ymm t2 = Ymm(t[i * 2 + 1]); + + vextracti128(Xmm(t1.getIdx()), src, 1); + + for(uint8 j = 0; j < 4; j++) + { + mov(ebx, ptr[&lod_i->u32[j + 0]]); + mov(ebx, ptr[ebp + ebx * sizeof(void*) + mip_offset]); + + ReadTexel(dst, src, j); + + mov(ebx, ptr[&lod_i->u32[j + 4]]); + mov(ebx, ptr[ebp + ebx * sizeof(void*) + mip_offset]); + + ReadTexel(t2, t1, j); + } + + vinserti128(dst, dst, t2, 1); + } + } + else + { + const int r[] = {5, 6, 2, 4, 0, 1, 3, 5}; + const int t[] = {1, 4, 5, 1, 2, 5, 0, 2}; + + if(m_sel.mmin && m_sel.lcm) + { + mov(ebx, ptr[&lod_i->u32[0]]); + mov(ebx, ptr[ebp + ebx * sizeof(void*) + mip_offset]); + } + + for(int i = 0; i < pixels; i++) + { + Ymm src = Ymm(r[i * 2 + 0]); + Ymm dst = Ymm(r[i * 2 + 1]); + Ymm t1 = Ymm(t[i * 2 + 0]); + Ymm t2 = Ymm(t[i * 2 + 1]); + + if(!m_sel.tlu) + { + vpcmpeqd(t1, t1); + vpgatherdd(dst, ptr[ebx + src * 4], t1); + } + else + { + vextracti128(Xmm(t1.getIdx()), src, 1); + + for(uint8 j = 0; j < 4; j++) + { + ReadTexel(dst, src, j); + ReadTexel(t2, t1, j); + } + + vinserti128(dst, dst, t2, 1); + /* + vpcmpeqd(t1, t1); + vpgatherdd(t2, ptr[ebx + src * 1], t1); // either this 1x scale, or the latency of two dependendent gathers are too slow + vpslld(t2, 24); + vpsrld(t2, 24); + vpcmpeqd(t1, t1); + vpgatherdd(dst, ptr[edx + t2 * 4], t1); + */ + } + } + } +} + +void GSDrawScanlineCodeGenerator::ReadTexel(const Ymm& dst, const Ymm& addr, uint8 i) +{ + ASSERT(i < 4); + + const Address& src = m_sel.tlu ? ptr[edx + eax * 4] : ptr[ebx + eax * 4]; + + if(i == 0) vmovd(eax, Xmm(addr.getIdx())); + else vpextrd(eax, Xmm(addr.getIdx()), i); + + if(m_sel.tlu) movzx(eax, byte[ebx + eax]); + + if(i == 0) vmovd(Xmm(dst.getIdx()), src); + else vpinsrd(Xmm(dst.getIdx()), src, i); +} + + #endif \ No newline at end of file diff --git a/plugins/GSdx/GSSetupPrimCodeGenerator.x86.avx2.cpp b/plugins/GSdx/GSSetupPrimCodeGenerator.x86.avx2.cpp index cb62337316..172d053a5a 100644 --- a/plugins/GSdx/GSSetupPrimCodeGenerator.x86.avx2.cpp +++ b/plugins/GSdx/GSSetupPrimCodeGenerator.x86.avx2.cpp @@ -1,353 +1,353 @@ -/* - * Copyright (C) 2007-2009 Gabest - * http://www.gabest.org - * - * 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 GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include "stdafx.h" -#include "GSSetupPrimCodeGenerator.h" -#include "GSVertexSW.h" - -#if _M_SSE >= 0x501 && !(defined(_M_AMD64) || defined(_WIN64)) - -using namespace Xbyak; - -static const int _args = 0; -static const int _vertex = _args + 4; -static const int _index = _args + 8; -static const int _dscan = _args + 12; - -void GSSetupPrimCodeGenerator::Generate() -{ - if((m_en.z || m_en.f) && m_sel.prim != GS_SPRITE_CLASS || m_en.t || m_en.c && m_sel.iip) - { - mov(edx, dword[esp + _dscan]); - - for(int i = 0; i < (m_sel.notest ? 2 : 5); i++) - { - vmovaps(Ymm(3 + i), ptr[&m_shift[i]]); - } - } - - Depth(); - - Texture(); - - Color(); - - ret(); -} - -void GSSetupPrimCodeGenerator::Depth() -{ - if(!m_en.z && !m_en.f) - { - return; - } - - if(m_sel.prim != GS_SPRITE_CLASS) - { - // GSVector4 dp8 = dscan.p * GSVector4::broadcast32(&shift[0]); - - vbroadcastf128(ymm0, ptr[edx + offsetof(GSVertexSW, p)]); - - vmulps(ymm1, ymm0, ymm3); - - if(m_en.z) - { - // m_local.d8.p.z = dp8.extract32<2>(); - - vextractps(ptr[&m_local.d8.p.z], xmm1, 2); - } - - if(m_en.f) - { - // m_local.d8.p.f = GSVector4i(dp8).extract32<3>(); - - vcvtps2dq(ymm2, ymm1); - vpextrd(ptr[&m_local.d8.p.f], xmm2, 3); - } - - if(m_en.z) - { - // GSVector8 dz = GSVector8(dscan.p).zzzz(); - - vshufps(ymm2, ymm0, ymm0, _MM_SHUFFLE(2, 2, 2, 2)); - } - - if(m_en.f) - { - // GSVector8 df = GSVector8(dscan.p).wwww(); - - vshufps(ymm1, ymm0, ymm0, _MM_SHUFFLE(3, 3, 3, 3)); - } - - for(int i = 0; i < (m_sel.notest ? 1 : 8); i++) - { - if(m_en.z) - { - // m_local.d[i].z = dz * shift[1 + i]; - - if(i < 4) vmulps(ymm0, ymm2, Ymm(4 + i)); - else vmulps(ymm0, ymm2, ptr[&m_shift[i + 1]]); - vmovaps(ptr[&m_local.d[i].z], ymm0); - } - - if(m_en.f) - { - // m_local.d[i].f = GSVector8i(df * m_shift[i]).xxzzlh(); - - if(i < 4) vmulps(ymm0, ymm1, Ymm(4 + i)); - else vmulps(ymm0, ymm1, ptr[&m_shift[i + 1]]); - vcvttps2dq(ymm0, ymm0); - vpshuflw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); - vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); - vmovdqa(ptr[&m_local.d[i].f], ymm0); - } - } - } - else - { - // GSVector4 p = vertex[index[1]].p; - - mov(ecx, ptr[esp + _index]); - mov(ecx, ptr[ecx + sizeof(uint32) * 1]); - shl(ecx, 6); // * sizeof(GSVertexSW) - add(ecx, ptr[esp + _vertex]); - - if(m_en.f) - { - // m_local.p.f = GSVector4i(vertex[index[1]].p).extract32<3>(); - - vmovaps(xmm0, ptr[ecx + offsetof(GSVertexSW, p)]); - vcvttps2dq(xmm0, xmm0); - vpextrd(ptr[&m_local.p.f], xmm0, 3); - } - - if(m_en.z) - { - // m_local.p.z = vertex[index[1]].t.u32[3]; // uint32 z is bypassed in t.w - - mov(eax, ptr[ecx + offsetof(GSVertexSW, t.w)]); - mov(ptr[&m_local.p.z], eax); - } - } -} - -void GSSetupPrimCodeGenerator::Texture() -{ - if(!m_en.t) - { - return; - } - - // GSVector8 dt(dscan.t); - - vbroadcastf128(ymm0, ptr[edx + offsetof(GSVertexSW, t)]); - - // GSVector8 dt8 = dt * shift[0]; - - vmulps(ymm1, ymm0, ymm3); - - if(m_sel.fst) - { - // m_local.d8.stq = GSVector8::cast(GSVector8i(dt8)); - - vcvttps2dq(ymm1, ymm1); - - vmovdqa(ptr[&m_local.d8.stq], xmm1); - } - else - { - // m_local.d8.stq = dt8; - - vmovaps(ptr[&m_local.d8.stq], xmm1); - } - - for(int j = 0, k = m_sel.fst ? 2 : 3; j < k; j++) - { - // GSVector8 dstq = dt.xxxx/yyyy/zzzz(); - - vshufps(ymm1, ymm0, ymm0, (uint8)_MM_SHUFFLE(j, j, j, j)); - - for(int i = 0; i < (m_sel.notest ? 1 : 8); i++) - { - // GSVector8 v = dstq * shift[1 + i]; - - if(i < 4) vmulps(ymm2, ymm1, Ymm(4 + i)); - else vmulps(ymm2, ymm1, ptr[&m_shift[i + 1]]); - - if(m_sel.fst) - { - // m_local.d[i].s/t = GSVector8::cast(GSVector8i(v)); - - vcvttps2dq(ymm2, ymm2); - - switch(j) - { - case 0: vmovdqa(ptr[&m_local.d[i].s], ymm2); break; - case 1: vmovdqa(ptr[&m_local.d[i].t], ymm2); break; - } - } - else - { - // m_local.d[i].s/t/q = v; - - switch(j) - { - case 0: vmovaps(ptr[&m_local.d[i].s], ymm2); break; - case 1: vmovaps(ptr[&m_local.d[i].t], ymm2); break; - case 2: vmovaps(ptr[&m_local.d[i].q], ymm2); break; - } - } - } - } -} - -void GSSetupPrimCodeGenerator::Color() -{ - if(!m_en.c) - { - return; - } - - if(m_sel.iip) - { - // GSVector8 dc(dscan.c); - - vbroadcastf128(ymm0, ptr[edx + offsetof(GSVertexSW, c)]); - - // m_local.d8.c = GSVector8i(dc * shift[0]).xzyw().ps32(); - - vmulps(ymm1, ymm0, ymm3); - vcvttps2dq(ymm1, ymm1); - vpshufd(ymm1, ymm1, _MM_SHUFFLE(3, 1, 2, 0)); - vpackssdw(ymm1, ymm1); - vmovq(ptr[&m_local.d8.c], xmm1); - - // ymm3 is not needed anymore - - // GSVector8 dr = dc.xxxx(); - // GSVector8 db = dc.zzzz(); - - vshufps(ymm2, ymm0, ymm0, _MM_SHUFFLE(0, 0, 0, 0)); - vshufps(ymm3, ymm0, ymm0, _MM_SHUFFLE(2, 2, 2, 2)); - - for(int i = 0; i < (m_sel.notest ? 1 : 8); i++) - { - // GSVector8i r = GSVector8i(dr * shift[1 + i]).ps32(); - - if(i < 4) vmulps(ymm0, ymm2, Ymm(4 + i)); - else vmulps(ymm0, ymm2, ptr[&m_shift[i + 1]]); - vcvttps2dq(ymm0, ymm0); - vpackssdw(ymm0, ymm0); - - // GSVector4i b = GSVector8i(db * shift[1 + i]).ps32(); - - if(i < 4) vmulps(ymm1, ymm3, Ymm(4 + i)); - else vmulps(ymm1, ymm3, ptr[&m_shift[i + 1]]); - vcvttps2dq(ymm1, ymm1); - vpackssdw(ymm1, ymm1); - - // m_local.d[i].rb = r.upl16(b); - - vpunpcklwd(ymm0, ymm1); - vmovdqa(ptr[&m_local.d[i].rb], ymm0); - } - - // GSVector8 dc(dscan.c); - - vbroadcastf128(ymm0, ptr[edx + offsetof(GSVertexSW, c)]); // not enough regs, have to reload it - - // GSVector8 dg = dc.yyyy(); - // GSVector8 da = dc.wwww(); - - vshufps(ymm2, ymm0, ymm0, _MM_SHUFFLE(1, 1, 1, 1)); - vshufps(ymm3, ymm0, ymm0, _MM_SHUFFLE(3, 3, 3, 3)); - - for(int i = 0; i < (m_sel.notest ? 1 : 8); i++) - { - // GSVector8i g = GSVector8i(dg * shift[1 + i]).ps32(); - - if(i < 4) vmulps(ymm0, ymm2, Ymm(4 + i)); - else vmulps(ymm0, ymm2, ptr[&m_shift[i + 1]]); - vcvttps2dq(ymm0, ymm0); - vpackssdw(ymm0, ymm0); - - // GSVector8i a = GSVector8i(da * shift[1 + i]).ps32(); - - if(i < 4) vmulps(ymm1, ymm3, Ymm(4 + i)); - else vmulps(ymm1, ymm3, ptr[&m_shift[i + 1]]); - vcvttps2dq(ymm1, ymm1); - vpackssdw(ymm1, ymm1); - - // m_local.d[i].ga = g.upl16(a); - - vpunpcklwd(ymm0, ymm1); - vmovdqa(ptr[&m_local.d[i].ga], ymm0); - } - } - else - { - // GSVector8i c = GSVector8i(GSVector8(vertex[index[last]].c)); - - int last = 0; - - switch(m_sel.prim) - { - case GS_POINT_CLASS: last = 0; break; - case GS_LINE_CLASS: last = 1; break; - case GS_TRIANGLE_CLASS: last = 2; break; - case GS_SPRITE_CLASS: last = 1; break; - } - - if(!(m_sel.prim == GS_SPRITE_CLASS && (m_en.z || m_en.f))) // if this is a sprite, the last vertex was already loaded in Depth() - { - mov(ecx, ptr[esp + _index]); - mov(ecx, ptr[ecx + sizeof(uint32) * last]); - shl(ecx, 6); // * sizeof(GSVertexSW) - add(ecx, ptr[esp + _vertex]); - } - - vbroadcasti128(ymm0, ptr[ecx + offsetof(GSVertexSW, c)]); - vcvttps2dq(ymm0, ymm0); - - // c = c.upl16(c.zwxy()); - - vpshufd(ymm1, ymm0, _MM_SHUFFLE(1, 0, 3, 2)); - vpunpcklwd(ymm0, ymm1); - - // if(!tme) c = c.srl16(7); - - if(m_sel.tfx == TFX_NONE) - { - vpsrlw(ymm0, 7); - } - - // m_local.c.rb = c.xxxx(); - // m_local.c.ga = c.zzzz(); - - vpshufd(ymm1, ymm0, _MM_SHUFFLE(0, 0, 0, 0)); - vpshufd(ymm2, ymm0, _MM_SHUFFLE(2, 2, 2, 2)); - - vmovdqa(ptr[&m_local.c.rb], ymm1); - vmovdqa(ptr[&m_local.c.ga], ymm2); - } -} - +/* + * Copyright (C) 2007-2009 Gabest + * http://www.gabest.org + * + * 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 GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#include "stdafx.h" +#include "GSSetupPrimCodeGenerator.h" +#include "GSVertexSW.h" + +#if _M_SSE >= 0x501 && !(defined(_M_AMD64) || defined(_WIN64)) + +using namespace Xbyak; + +static const int _args = 0; +static const int _vertex = _args + 4; +static const int _index = _args + 8; +static const int _dscan = _args + 12; + +void GSSetupPrimCodeGenerator::Generate() +{ + if((m_en.z || m_en.f) && m_sel.prim != GS_SPRITE_CLASS || m_en.t || m_en.c && m_sel.iip) + { + mov(edx, dword[esp + _dscan]); + + for(int i = 0; i < (m_sel.notest ? 2 : 5); i++) + { + vmovaps(Ymm(3 + i), ptr[&m_shift[i]]); + } + } + + Depth(); + + Texture(); + + Color(); + + ret(); +} + +void GSSetupPrimCodeGenerator::Depth() +{ + if(!m_en.z && !m_en.f) + { + return; + } + + if(m_sel.prim != GS_SPRITE_CLASS) + { + // GSVector4 dp8 = dscan.p * GSVector4::broadcast32(&shift[0]); + + vbroadcastf128(ymm0, ptr[edx + offsetof(GSVertexSW, p)]); + + vmulps(ymm1, ymm0, ymm3); + + if(m_en.z) + { + // m_local.d8.p.z = dp8.extract32<2>(); + + vextractps(ptr[&m_local.d8.p.z], xmm1, 2); + } + + if(m_en.f) + { + // m_local.d8.p.f = GSVector4i(dp8).extract32<3>(); + + vcvtps2dq(ymm2, ymm1); + vpextrd(ptr[&m_local.d8.p.f], xmm2, 3); + } + + if(m_en.z) + { + // GSVector8 dz = GSVector8(dscan.p).zzzz(); + + vshufps(ymm2, ymm0, ymm0, _MM_SHUFFLE(2, 2, 2, 2)); + } + + if(m_en.f) + { + // GSVector8 df = GSVector8(dscan.p).wwww(); + + vshufps(ymm1, ymm0, ymm0, _MM_SHUFFLE(3, 3, 3, 3)); + } + + for(int i = 0; i < (m_sel.notest ? 1 : 8); i++) + { + if(m_en.z) + { + // m_local.d[i].z = dz * shift[1 + i]; + + if(i < 4) vmulps(ymm0, ymm2, Ymm(4 + i)); + else vmulps(ymm0, ymm2, ptr[&m_shift[i + 1]]); + vmovaps(ptr[&m_local.d[i].z], ymm0); + } + + if(m_en.f) + { + // m_local.d[i].f = GSVector8i(df * m_shift[i]).xxzzlh(); + + if(i < 4) vmulps(ymm0, ymm1, Ymm(4 + i)); + else vmulps(ymm0, ymm1, ptr[&m_shift[i + 1]]); + vcvttps2dq(ymm0, ymm0); + vpshuflw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); + vpshufhw(ymm0, ymm0, _MM_SHUFFLE(2, 2, 0, 0)); + vmovdqa(ptr[&m_local.d[i].f], ymm0); + } + } + } + else + { + // GSVector4 p = vertex[index[1]].p; + + mov(ecx, ptr[esp + _index]); + mov(ecx, ptr[ecx + sizeof(uint32) * 1]); + shl(ecx, 6); // * sizeof(GSVertexSW) + add(ecx, ptr[esp + _vertex]); + + if(m_en.f) + { + // m_local.p.f = GSVector4i(vertex[index[1]].p).extract32<3>(); + + vmovaps(xmm0, ptr[ecx + offsetof(GSVertexSW, p)]); + vcvttps2dq(xmm0, xmm0); + vpextrd(ptr[&m_local.p.f], xmm0, 3); + } + + if(m_en.z) + { + // m_local.p.z = vertex[index[1]].t.u32[3]; // uint32 z is bypassed in t.w + + mov(eax, ptr[ecx + offsetof(GSVertexSW, t.w)]); + mov(ptr[&m_local.p.z], eax); + } + } +} + +void GSSetupPrimCodeGenerator::Texture() +{ + if(!m_en.t) + { + return; + } + + // GSVector8 dt(dscan.t); + + vbroadcastf128(ymm0, ptr[edx + offsetof(GSVertexSW, t)]); + + // GSVector8 dt8 = dt * shift[0]; + + vmulps(ymm1, ymm0, ymm3); + + if(m_sel.fst) + { + // m_local.d8.stq = GSVector8::cast(GSVector8i(dt8)); + + vcvttps2dq(ymm1, ymm1); + + vmovdqa(ptr[&m_local.d8.stq], xmm1); + } + else + { + // m_local.d8.stq = dt8; + + vmovaps(ptr[&m_local.d8.stq], xmm1); + } + + for(int j = 0, k = m_sel.fst ? 2 : 3; j < k; j++) + { + // GSVector8 dstq = dt.xxxx/yyyy/zzzz(); + + vshufps(ymm1, ymm0, ymm0, (uint8)_MM_SHUFFLE(j, j, j, j)); + + for(int i = 0; i < (m_sel.notest ? 1 : 8); i++) + { + // GSVector8 v = dstq * shift[1 + i]; + + if(i < 4) vmulps(ymm2, ymm1, Ymm(4 + i)); + else vmulps(ymm2, ymm1, ptr[&m_shift[i + 1]]); + + if(m_sel.fst) + { + // m_local.d[i].s/t = GSVector8::cast(GSVector8i(v)); + + vcvttps2dq(ymm2, ymm2); + + switch(j) + { + case 0: vmovdqa(ptr[&m_local.d[i].s], ymm2); break; + case 1: vmovdqa(ptr[&m_local.d[i].t], ymm2); break; + } + } + else + { + // m_local.d[i].s/t/q = v; + + switch(j) + { + case 0: vmovaps(ptr[&m_local.d[i].s], ymm2); break; + case 1: vmovaps(ptr[&m_local.d[i].t], ymm2); break; + case 2: vmovaps(ptr[&m_local.d[i].q], ymm2); break; + } + } + } + } +} + +void GSSetupPrimCodeGenerator::Color() +{ + if(!m_en.c) + { + return; + } + + if(m_sel.iip) + { + // GSVector8 dc(dscan.c); + + vbroadcastf128(ymm0, ptr[edx + offsetof(GSVertexSW, c)]); + + // m_local.d8.c = GSVector8i(dc * shift[0]).xzyw().ps32(); + + vmulps(ymm1, ymm0, ymm3); + vcvttps2dq(ymm1, ymm1); + vpshufd(ymm1, ymm1, _MM_SHUFFLE(3, 1, 2, 0)); + vpackssdw(ymm1, ymm1); + vmovq(ptr[&m_local.d8.c], xmm1); + + // ymm3 is not needed anymore + + // GSVector8 dr = dc.xxxx(); + // GSVector8 db = dc.zzzz(); + + vshufps(ymm2, ymm0, ymm0, _MM_SHUFFLE(0, 0, 0, 0)); + vshufps(ymm3, ymm0, ymm0, _MM_SHUFFLE(2, 2, 2, 2)); + + for(int i = 0; i < (m_sel.notest ? 1 : 8); i++) + { + // GSVector8i r = GSVector8i(dr * shift[1 + i]).ps32(); + + if(i < 4) vmulps(ymm0, ymm2, Ymm(4 + i)); + else vmulps(ymm0, ymm2, ptr[&m_shift[i + 1]]); + vcvttps2dq(ymm0, ymm0); + vpackssdw(ymm0, ymm0); + + // GSVector4i b = GSVector8i(db * shift[1 + i]).ps32(); + + if(i < 4) vmulps(ymm1, ymm3, Ymm(4 + i)); + else vmulps(ymm1, ymm3, ptr[&m_shift[i + 1]]); + vcvttps2dq(ymm1, ymm1); + vpackssdw(ymm1, ymm1); + + // m_local.d[i].rb = r.upl16(b); + + vpunpcklwd(ymm0, ymm1); + vmovdqa(ptr[&m_local.d[i].rb], ymm0); + } + + // GSVector8 dc(dscan.c); + + vbroadcastf128(ymm0, ptr[edx + offsetof(GSVertexSW, c)]); // not enough regs, have to reload it + + // GSVector8 dg = dc.yyyy(); + // GSVector8 da = dc.wwww(); + + vshufps(ymm2, ymm0, ymm0, _MM_SHUFFLE(1, 1, 1, 1)); + vshufps(ymm3, ymm0, ymm0, _MM_SHUFFLE(3, 3, 3, 3)); + + for(int i = 0; i < (m_sel.notest ? 1 : 8); i++) + { + // GSVector8i g = GSVector8i(dg * shift[1 + i]).ps32(); + + if(i < 4) vmulps(ymm0, ymm2, Ymm(4 + i)); + else vmulps(ymm0, ymm2, ptr[&m_shift[i + 1]]); + vcvttps2dq(ymm0, ymm0); + vpackssdw(ymm0, ymm0); + + // GSVector8i a = GSVector8i(da * shift[1 + i]).ps32(); + + if(i < 4) vmulps(ymm1, ymm3, Ymm(4 + i)); + else vmulps(ymm1, ymm3, ptr[&m_shift[i + 1]]); + vcvttps2dq(ymm1, ymm1); + vpackssdw(ymm1, ymm1); + + // m_local.d[i].ga = g.upl16(a); + + vpunpcklwd(ymm0, ymm1); + vmovdqa(ptr[&m_local.d[i].ga], ymm0); + } + } + else + { + // GSVector8i c = GSVector8i(GSVector8(vertex[index[last]].c)); + + int last = 0; + + switch(m_sel.prim) + { + case GS_POINT_CLASS: last = 0; break; + case GS_LINE_CLASS: last = 1; break; + case GS_TRIANGLE_CLASS: last = 2; break; + case GS_SPRITE_CLASS: last = 1; break; + } + + if(!(m_sel.prim == GS_SPRITE_CLASS && (m_en.z || m_en.f))) // if this is a sprite, the last vertex was already loaded in Depth() + { + mov(ecx, ptr[esp + _index]); + mov(ecx, ptr[ecx + sizeof(uint32) * last]); + shl(ecx, 6); // * sizeof(GSVertexSW) + add(ecx, ptr[esp + _vertex]); + } + + vbroadcasti128(ymm0, ptr[ecx + offsetof(GSVertexSW, c)]); + vcvttps2dq(ymm0, ymm0); + + // c = c.upl16(c.zwxy()); + + vpshufd(ymm1, ymm0, _MM_SHUFFLE(1, 0, 3, 2)); + vpunpcklwd(ymm0, ymm1); + + // if(!tme) c = c.srl16(7); + + if(m_sel.tfx == TFX_NONE) + { + vpsrlw(ymm0, 7); + } + + // m_local.c.rb = c.xxxx(); + // m_local.c.ga = c.zzzz(); + + vpshufd(ymm1, ymm0, _MM_SHUFFLE(0, 0, 0, 0)); + vpshufd(ymm2, ymm0, _MM_SHUFFLE(2, 2, 2, 2)); + + vmovdqa(ptr[&m_local.c.rb], ymm1); + vmovdqa(ptr[&m_local.c.ga], ymm2); + } +} + #endif \ No newline at end of file diff --git a/plugins/GSdx/targetver.h b/plugins/GSdx/targetver.h index 8c6178d921..95461871f8 100644 --- a/plugins/GSdx/targetver.h +++ b/plugins/GSdx/targetver.h @@ -1,56 +1,56 @@ -/* - * Copyright (C) 2007-2009 Gabest - * http://www.gabest.org - * - * 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 GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#pragma once -/* -// Including SDKDDKVer.h defines the highest available Windows platform. - -// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and -// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. - -#include -*/ - -// The following macros define the minimum required platform. The minimum required platform -// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run -// your application. The macros work by enabling all features available on platform versions up to and -// including the version specified. - -// Modify the following defines if you have to target a platform prior to the ones specified below. -// Refer to MSDN for the latest info on corresponding values for different platforms. - -#ifndef WINVER // Specifies that the minimum required platform is Windows Vista. -#define WINVER 0x0600 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista. -#define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINDOWS // Specifies that the minimum required platform is Windows 98. -#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. -#endif - -#ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 7.0. -#define _WIN32_IE 0x0700 // Change this to the appropriate value to target other versions of IE. -#endif - -#include +/* + * Copyright (C) 2007-2009 Gabest + * http://www.gabest.org + * + * 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 GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#pragma once +/* +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include +*/ + +// The following macros define the minimum required platform. The minimum required platform +// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run +// your application. The macros work by enabling all features available on platform versions up to and +// including the version specified. + +// Modify the following defines if you have to target a platform prior to the ones specified below. +// Refer to MSDN for the latest info on corresponding values for different platforms. + +#ifndef WINVER // Specifies that the minimum required platform is Windows Vista. +#define WINVER 0x0600 // Change this to the appropriate value to target other versions of Windows. +#endif + +#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista. +#define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. +#endif + +#ifndef _WIN32_WINDOWS // Specifies that the minimum required platform is Windows 98. +#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. +#endif + +#ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 7.0. +#define _WIN32_IE 0x0700 // Change this to the appropriate value to target other versions of IE. +#endif + +#include diff --git a/plugins/GSdx/vsprops/avx2.props b/plugins/GSdx/vsprops/avx2.props index e645e51e3a..928fc5b3ed 100644 --- a/plugins/GSdx/vsprops/avx2.props +++ b/plugins/GSdx/vsprops/avx2.props @@ -1,20 +1,20 @@ - - - - AVX2 - - - <_ProjectFileVersion>10.0.30128.1 - - - - _M_SSE=0x501;%(PreprocessorDefinitions) - AdvancedVectorExtensions - - - - - $(SSEtype) - - + + + + AVX2 + + + <_ProjectFileVersion>10.0.30128.1 + + + + _M_SSE=0x501;%(PreprocessorDefinitions) + AdvancedVectorExtensions + + + + + $(SSEtype) + + \ No newline at end of file diff --git a/plugins/GSdx/vsprops/avx_vs2012.props b/plugins/GSdx/vsprops/avx_vs2012.props index e83c7fb32d..42d81e1764 100644 --- a/plugins/GSdx/vsprops/avx_vs2012.props +++ b/plugins/GSdx/vsprops/avx_vs2012.props @@ -1,20 +1,20 @@ - - - - AVX - - - <_ProjectFileVersion>10.0.30128.1 - - - - _M_SSE=0x500;%(PreprocessorDefinitions) - AdvancedVectorExtensions - - - - - $(SSEtype) - - + + + + AVX + + + <_ProjectFileVersion>10.0.30128.1 + + + + _M_SSE=0x500;%(PreprocessorDefinitions) + AdvancedVectorExtensions + + + + + $(SSEtype) + + \ No newline at end of file diff --git a/plugins/GSdx/vsprops/x64.props b/plugins/GSdx/vsprops/x64.props index 947675c717..4703984444 100644 --- a/plugins/GSdx/vsprops/x64.props +++ b/plugins/GSdx/vsprops/x64.props @@ -1,15 +1,15 @@ - - - - - - - - $(DXSDK_DIR)Lib\x64;$(ProjectDir)vtune\x64;%(AdditionalLibraryDirectories) - - - _WIN64;%(PreprocessorDefinitions) - - - + + + + + + + + $(DXSDK_DIR)Lib\x64;$(ProjectDir)vtune\x64;%(AdditionalLibraryDirectories) + + + _WIN64;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/plugins/GSdx/vsprops/x86.props b/plugins/GSdx/vsprops/x86.props index ff76b9535d..c37342f62e 100644 --- a/plugins/GSdx/vsprops/x86.props +++ b/plugins/GSdx/vsprops/x86.props @@ -1,16 +1,16 @@ - - - - - - - - $(DXSDK_DIR)Lib\x86;$(ProjectDir)vtune\x86;%(AdditionalLibraryDirectories) - - - - _WIN32;%(PreprocessorDefinitions) - - - + + + + + + + + $(DXSDK_DIR)Lib\x86;$(ProjectDir)vtune\x86;%(AdditionalLibraryDirectories) + + + + _WIN32;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/plugins/GSnull/Windows/GSnull_vs2012.vcxproj b/plugins/GSnull/Windows/GSnull_vs2012.vcxproj index 8b81c581fa..016e461070 100644 --- a/plugins/GSnull/Windows/GSnull_vs2012.vcxproj +++ b/plugins/GSnull/Windows/GSnull_vs2012.vcxproj @@ -1,109 +1,109 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - GSnull - {5FCBD521-5A0B-4D97-A823-A97E6BAB9101} - GSnull - Win32Proj - - - - DynamicLibrary - MultiByte - true - v110_xp - - - DynamicLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(ProjectName)-dbg - - - - - - - - $(OutDir)$(TargetName)$(TargetExt) - GS.def - MachineX86 - - - - - - - - - GS.def - MachineX86 - - - - - - - - - - true - true - - - - - - - - - - true - true - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + GSnull + {5FCBD521-5A0B-4D97-A823-A97E6BAB9101} + GSnull + Win32Proj + + + + DynamicLibrary + MultiByte + true + v110_xp + + + DynamicLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(ProjectName)-dbg + + + + + + + + $(OutDir)$(TargetName)$(TargetExt) + GS.def + MachineX86 + + + + + + + + + GS.def + MachineX86 + + + + + + + + + + true + true + + + + + + + + + + true + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/GSnull/Windows/GSnull_vs2012.vcxproj.filters b/plugins/GSnull/Windows/GSnull_vs2012.vcxproj.filters index 72c50de3ea..1b1da962ab 100644 --- a/plugins/GSnull/Windows/GSnull_vs2012.vcxproj.filters +++ b/plugins/GSnull/Windows/GSnull_vs2012.vcxproj.filters @@ -1,75 +1,75 @@ - - - - - {c3be7c7d-acc0-4d04-87e2-d8c905f5623d} - cpp;c;cxx;def;odl;idl;hpj;bat;asm - - - {d049a6c7-ffed-4403-8697-c32b110473ec} - h;hpp;hxx;hm;inl;inc - - - {43d885bc-a996-4dc7-935e-c5511250143e} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - - - Resource Files - - - - - Header Files - - + + + + + {c3be7c7d-acc0-4d04-87e2-d8c905f5623d} + cpp;c;cxx;def;odl;idl;hpj;bat;asm + + + {d049a6c7-ffed-4403-8697-c32b110473ec} + h;hpp;hxx;hm;inl;inc + + + {43d885bc-a996-4dc7-935e-c5511250143e} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + + + Resource Files + + + + + Header Files + + \ No newline at end of file diff --git a/plugins/GSnull/Windows/ProjectRootDir.props b/plugins/GSnull/Windows/ProjectRootDir.props index 8d9f9ad374..423e907385 100644 --- a/plugins/GSnull/Windows/ProjectRootDir.props +++ b/plugins/GSnull/Windows/ProjectRootDir.props @@ -1,15 +1,15 @@ - - - - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(SvnRootDir) - - + + + + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/plugins/LilyPad/LilyPad.def b/plugins/LilyPad/LilyPad.def index b422fe418d..f0ab48b0be 100644 --- a/plugins/LilyPad/LilyPad.def +++ b/plugins/LilyPad/LilyPad.def @@ -1,25 +1,25 @@ -EXPORTS - PS2EgetLibType - PS2EgetLibName - PS2EgetLibVersion2 - PSEgetLibType - PSEgetLibName - PSEgetLibVersion - PADreadPort1 - PADreadPort2 - PADinit - PADshutdown - PADopen - PADclose - PADkeyEvent - PADstartPoll - PADpoll - PADquery - PADconfigure - PADtest - PADabout - PADupdate - PADfreeze - PADsetSlot - PADsetSettingsDir - PADqueryMtap +EXPORTS + PS2EgetLibType + PS2EgetLibName + PS2EgetLibVersion2 + PSEgetLibType + PSEgetLibName + PSEgetLibVersion + PADreadPort1 + PADreadPort2 + PADinit + PADshutdown + PADopen + PADclose + PADkeyEvent + PADstartPoll + PADpoll + PADquery + PADconfigure + PADtest + PADabout + PADupdate + PADfreeze + PADsetSlot + PADsetSettingsDir + PADqueryMtap diff --git a/plugins/LilyPad/LilyPad.rc b/plugins/LilyPad/LilyPad.rc index efcc8f250b..8ae7794a2b 100644 --- a/plugins/LilyPad/LilyPad.rc +++ b/plugins/LilyPad/LilyPad.rc @@ -1,353 +1,353 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include \r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOGEX 0, 0, 424, 318 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,183,285,WS_EX_CLIENTEDGE - PUSHBUTTON "Delete Selected",ID_DELETE,7,296,59,15 - PUSHBUTTON "Clear All",ID_CLEAR,71,296,56,15 - PUSHBUTTON "Ignore Key",ID_IGNORE,132,296,58,15 - PUSHBUTTON "Square",ID_SQUARE,196,7,45,15 - PUSHBUTTON "Cross",ID_CROSS,196,26,45,15 - PUSHBUTTON "Triangle",ID_TRIANGLE,246,7,45,15 - PUSHBUTTON "Circle",ID_CIRCLE,246,26,45,15 - PUSHBUTTON "Select",ID_SELECT,306,7,45,15 - PUSHBUTTON "Start",ID_START,306,26,45,15 - PUSHBUTTON "Analog",ID_ANALOG,372,7,45,15 - PUSHBUTTON "Mouse",ID_MOUSE,372,26,45,15 - PUSHBUTTON "L1",ID_L1,196,52,45,15 - PUSHBUTTON "R1",ID_R1,372,52,45,15 - PUSHBUTTON "L2",ID_L2,196,73,45,15 - PUSHBUTTON "R2",ID_R2,372,73,45,15 - PUSHBUTTON "L3",ID_L3,195,93,45,15 - PUSHBUTTON "R3",ID_R3,371,93,46,15 - GROUPBOX "D-Pad",IDC_DPAD,251,44,110,70 - PUSHBUTTON "Up",ID_DPAD_UP,285,55,35,15 - PUSHBUTTON "Left",ID_DPAD_LEFT,267,74,35,15 - PUSHBUTTON "Right",ID_DPAD_RIGHT,307,74,35,15 - PUSHBUTTON "Down",ID_DPAD_DOWN,285,93,35,15 - GROUPBOX "Left Analog Stick",IDC_LSTICK,195,115,108,70 - PUSHBUTTON "Up",ID_LSTICK_UP,228,126,35,15 - PUSHBUTTON "Left",ID_LSTICK_LEFT,210,145,35,15 - PUSHBUTTON "Right",ID_LSTICK_RIGHT,250,145,35,15 - PUSHBUTTON "Down",ID_LSTICK_DOWN,228,165,35,15 - GROUPBOX "Right Analog Stick",IDC_RSTICK,309,115,108,70 - PUSHBUTTON "Up",ID_RSTICK_UP,342,126,35,15 - PUSHBUTTON "Left",ID_RSTICK_LEFT,324,145,35,15 - PUSHBUTTON "Right",ID_RSTICK_RIGHT,364,145,35,15 - PUSHBUTTON "Down",ID_RSTICK_DOWN,342,165,35,15 - GROUPBOX "",ID_FF,195,6,222,248 - COMBOBOX IDC_FF_EFFECT,203,20,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "",IDC_FF_AXIS1,"msctls_trackbar32",WS_TABSTOP,199,40,214,17 - CONTROL "Axis 1",IDC_FF_AXIS1_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,60,91,10 - CONTROL "Flip",IDC_FF_AXIS1_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,60,35,10 - EDITTEXT IDC_FF_AXIS1_SCALE,375,60,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - CONTROL "",IDC_FF_AXIS2,"msctls_trackbar32",WS_TABSTOP,199,76,214,17 - CONTROL "Axis 2",IDC_FF_AXIS2_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,96,91,10 - CONTROL "Flip",IDC_FF_AXIS2_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,96,35,10 - EDITTEXT IDC_FF_AXIS2_SCALE,375,96,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - CONTROL "",IDC_FF_AXIS3,"msctls_trackbar32",WS_TABSTOP,199,112,214,17 - CONTROL "Axis 3",IDC_FF_AXIS3_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,132,91,10 - CONTROL "Flip",IDC_FF_AXIS3_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,132,35,10 - EDITTEXT IDC_FF_AXIS3_SCALE,375,132,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - CONTROL "",IDC_FF_AXIS4,"msctls_trackbar32",WS_TABSTOP,199,148,214,17 - CONTROL "Axis 4",IDC_FF_AXIS4_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,168,91,10 - CONTROL "Flip",IDC_FF_AXIS4_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,168,35,10 - EDITTEXT IDC_FF_AXIS4_SCALE,375,168,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - CONTROL "",IDC_FF_AXIS5,"msctls_trackbar32",WS_TABSTOP,199,184,214,17 - CONTROL "Axis 5",IDC_FF_AXIS5_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,204,91,10 - CONTROL "Flip",IDC_FF_AXIS5_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,204,35,10 - EDITTEXT IDC_FF_AXIS5_SCALE,375,204,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - CONTROL "",IDC_FF_AXIS6,"msctls_trackbar32",WS_TABSTOP,199,220,214,17 - CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,240,91,10 - CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,240,35,10 - EDITTEXT IDC_FF_AXIS6_SCALE,375,240,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - PUSHBUTTON "Test",ID_TEST,196,260,59,15 - PUSHBUTTON "Back to Controls",ID_CONTROLS,196,296,59,15 - GROUPBOX "Configure Binding",ID_SENSITIVITY,195,186,222,70 - EDITTEXT IDC_AXIS_DEVICE1,202,199,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - COMBOBOX IDC_AXIS_DIRECTION,276,197,70,47,CBS_DROPDOWNLIST | WS_TABSTOP - EDITTEXT IDC_AXIS_CONTROL1,349,199,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - LTEXT "Sensitivity",IDC_LABEL_SENSITIVITY,202,215,42,8 - CONTROL "Turbo",IDC_TURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,225,34,10 - CONTROL "",IDC_SLIDER1,"msctls_trackbar32",WS_TABSTOP,240,215,131,17 - EDITTEXT IDC_AXIS_SENSITIVITY1,377,213,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - CONTROL "Flip",IDC_FLIP1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,385,224,27,10 - LTEXT "Dead Zone",IDC_LABEL_DEADZONE,202,240,42,8 - CONTROL "",IDC_SLIDER_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,236,131,17 - EDITTEXT IDC_AXIS_DEADZONE,377,239,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - PUSHBUTTON "Lock Input",ID_LOCK,196,260,59,15 - PUSHBUTTON "Lock Direction",ID_LOCK_DIRECTION,196,278,59,15 - PUSHBUTTON "Lock Buttons",ID_LOCK_BUTTONS,196,296,59,15 - GROUPBOX "Add Force Feedback Effect",IDC_STATIC,262,260,155,51 - COMBOBOX IDC_FORCEFEEDBACK,269,273,142,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,291,64,14 - PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,291,64,14 -END - -IDD_CONFIG_GUITAR DIALOGEX 0, 0, 424, 318 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,183,285,WS_EX_CLIENTEDGE - PUSHBUTTON "Delete Selected",ID_DELETE,7,296,59,15 - PUSHBUTTON "Clear All",ID_CLEAR,71,296,56,15 - PUSHBUTTON "Ignore Key",ID_IGNORE,132,296,58,15 - PUSHBUTTON "Fret 1",ID_R2,283,7,45,15 - PUSHBUTTON "Fret 2",ID_CIRCLE,283,30,45,15 - PUSHBUTTON "Fret 3",ID_TRIANGLE,283,53,45,15 - PUSHBUTTON "Fret 4",ID_CROSS,283,76,45,15 - PUSHBUTTON "Fret 5",ID_SQUARE,283,99,45,15 - PUSHBUTTON "Start",ID_START,256,122,45,15 - PUSHBUTTON "Select/Tilt",ID_SELECT,307,122,45,15 - PUSHBUTTON "Whammy Bar Up",ID_LSTICK_UP,219,146,69,15 - PUSHBUTTON "Whammy Bar Down",ID_LSTICK_DOWN,219,164,69,15 - PUSHBUTTON "Strum Bar Up",ID_DPAD_UP,336,146,58,15 - PUSHBUTTON "Strum Bar Down",ID_DPAD_DOWN,336,164,58,15 - GROUPBOX "",ID_FF,195,6,222,248 - COMBOBOX IDC_FF_EFFECT,203,20,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "",IDC_FF_AXIS1,"msctls_trackbar32",WS_TABSTOP,199,40,214,17 - CONTROL "Axis 1",IDC_FF_AXIS1_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,60,91,10 - CONTROL "Flip",IDC_FF_AXIS1_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,60,35,10 - EDITTEXT IDC_FF_AXIS1_SCALE,375,60,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - CONTROL "",IDC_FF_AXIS2,"msctls_trackbar32",WS_TABSTOP,199,76,214,17 - CONTROL "Axis 2",IDC_FF_AXIS2_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,96,91,10 - CONTROL "Flip",IDC_FF_AXIS2_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,96,35,10 - EDITTEXT IDC_FF_AXIS2_SCALE,375,96,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - CONTROL "",IDC_FF_AXIS3,"msctls_trackbar32",WS_TABSTOP,199,112,214,17 - CONTROL "Axis 3",IDC_FF_AXIS3_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,132,91,10 - CONTROL "Flip",IDC_FF_AXIS3_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,132,35,10 - EDITTEXT IDC_FF_AXIS3_SCALE,375,132,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - CONTROL "",IDC_FF_AXIS4,"msctls_trackbar32",WS_TABSTOP,199,148,214,17 - CONTROL "Axis 4",IDC_FF_AXIS4_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,168,91,10 - CONTROL "Flip",IDC_FF_AXIS4_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,168,35,10 - EDITTEXT IDC_FF_AXIS4_SCALE,375,168,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - CONTROL "",IDC_FF_AXIS5,"msctls_trackbar32",WS_TABSTOP,199,184,214,17 - CONTROL "Axis 5",IDC_FF_AXIS5_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,204,91,10 - CONTROL "Flip",IDC_FF_AXIS5_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,204,35,10 - EDITTEXT IDC_FF_AXIS5_SCALE,375,204,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - CONTROL "",IDC_FF_AXIS6,"msctls_trackbar32",WS_TABSTOP,199,220,214,17 - CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,240,91,10 - CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,240,35,10 - EDITTEXT IDC_FF_AXIS6_SCALE,375,240,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - PUSHBUTTON "Test",ID_TEST,196,260,59,15 - PUSHBUTTON "Back to Controls",ID_CONTROLS,196,296,59,15 - GROUPBOX "Configure Binding",ID_SENSITIVITY,195,186,222,70 - EDITTEXT IDC_AXIS_DEVICE1,202,199,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - COMBOBOX IDC_AXIS_DIRECTION,276,197,70,47,CBS_DROPDOWNLIST | WS_TABSTOP - EDITTEXT IDC_AXIS_CONTROL1,349,199,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - LTEXT "Sensitivity",IDC_LABEL_SENSITIVITY,202,215,42,8 - CONTROL "Turbo",IDC_TURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,225,34,10 - CONTROL "",IDC_SLIDER1,"msctls_trackbar32",WS_TABSTOP,240,215,131,17 - EDITTEXT IDC_AXIS_SENSITIVITY1,377,213,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - CONTROL "Flip",IDC_FLIP1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,385,224,27,10 - LTEXT "Dead Zone",IDC_LABEL_DEADZONE,202,240,42,8 - CONTROL "",IDC_SLIDER_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,236,131,17 - EDITTEXT IDC_AXIS_DEADZONE,377,239,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING - PUSHBUTTON "Lock Input",ID_LOCK,196,260,59,15 - PUSHBUTTON "Lock Direction",ID_LOCK_DIRECTION,196,278,59,15 - PUSHBUTTON "Lock Buttons",ID_LOCK_BUTTONS,196,296,59,15 - GROUPBOX "Add Force Feedback Effect",IDC_STATIC,262,260,155,51 - COMBOBOX IDC_FORCEFEEDBACK,269,273,142,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,291,64,14 - PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,291,64,14 -END - -IDD_GENERAL DIALOGEX 0, 0, 424, 327 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - GROUPBOX "Input APIs",IDC_STATIC,7,6,410,133 - GROUPBOX "Keyboard API",IDC_STATIC,16,16,192,51 - CONTROL "Windows messaging (Recommended)",IDC_KB_WM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,22,28,134,10 - CONTROL "Raw input (XP and later only)",IDC_KB_RAW,"Button",BS_AUTORADIOBUTTON,22,40,112,10 - CONTROL "DirectInput",IDC_KB_DI,"Button",BS_AUTORADIOBUTTON,22,52,112,10 - GROUPBOX "Game Device APIs",IDC_STATIC,16,70,191,62 - CONTROL "DirectInput",IDC_G_DI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,82,65,10 - CONTROL "XInput (Xbox 360 controllers only)",IDC_G_XI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,94,125,10 - CONTROL "DualShock 3 native mode (Requires libusb)",IDC_G_DS3, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,106,151,10 - CONTROL "Monitor when in background",IDC_BACKGROUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,118,106,10 - GROUPBOX "Mouse API",IDC_STATIC,216,16,192,86 - CONTROL "Windows messaging (Recommended)",IDC_M_WM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,223,27,134,10 - CONTROL "Raw input (XP and later only)",IDC_M_RAW,"Button",BS_AUTORADIOBUTTON,223,39,112,10 - CONTROL "DirectInput",IDC_M_DI,"Button",BS_AUTORADIOBUTTON,223,51,112,10 - CONTROL "Disable",IDC_M_DISABLE,"Button",BS_AUTORADIOBUTTON,223,63,39,10 - CONTROL "Start without mouse focus",IDC_MOUSE_UNFOCUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,75,97,10 - CONTROL "Always hide cursor",IDC_FORCE_HIDE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,87,71,10 - GROUPBOX "Advanced",IDC_STATIC,215,105,192,27 - CONTROL "Allow binding multiple PS2 controls to one PC control",IDC_MULTIPLE_BINDING, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,117,182,10 - GROUPBOX "Pads",IDC_STATIC,7,145,410,69 - CONTROL "Port 1 Multitap",IDC_MULTITAP1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,157,63,10 - CONTROL "Port 2 Multitap",IDC_MULTITAP2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,169,63,10 - CONTROL "",IDC_PAD_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | WS_TABSTOP,81,156,183,52,WS_EX_CLIENTEDGE - COMBOBOX IDC_PAD_TYPE,270,155,140,41,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Use analog mode if possible - PS1 only",IDC_ANALOG_START1, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,270,172,132,10 - GROUPBOX "Device Diagnostics",IDC_STATIC,7,219,201,101 - CONTROL "",IDC_LIST,"SysListView32",LVS_LIST | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,14,231,187,65,WS_EX_CLIENTEDGE - PUSHBUTTON "Test Device",ID_TEST,87,300,57,15 - PUSHBUTTON "Refresh",ID_REFRESH,153,300,48,15 - GROUPBOX "Miscellaneous",IDC_STATIC,216,219,201,35 - CONTROL "Disable screensaver",IDC_DISABLE_SCREENSAVER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,221,230,80,10 - CONTROL "Local volume control",IDC_VISTA_VOLUME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,221,241,77,10 - CONTROL "Enable logging",IDC_DEBUG_FILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,230,62,10 - GROUPBOX "Hacks",IDC_STATIC,216,256,201,46 - CONTROL "Send escape on window close",IDC_CLOSE_HACK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,266,113,10 - CONTROL "Exit emulator on window close",IDC_CLOSE_HACK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,277,112,10 - CONTROL "Safe fullscreen exit on escape",IDC_ESCAPE_FULLSCREEN_HACK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,288,112,10 - CONTROL "Save state # in title",IDC_SAVE_STATE_TITLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,266,79,10 - CONTROL "Guitar Hero 2 Hack",IDC_GH2_HACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,277,76,10 - PUSHBUTTON "Load Bindings",ID_LOAD,283,305,62,15 - PUSHBUTTON "Save Bindings",ID_SAVE,355,305,62,15 - CONTROL "L3 Toggles Turbo",IDC_TURBO_KEY_HACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,288,66,10 -END - -IDD_ABOUT DIALOGEX 0, 0, 108, 66 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "About LilyPad" -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - CTEXT "LilyPad plugin",IDC_VERSION,7,7,94,10 - ICON IDI_FROG,IDC_STATIC,42,20,21,20 - DEFPUSHBUTTON "OK",IDOK,28,45,50,14 -END - -IDD_DIAG DIALOGEX 0, 0, 190, 178 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION " " -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,176,164,WS_EX_CLIENTEDGE -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 417 - TOPMARGIN, 7 - BOTTOMMARGIN, 311 - END - - IDD_CONFIG_GUITAR, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 417 - TOPMARGIN, 7 - BOTTOMMARGIN, 311 - END - - IDD_GENERAL, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 417 - TOPMARGIN, 7 - BOTTOMMARGIN, 319 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 101 - TOPMARGIN, 7 - BOTTOMMARGIN, 59 - END - - IDD_DIAG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 183 - TOPMARGIN, 7 - BOTTOMMARGIN, 171 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_FROG ICON "frog.ico" -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include \r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 424, 318 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,183,285,WS_EX_CLIENTEDGE + PUSHBUTTON "Delete Selected",ID_DELETE,7,296,59,15 + PUSHBUTTON "Clear All",ID_CLEAR,71,296,56,15 + PUSHBUTTON "Ignore Key",ID_IGNORE,132,296,58,15 + PUSHBUTTON "Square",ID_SQUARE,196,7,45,15 + PUSHBUTTON "Cross",ID_CROSS,196,26,45,15 + PUSHBUTTON "Triangle",ID_TRIANGLE,246,7,45,15 + PUSHBUTTON "Circle",ID_CIRCLE,246,26,45,15 + PUSHBUTTON "Select",ID_SELECT,306,7,45,15 + PUSHBUTTON "Start",ID_START,306,26,45,15 + PUSHBUTTON "Analog",ID_ANALOG,372,7,45,15 + PUSHBUTTON "Mouse",ID_MOUSE,372,26,45,15 + PUSHBUTTON "L1",ID_L1,196,52,45,15 + PUSHBUTTON "R1",ID_R1,372,52,45,15 + PUSHBUTTON "L2",ID_L2,196,73,45,15 + PUSHBUTTON "R2",ID_R2,372,73,45,15 + PUSHBUTTON "L3",ID_L3,195,93,45,15 + PUSHBUTTON "R3",ID_R3,371,93,46,15 + GROUPBOX "D-Pad",IDC_DPAD,251,44,110,70 + PUSHBUTTON "Up",ID_DPAD_UP,285,55,35,15 + PUSHBUTTON "Left",ID_DPAD_LEFT,267,74,35,15 + PUSHBUTTON "Right",ID_DPAD_RIGHT,307,74,35,15 + PUSHBUTTON "Down",ID_DPAD_DOWN,285,93,35,15 + GROUPBOX "Left Analog Stick",IDC_LSTICK,195,115,108,70 + PUSHBUTTON "Up",ID_LSTICK_UP,228,126,35,15 + PUSHBUTTON "Left",ID_LSTICK_LEFT,210,145,35,15 + PUSHBUTTON "Right",ID_LSTICK_RIGHT,250,145,35,15 + PUSHBUTTON "Down",ID_LSTICK_DOWN,228,165,35,15 + GROUPBOX "Right Analog Stick",IDC_RSTICK,309,115,108,70 + PUSHBUTTON "Up",ID_RSTICK_UP,342,126,35,15 + PUSHBUTTON "Left",ID_RSTICK_LEFT,324,145,35,15 + PUSHBUTTON "Right",ID_RSTICK_RIGHT,364,145,35,15 + PUSHBUTTON "Down",ID_RSTICK_DOWN,342,165,35,15 + GROUPBOX "",ID_FF,195,6,222,248 + COMBOBOX IDC_FF_EFFECT,203,20,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "",IDC_FF_AXIS1,"msctls_trackbar32",WS_TABSTOP,199,40,214,17 + CONTROL "Axis 1",IDC_FF_AXIS1_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,60,91,10 + CONTROL "Flip",IDC_FF_AXIS1_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,60,35,10 + EDITTEXT IDC_FF_AXIS1_SCALE,375,60,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + CONTROL "",IDC_FF_AXIS2,"msctls_trackbar32",WS_TABSTOP,199,76,214,17 + CONTROL "Axis 2",IDC_FF_AXIS2_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,96,91,10 + CONTROL "Flip",IDC_FF_AXIS2_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,96,35,10 + EDITTEXT IDC_FF_AXIS2_SCALE,375,96,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + CONTROL "",IDC_FF_AXIS3,"msctls_trackbar32",WS_TABSTOP,199,112,214,17 + CONTROL "Axis 3",IDC_FF_AXIS3_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,132,91,10 + CONTROL "Flip",IDC_FF_AXIS3_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,132,35,10 + EDITTEXT IDC_FF_AXIS3_SCALE,375,132,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + CONTROL "",IDC_FF_AXIS4,"msctls_trackbar32",WS_TABSTOP,199,148,214,17 + CONTROL "Axis 4",IDC_FF_AXIS4_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,168,91,10 + CONTROL "Flip",IDC_FF_AXIS4_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,168,35,10 + EDITTEXT IDC_FF_AXIS4_SCALE,375,168,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + CONTROL "",IDC_FF_AXIS5,"msctls_trackbar32",WS_TABSTOP,199,184,214,17 + CONTROL "Axis 5",IDC_FF_AXIS5_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,204,91,10 + CONTROL "Flip",IDC_FF_AXIS5_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,204,35,10 + EDITTEXT IDC_FF_AXIS5_SCALE,375,204,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + CONTROL "",IDC_FF_AXIS6,"msctls_trackbar32",WS_TABSTOP,199,220,214,17 + CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,240,91,10 + CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,240,35,10 + EDITTEXT IDC_FF_AXIS6_SCALE,375,240,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + PUSHBUTTON "Test",ID_TEST,196,260,59,15 + PUSHBUTTON "Back to Controls",ID_CONTROLS,196,296,59,15 + GROUPBOX "Configure Binding",ID_SENSITIVITY,195,186,222,70 + EDITTEXT IDC_AXIS_DEVICE1,202,199,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + COMBOBOX IDC_AXIS_DIRECTION,276,197,70,47,CBS_DROPDOWNLIST | WS_TABSTOP + EDITTEXT IDC_AXIS_CONTROL1,349,199,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + LTEXT "Sensitivity",IDC_LABEL_SENSITIVITY,202,215,42,8 + CONTROL "Turbo",IDC_TURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,225,34,10 + CONTROL "",IDC_SLIDER1,"msctls_trackbar32",WS_TABSTOP,240,215,131,17 + EDITTEXT IDC_AXIS_SENSITIVITY1,377,213,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + CONTROL "Flip",IDC_FLIP1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,385,224,27,10 + LTEXT "Dead Zone",IDC_LABEL_DEADZONE,202,240,42,8 + CONTROL "",IDC_SLIDER_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,236,131,17 + EDITTEXT IDC_AXIS_DEADZONE,377,239,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + PUSHBUTTON "Lock Input",ID_LOCK,196,260,59,15 + PUSHBUTTON "Lock Direction",ID_LOCK_DIRECTION,196,278,59,15 + PUSHBUTTON "Lock Buttons",ID_LOCK_BUTTONS,196,296,59,15 + GROUPBOX "Add Force Feedback Effect",IDC_STATIC,262,260,155,51 + COMBOBOX IDC_FORCEFEEDBACK,269,273,142,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,291,64,14 + PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,291,64,14 +END + +IDD_CONFIG_GUITAR DIALOGEX 0, 0, 424, 318 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,183,285,WS_EX_CLIENTEDGE + PUSHBUTTON "Delete Selected",ID_DELETE,7,296,59,15 + PUSHBUTTON "Clear All",ID_CLEAR,71,296,56,15 + PUSHBUTTON "Ignore Key",ID_IGNORE,132,296,58,15 + PUSHBUTTON "Fret 1",ID_R2,283,7,45,15 + PUSHBUTTON "Fret 2",ID_CIRCLE,283,30,45,15 + PUSHBUTTON "Fret 3",ID_TRIANGLE,283,53,45,15 + PUSHBUTTON "Fret 4",ID_CROSS,283,76,45,15 + PUSHBUTTON "Fret 5",ID_SQUARE,283,99,45,15 + PUSHBUTTON "Start",ID_START,256,122,45,15 + PUSHBUTTON "Select/Tilt",ID_SELECT,307,122,45,15 + PUSHBUTTON "Whammy Bar Up",ID_LSTICK_UP,219,146,69,15 + PUSHBUTTON "Whammy Bar Down",ID_LSTICK_DOWN,219,164,69,15 + PUSHBUTTON "Strum Bar Up",ID_DPAD_UP,336,146,58,15 + PUSHBUTTON "Strum Bar Down",ID_DPAD_DOWN,336,164,58,15 + GROUPBOX "",ID_FF,195,6,222,248 + COMBOBOX IDC_FF_EFFECT,203,20,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "",IDC_FF_AXIS1,"msctls_trackbar32",WS_TABSTOP,199,40,214,17 + CONTROL "Axis 1",IDC_FF_AXIS1_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,60,91,10 + CONTROL "Flip",IDC_FF_AXIS1_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,60,35,10 + EDITTEXT IDC_FF_AXIS1_SCALE,375,60,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + CONTROL "",IDC_FF_AXIS2,"msctls_trackbar32",WS_TABSTOP,199,76,214,17 + CONTROL "Axis 2",IDC_FF_AXIS2_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,96,91,10 + CONTROL "Flip",IDC_FF_AXIS2_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,96,35,10 + EDITTEXT IDC_FF_AXIS2_SCALE,375,96,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + CONTROL "",IDC_FF_AXIS3,"msctls_trackbar32",WS_TABSTOP,199,112,214,17 + CONTROL "Axis 3",IDC_FF_AXIS3_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,132,91,10 + CONTROL "Flip",IDC_FF_AXIS3_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,132,35,10 + EDITTEXT IDC_FF_AXIS3_SCALE,375,132,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + CONTROL "",IDC_FF_AXIS4,"msctls_trackbar32",WS_TABSTOP,199,148,214,17 + CONTROL "Axis 4",IDC_FF_AXIS4_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,168,91,10 + CONTROL "Flip",IDC_FF_AXIS4_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,168,35,10 + EDITTEXT IDC_FF_AXIS4_SCALE,375,168,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + CONTROL "",IDC_FF_AXIS5,"msctls_trackbar32",WS_TABSTOP,199,184,214,17 + CONTROL "Axis 5",IDC_FF_AXIS5_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,204,91,10 + CONTROL "Flip",IDC_FF_AXIS5_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,204,35,10 + EDITTEXT IDC_FF_AXIS5_SCALE,375,204,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + CONTROL "",IDC_FF_AXIS6,"msctls_trackbar32",WS_TABSTOP,199,220,214,17 + CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,240,91,10 + CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,240,35,10 + EDITTEXT IDC_FF_AXIS6_SCALE,375,240,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + PUSHBUTTON "Test",ID_TEST,196,260,59,15 + PUSHBUTTON "Back to Controls",ID_CONTROLS,196,296,59,15 + GROUPBOX "Configure Binding",ID_SENSITIVITY,195,186,222,70 + EDITTEXT IDC_AXIS_DEVICE1,202,199,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + COMBOBOX IDC_AXIS_DIRECTION,276,197,70,47,CBS_DROPDOWNLIST | WS_TABSTOP + EDITTEXT IDC_AXIS_CONTROL1,349,199,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + LTEXT "Sensitivity",IDC_LABEL_SENSITIVITY,202,215,42,8 + CONTROL "Turbo",IDC_TURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,225,34,10 + CONTROL "",IDC_SLIDER1,"msctls_trackbar32",WS_TABSTOP,240,215,131,17 + EDITTEXT IDC_AXIS_SENSITIVITY1,377,213,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + CONTROL "Flip",IDC_FLIP1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,385,224,27,10 + LTEXT "Dead Zone",IDC_LABEL_DEADZONE,202,240,42,8 + CONTROL "",IDC_SLIDER_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,236,131,17 + EDITTEXT IDC_AXIS_DEADZONE,377,239,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING + PUSHBUTTON "Lock Input",ID_LOCK,196,260,59,15 + PUSHBUTTON "Lock Direction",ID_LOCK_DIRECTION,196,278,59,15 + PUSHBUTTON "Lock Buttons",ID_LOCK_BUTTONS,196,296,59,15 + GROUPBOX "Add Force Feedback Effect",IDC_STATIC,262,260,155,51 + COMBOBOX IDC_FORCEFEEDBACK,269,273,142,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,291,64,14 + PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,291,64,14 +END + +IDD_GENERAL DIALOGEX 0, 0, 424, 327 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + GROUPBOX "Input APIs",IDC_STATIC,7,6,410,133 + GROUPBOX "Keyboard API",IDC_STATIC,16,16,192,51 + CONTROL "Windows messaging (Recommended)",IDC_KB_WM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,22,28,134,10 + CONTROL "Raw input (XP and later only)",IDC_KB_RAW,"Button",BS_AUTORADIOBUTTON,22,40,112,10 + CONTROL "DirectInput",IDC_KB_DI,"Button",BS_AUTORADIOBUTTON,22,52,112,10 + GROUPBOX "Game Device APIs",IDC_STATIC,16,70,191,62 + CONTROL "DirectInput",IDC_G_DI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,82,65,10 + CONTROL "XInput (Xbox 360 controllers only)",IDC_G_XI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,94,125,10 + CONTROL "DualShock 3 native mode (Requires libusb)",IDC_G_DS3, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,106,151,10 + CONTROL "Monitor when in background",IDC_BACKGROUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,118,106,10 + GROUPBOX "Mouse API",IDC_STATIC,216,16,192,86 + CONTROL "Windows messaging (Recommended)",IDC_M_WM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,223,27,134,10 + CONTROL "Raw input (XP and later only)",IDC_M_RAW,"Button",BS_AUTORADIOBUTTON,223,39,112,10 + CONTROL "DirectInput",IDC_M_DI,"Button",BS_AUTORADIOBUTTON,223,51,112,10 + CONTROL "Disable",IDC_M_DISABLE,"Button",BS_AUTORADIOBUTTON,223,63,39,10 + CONTROL "Start without mouse focus",IDC_MOUSE_UNFOCUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,75,97,10 + CONTROL "Always hide cursor",IDC_FORCE_HIDE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,87,71,10 + GROUPBOX "Advanced",IDC_STATIC,215,105,192,27 + CONTROL "Allow binding multiple PS2 controls to one PC control",IDC_MULTIPLE_BINDING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,117,182,10 + GROUPBOX "Pads",IDC_STATIC,7,145,410,69 + CONTROL "Port 1 Multitap",IDC_MULTITAP1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,157,63,10 + CONTROL "Port 2 Multitap",IDC_MULTITAP2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,169,63,10 + CONTROL "",IDC_PAD_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | WS_TABSTOP,81,156,183,52,WS_EX_CLIENTEDGE + COMBOBOX IDC_PAD_TYPE,270,155,140,41,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Use analog mode if possible - PS1 only",IDC_ANALOG_START1, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,270,172,132,10 + GROUPBOX "Device Diagnostics",IDC_STATIC,7,219,201,101 + CONTROL "",IDC_LIST,"SysListView32",LVS_LIST | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,14,231,187,65,WS_EX_CLIENTEDGE + PUSHBUTTON "Test Device",ID_TEST,87,300,57,15 + PUSHBUTTON "Refresh",ID_REFRESH,153,300,48,15 + GROUPBOX "Miscellaneous",IDC_STATIC,216,219,201,35 + CONTROL "Disable screensaver",IDC_DISABLE_SCREENSAVER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,221,230,80,10 + CONTROL "Local volume control",IDC_VISTA_VOLUME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,221,241,77,10 + CONTROL "Enable logging",IDC_DEBUG_FILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,230,62,10 + GROUPBOX "Hacks",IDC_STATIC,216,256,201,46 + CONTROL "Send escape on window close",IDC_CLOSE_HACK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,266,113,10 + CONTROL "Exit emulator on window close",IDC_CLOSE_HACK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,277,112,10 + CONTROL "Safe fullscreen exit on escape",IDC_ESCAPE_FULLSCREEN_HACK, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,288,112,10 + CONTROL "Save state # in title",IDC_SAVE_STATE_TITLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,266,79,10 + CONTROL "Guitar Hero 2 Hack",IDC_GH2_HACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,277,76,10 + PUSHBUTTON "Load Bindings",ID_LOAD,283,305,62,15 + PUSHBUTTON "Save Bindings",ID_SAVE,355,305,62,15 + CONTROL "L3 Toggles Turbo",IDC_TURBO_KEY_HACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,288,66,10 +END + +IDD_ABOUT DIALOGEX 0, 0, 108, 66 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About LilyPad" +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + CTEXT "LilyPad plugin",IDC_VERSION,7,7,94,10 + ICON IDI_FROG,IDC_STATIC,42,20,21,20 + DEFPUSHBUTTON "OK",IDOK,28,45,50,14 +END + +IDD_DIAG DIALOGEX 0, 0, 190, 178 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION " " +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,176,164,WS_EX_CLIENTEDGE +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 417 + TOPMARGIN, 7 + BOTTOMMARGIN, 311 + END + + IDD_CONFIG_GUITAR, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 417 + TOPMARGIN, 7 + BOTTOMMARGIN, 311 + END + + IDD_GENERAL, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 417 + TOPMARGIN, 7 + BOTTOMMARGIN, 319 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 101 + TOPMARGIN, 7 + BOTTOMMARGIN, 59 + END + + IDD_DIAG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 183 + TOPMARGIN, 7 + BOTTOMMARGIN, 171 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_FROG ICON "frog.ico" +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/LilyPad/LilyPad_vs2012.vcxproj b/plugins/LilyPad/LilyPad_vs2012.vcxproj index 7b8a399780..c42cfc3de6 100644 --- a/plugins/LilyPad/LilyPad_vs2012.vcxproj +++ b/plugins/LilyPad/LilyPad_vs2012.vcxproj @@ -1,509 +1,509 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release No CRT - Win32 - - - Release No CRT - x64 - - - Release - Win32 - - - Release - x64 - - - - LilyPad - {E4081455-398C-4610-A87C-90A8A7D72DC3} - LilyPad - - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - false - MultiByte - v110_xp - - - DynamicLibrary - false - MultiByte - false - v110_xp - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - false - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - false - false - false - true - false - false - false - false - false - false - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(DXSDK_DIR)\Lib\x86;$(LibraryPath) - $(DXSDK_DIR)\include;$(IncludePath) - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - - - - - _USRDLL;TEST_EXPORTS;%(PreprocessorDefinitions) - Use - Global.h - 4995; 4996;%(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - Setupapi.lib;Winmm.lib;ole32.lib;advapi32.lib;user32.lib;kernel32.lib;Comdlg32.lib;dinput8.lib;dxguid.lib;comctl32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - .\LilyPad.def - false - MachineX86 - - - true - .\Debug/LilyPad.bsc - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - - - - - NDEBUG;_USRDLL;TEST_EXPORTS;%(PreprocessorDefinitions) - - - Use - Global.h - FastCall - 4995; 4996;%(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - Setupapi.lib;Winmm.lib;ole32.lib;advapi32.lib;user32.lib;kernel32.lib;Comdlg32.lib;dinput8.lib;dxguid.lib;comctl32.lib;%(AdditionalDependencies) - true - .\LilyPad.def - true - true - - - false - - - MachineX86 - - - true - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - - - - - false - NDEBUG;_USRDLL;TEST_EXPORTS;NO_CRT;%(PreprocessorDefinitions) - - - Use - Global.h - FastCall - 4995; 4996;%(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ntdll.lib;Setupapi.lib;Winmm.lib;ole32.lib;advapi32.lib;user32.lib;kernel32.lib;Comdlg32.lib;dinput8.lib;dxguid.lib;comctl32.lib;%(AdditionalDependencies) - $(OutDir)$(ProjectName)-no CRT.dll - true - true - .\LilyPad.def - true - true - - - DllMain - false - MachineX86 - - - true - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 - - - - - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;TEST_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - Use - Global.h - Level3 - true - ProgramDatabase - 4995; 4996;%(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ntdll.lib;Setupapi.lib;Winmm.lib;ole32.lib;advapi32.lib;user32.lib;kernel32.lib;Comdlg32.lib;dinput8.lib;dxguid.lib;comctl32.lib;%(AdditionalDependencies) - true - true - MachineX64 - - - true - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - - - - - AnySuitable - Speed - true - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;TEST_EXPORTS;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - Fast - Use - Global.h - Level3 - true - FastCall - 4995; 4996;%(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - odbc32.lib;odbccp32.lib;dinput8.lib;dxguid.lib;comctl32.lib;%(AdditionalDependencies) - $(OutDir)$(ProjectName)64.dll - true - .\LilyPad.def - true - true - DllMain - false - MachineX86 - - - true - .\Release/LilyPad.bsc - - - mt.exe -manifest $(IntDir)LilyPad64.dll.manifest -outputresource:$(OutDir)$(ProjectName)64.dll - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - - - - - AnySuitable - Speed - true - true - false - WIN32;NDEBUG;_WINDOWS;_USRDLL;TEST_EXPORTS;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - Fast - Use - Global.h - FastCall - 4995; 4996;%(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ntdll.lib;Setupapi.lib;Winmm.lib;ole32.lib;advapi32.lib;user32.lib;kernel32.lib;Comdlg32.lib;dinput8.lib;dxguid.lib;comctl32.lib;%(AdditionalDependencies) - $(OutDir)$(ProjectName)64.dll - true - true - .\LilyPad.def - true - true - - - 0x15000000 - MachineX64 - - - true - .\Release No CRT/LilyPad.bsc - - - mt.exe -manifest $(IntDir)LilyPad64.dll.manifest -outputresource:$(OutDir)$(ProjectName)64.dll - - - - - %(PreprocessorDefinitions) - %(PreprocessorDefinitions) - MaxSpeed - %(PreprocessorDefinitions) - MaxSpeed - Size - %(PreprocessorDefinitions) - MaxSpeed - %(PreprocessorDefinitions) - MaxSpeed - Size - %(PreprocessorDefinitions) - - - - %(PreprocessorDefinitions) - %(PreprocessorDefinitions) - MaxSpeed - %(PreprocessorDefinitions) - MaxSpeed - Size - %(PreprocessorDefinitions) - MaxSpeed - %(PreprocessorDefinitions) - MaxSpeed - Size - %(PreprocessorDefinitions) - - - Create - Create - Create - Create - Create - Create - - - - - - - - - - - - - - - %(PreprocessorDefinitions) - %(PreprocessorDefinitions) - MaxSpeed - %(PreprocessorDefinitions) - MaxSpeed - Size - %(PreprocessorDefinitions) - MaxSpeed - %(PreprocessorDefinitions) - MaxSpeed - Size - %(PreprocessorDefinitions) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %(PreprocessorDefinitions) - %(PreprocessorDefinitions) - %(PreprocessorDefinitions) - %(PreprocessorDefinitions) - %(PreprocessorDefinitions) - %(PreprocessorDefinitions) - - - - - + + + + + Debug + Win32 + + + Debug + x64 + + + Release No CRT + Win32 + + + Release No CRT + x64 + + + Release + Win32 + + + Release + x64 + + + + LilyPad + {E4081455-398C-4610-A87C-90A8A7D72DC3} + LilyPad + + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + false + MultiByte + v110_xp + + + DynamicLibrary + false + MultiByte + false + v110_xp + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + false + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + false + false + false + true + false + false + false + false + false + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(DXSDK_DIR)\Lib\x86;$(LibraryPath) + $(DXSDK_DIR)\include;$(IncludePath) + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + + + _USRDLL;TEST_EXPORTS;%(PreprocessorDefinitions) + Use + Global.h + 4995; 4996;%(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Setupapi.lib;Winmm.lib;ole32.lib;advapi32.lib;user32.lib;kernel32.lib;Comdlg32.lib;dinput8.lib;dxguid.lib;comctl32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + .\LilyPad.def + false + MachineX86 + + + true + .\Debug/LilyPad.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + + + NDEBUG;_USRDLL;TEST_EXPORTS;%(PreprocessorDefinitions) + + + Use + Global.h + FastCall + 4995; 4996;%(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Setupapi.lib;Winmm.lib;ole32.lib;advapi32.lib;user32.lib;kernel32.lib;Comdlg32.lib;dinput8.lib;dxguid.lib;comctl32.lib;%(AdditionalDependencies) + true + .\LilyPad.def + true + true + + + false + + + MachineX86 + + + true + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + + + false + NDEBUG;_USRDLL;TEST_EXPORTS;NO_CRT;%(PreprocessorDefinitions) + + + Use + Global.h + FastCall + 4995; 4996;%(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ntdll.lib;Setupapi.lib;Winmm.lib;ole32.lib;advapi32.lib;user32.lib;kernel32.lib;Comdlg32.lib;dinput8.lib;dxguid.lib;comctl32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName)-no CRT.dll + true + true + .\LilyPad.def + true + true + + + DllMain + false + MachineX86 + + + true + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + + + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;TEST_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Use + Global.h + Level3 + true + ProgramDatabase + 4995; 4996;%(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ntdll.lib;Setupapi.lib;Winmm.lib;ole32.lib;advapi32.lib;user32.lib;kernel32.lib;Comdlg32.lib;dinput8.lib;dxguid.lib;comctl32.lib;%(AdditionalDependencies) + true + true + MachineX64 + + + true + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + + + + + AnySuitable + Speed + true + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;TEST_EXPORTS;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + Fast + Use + Global.h + Level3 + true + FastCall + 4995; 4996;%(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + odbc32.lib;odbccp32.lib;dinput8.lib;dxguid.lib;comctl32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName)64.dll + true + .\LilyPad.def + true + true + DllMain + false + MachineX86 + + + true + .\Release/LilyPad.bsc + + + mt.exe -manifest $(IntDir)LilyPad64.dll.manifest -outputresource:$(OutDir)$(ProjectName)64.dll + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + + + + + AnySuitable + Speed + true + true + false + WIN32;NDEBUG;_WINDOWS;_USRDLL;TEST_EXPORTS;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + Fast + Use + Global.h + FastCall + 4995; 4996;%(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ntdll.lib;Setupapi.lib;Winmm.lib;ole32.lib;advapi32.lib;user32.lib;kernel32.lib;Comdlg32.lib;dinput8.lib;dxguid.lib;comctl32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName)64.dll + true + true + .\LilyPad.def + true + true + + + 0x15000000 + MachineX64 + + + true + .\Release No CRT/LilyPad.bsc + + + mt.exe -manifest $(IntDir)LilyPad64.dll.manifest -outputresource:$(OutDir)$(ProjectName)64.dll + + + + + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + MaxSpeed + %(PreprocessorDefinitions) + MaxSpeed + Size + %(PreprocessorDefinitions) + MaxSpeed + %(PreprocessorDefinitions) + MaxSpeed + Size + %(PreprocessorDefinitions) + + + + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + MaxSpeed + %(PreprocessorDefinitions) + MaxSpeed + Size + %(PreprocessorDefinitions) + MaxSpeed + %(PreprocessorDefinitions) + MaxSpeed + Size + %(PreprocessorDefinitions) + + + Create + Create + Create + Create + Create + Create + + + + + + + + + + + + + + + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + MaxSpeed + %(PreprocessorDefinitions) + MaxSpeed + Size + %(PreprocessorDefinitions) + MaxSpeed + %(PreprocessorDefinitions) + MaxSpeed + Size + %(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + + + + + \ No newline at end of file diff --git a/plugins/LilyPad/LilyPad_vs2012.vcxproj.filters b/plugins/LilyPad/LilyPad_vs2012.vcxproj.filters index 4245c7416d..83a889c3ec 100644 --- a/plugins/LilyPad/LilyPad_vs2012.vcxproj.filters +++ b/plugins/LilyPad/LilyPad_vs2012.vcxproj.filters @@ -1,151 +1,151 @@ - - - - - {c3444fe6-e86c-41ad-b284-9aaa0085018c} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {3dc117c4-127f-4132-8d90-a21203ff7c9a} - h;hpp;hxx;hm;inl - - - {acd9ab42-6216-4bd0-a5b5-b849e2d1ba3f} - ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - {15d8bba0-4d93-410e-9892-ff6062a6a6c0} - - - {0ef876e2-98b1-4cf0-8733-7cfe1a728411} - - - - - Source Files - - - Source Files - - - Source Files - - - Header Files - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - Input - - - Input - - - Input - - - Input - - - - - Source Files - - - Source Files - - - Header Files - - - Header Files - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - InputAPIs - - - Input - - - Input - - - Input - - - Input - - - - - Resource Files - - - Resource Files - - - - - Resource Files - - + + + + + {c3444fe6-e86c-41ad-b284-9aaa0085018c} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {3dc117c4-127f-4132-8d90-a21203ff7c9a} + h;hpp;hxx;hm;inl + + + {acd9ab42-6216-4bd0-a5b5-b849e2d1ba3f} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + {15d8bba0-4d93-410e-9892-ff6062a6a6c0} + + + {0ef876e2-98b1-4cf0-8733-7cfe1a728411} + + + + + Source Files + + + Source Files + + + Source Files + + + Header Files + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + Input + + + Input + + + Input + + + Input + + + + + Source Files + + + Source Files + + + Header Files + + + Header Files + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + InputAPIs + + + Input + + + Input + + + Input + + + Input + + + + + Resource Files + + + Resource Files + + + + + Resource Files + + \ No newline at end of file diff --git a/plugins/LilyPad/ProjectRootDir.props b/plugins/LilyPad/ProjectRootDir.props index fef7436197..8159863d3a 100644 --- a/plugins/LilyPad/ProjectRootDir.props +++ b/plugins/LilyPad/ProjectRootDir.props @@ -1,26 +1,26 @@ - - - - $(ProjectDir). - $(ProjectRootDir)\..\.. - plugins - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(ProjectRootDir) - - - $(SvnRootDir) - - - $(PcsxSubsection) - - - $(SvnCommonDir) - - + + + + $(ProjectDir). + $(ProjectRootDir)\..\.. + plugins + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(ProjectRootDir) + + + $(SvnRootDir) + + + $(PcsxSubsection) + + + $(SvnCommonDir) + + \ No newline at end of file diff --git a/plugins/PadNull/Windows/PadNull_vs2012.vcxproj b/plugins/PadNull/Windows/PadNull_vs2012.vcxproj index 199da12be0..a8c894a1a0 100644 --- a/plugins/PadNull/Windows/PadNull_vs2012.vcxproj +++ b/plugins/PadNull/Windows/PadNull_vs2012.vcxproj @@ -1,108 +1,108 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - Padnull - {6BC4D85D-A399-407E-96A9-CD5416A54269} - Padnull - Win32Proj - - - - DynamicLibrary - MultiByte - true - v110_xp - - - DynamicLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - EnableFastChecks - MultiThreadedDebug - - - - - PadNull.def - false - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - MaxSpeed - AnySuitable - true - MultiThreaded - - - - - PadNull.def - false - MachineX86 - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + Padnull + {6BC4D85D-A399-407E-96A9-CD5416A54269} + Padnull + Win32Proj + + + + DynamicLibrary + MultiByte + true + v110_xp + + + DynamicLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + EnableFastChecks + MultiThreadedDebug + + + + + PadNull.def + false + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + MaxSpeed + AnySuitable + true + MultiThreaded + + + + + PadNull.def + false + MachineX86 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/PadNull/Windows/PadNull_vs2012.vcxproj.filters b/plugins/PadNull/Windows/PadNull_vs2012.vcxproj.filters index 2f9353e11d..a05efa5ad5 100644 --- a/plugins/PadNull/Windows/PadNull_vs2012.vcxproj.filters +++ b/plugins/PadNull/Windows/PadNull_vs2012.vcxproj.filters @@ -1,52 +1,52 @@ - - - - - {ea821597-bb54-4b64-bf78-6dac5a784811} - cpp;c;cxx;def;odl;idl;hpj;bat;asm - - - {0899555b-4159-4c99-8d04-8c7c39430402} - h;hpp;hxx;hm;inl;inc - - - {995a9f7e-492c-425a-8736-4481f7a54804} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - - - Resource Files - - + + + + + {ea821597-bb54-4b64-bf78-6dac5a784811} + cpp;c;cxx;def;odl;idl;hpj;bat;asm + + + {0899555b-4159-4c99-8d04-8c7c39430402} + h;hpp;hxx;hm;inl;inc + + + {995a9f7e-492c-425a-8736-4481f7a54804} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + + + Resource Files + + \ No newline at end of file diff --git a/plugins/PadNull/Windows/ProjectRootDir.props b/plugins/PadNull/Windows/ProjectRootDir.props index 8d9f9ad374..423e907385 100644 --- a/plugins/PadNull/Windows/ProjectRootDir.props +++ b/plugins/PadNull/Windows/ProjectRootDir.props @@ -1,15 +1,15 @@ - - - - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(SvnRootDir) - - + + + + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/plugins/PeopsSPU2/Filemap.txt b/plugins/PeopsSPU2/Filemap.txt index da779e097b..9b3aa3e933 100644 --- a/plugins/PeopsSPU2/Filemap.txt +++ b/plugins/PeopsSPU2/Filemap.txt @@ -1,49 +1,49 @@ -######################################################################### - -- spu.c / spu.h - main spu handler - generic init and exit funcs - -- adsr.c / adsr.h - adsr handlers - -- dma.c / dma.h - memory transfer funcs - -- registers.c / registers.h / regs.h - spu register handling - -- reverb.c / reverb.h - simple reverb handlers - -- xa.c / xa.h - xa sound handlers - -- cfg.c / cfg.h - configuration dialogs/file reading funcs - -- dsound.c / oss.c / dsoundoss.h - Windows/Linux sound interfaces - -- freeze.c - save state laoding/saving - -- spu2PeopsSound.* - Windows dll related files (including msvc project files) - -- Makefile - Linux makefile... just do a "make" command to build the plugin - -- stdafx.h - main include file - -- externals.h - generic defines/external vars - -- psemuxa.h - psemu pro xa definitions - -- resource.h - Windows resource header - -######################################################################### - +######################################################################### + +- spu.c / spu.h + main spu handler - generic init and exit funcs + +- adsr.c / adsr.h + adsr handlers + +- dma.c / dma.h + memory transfer funcs + +- registers.c / registers.h / regs.h + spu register handling + +- reverb.c / reverb.h + simple reverb handlers + +- xa.c / xa.h + xa sound handlers + +- cfg.c / cfg.h + configuration dialogs/file reading funcs + +- dsound.c / oss.c / dsoundoss.h + Windows/Linux sound interfaces + +- freeze.c + save state laoding/saving + +- spu2PeopsSound.* + Windows dll related files (including msvc project files) + +- Makefile + Linux makefile... just do a "make" command to build the plugin + +- stdafx.h + main include file + +- externals.h + generic defines/external vars + +- psemuxa.h + psemu pro xa definitions + +- resource.h + Windows resource header + +######################################################################### + diff --git a/plugins/PeopsSPU2/Makefile.win b/plugins/PeopsSPU2/Makefile.win index 56ef33daff..8683fee261 100644 --- a/plugins/PeopsSPU2/Makefile.win +++ b/plugins/PeopsSPU2/Makefile.win @@ -1,79 +1,79 @@ -# Project: spu2PeopsSound -# Makefile created by Dev-C++ 4.9.9.2 - -CPP = g++.exe -CC = gcc.exe -WINDRES = windres.exe -RES = Release/spu2PeopsSound_private.res -OBJ = Release/adsr.o Release/alsa.o Release/cfg.o Release/debug.o Release/dma.o Release/dsound.o Release/freeze.o Release/oss.o Release/record.o Release/registers.o Release/reverb.o Release/spu.o Release/spu2PeopsSound.o Release/StdAfx.o Release/xa.o $(RES) -LINKOBJ = Release/adsr.o Release/alsa.o Release/cfg.o Release/debug.o Release/dma.o Release/dsound.o Release/freeze.o Release/oss.o Release/record.o Release/registers.o Release/reverb.o Release/spu.o Release/spu2PeopsSound.o Release/StdAfx.o Release/xa.o $(RES) -LIBS = -L"lib" -ldsound -lwinmm -luser32 -lgdi32 -ladvapi32 --add-stdcall-alias -INCS = -I"include" -I"D:/Archivos de programa/Microsoft Visual Studio .NET 2003/SDK/v1.1/include" -CXXINCS = -I"lib/gcc/mingw32/3.4.2/include" -I"include/c++/3.4.2/backward" -I"include/c++/3.4.2/mingw32" -I"include/c++/3.4.2" -I"include" -BIN = ../SPU2PeopsDSound.dll -CXXFLAGS = $(CXXINCS) -D__GNUWIN32__ -mcpu=pentium -D_M_IX86=500 -W -DWIN32 -DNDEBUG -D_WINDOWS -D_GCC -O3 -CFLAGS = $(INCS) -D__GNUWIN32__ -mcpu=pentium -D_M_IX86=500 -W -DWIN32 -DNDEBUG -D_WINDOWS -D_GCC -O3 -RM = rm -f - -.PHONY: all all-before all-after clean clean-custom - -all: all-before ../SPU2PeopsDSound.dll all-after - - -clean: clean-custom - ${RM} $(OBJ) $(BIN) - -DLLWRAP=dllwrap.exe -DEFFILE=../libSPU2PeopsDSound.def -STATICLIB=../libSPU2PeopsDSound.a - -$(BIN): $(LINKOBJ) - $(DLLWRAP) --output-def $(DEFFILE) --driver-name c++ --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN) - -Release/adsr.o: adsr.c - $(CC) -c adsr.c -o Release/adsr.o $(CFLAGS) - -Release/alsa.o: alsa.c - $(CC) -c alsa.c -o Release/alsa.o $(CFLAGS) - -Release/cfg.o: cfg.c - $(CC) -c cfg.c -o Release/cfg.o $(CFLAGS) - -Release/debug.o: debug.c - $(CC) -c debug.c -o Release/debug.o $(CFLAGS) - -Release/dma.o: dma.c - $(CC) -c dma.c -o Release/dma.o $(CFLAGS) - -Release/dsound.o: dsound.c - $(CC) -c dsound.c -o Release/dsound.o $(CFLAGS) - -Release/freeze.o: freeze.c - $(CC) -c freeze.c -o Release/freeze.o $(CFLAGS) - -Release/oss.o: oss.c - $(CC) -c oss.c -o Release/oss.o $(CFLAGS) - -Release/record.o: record.c - $(CC) -c record.c -o Release/record.o $(CFLAGS) - -Release/registers.o: registers.c - $(CC) -c registers.c -o Release/registers.o $(CFLAGS) - -Release/reverb.o: reverb.c - $(CC) -c reverb.c -o Release/reverb.o $(CFLAGS) - -Release/spu.o: spu.c - $(CC) -c spu.c -o Release/spu.o $(CFLAGS) - -Release/spu2PeopsSound.o: spu2PeopsSound.c - $(CC) -c spu2PeopsSound.c -o Release/spu2PeopsSound.o $(CFLAGS) - -Release/StdAfx.o: StdAfx.c - $(CC) -c StdAfx.c -o Release/StdAfx.o $(CFLAGS) - -Release/xa.o: xa.c - $(CC) -c xa.c -o Release/xa.o $(CFLAGS) - -Release/spu2PeopsSound_private.res: spu2PeopsSound_private.rc - $(WINDRES) -i spu2PeopsSound_private.rc --input-format=rc -o Release/spu2PeopsSound_private.res -O coff +# Project: spu2PeopsSound +# Makefile created by Dev-C++ 4.9.9.2 + +CPP = g++.exe +CC = gcc.exe +WINDRES = windres.exe +RES = Release/spu2PeopsSound_private.res +OBJ = Release/adsr.o Release/alsa.o Release/cfg.o Release/debug.o Release/dma.o Release/dsound.o Release/freeze.o Release/oss.o Release/record.o Release/registers.o Release/reverb.o Release/spu.o Release/spu2PeopsSound.o Release/StdAfx.o Release/xa.o $(RES) +LINKOBJ = Release/adsr.o Release/alsa.o Release/cfg.o Release/debug.o Release/dma.o Release/dsound.o Release/freeze.o Release/oss.o Release/record.o Release/registers.o Release/reverb.o Release/spu.o Release/spu2PeopsSound.o Release/StdAfx.o Release/xa.o $(RES) +LIBS = -L"lib" -ldsound -lwinmm -luser32 -lgdi32 -ladvapi32 --add-stdcall-alias +INCS = -I"include" -I"D:/Archivos de programa/Microsoft Visual Studio .NET 2003/SDK/v1.1/include" +CXXINCS = -I"lib/gcc/mingw32/3.4.2/include" -I"include/c++/3.4.2/backward" -I"include/c++/3.4.2/mingw32" -I"include/c++/3.4.2" -I"include" +BIN = ../SPU2PeopsDSound.dll +CXXFLAGS = $(CXXINCS) -D__GNUWIN32__ -mcpu=pentium -D_M_IX86=500 -W -DWIN32 -DNDEBUG -D_WINDOWS -D_GCC -O3 +CFLAGS = $(INCS) -D__GNUWIN32__ -mcpu=pentium -D_M_IX86=500 -W -DWIN32 -DNDEBUG -D_WINDOWS -D_GCC -O3 +RM = rm -f + +.PHONY: all all-before all-after clean clean-custom + +all: all-before ../SPU2PeopsDSound.dll all-after + + +clean: clean-custom + ${RM} $(OBJ) $(BIN) + +DLLWRAP=dllwrap.exe +DEFFILE=../libSPU2PeopsDSound.def +STATICLIB=../libSPU2PeopsDSound.a + +$(BIN): $(LINKOBJ) + $(DLLWRAP) --output-def $(DEFFILE) --driver-name c++ --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN) + +Release/adsr.o: adsr.c + $(CC) -c adsr.c -o Release/adsr.o $(CFLAGS) + +Release/alsa.o: alsa.c + $(CC) -c alsa.c -o Release/alsa.o $(CFLAGS) + +Release/cfg.o: cfg.c + $(CC) -c cfg.c -o Release/cfg.o $(CFLAGS) + +Release/debug.o: debug.c + $(CC) -c debug.c -o Release/debug.o $(CFLAGS) + +Release/dma.o: dma.c + $(CC) -c dma.c -o Release/dma.o $(CFLAGS) + +Release/dsound.o: dsound.c + $(CC) -c dsound.c -o Release/dsound.o $(CFLAGS) + +Release/freeze.o: freeze.c + $(CC) -c freeze.c -o Release/freeze.o $(CFLAGS) + +Release/oss.o: oss.c + $(CC) -c oss.c -o Release/oss.o $(CFLAGS) + +Release/record.o: record.c + $(CC) -c record.c -o Release/record.o $(CFLAGS) + +Release/registers.o: registers.c + $(CC) -c registers.c -o Release/registers.o $(CFLAGS) + +Release/reverb.o: reverb.c + $(CC) -c reverb.c -o Release/reverb.o $(CFLAGS) + +Release/spu.o: spu.c + $(CC) -c spu.c -o Release/spu.o $(CFLAGS) + +Release/spu2PeopsSound.o: spu2PeopsSound.c + $(CC) -c spu2PeopsSound.c -o Release/spu2PeopsSound.o $(CFLAGS) + +Release/StdAfx.o: StdAfx.c + $(CC) -c StdAfx.c -o Release/StdAfx.o $(CFLAGS) + +Release/xa.o: xa.c + $(CC) -c xa.c -o Release/xa.o $(CFLAGS) + +Release/spu2PeopsSound_private.res: spu2PeopsSound_private.rc + $(WINDRES) -i spu2PeopsSound_private.rc --input-format=rc -o Release/spu2PeopsSound_private.res -O coff diff --git a/plugins/PeopsSPU2/_bsc.txt b/plugins/PeopsSPU2/_bsc.txt index eadb98a94d..73f9ff0cf6 100644 --- a/plugins/PeopsSPU2/_bsc.txt +++ b/plugins/PeopsSPU2/_bsc.txt @@ -1,17 +1,17 @@ -/nologo /o"Release/spu2PeopsSound.bsc" -".\Release\adsr.sbr" -".\Release\alsa.sbr" -".\Release\cfg.sbr" -".\Release\debug.sbr" -".\Release\dma.sbr" -".\Release\dsound.sbr" -".\Release\freeze.sbr" -".\Release\oss.sbr" -".\Release\psemu.sbr" -".\Release\record.sbr" -".\Release\registers.sbr" -".\Release\reverb.sbr" -".\Release\spu.sbr" -".\Release\spu2PeopsSound.sbr" -".\Release\StdAfx.sbr" -".\Release\xa.sbr" +/nologo /o"Release/spu2PeopsSound.bsc" +".\Release\adsr.sbr" +".\Release\alsa.sbr" +".\Release\cfg.sbr" +".\Release\debug.sbr" +".\Release\dma.sbr" +".\Release\dsound.sbr" +".\Release\freeze.sbr" +".\Release\oss.sbr" +".\Release\psemu.sbr" +".\Release\record.sbr" +".\Release\registers.sbr" +".\Release\reverb.sbr" +".\Release\spu.sbr" +".\Release\spu2PeopsSound.sbr" +".\Release\StdAfx.sbr" +".\Release\xa.sbr" diff --git a/plugins/PeopsSPU2/clean.bat b/plugins/PeopsSPU2/clean.bat index cbeb91c994..3adbec0535 100644 --- a/plugins/PeopsSPU2/clean.bat +++ b/plugins/PeopsSPU2/clean.bat @@ -1,3 +1,3 @@ -del *.o -del *.c~ +del *.o +del *.c~ del *.h~ \ No newline at end of file diff --git a/plugins/PeopsSPU2/res/spu2PeopsSound.rc2 b/plugins/PeopsSPU2/res/spu2PeopsSound.rc2 index 7bfe5d1234..e2a57450ed 100644 --- a/plugins/PeopsSPU2/res/spu2PeopsSound.rc2 +++ b/plugins/PeopsSPU2/res/spu2PeopsSound.rc2 @@ -1,13 +1,13 @@ -// -// SPU2PEOPSSOUND.RC2 - resources Microsoft Visual C++ does not edit directly -// - -#ifdef APSTUDIO_INVOKED - #error this file is not editable by Microsoft Visual C++ -#endif //APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// Add manually edited resources here... - -///////////////////////////////////////////////////////////////////////////// +// +// SPU2PEOPSSOUND.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED + #error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/plugins/PeopsSPU2/spu2PeopsSound.def b/plugins/PeopsSPU2/spu2PeopsSound.def index f577ea5033..1043112b3d 100644 --- a/plugins/PeopsSPU2/spu2PeopsSound.def +++ b/plugins/PeopsSPU2/spu2PeopsSound.def @@ -1,34 +1,34 @@ -; Declares the module parameters for the DLL. - -LIBRARY "spu2PeopsSound" -DESCRIPTION 'SPU2 PEOPS SOUND' - -EXPORTS - ; Explicit exports can go here - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - SPU2configure @5 - SPU2about @6 - SPU2init @7 - SPU2shutdown @8 - SPU2test @9 - SPU2open @10 - SPU2close @11 - - SPU2write @13 - SPU2read @14 - - SPU2readDMA4Mem @16 - SPU2readDMA7Mem @17 - SPU2writeDMA4Mem @18 - SPU2writeDMA7Mem @19 - SPU2interruptDMA4 @20 - SPU2interruptDMA7 @21 - - SPU2freeze @33 - SPU2async @34 - SPU2irqCallback @36 - - SPU2ReadMemAddr @37 - SPU2WriteMemAddr @38 +; Declares the module parameters for the DLL. + +LIBRARY "spu2PeopsSound" +DESCRIPTION 'SPU2 PEOPS SOUND' + +EXPORTS + ; Explicit exports can go here + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + SPU2configure @5 + SPU2about @6 + SPU2init @7 + SPU2shutdown @8 + SPU2test @9 + SPU2open @10 + SPU2close @11 + + SPU2write @13 + SPU2read @14 + + SPU2readDMA4Mem @16 + SPU2readDMA7Mem @17 + SPU2writeDMA4Mem @18 + SPU2writeDMA7Mem @19 + SPU2interruptDMA4 @20 + SPU2interruptDMA7 @21 + + SPU2freeze @33 + SPU2async @34 + SPU2irqCallback @36 + + SPU2ReadMemAddr @37 + SPU2WriteMemAddr @38 diff --git a/plugins/PeopsSPU2/spu2PeopsSound.dev b/plugins/PeopsSPU2/spu2PeopsSound.dev index 903f2df708..452d75e6be 100644 --- a/plugins/PeopsSPU2/spu2PeopsSound.dev +++ b/plugins/PeopsSPU2/spu2PeopsSound.dev @@ -1,478 +1,478 @@ -[Project] -FileName=spu2PeopsSound.dev -Name=spu2PeopsSound -Ver=1 -IsCpp=1 -Type=3 -Compiler=-D__GNUWIN32__ -mcpu=pentium -D_M_IX86=500 -W -DWIN32 -DNDEBUG -D_WINDOWS -D_GCC_@@_ -CppCompiler=-D__GNUWIN32__ -mcpu=pentium -D_M_IX86=500 -W -DWIN32 -DNDEBUG -D_WINDOWS -D_GCC_@@_ -Includes=d:\vs\vc98\MFC\include -Linker=-ldsound -lwinmm -luser32 -lgdi32 -ladvapi32 --add-stdcall-alias_@@_ -Libs= -UnitCount=35 -Folders="Documentation Files","Header Files","Resource Files","Source Files" -ObjFiles= -PrivateResource=spu2PeopsSound_private.rc -ResourceIncludes= -MakeIncludes= -Icon= -ExeOutput=.. -ObjectOutput=Release -OverrideOutput=1 -OverrideOutputName=SPU2PeopsDSound.dll -HostApplication= -CommandLine= -UseCustomMakefile=0 -CustomMakefile= -IncludeVersionInfo=0 -SupportXPThemes=0 -CompilerSet=0 -CompilerSettings=0000000000001000000000 - -[Unit1] -FileName=adsr.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit2] -FileName=alsa.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit3] -FileName=cfg.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit4] -FileName=debug.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit5] -FileName=dma.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit6] -FileName=dsound.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit7] -FileName=freeze.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit8] -FileName=oss.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit10] -FileName=registers.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit11] -FileName=reverb.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit12] -FileName=spu.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit13] -FileName=spu2PeopsSound.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit14] -FileName=spu2PeopsSound.def -Folder=Source Files -Compile=0 -CompileCpp=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit15] -FileName=spu2PeopsSound.rc -Folder=Resource Files -Compile=1 -CompileCpp=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit16] -FileName=StdAfx.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit17] -FileName=xa.c -Folder=Source Files -Compile=1 -CompileCpp=0 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit18] -FileName=adsr.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit19] -FileName=alsa.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit20] -FileName=cfg.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit21] -FileName=debug.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit22] -FileName=dma.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit23] -FileName=dsoundoss.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit24] -FileName=externals.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit25] -FileName=gauss_i.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit26] -FileName=psemuxa.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit27] -FileName=record.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit28] -FileName=registers.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit29] -FileName=regs.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit30] -FileName=resource.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit31] -FileName=reverb.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit32] -FileName=spu.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit33] -FileName=StdAfx.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit34] -FileName=xa.h -Folder=Header Files -Compile=1 -CompileCpp=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit35] -FileName=Filemap.txt -Folder=Documentation Files -Compile=0 -CompileCpp=1 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit37] -FileName=License.txt -Folder=Documentation Files -Compile=0 -CompileCpp=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit38] -FileName=License.txt -Folder=Documentation Files -Compile=0 -CompileCpp=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit39] -FileName=bitmap4.bmp -Folder="Resource Files" -Compile=0 -CompileCpp=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit40] -FileName=bitmap5.bmp -Folder="Resource Files" -Compile=0 -CompileCpp=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit41] -FileName=changelog.txt -Folder="Documentation Files" -Compile=0 -CompileCpp=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit42] -FileName=Filemap.txt -Folder="Documentation Files" -Compile=0 -CompileCpp=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit43] -FileName=License.txt -Folder="Documentation Files" -Compile=0 -CompileCpp=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[VersionInfo] -Major=0 -Minor=1 -Release=1 -Build=1 -LanguageID=1033 -CharsetID=1252 -CompanyName= -FileVersion=0.1 -FileDescription=Developed using the Dev-C++ IDE -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename=spu2PeopsSound.exe -ProductName=spu2PeopsSound -ProductVersion=0.1 -AutoIncBuildNr=0 - -[Unit36] -FileName=Filemap.txt -Folder=Documentation Files -Compile=0 -Link=0 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit9] -FileName=record.c -CompileCpp=0 -Folder=Source Files -Compile=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - +[Project] +FileName=spu2PeopsSound.dev +Name=spu2PeopsSound +Ver=1 +IsCpp=1 +Type=3 +Compiler=-D__GNUWIN32__ -mcpu=pentium -D_M_IX86=500 -W -DWIN32 -DNDEBUG -D_WINDOWS -D_GCC_@@_ +CppCompiler=-D__GNUWIN32__ -mcpu=pentium -D_M_IX86=500 -W -DWIN32 -DNDEBUG -D_WINDOWS -D_GCC_@@_ +Includes=d:\vs\vc98\MFC\include +Linker=-ldsound -lwinmm -luser32 -lgdi32 -ladvapi32 --add-stdcall-alias_@@_ +Libs= +UnitCount=35 +Folders="Documentation Files","Header Files","Resource Files","Source Files" +ObjFiles= +PrivateResource=spu2PeopsSound_private.rc +ResourceIncludes= +MakeIncludes= +Icon= +ExeOutput=.. +ObjectOutput=Release +OverrideOutput=1 +OverrideOutputName=SPU2PeopsDSound.dll +HostApplication= +CommandLine= +UseCustomMakefile=0 +CustomMakefile= +IncludeVersionInfo=0 +SupportXPThemes=0 +CompilerSet=0 +CompilerSettings=0000000000001000000000 + +[Unit1] +FileName=adsr.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit2] +FileName=alsa.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit3] +FileName=cfg.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit4] +FileName=debug.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit5] +FileName=dma.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit6] +FileName=dsound.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit7] +FileName=freeze.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit8] +FileName=oss.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit10] +FileName=registers.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit11] +FileName=reverb.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit12] +FileName=spu.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit13] +FileName=spu2PeopsSound.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit14] +FileName=spu2PeopsSound.def +Folder=Source Files +Compile=0 +CompileCpp=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit15] +FileName=spu2PeopsSound.rc +Folder=Resource Files +Compile=1 +CompileCpp=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit16] +FileName=StdAfx.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit17] +FileName=xa.c +Folder=Source Files +Compile=1 +CompileCpp=0 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit18] +FileName=adsr.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit19] +FileName=alsa.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit20] +FileName=cfg.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit21] +FileName=debug.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit22] +FileName=dma.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit23] +FileName=dsoundoss.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit24] +FileName=externals.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit25] +FileName=gauss_i.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit26] +FileName=psemuxa.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit27] +FileName=record.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit28] +FileName=registers.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit29] +FileName=regs.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit30] +FileName=resource.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit31] +FileName=reverb.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit32] +FileName=spu.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit33] +FileName=StdAfx.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit34] +FileName=xa.h +Folder=Header Files +Compile=1 +CompileCpp=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit35] +FileName=Filemap.txt +Folder=Documentation Files +Compile=0 +CompileCpp=1 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit37] +FileName=License.txt +Folder=Documentation Files +Compile=0 +CompileCpp=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit38] +FileName=License.txt +Folder=Documentation Files +Compile=0 +CompileCpp=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit39] +FileName=bitmap4.bmp +Folder="Resource Files" +Compile=0 +CompileCpp=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit40] +FileName=bitmap5.bmp +Folder="Resource Files" +Compile=0 +CompileCpp=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit41] +FileName=changelog.txt +Folder="Documentation Files" +Compile=0 +CompileCpp=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit42] +FileName=Filemap.txt +Folder="Documentation Files" +Compile=0 +CompileCpp=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit43] +FileName=License.txt +Folder="Documentation Files" +Compile=0 +CompileCpp=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[VersionInfo] +Major=0 +Minor=1 +Release=1 +Build=1 +LanguageID=1033 +CharsetID=1252 +CompanyName= +FileVersion=0.1 +FileDescription=Developed using the Dev-C++ IDE +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename=spu2PeopsSound.exe +ProductName=spu2PeopsSound +ProductVersion=0.1 +AutoIncBuildNr=0 + +[Unit36] +FileName=Filemap.txt +Folder=Documentation Files +Compile=0 +Link=0 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit9] +FileName=record.c +CompileCpp=0 +Folder=Source Files +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + diff --git a/plugins/PeopsSPU2/spu2PeopsSound.rc b/plugins/PeopsSPU2/spu2PeopsSound.rc index bcdad6b000..a16b937589 100644 --- a/plugins/PeopsSPU2/spu2PeopsSound.rc +++ b/plugins/PeopsSPU2/spu2PeopsSound.rc @@ -1,372 +1,372 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Polish resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_PLK) -#ifdef _WIN32 -LANGUAGE LANG_POLISH, SUBLANG_DEFAULT -#pragma code_page(1250) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "#define _AFX_NO_SPLITTER_RESOURCES\r\n" - "#define _AFX_NO_OLE_RESOURCES\r\n" - "#define _AFX_NO_TRACKER_RESOURCES\r\n" - "#define _AFX_NO_PROPERTY_RESOURCES\r\n" - "\r\n" - "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" - "#ifdef _WIN32\r\n" - "LANGUAGE 9, 1\r\n" - "#pragma code_page(1252)\r\n" - "#endif\r\n" - "#include ""res\\spu2PeopsSound.rc2"" // non-Microsoft Visual C++ edited resources\r\n" - "#include ""afxres.rc"" // Standard components\r\n" - "#endif\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // Polish resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Neutral resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) -#ifdef _WIN32 -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_ABOUT DIALOGEX 0, 0, 239, 198 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "About the P.E.Op.S. SPU2 DSound Audio Driver..." -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,98,178,44,14 - RTEXT "Version:",IDC_STATIC,5,7,74,9 - RTEXT "Release date :",IDC_STATIC,5,16,74,9 - RTEXT "Coded by :",IDC_STATIC,5,27,74,9 - RTEXT "Pete's EMail :",IDC_STATIC,5,40,74,9 - RTEXT "Pete's homepage :",IDC_STATIC,5,51,74,9 - LTEXT "1.9.0",IDC_STATIC,81,7,155,9 - LTEXT "11.11.2007",IDC_STATIC,81,16,154,9 - LTEXT "Pete Bernert and the P.E.Op.S. team",IDC_STATIC,81,27,154,9 - LTEXT "BlackDove@addcom.de",IDC_STATIC,81,40,154,9 - LTEXT "http://www.pbernert.com",IDC_STATIC,81,51,154,9 - CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,5,132,218,41,WS_EX_DLGMODALFRAME - RTEXT "Greetings to:",IDC_STATIC,12,137,41,9 - LTEXT "- Kanodin, Elly and zenogais (I wouldn't have started without their sources).\n- Neill Corlett (for his always excellent work)",IDC_STATIC,56,137,153,27 - RTEXT "P.E.Op.S. homepage :",IDC_STATIC,5,87,74,9 - LTEXT "https://sourceforge.net/projects/peops/",IDC_STATIC,82,87,154,9 - RTEXT "linuzappz :",IDC_STATIC,10,63,69,10 - LTEXT "http://www.pcsx.net",IDC_STATIC,81,63,142,10 - RTEXT "kode54 :",IDC_STATIC,10,75,69,10 - LTEXT "http://home.earthlink.net/~kode54/",IDC_STATIC,81,75,142,10 - LTEXT "Additional changes by Refraction of PCSX2 team",IDC_STATIC,12,103,198,14 -END - -IDD_CFGDLG DIALOGEX 0, 0, 258, 150 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "P.E.Op.S SPU2 Plugin Configuration" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - COMBOBOX IDC_VOLUME,55,19,186,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_USEREVERB,55,35,186,44,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_INTERPOL,55,51,186,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Enable developer debug mode",IDC_DEBUGMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | BS_VCENTER | WS_TABSTOP,12,97,229,10 - CONTROL "Enable sound recording window",IDC_RECORDMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | BS_VCENTER | WS_TABSTOP,12,84,229,10 - DEFPUSHBUTTON "OK",IDOK,51,127,45,14 - PUSHBUTTON "Cancel",IDCANCEL,157,127,45,14 - RTEXT "Volume:",IDC_STATIC,23,22,29,10,SS_CENTERIMAGE - GROUPBOX "General settings",IDC_STATIC,7,7,245,63 - GROUPBOX "Misc",IDC_STATIC,7,74,245,51 - RTEXT "Reverb:",IDC_STATIC,23,38,29,10,SS_CENTERIMAGE - RTEXT "Interpolation:",IDC_STATIC,9,54,43,10,SS_CENTERIMAGE - CONTROL "Enable Thread Mode",IDC_TIMER,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,12,111,194,11 -END - -IDD_DEBUG DIALOGEX 0, 0, 398, 314 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "P.E.Op.S. SPU2 sound debug screen" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - CONTROL "Core 0",IDC_CORE1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,44,2,49,8 - CONTROL "Core 1",IDC_CORE2,"Button",BS_AUTORADIOBUTTON,101,2,49,8 - LTEXT "",IDC_SAREA,4,14,150,288,WS_BORDER - CONTROL "",IDC_MUTE1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,14,9,9 - CONTROL "1",IDC_CHAN1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,168,14,22,9 - CONTROL "",IDC_MUTE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,26,9,9 - CONTROL "2",IDC_CHAN2,"Button",BS_AUTORADIOBUTTON,168,26,22,9 - CONTROL "",IDC_MUTE3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,38,9,9 - CONTROL "3",IDC_CHAN3,"Button",BS_AUTORADIOBUTTON,168,38,22,9 - CONTROL "",IDC_MUTE4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,50,9,9 - CONTROL "4",IDC_CHAN4,"Button",BS_AUTORADIOBUTTON,168,50,22,9 - CONTROL "",IDC_MUTE5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,62,9,9 - CONTROL "5",IDC_CHAN5,"Button",BS_AUTORADIOBUTTON,168,62,22,9 - CONTROL "",IDC_MUTE6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,74,9,9 - CONTROL "6",IDC_CHAN6,"Button",BS_AUTORADIOBUTTON,168,74,22,9 - CONTROL "",IDC_MUTE7,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,86,9,9 - CONTROL "7",IDC_CHAN7,"Button",BS_AUTORADIOBUTTON,168,86,22,9 - CONTROL "",IDC_MUTE8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,98,9,9 - CONTROL "8",IDC_CHAN8,"Button",BS_AUTORADIOBUTTON,168,98,22,9 - CONTROL "",IDC_MUTE9,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,110,9,9 - CONTROL "9",IDC_CHAN9,"Button",BS_AUTORADIOBUTTON,168,110,22,9 - CONTROL "",IDC_MUTE10,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,122,9,9 - CONTROL "10",IDC_CHAN10,"Button",BS_AUTORADIOBUTTON,168,122,22,9 - CONTROL "",IDC_MUTE11,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,134,9,9 - CONTROL "11",IDC_CHAN11,"Button",BS_AUTORADIOBUTTON,168,134,22,9 - CONTROL "",IDC_MUTE12,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,146,9,9 - CONTROL "12",IDC_CHAN12,"Button",BS_AUTORADIOBUTTON,168,146,22,9 - CONTROL "",IDC_MUTE13,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,158,9,9 - CONTROL "13",IDC_CHAN13,"Button",BS_AUTORADIOBUTTON,168,158,22,9 - CONTROL "",IDC_MUTE14,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,170,9,9 - CONTROL "14",IDC_CHAN14,"Button",BS_AUTORADIOBUTTON,168,170,22,9 - CONTROL "",IDC_MUTE15,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,182,9,9 - CONTROL "15",IDC_CHAN15,"Button",BS_AUTORADIOBUTTON,168,182,22,9 - CONTROL "",IDC_MUTE16,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,194,9,9 - CONTROL "16",IDC_CHAN16,"Button",BS_AUTORADIOBUTTON,168,194,22,9 - CONTROL "",IDC_MUTE17,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,206,9,9 - CONTROL "17",IDC_CHAN17,"Button",BS_AUTORADIOBUTTON,168,206,22,9 - CONTROL "",IDC_MUTE18,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,218,9,9 - CONTROL "18",IDC_CHAN18,"Button",BS_AUTORADIOBUTTON,168,218,22,9 - CONTROL "",IDC_MUTE19,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,230,9,9 - CONTROL "19",IDC_CHAN19,"Button",BS_AUTORADIOBUTTON,168,230,22,9 - CONTROL "",IDC_MUTE20,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,242,9,9 - CONTROL "20",IDC_CHAN20,"Button",BS_AUTORADIOBUTTON,168,242,22,9 - CONTROL "",IDC_MUTE21,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,254,9,9 - CONTROL "21",IDC_CHAN21,"Button",BS_AUTORADIOBUTTON,168,254,22,9 - CONTROL "",IDC_MUTE22,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,266,9,9 - CONTROL "22",IDC_CHAN22,"Button",BS_AUTORADIOBUTTON,168,266,22,9 - CONTROL "",IDC_MUTE23,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,278,9,9 - CONTROL "23",IDC_CHAN23,"Button",BS_AUTORADIOBUTTON,168,278,22,9 - CONTROL "",IDC_MUTE24,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,290,9,9 - CONTROL "24",IDC_CHAN24,"Button",BS_AUTORADIOBUTTON,168,290,22,9 - LTEXT "Streams",IDC_STATIC,6,2,29,8 - CTEXT "Mute/Select",IDC_STATIC,144,2,55,8 - LTEXT "",IDC_ADSR,208,22,176,55,WS_BORDER - RTEXT "Attack:",IDC_STATIC,221,81,30,9 - RTEXT "Decay:",IDC_STATIC,221,92,30,9 - RTEXT "Sustain:",IDC_STATIC,221,103,30,9 - RTEXT "Release:",IDC_STATIC,221,114,30,9 - LTEXT "---",IDC_SADSR1,254,81,44,9 - LTEXT "---",IDC_SADSR2,254,92,44,9 - LTEXT "---",IDC_SADSR3,254,103,44,9 - LTEXT "---",IDC_SADSR4,254,114,42,9 - RTEXT "Sustain level:",IDC_STATIC,302,81,44,9 - LTEXT "---",IDC_SADSR5,349,81,38,9 - RTEXT "Sustain inc.:",IDC_STATIC,302,92,44,9 - LTEXT "---",IDC_SADSR6,349,92,38,9 - RTEXT "Channel:",IDC_STATIC,204,2,30,8 - GROUPBOX "ADSR channel info",IDC_STATIC,201,11,190,119 - LTEXT "1",IDC_CHANNUM,238,2,33,8 - PUSHBUTTON "M0",IDC_MUTEOFF,157,300,15,10 - PUSHBUTTON "M1",IDC_MUTEON,174,300,15,10 - GROUPBOX "Generic channel info",IDC_STATIC,201,131,190,114 - RTEXT "On:",IDC_STATIC,210,143,41,9 - RTEXT "Stop:",IDC_STATIC,210,154,41,9 - RTEXT "Reverb:",IDC_STATIC,210,187,41,9 - RTEXT "Start pos:",IDC_STATIC,301,143,35,9 - RTEXT "Curr pos:",IDC_STATIC,301,154,35,9 - RTEXT "Loop pos:",IDC_STATIC,301,165,35,9 - RTEXT "Act freq:",IDC_STATIC,300,220,35,9 - RTEXT "Used freq:",IDC_STATIC,300,231,35,9 - RTEXT "Right vol:",IDC_STATIC,300,192,35,9 - RTEXT "Left vol:",IDC_STATIC,300,203,35,9 - RTEXT "Rvb active:",IDC_STATIC,210,198,41,9 - RTEXT "Rvb end:",IDC_STATIC,210,220,41,9 - RTEXT "Rvb cur:",IDC_STATIC,210,231,41,9 - RTEXT "Noise:",IDC_STATIC,210,165,41,9 - RTEXT "FMod:",IDC_STATIC,210,176,41,9 - RTEXT "Rvb start:",IDC_STATIC,210,209,41,9 - RTEXT "Irq addr.:",IDC_STATIC,207,259,35,9 - RTEXT "Curr adsr vol.:",IDC_STATIC,302,103,44,9 - LTEXT "---",IDC_SADSR7,349,103,38,9 - LTEXT "---",IDC_CI1,254,143,39,9 - LTEXT "---",IDC_CI2,254,154,39,9 - LTEXT "---",IDC_CI3,254,165,39,9 - LTEXT "---",IDC_CI4,254,176,39,9 - LTEXT "---",IDC_CI5,254,187,39,9 - LTEXT "---",IDC_CI6,254,198,39,9 - LTEXT "---",IDC_CI7,254,209,39,9 - LTEXT "---",IDC_CI8,254,220,39,9 - LTEXT "---",IDC_CI9,254,231,39,9 - LTEXT "---",IDC_CI10,339,143,46,9 - GROUPBOX "Spu states",IDC_STATIC,202,246,189,61 - LTEXT "---",IDC_CI11,339,154,46,9 - LTEXT "---",IDC_CI12,339,165,46,9 - LTEXT "---",IDC_CI13,339,192,23,9 - LTEXT "---",IDC_CI14,339,203,22,9 - LTEXT "---",IDC_CI15,339,220,46,9 - LTEXT "---",IDC_CI16,339,231,46,9 - LTEXT "---",IDC_STA1,246,259,46,9 - RTEXT "Raw envelope:",IDC_STATIC,296,114,50,9 - LTEXT "---",IDC_SADSR8,349,114,38,9 - RTEXT "Ctrl:",IDC_STATIC,207,270,35,9 - LTEXT "---",IDC_STA2,247,270,46,9 - RTEXT "Stat:",IDC_STATIC,207,281,35,9 - LTEXT "---",IDC_STA3,247,281,46,9 - RTEXT "Spu mem:",IDC_STATIC,207,292,35,9 - LTEXT "---",IDC_STA4,247,292,46,9 - LTEXT "---",IDC_CI17,367,192,18,9 - LTEXT "---",IDC_CI18,367,203,18,9 - RTEXT "Dbg addr:",IDC_STATIC,301,176,35,9 - LTEXT "---",IDC_CI19,339,176,46,9 -END - -IDD_RECORD DIALOGEX 0, 0, 248, 25 -STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "P.E.Op.S. SPU2 sound recording" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - RTEXT "Filename:",IDC_STATIC,3,5,33,9 - EDITTEXT IDC_WAVFILE,41,3,134,12,ES_AUTOHSCROLL - PUSHBUTTON "Start recording",IDC_RECORD,180,3,61,12 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 5 - RIGHTMARGIN, 236 - TOPMARGIN, 7 - BOTTOMMARGIN, 192 - END - - IDD_CFGDLG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 251 - TOPMARGIN, 7 - BOTTOMMARGIN, 144 - END - - IDD_DEBUG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 391 - TOPMARGIN, 7 - BOTTOMMARGIN, 307 - END - - IDD_RECORD, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 241 - TOPMARGIN, 7 - BOTTOMMARGIN, 18 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,6,0,0 - PRODUCTVERSION 1,6,0,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "P.E.Op.S. Sound PS2 SPU Audio driver - coded by Pete Bernert and the P.E.Op.S. team" - VALUE "FileDescription", "spu2PeopsSound" - VALUE "FileVersion", "1, 6, 0, 0" - VALUE "InternalName", "spu2PeopsSound" - VALUE "LegalCopyright", "GPL 2004" - VALUE "LegalTrademarks", "GPL 2004" - VALUE "OriginalFilename", "spu2PeopsSound.DLL" - VALUE "ProductName", "spu2PeopsSound" - VALUE "ProductVersion", "1, 6, 0, 0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // Neutral resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// -#define _AFX_NO_SPLITTER_RESOURCES -#define _AFX_NO_OLE_RESOURCES -#define _AFX_NO_TRACKER_RESOURCES -#define _AFX_NO_PROPERTY_RESOURCES - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE 9, 1 -#pragma code_page(1252) -#endif -#include "res\spu2PeopsSound.rc2" // non-Microsoft Visual C++ edited resources -#include "afxres.rc" // Standard components -#endif -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Polish resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_PLK) +#ifdef _WIN32 +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT +#pragma code_page(1250) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif\r\n" + "#include ""res\\spu2PeopsSound.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // Polish resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// Neutral resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) +#ifdef _WIN32 +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUT DIALOGEX 0, 0, 239, 198 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About the P.E.Op.S. SPU2 DSound Audio Driver..." +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,98,178,44,14 + RTEXT "Version:",IDC_STATIC,5,7,74,9 + RTEXT "Release date :",IDC_STATIC,5,16,74,9 + RTEXT "Coded by :",IDC_STATIC,5,27,74,9 + RTEXT "Pete's EMail :",IDC_STATIC,5,40,74,9 + RTEXT "Pete's homepage :",IDC_STATIC,5,51,74,9 + LTEXT "1.9.0",IDC_STATIC,81,7,155,9 + LTEXT "11.11.2007",IDC_STATIC,81,16,154,9 + LTEXT "Pete Bernert and the P.E.Op.S. team",IDC_STATIC,81,27,154,9 + LTEXT "BlackDove@addcom.de",IDC_STATIC,81,40,154,9 + LTEXT "http://www.pbernert.com",IDC_STATIC,81,51,154,9 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,5,132,218,41,WS_EX_DLGMODALFRAME + RTEXT "Greetings to:",IDC_STATIC,12,137,41,9 + LTEXT "- Kanodin, Elly and zenogais (I wouldn't have started without their sources).\n- Neill Corlett (for his always excellent work)",IDC_STATIC,56,137,153,27 + RTEXT "P.E.Op.S. homepage :",IDC_STATIC,5,87,74,9 + LTEXT "https://sourceforge.net/projects/peops/",IDC_STATIC,82,87,154,9 + RTEXT "linuzappz :",IDC_STATIC,10,63,69,10 + LTEXT "http://www.pcsx.net",IDC_STATIC,81,63,142,10 + RTEXT "kode54 :",IDC_STATIC,10,75,69,10 + LTEXT "http://home.earthlink.net/~kode54/",IDC_STATIC,81,75,142,10 + LTEXT "Additional changes by Refraction of PCSX2 team",IDC_STATIC,12,103,198,14 +END + +IDD_CFGDLG DIALOGEX 0, 0, 258, 150 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "P.E.Op.S SPU2 Plugin Configuration" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + COMBOBOX IDC_VOLUME,55,19,186,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_USEREVERB,55,35,186,44,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_INTERPOL,55,51,186,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Enable developer debug mode",IDC_DEBUGMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | BS_VCENTER | WS_TABSTOP,12,97,229,10 + CONTROL "Enable sound recording window",IDC_RECORDMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | BS_VCENTER | WS_TABSTOP,12,84,229,10 + DEFPUSHBUTTON "OK",IDOK,51,127,45,14 + PUSHBUTTON "Cancel",IDCANCEL,157,127,45,14 + RTEXT "Volume:",IDC_STATIC,23,22,29,10,SS_CENTERIMAGE + GROUPBOX "General settings",IDC_STATIC,7,7,245,63 + GROUPBOX "Misc",IDC_STATIC,7,74,245,51 + RTEXT "Reverb:",IDC_STATIC,23,38,29,10,SS_CENTERIMAGE + RTEXT "Interpolation:",IDC_STATIC,9,54,43,10,SS_CENTERIMAGE + CONTROL "Enable Thread Mode",IDC_TIMER,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,12,111,194,11 +END + +IDD_DEBUG DIALOGEX 0, 0, 398, 314 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "P.E.Op.S. SPU2 sound debug screen" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + CONTROL "Core 0",IDC_CORE1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,44,2,49,8 + CONTROL "Core 1",IDC_CORE2,"Button",BS_AUTORADIOBUTTON,101,2,49,8 + LTEXT "",IDC_SAREA,4,14,150,288,WS_BORDER + CONTROL "",IDC_MUTE1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,14,9,9 + CONTROL "1",IDC_CHAN1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,168,14,22,9 + CONTROL "",IDC_MUTE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,26,9,9 + CONTROL "2",IDC_CHAN2,"Button",BS_AUTORADIOBUTTON,168,26,22,9 + CONTROL "",IDC_MUTE3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,38,9,9 + CONTROL "3",IDC_CHAN3,"Button",BS_AUTORADIOBUTTON,168,38,22,9 + CONTROL "",IDC_MUTE4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,50,9,9 + CONTROL "4",IDC_CHAN4,"Button",BS_AUTORADIOBUTTON,168,50,22,9 + CONTROL "",IDC_MUTE5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,62,9,9 + CONTROL "5",IDC_CHAN5,"Button",BS_AUTORADIOBUTTON,168,62,22,9 + CONTROL "",IDC_MUTE6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,74,9,9 + CONTROL "6",IDC_CHAN6,"Button",BS_AUTORADIOBUTTON,168,74,22,9 + CONTROL "",IDC_MUTE7,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,86,9,9 + CONTROL "7",IDC_CHAN7,"Button",BS_AUTORADIOBUTTON,168,86,22,9 + CONTROL "",IDC_MUTE8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,98,9,9 + CONTROL "8",IDC_CHAN8,"Button",BS_AUTORADIOBUTTON,168,98,22,9 + CONTROL "",IDC_MUTE9,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,110,9,9 + CONTROL "9",IDC_CHAN9,"Button",BS_AUTORADIOBUTTON,168,110,22,9 + CONTROL "",IDC_MUTE10,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,122,9,9 + CONTROL "10",IDC_CHAN10,"Button",BS_AUTORADIOBUTTON,168,122,22,9 + CONTROL "",IDC_MUTE11,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,134,9,9 + CONTROL "11",IDC_CHAN11,"Button",BS_AUTORADIOBUTTON,168,134,22,9 + CONTROL "",IDC_MUTE12,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,146,9,9 + CONTROL "12",IDC_CHAN12,"Button",BS_AUTORADIOBUTTON,168,146,22,9 + CONTROL "",IDC_MUTE13,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,158,9,9 + CONTROL "13",IDC_CHAN13,"Button",BS_AUTORADIOBUTTON,168,158,22,9 + CONTROL "",IDC_MUTE14,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,170,9,9 + CONTROL "14",IDC_CHAN14,"Button",BS_AUTORADIOBUTTON,168,170,22,9 + CONTROL "",IDC_MUTE15,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,182,9,9 + CONTROL "15",IDC_CHAN15,"Button",BS_AUTORADIOBUTTON,168,182,22,9 + CONTROL "",IDC_MUTE16,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,194,9,9 + CONTROL "16",IDC_CHAN16,"Button",BS_AUTORADIOBUTTON,168,194,22,9 + CONTROL "",IDC_MUTE17,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,206,9,9 + CONTROL "17",IDC_CHAN17,"Button",BS_AUTORADIOBUTTON,168,206,22,9 + CONTROL "",IDC_MUTE18,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,218,9,9 + CONTROL "18",IDC_CHAN18,"Button",BS_AUTORADIOBUTTON,168,218,22,9 + CONTROL "",IDC_MUTE19,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,230,9,9 + CONTROL "19",IDC_CHAN19,"Button",BS_AUTORADIOBUTTON,168,230,22,9 + CONTROL "",IDC_MUTE20,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,242,9,9 + CONTROL "20",IDC_CHAN20,"Button",BS_AUTORADIOBUTTON,168,242,22,9 + CONTROL "",IDC_MUTE21,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,254,9,9 + CONTROL "21",IDC_CHAN21,"Button",BS_AUTORADIOBUTTON,168,254,22,9 + CONTROL "",IDC_MUTE22,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,266,9,9 + CONTROL "22",IDC_CHAN22,"Button",BS_AUTORADIOBUTTON,168,266,22,9 + CONTROL "",IDC_MUTE23,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,278,9,9 + CONTROL "23",IDC_CHAN23,"Button",BS_AUTORADIOBUTTON,168,278,22,9 + CONTROL "",IDC_MUTE24,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,290,9,9 + CONTROL "24",IDC_CHAN24,"Button",BS_AUTORADIOBUTTON,168,290,22,9 + LTEXT "Streams",IDC_STATIC,6,2,29,8 + CTEXT "Mute/Select",IDC_STATIC,144,2,55,8 + LTEXT "",IDC_ADSR,208,22,176,55,WS_BORDER + RTEXT "Attack:",IDC_STATIC,221,81,30,9 + RTEXT "Decay:",IDC_STATIC,221,92,30,9 + RTEXT "Sustain:",IDC_STATIC,221,103,30,9 + RTEXT "Release:",IDC_STATIC,221,114,30,9 + LTEXT "---",IDC_SADSR1,254,81,44,9 + LTEXT "---",IDC_SADSR2,254,92,44,9 + LTEXT "---",IDC_SADSR3,254,103,44,9 + LTEXT "---",IDC_SADSR4,254,114,42,9 + RTEXT "Sustain level:",IDC_STATIC,302,81,44,9 + LTEXT "---",IDC_SADSR5,349,81,38,9 + RTEXT "Sustain inc.:",IDC_STATIC,302,92,44,9 + LTEXT "---",IDC_SADSR6,349,92,38,9 + RTEXT "Channel:",IDC_STATIC,204,2,30,8 + GROUPBOX "ADSR channel info",IDC_STATIC,201,11,190,119 + LTEXT "1",IDC_CHANNUM,238,2,33,8 + PUSHBUTTON "M0",IDC_MUTEOFF,157,300,15,10 + PUSHBUTTON "M1",IDC_MUTEON,174,300,15,10 + GROUPBOX "Generic channel info",IDC_STATIC,201,131,190,114 + RTEXT "On:",IDC_STATIC,210,143,41,9 + RTEXT "Stop:",IDC_STATIC,210,154,41,9 + RTEXT "Reverb:",IDC_STATIC,210,187,41,9 + RTEXT "Start pos:",IDC_STATIC,301,143,35,9 + RTEXT "Curr pos:",IDC_STATIC,301,154,35,9 + RTEXT "Loop pos:",IDC_STATIC,301,165,35,9 + RTEXT "Act freq:",IDC_STATIC,300,220,35,9 + RTEXT "Used freq:",IDC_STATIC,300,231,35,9 + RTEXT "Right vol:",IDC_STATIC,300,192,35,9 + RTEXT "Left vol:",IDC_STATIC,300,203,35,9 + RTEXT "Rvb active:",IDC_STATIC,210,198,41,9 + RTEXT "Rvb end:",IDC_STATIC,210,220,41,9 + RTEXT "Rvb cur:",IDC_STATIC,210,231,41,9 + RTEXT "Noise:",IDC_STATIC,210,165,41,9 + RTEXT "FMod:",IDC_STATIC,210,176,41,9 + RTEXT "Rvb start:",IDC_STATIC,210,209,41,9 + RTEXT "Irq addr.:",IDC_STATIC,207,259,35,9 + RTEXT "Curr adsr vol.:",IDC_STATIC,302,103,44,9 + LTEXT "---",IDC_SADSR7,349,103,38,9 + LTEXT "---",IDC_CI1,254,143,39,9 + LTEXT "---",IDC_CI2,254,154,39,9 + LTEXT "---",IDC_CI3,254,165,39,9 + LTEXT "---",IDC_CI4,254,176,39,9 + LTEXT "---",IDC_CI5,254,187,39,9 + LTEXT "---",IDC_CI6,254,198,39,9 + LTEXT "---",IDC_CI7,254,209,39,9 + LTEXT "---",IDC_CI8,254,220,39,9 + LTEXT "---",IDC_CI9,254,231,39,9 + LTEXT "---",IDC_CI10,339,143,46,9 + GROUPBOX "Spu states",IDC_STATIC,202,246,189,61 + LTEXT "---",IDC_CI11,339,154,46,9 + LTEXT "---",IDC_CI12,339,165,46,9 + LTEXT "---",IDC_CI13,339,192,23,9 + LTEXT "---",IDC_CI14,339,203,22,9 + LTEXT "---",IDC_CI15,339,220,46,9 + LTEXT "---",IDC_CI16,339,231,46,9 + LTEXT "---",IDC_STA1,246,259,46,9 + RTEXT "Raw envelope:",IDC_STATIC,296,114,50,9 + LTEXT "---",IDC_SADSR8,349,114,38,9 + RTEXT "Ctrl:",IDC_STATIC,207,270,35,9 + LTEXT "---",IDC_STA2,247,270,46,9 + RTEXT "Stat:",IDC_STATIC,207,281,35,9 + LTEXT "---",IDC_STA3,247,281,46,9 + RTEXT "Spu mem:",IDC_STATIC,207,292,35,9 + LTEXT "---",IDC_STA4,247,292,46,9 + LTEXT "---",IDC_CI17,367,192,18,9 + LTEXT "---",IDC_CI18,367,203,18,9 + RTEXT "Dbg addr:",IDC_STATIC,301,176,35,9 + LTEXT "---",IDC_CI19,339,176,46,9 +END + +IDD_RECORD DIALOGEX 0, 0, 248, 25 +STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "P.E.Op.S. SPU2 sound recording" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + RTEXT "Filename:",IDC_STATIC,3,5,33,9 + EDITTEXT IDC_WAVFILE,41,3,134,12,ES_AUTOHSCROLL + PUSHBUTTON "Start recording",IDC_RECORD,180,3,61,12 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 236 + TOPMARGIN, 7 + BOTTOMMARGIN, 192 + END + + IDD_CFGDLG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 251 + TOPMARGIN, 7 + BOTTOMMARGIN, 144 + END + + IDD_DEBUG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 391 + TOPMARGIN, 7 + BOTTOMMARGIN, 307 + END + + IDD_RECORD, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 241 + TOPMARGIN, 7 + BOTTOMMARGIN, 18 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,6,0,0 + PRODUCTVERSION 1,6,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "P.E.Op.S. Sound PS2 SPU Audio driver - coded by Pete Bernert and the P.E.Op.S. team" + VALUE "FileDescription", "spu2PeopsSound" + VALUE "FileVersion", "1, 6, 0, 0" + VALUE "InternalName", "spu2PeopsSound" + VALUE "LegalCopyright", "GPL 2004" + VALUE "LegalTrademarks", "GPL 2004" + VALUE "OriginalFilename", "spu2PeopsSound.DLL" + VALUE "ProductName", "spu2PeopsSound" + VALUE "ProductVersion", "1, 6, 0, 0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // Neutral resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif +#include "res\spu2PeopsSound.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#endif +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/PeopsSPU2/spu2PeopsSound.sln b/plugins/PeopsSPU2/spu2PeopsSound.sln index 8c8be52b5f..a0a6d4571b 100644 --- a/plugins/PeopsSPU2/spu2PeopsSound.sln +++ b/plugins/PeopsSPU2/spu2PeopsSound.sln @@ -1,21 +1,21 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spu2PeopsSound", "spu2PeopsSound.vcproj", "{F9E64144-301B-48BC-8D35-A2686DBB1982}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {F9E64144-301B-48BC-8D35-A2686DBB1982}.Debug.ActiveCfg = Debug|Win32 - {F9E64144-301B-48BC-8D35-A2686DBB1982}.Debug.Build.0 = Debug|Win32 - {F9E64144-301B-48BC-8D35-A2686DBB1982}.Release.ActiveCfg = Release|Win32 - {F9E64144-301B-48BC-8D35-A2686DBB1982}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spu2PeopsSound", "spu2PeopsSound.vcproj", "{F9E64144-301B-48BC-8D35-A2686DBB1982}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {F9E64144-301B-48BC-8D35-A2686DBB1982}.Debug.ActiveCfg = Debug|Win32 + {F9E64144-301B-48BC-8D35-A2686DBB1982}.Debug.Build.0 = Debug|Win32 + {F9E64144-301B-48BC-8D35-A2686DBB1982}.Release.ActiveCfg = Release|Win32 + {F9E64144-301B-48BC-8D35-A2686DBB1982}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/plugins/PeopsSPU2/spu2PeopsSound_2008.sln b/plugins/PeopsSPU2/spu2PeopsSound_2008.sln index 304064b030..406dfae2c6 100644 --- a/plugins/PeopsSPU2/spu2PeopsSound_2008.sln +++ b/plugins/PeopsSPU2/spu2PeopsSound_2008.sln @@ -1,19 +1,19 @@ -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spu2PeopsSound", "spu2PeopsSound_2008.vcproj", "{F9E64144-301B-48BC-8D35-A2686DBB1982}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F9E64144-301B-48BC-8D35-A2686DBB1982}.Debug|Win32.ActiveCfg = Debug|Win32 - {F9E64144-301B-48BC-8D35-A2686DBB1982}.Debug|Win32.Build.0 = Debug|Win32 - {F9E64144-301B-48BC-8D35-A2686DBB1982}.Release|Win32.ActiveCfg = Release|Win32 - {F9E64144-301B-48BC-8D35-A2686DBB1982}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spu2PeopsSound", "spu2PeopsSound_2008.vcproj", "{F9E64144-301B-48BC-8D35-A2686DBB1982}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F9E64144-301B-48BC-8D35-A2686DBB1982}.Debug|Win32.ActiveCfg = Debug|Win32 + {F9E64144-301B-48BC-8D35-A2686DBB1982}.Debug|Win32.Build.0 = Debug|Win32 + {F9E64144-301B-48BC-8D35-A2686DBB1982}.Release|Win32.ActiveCfg = Release|Win32 + {F9E64144-301B-48BC-8D35-A2686DBB1982}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/plugins/PeopsSPU2/spu2PeopsSound_private.rc b/plugins/PeopsSPU2/spu2PeopsSound_private.rc index d59c33befb..9702ed813a 100644 --- a/plugins/PeopsSPU2/spu2PeopsSound_private.rc +++ b/plugins/PeopsSPU2/spu2PeopsSound_private.rc @@ -1,5 +1,5 @@ -/* THIS FILE WILL BE OVERWRITTEN BY DEV-C++ */ -/* DO NOT EDIT! */ - -#include "spu2PeopsSound.rc" - +/* THIS FILE WILL BE OVERWRITTEN BY DEV-C++ */ +/* DO NOT EDIT! */ + +#include "spu2PeopsSound.rc" + diff --git a/plugins/SPU2null/Changelog.txt b/plugins/SPU2null/Changelog.txt index 6751a30252..81b5b06fe0 100644 --- a/plugins/SPU2null/Changelog.txt +++ b/plugins/SPU2null/Changelog.txt @@ -1,30 +1,30 @@ -[ Legend: ] -[ + Added feature ] -[ * Improved/changed feature ] -[ - Bug fixed (we hope) ] -[ ! Attention (Notes) ] - -ChangeLog: - -v0.5 - [+] Added Seperate IRQ Callbacks with AutoDMA check (refraction) - [-] Updated Specs to 0.9 (refraction) - -v0.4 - [+] added vsnet2005beta1 project files. 64bit dll should work fine now (not tested!!) - -v0.2 - -15/06/03 - [*] clear some stuff,made code more readable (shadow) - - -9/06/03 - [+] Added some work on CoRE1_ATTR to get bios work (linuzappz) - -9/06/03 - - [+] Added new SPU2 functions to PS2Edefs.h 0.3.2 version - [+] Added loggin system . IT can be enable in SPU2.H - [*] Update Ps2edefs to 0.3.1 (shadow) - +[ Legend: ] +[ + Added feature ] +[ * Improved/changed feature ] +[ - Bug fixed (we hope) ] +[ ! Attention (Notes) ] + +ChangeLog: + +v0.5 + [+] Added Seperate IRQ Callbacks with AutoDMA check (refraction) + [-] Updated Specs to 0.9 (refraction) + +v0.4 + [+] added vsnet2005beta1 project files. 64bit dll should work fine now (not tested!!) + +v0.2 + +15/06/03 + [*] clear some stuff,made code more readable (shadow) + + +9/06/03 + [+] Added some work on CoRE1_ATTR to get bios work (linuzappz) + +9/06/03 + + [+] Added new SPU2 functions to PS2Edefs.h 0.3.2 version + [+] Added loggin system . IT can be enable in SPU2.H + [*] Update Ps2edefs to 0.3.1 (shadow) + diff --git a/plugins/SPU2null/ReadMe.txt b/plugins/SPU2null/ReadMe.txt index 05077648bf..ed7ebee61a 100644 --- a/plugins/SPU2null/ReadMe.txt +++ b/plugins/SPU2null/ReadMe.txt @@ -1,39 +1,39 @@ -SPU2null v0.4 -------------- - - This is an extension to use with play station2 emulators - as PCSX2 (only one right now). - The plugin is free open source code. - -Usage: ------ - Place the file "SPU2null.dll" (Windows) or "libSPU2null.so" (Linux) - at the Plugins directory of the Emulator to use it. - -Changes: -------- - v0.5 - * added debug logging dialog + about dialog - * linuz did some reg fixes - * Added DEVC++ (4.9.9.2) project files for compiling with mingw32 - v0.4 - * added vsnet2005beta1 project files. 64bit dll should work fine now (not tested!) - * Fixed one more bug in regs stuff - - v0.21 - * more work on regs - - v0.2: - * New functions & regs - - v0.1: - * First Release - * Tested with Pcsx2 - -Authors: -------- - - linuzappz - shadow - - +SPU2null v0.4 +------------- + + This is an extension to use with play station2 emulators + as PCSX2 (only one right now). + The plugin is free open source code. + +Usage: +----- + Place the file "SPU2null.dll" (Windows) or "libSPU2null.so" (Linux) + at the Plugins directory of the Emulator to use it. + +Changes: +------- + v0.5 + * added debug logging dialog + about dialog + * linuz did some reg fixes + * Added DEVC++ (4.9.9.2) project files for compiling with mingw32 + v0.4 + * added vsnet2005beta1 project files. 64bit dll should work fine now (not tested!) + * Fixed one more bug in regs stuff + + v0.21 + * more work on regs + + v0.2: + * New functions & regs + + v0.1: + * First Release + * Tested with Pcsx2 + +Authors: +------- + + linuzappz + shadow + + diff --git a/plugins/SPU2null/Windows/SPU2null.def b/plugins/SPU2null/Windows/SPU2null.def index dd0b459f85..ee7cbd8e18 100644 --- a/plugins/SPU2null/Windows/SPU2null.def +++ b/plugins/SPU2null/Windows/SPU2null.def @@ -1,31 +1,31 @@ -; SPU2null.def : Declares the module parameters for the DLL. - -LIBRARY "SPU2null" -DESCRIPTION 'SPU2 Null Driver' - -EXPORTS - ; Explicit exports can go here - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - SPU2init @5 - SPU2shutdown @6 - SPU2open @7 - SPU2close @8 - SPU2write @9 - SPU2read @10 - SPU2readDMA4Mem @11 - SPU2writeDMA4Mem @12 - SPU2readDMA7Mem @13 - SPU2writeDMA7Mem @14 - SPU2async @15 - SPU2interruptDMA4 @16 - SPU2interruptDMA7 @17 - SPU2freeze @18 - SPU2configure @21 - SPU2test @22 - SPU2about @23 - - SPU2ReadMemAddr @24 - SPU2WriteMemAddr @25 +; SPU2null.def : Declares the module parameters for the DLL. + +LIBRARY "SPU2null" +DESCRIPTION 'SPU2 Null Driver' + +EXPORTS + ; Explicit exports can go here + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + SPU2init @5 + SPU2shutdown @6 + SPU2open @7 + SPU2close @8 + SPU2write @9 + SPU2read @10 + SPU2readDMA4Mem @11 + SPU2writeDMA4Mem @12 + SPU2readDMA7Mem @13 + SPU2writeDMA7Mem @14 + SPU2async @15 + SPU2interruptDMA4 @16 + SPU2interruptDMA7 @17 + SPU2freeze @18 + SPU2configure @21 + SPU2test @22 + SPU2about @23 + + SPU2ReadMemAddr @24 + SPU2WriteMemAddr @25 SPU2irqCallback @26 \ No newline at end of file diff --git a/plugins/SPU2null/Windows/SPU2null.rc b/plugins/SPU2null/Windows/SPU2null.rc index 8150b2023a..036658dabd 100644 --- a/plugins/SPU2null/Windows/SPU2null.rc +++ b/plugins/SPU2null/Windows/SPU2null.rc @@ -1,127 +1,127 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxresmw.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxresmw.h""\r\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Greek resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ELL) -#ifdef _WIN32 -LANGUAGE LANG_GREEK, SUBLANG_DEFAULT -#pragma code_page(1253) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOGEX 0, 0, 203, 81 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "SPU2configure" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,48,60,50,14 - PUSHBUTTON "Cancel",IDCANCEL,113,60,50,14 - CONTROL "Enable logging(for develop use only)",IDC_LOGGING, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,159,15 -END - -IDD_ABOUT DIALOGEX 0, 0, 181, 82 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "About SPU2 Null..." -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,65,54,50,14 - LTEXT "SPU2 Null Driver v0.7.1",IDC_NAME,53,7,76,8 - LTEXT "Authors: Shadow (shadowpcsx2@yahoo.gr) Linuzappz",IDC_STATIC,7,24,146,24 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 196 - TOPMARGIN, 7 - BOTTOMMARGIN, 74 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 174 - TOPMARGIN, 7 - BOTTOMMARGIN, 75 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Greek resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxresmw.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxresmw.h""\r\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// Greek resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ELL) +#ifdef _WIN32 +LANGUAGE LANG_GREEK, SUBLANG_DEFAULT +#pragma code_page(1253) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 203, 81 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "SPU2configure" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,48,60,50,14 + PUSHBUTTON "Cancel",IDCANCEL,113,60,50,14 + CONTROL "Enable logging(for develop use only)",IDC_LOGGING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,159,15 +END + +IDD_ABOUT DIALOGEX 0, 0, 181, 82 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About SPU2 Null..." +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,65,54,50,14 + LTEXT "SPU2 Null Driver v0.7.1",IDC_NAME,53,7,76,8 + LTEXT "Authors: Shadow (shadowpcsx2@yahoo.gr) Linuzappz",IDC_STATIC,7,24,146,24 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 196 + TOPMARGIN, 7 + BOTTOMMARGIN, 74 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 174 + TOPMARGIN, 7 + BOTTOMMARGIN, 75 + END +END +#endif // APSTUDIO_INVOKED + +#endif // Greek resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/SSSPSXPAD/PadSSSPSX.rc b/plugins/SSSPSXPAD/PadSSSPSX.rc index 311ea56b70..8b0345fc30 100644 --- a/plugins/SSSPSXPAD/PadSSSPSX.rc +++ b/plugins/SSSPSXPAD/PadSSSPSX.rc @@ -1,155 +1,155 @@ -// Microsoft Visual C++ generated resource script. -// -#include "PadSSSPSXres.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// “ú–{Œê resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) -#ifdef _WIN32 -LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT -#pragma code_page(932) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "PadSSSPSXres.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DIALOG1 DIALOGEX 0, 0, 442, 239 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION -CAPTION "PAD Settings" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - CONTROL "",IDC_TABC,"SysTabControl32",0x0,6,6,432,210 - PUSHBUTTON "L2",IDC_BL2,54,24,72,12,NOT WS_TABSTOP - EDITTEXT IDC_EL2,54,36,72,12,ES_READONLY | NOT WS_TABSTOP - PUSHBUTTON "L1",IDC_BL1,54,48,72,12,NOT WS_TABSTOP - EDITTEXT IDC_EL1,54,60,72,12,ES_READONLY | NOT WS_TABSTOP - PUSHBUTTON "Up",IDC_BUP,54,78,72,12,NOT WS_TABSTOP - EDITTEXT IDC_EUP,54,90,72,12,ES_READONLY | NOT WS_TABSTOP - PUSHBUTTON "Left",IDC_BLEFT,12,102,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ELEFT,12,114,72,12,ES_READONLY | NOT WS_TABSTOP - PUSHBUTTON "Right",IDC_BRIGHT,96,102,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ERIGHT,96,114,72,12,ES_READONLY | NOT WS_TABSTOP - PUSHBUTTON "Down",IDC_BDOWN,54,126,72,12,NOT WS_TABSTOP - EDITTEXT IDC_EDOWN,54,138,72,12,ES_READONLY | NOT WS_TABSTOP - PUSHBUTTON "Select",IDC_BSELECT,144,36,72,12,NOT WS_TABSTOP, - WS_EX_TRANSPARENT - EDITTEXT IDC_ESELECT,144,48,72,12,ES_READONLY | NOT WS_TABSTOP, - WS_EX_TRANSPARENT - PUSHBUTTON "Start",IDC_BSTART,228,36,72,12,NOT WS_TABSTOP, - WS_EX_TRANSPARENT - EDITTEXT IDC_ESTART,228,48,72,12,ES_READONLY | NOT WS_TABSTOP, - WS_EX_TRANSPARENT - PUSHBUTTON "Analog",IDC_BMODE,186,66,72,12,NOT WS_TABSTOP, - WS_EX_TRANSPARENT - EDITTEXT IDC_EMODE,186,78,72,12,ES_READONLY | NOT WS_TABSTOP, - WS_EX_TRANSPARENT - PUSHBUTTON "R2",IDC_BR2,318,24,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ER2,318,36,72,12,ES_AUTOHSCROLL | ES_READONLY | NOT - WS_TABSTOP - PUSHBUTTON "R1",IDC_BR1,318,48,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ER1,318,60,72,12,ES_AUTOHSCROLL | ES_READONLY | NOT - WS_TABSTOP - PUSHBUTTON "Triangle",IDC_BTRIANGLE,318,78,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ETRIANGLE,318,90,72,12,ES_AUTOHSCROLL | ES_READONLY | - NOT WS_TABSTOP - PUSHBUTTON "Square",IDC_BSQUARE,276,102,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ESQUARE,276,114,72,12,ES_AUTOHSCROLL | ES_READONLY | - NOT WS_TABSTOP - PUSHBUTTON "Circle",IDC_BCIRCLE,360,102,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ECIRCLE,360,114,72,12,ES_AUTOHSCROLL | ES_READONLY | - NOT WS_TABSTOP - PUSHBUTTON "Cross",IDC_BCROSS,318,126,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ECROSS,318,138,72,12,ES_AUTOHSCROLL | ES_READONLY | - NOT WS_TABSTOP - PUSHBUTTON "L3",IDC_BL3,144,132,72,12,NOT WS_TABSTOP - EDITTEXT IDC_EL3,144,144,72,12,ES_READONLY | NOT WS_TABSTOP - PUSHBUTTON "LX",IDC_BLAX,144,162,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ELAX,144,174,72,12,ES_READONLY | NOT WS_TABSTOP - PUSHBUTTON "LY",IDC_BLAY,144,186,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ELAY,144,198,72,12,ES_READONLY | NOT WS_TABSTOP - PUSHBUTTON "R3",IDC_BR3,228,132,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ER3,228,144,72,12,ES_READONLY | NOT WS_TABSTOP - PUSHBUTTON "RX",IDC_BRAX,228,162,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ERAX,228,174,72,12,ES_READONLY | NOT WS_TABSTOP - PUSHBUTTON "RY",IDC_BRAY,228,186,72,12,NOT WS_TABSTOP - EDITTEXT IDC_ERAY,228,198,72,12,ES_READONLY | NOT WS_TABSTOP - PUSHBUTTON "OK",IDOK,330,222,48,12,NOT WS_TABSTOP - PUSHBUTTON "Cancel",IDCANCEL,390,222,48,12,NOT WS_TABSTOP - CTEXT "",IDC_STATIC,318,174,108,30,0,WS_EX_STATICEDGE - LTEXT "DUALSHOCK2 INSIDE",IDC_STATIC,331,186,84,8 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_DIALOG1, DIALOG - BEGIN - RIGHTMARGIN, 432 - BOTTOMMARGIN, 233 - END -END -#endif // APSTUDIO_INVOKED - -#endif // “ú–{Œê resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "PadSSSPSXres.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// “ú–{Œê resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) +#ifdef _WIN32 +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT +#pragma code_page(932) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "PadSSSPSXres.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_DIALOG1 DIALOGEX 0, 0, 442, 239 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION +CAPTION "PAD Settings" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_TABC,"SysTabControl32",0x0,6,6,432,210 + PUSHBUTTON "L2",IDC_BL2,54,24,72,12,NOT WS_TABSTOP + EDITTEXT IDC_EL2,54,36,72,12,ES_READONLY | NOT WS_TABSTOP + PUSHBUTTON "L1",IDC_BL1,54,48,72,12,NOT WS_TABSTOP + EDITTEXT IDC_EL1,54,60,72,12,ES_READONLY | NOT WS_TABSTOP + PUSHBUTTON "Up",IDC_BUP,54,78,72,12,NOT WS_TABSTOP + EDITTEXT IDC_EUP,54,90,72,12,ES_READONLY | NOT WS_TABSTOP + PUSHBUTTON "Left",IDC_BLEFT,12,102,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ELEFT,12,114,72,12,ES_READONLY | NOT WS_TABSTOP + PUSHBUTTON "Right",IDC_BRIGHT,96,102,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ERIGHT,96,114,72,12,ES_READONLY | NOT WS_TABSTOP + PUSHBUTTON "Down",IDC_BDOWN,54,126,72,12,NOT WS_TABSTOP + EDITTEXT IDC_EDOWN,54,138,72,12,ES_READONLY | NOT WS_TABSTOP + PUSHBUTTON "Select",IDC_BSELECT,144,36,72,12,NOT WS_TABSTOP, + WS_EX_TRANSPARENT + EDITTEXT IDC_ESELECT,144,48,72,12,ES_READONLY | NOT WS_TABSTOP, + WS_EX_TRANSPARENT + PUSHBUTTON "Start",IDC_BSTART,228,36,72,12,NOT WS_TABSTOP, + WS_EX_TRANSPARENT + EDITTEXT IDC_ESTART,228,48,72,12,ES_READONLY | NOT WS_TABSTOP, + WS_EX_TRANSPARENT + PUSHBUTTON "Analog",IDC_BMODE,186,66,72,12,NOT WS_TABSTOP, + WS_EX_TRANSPARENT + EDITTEXT IDC_EMODE,186,78,72,12,ES_READONLY | NOT WS_TABSTOP, + WS_EX_TRANSPARENT + PUSHBUTTON "R2",IDC_BR2,318,24,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ER2,318,36,72,12,ES_AUTOHSCROLL | ES_READONLY | NOT + WS_TABSTOP + PUSHBUTTON "R1",IDC_BR1,318,48,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ER1,318,60,72,12,ES_AUTOHSCROLL | ES_READONLY | NOT + WS_TABSTOP + PUSHBUTTON "Triangle",IDC_BTRIANGLE,318,78,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ETRIANGLE,318,90,72,12,ES_AUTOHSCROLL | ES_READONLY | + NOT WS_TABSTOP + PUSHBUTTON "Square",IDC_BSQUARE,276,102,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ESQUARE,276,114,72,12,ES_AUTOHSCROLL | ES_READONLY | + NOT WS_TABSTOP + PUSHBUTTON "Circle",IDC_BCIRCLE,360,102,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ECIRCLE,360,114,72,12,ES_AUTOHSCROLL | ES_READONLY | + NOT WS_TABSTOP + PUSHBUTTON "Cross",IDC_BCROSS,318,126,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ECROSS,318,138,72,12,ES_AUTOHSCROLL | ES_READONLY | + NOT WS_TABSTOP + PUSHBUTTON "L3",IDC_BL3,144,132,72,12,NOT WS_TABSTOP + EDITTEXT IDC_EL3,144,144,72,12,ES_READONLY | NOT WS_TABSTOP + PUSHBUTTON "LX",IDC_BLAX,144,162,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ELAX,144,174,72,12,ES_READONLY | NOT WS_TABSTOP + PUSHBUTTON "LY",IDC_BLAY,144,186,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ELAY,144,198,72,12,ES_READONLY | NOT WS_TABSTOP + PUSHBUTTON "R3",IDC_BR3,228,132,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ER3,228,144,72,12,ES_READONLY | NOT WS_TABSTOP + PUSHBUTTON "RX",IDC_BRAX,228,162,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ERAX,228,174,72,12,ES_READONLY | NOT WS_TABSTOP + PUSHBUTTON "RY",IDC_BRAY,228,186,72,12,NOT WS_TABSTOP + EDITTEXT IDC_ERAY,228,198,72,12,ES_READONLY | NOT WS_TABSTOP + PUSHBUTTON "OK",IDOK,330,222,48,12,NOT WS_TABSTOP + PUSHBUTTON "Cancel",IDCANCEL,390,222,48,12,NOT WS_TABSTOP + CTEXT "",IDC_STATIC,318,174,108,30,0,WS_EX_STATICEDGE + LTEXT "DUALSHOCK2 INSIDE",IDC_STATIC,331,186,84,8 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_DIALOG1, DIALOG + BEGIN + RIGHTMARGIN, 432 + BOTTOMMARGIN, 233 + END +END +#endif // APSTUDIO_INVOKED + +#endif // “ú–{Œê resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/SSSPSXPAD/PadSSSPSX_vs2012.vcxproj b/plugins/SSSPSXPAD/PadSSSPSX_vs2012.vcxproj index 4d90b501cd..7f5ed33620 100644 --- a/plugins/SSSPSXPAD/PadSSSPSX_vs2012.vcxproj +++ b/plugins/SSSPSXPAD/PadSSSPSX_vs2012.vcxproj @@ -1,108 +1,108 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - PadSSSPSX - {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9} - PadSSSPSX - Win32Proj - - - - DynamicLibrary - MultiByte - true - v110_xp - - - DynamicLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - EnableFastChecks - MultiThreadedDebug - - - - - user32.lib;kernel32.lib;dxguid.lib;dinput8.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - PadSSSPSX.def - false - MachineX86 - $(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories) - - - - - MaxSpeed - AnySuitable - true - MultiThreaded - - - - - dxguid.lib;dinput8.lib;%(AdditionalDependencies) - PadSSSPSX.def - false - MachineX86 - $(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories) - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + PadSSSPSX + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9} + PadSSSPSX + Win32Proj + + + + DynamicLibrary + MultiByte + true + v110_xp + + + DynamicLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + EnableFastChecks + MultiThreadedDebug + + + + + user32.lib;kernel32.lib;dxguid.lib;dinput8.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + PadSSSPSX.def + false + MachineX86 + $(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories) + + + + + MaxSpeed + AnySuitable + true + MultiThreaded + + + + + dxguid.lib;dinput8.lib;%(AdditionalDependencies) + PadSSSPSX.def + false + MachineX86 + $(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/SSSPSXPAD/PadSSSPSX_vs2012.vcxproj.filters b/plugins/SSSPSXPAD/PadSSSPSX_vs2012.vcxproj.filters index 7607ee2540..e365de733f 100644 --- a/plugins/SSSPSXPAD/PadSSSPSX_vs2012.vcxproj.filters +++ b/plugins/SSSPSXPAD/PadSSSPSX_vs2012.vcxproj.filters @@ -1,40 +1,40 @@ - - - - - {ce637888-9001-4763-a6af-296bbee81a3f} - cpp;c;cxx;def;odl;idl;hpj;bat;asm - - - {72abb2dd-cb01-4a07-88f7-2b9e453ce969} - h;hpp;hxx;hm;inl;inc - - - {47ea9bc9-9ac0-4637-9586-e20852ea0960} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - - - Header Files - - - Header Files - - - - - Resource Files - - - - - Resource Files - - + + + + + {ce637888-9001-4763-a6af-296bbee81a3f} + cpp;c;cxx;def;odl;idl;hpj;bat;asm + + + {72abb2dd-cb01-4a07-88f7-2b9e453ce969} + h;hpp;hxx;hm;inl;inc + + + {47ea9bc9-9ac0-4637-9586-e20852ea0960} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + Header Files + + + Header Files + + + + + Resource Files + + + + + Resource Files + + \ No newline at end of file diff --git a/plugins/SSSPSXPAD/ProjectRootDir.props b/plugins/SSSPSXPAD/ProjectRootDir.props index bdc610875d..15a8eaf1cd 100644 --- a/plugins/SSSPSXPAD/ProjectRootDir.props +++ b/plugins/SSSPSXPAD/ProjectRootDir.props @@ -1,16 +1,16 @@ - - - - $(ProjectDir). - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(SvnRootDir) - - + + + + $(ProjectDir). + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/plugins/USBnull/ReadMe.txt b/plugins/USBnull/ReadMe.txt index f916e59126..f8a9b564c6 100644 --- a/plugins/USBnull/ReadMe.txt +++ b/plugins/USBnull/ReadMe.txt @@ -1,34 +1,34 @@ -USBnull v0.4 -------------- - - This is an extension to use with play station2 emulators - as PCSX2 (only one right now). - The plugin is free open source code. - -Usage: ------ - Place the file "usbnull.dll" (win32) or usbnull.dll (win64) - at the Plugin directory of the Emulator to use it. - -Changes: -------- - v0.4: -*project files for vs2005 beta1 .64bit dll should work okay (not tested!) - - v0.3: - *up to pcsx2 specs 0.5.5 - *added ini and option for logging - *small adds around.. - - v0.2: - * First Release - * Tested with Pcsx2 - -Authors: -------- - -shadow - - - - +USBnull v0.4 +------------- + + This is an extension to use with play station2 emulators + as PCSX2 (only one right now). + The plugin is free open source code. + +Usage: +----- + Place the file "usbnull.dll" (win32) or usbnull.dll (win64) + at the Plugin directory of the Emulator to use it. + +Changes: +------- + v0.4: +*project files for vs2005 beta1 .64bit dll should work okay (not tested!) + + v0.3: + *up to pcsx2 specs 0.5.5 + *added ini and option for logging + *small adds around.. + + v0.2: + * First Release + * Tested with Pcsx2 + +Authors: +------- + +shadow + + + + diff --git a/plugins/USBnull/Windows/ProjectRootDir.props b/plugins/USBnull/Windows/ProjectRootDir.props index 8d9f9ad374..423e907385 100644 --- a/plugins/USBnull/Windows/ProjectRootDir.props +++ b/plugins/USBnull/Windows/ProjectRootDir.props @@ -1,15 +1,15 @@ - - - - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(SvnRootDir) - - + + + + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/plugins/USBnull/Windows/USBnull.def b/plugins/USBnull/Windows/USBnull.def index 9b7c7422a4..990e1731ef 100644 --- a/plugins/USBnull/Windows/USBnull.def +++ b/plugins/USBnull/Windows/USBnull.def @@ -1,29 +1,29 @@ -; USBlinuz.def : Declares the module parameters for the DLL. - -;LIBRARY "USBnull" -;DESCRIPTION 'USBnull Driver' - -EXPORTS - ; Explicit exports can go here - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - USBinit @5 - USBshutdown @6 - USBopen @7 - USBclose @8 - USBread8 @9 - USBread16 @10 - USBread32 @11 - USBwrite8 @12 - USBwrite16 @13 - USBwrite32 @14 - USBirqCallback @15 - USBirqHandler @16 - USBsetRAM @17 - - USBconfigure @18 - USBtest @19 - USBabout @20 - - USBsetSettingsDir +; USBlinuz.def : Declares the module parameters for the DLL. + +;LIBRARY "USBnull" +;DESCRIPTION 'USBnull Driver' + +EXPORTS + ; Explicit exports can go here + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + USBinit @5 + USBshutdown @6 + USBopen @7 + USBclose @8 + USBread8 @9 + USBread16 @10 + USBread32 @11 + USBwrite8 @12 + USBwrite16 @13 + USBwrite32 @14 + USBirqCallback @15 + USBirqHandler @16 + USBsetRAM @17 + + USBconfigure @18 + USBtest @19 + USBabout @20 + + USBsetSettingsDir diff --git a/plugins/USBnull/Windows/USBnull.rc b/plugins/USBnull/Windows/USBnull.rc index 79b7686ffa..a6d4d98cf8 100644 --- a/plugins/USBnull/Windows/USBnull.rc +++ b/plugins/USBnull/Windows/USBnull.rc @@ -1,116 +1,116 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxresmw.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Spanish (Argentina) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESS) -#ifdef _WIN32 -LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxresmw.h""\r\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOGEX 0, 0, 212, 121 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "USBconfigure" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,48,100,50,14 - PUSHBUTTON "Cancel",IDCANCEL,113,100,50,14 - CONTROL "Enable logging(for develop use only)",IDC_LOGGING, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,159,15 -END - -IDD_ABOUT DIALOGEX 0, 0, 177, 106 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "USBabout" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,65,85,50,14 - LTEXT "USBnull Driver",IDC_NAME,70,10,47,8 - GROUPBOX "",IDC_STATIC,5,35,170,40 - LTEXT "Author: shadow@pcsx2.net",IDC_STATIC,20,20,141,10 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 205 - TOPMARGIN, 7 - BOTTOMMARGIN, 114 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 170 - TOPMARGIN, 7 - BOTTOMMARGIN, 99 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Spanish (Argentina) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxresmw.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Spanish (Argentina) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESS) +#ifdef _WIN32 +LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxresmw.h""\r\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 212, 121 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "USBconfigure" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,48,100,50,14 + PUSHBUTTON "Cancel",IDCANCEL,113,100,50,14 + CONTROL "Enable logging(for develop use only)",IDC_LOGGING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,159,15 +END + +IDD_ABOUT DIALOGEX 0, 0, 177, 106 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "USBabout" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,65,85,50,14 + LTEXT "USBnull Driver",IDC_NAME,70,10,47,8 + GROUPBOX "",IDC_STATIC,5,35,170,40 + LTEXT "Author: shadow@pcsx2.net",IDC_STATIC,20,20,141,10 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 205 + TOPMARGIN, 7 + BOTTOMMARGIN, 114 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 170 + TOPMARGIN, 7 + BOTTOMMARGIN, 99 + END +END +#endif // APSTUDIO_INVOKED + +#endif // Spanish (Argentina) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/USBnull/Windows/USBnull_vs2012.vcxproj b/plugins/USBnull/Windows/USBnull_vs2012.vcxproj index 1f89f51d90..b6f26d2b8e 100644 --- a/plugins/USBnull/Windows/USBnull_vs2012.vcxproj +++ b/plugins/USBnull/Windows/USBnull_vs2012.vcxproj @@ -1,91 +1,91 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - USBnull - {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70} - USBnull - Win32Proj - - - - DynamicLibrary - MultiByte - true - v110_xp - - - DynamicLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(ProjectName) - - - - - - - - $(OutDir)$(TargetName)$(TargetExt) - USBnull.def - false - MachineX86 - - - - - - - - - USBnull.def - false - MachineX86 - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + USBnull + {BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70} + USBnull + Win32Proj + + + + DynamicLibrary + MultiByte + true + v110_xp + + + DynamicLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(ProjectName) + + + + + + + + $(OutDir)$(TargetName)$(TargetExt) + USBnull.def + false + MachineX86 + + + + + + + + + USBnull.def + false + MachineX86 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/USBnull/Windows/USBnull_vs2012.vcxproj.filters b/plugins/USBnull/Windows/USBnull_vs2012.vcxproj.filters index 21a1f816fe..8208bc47f3 100644 --- a/plugins/USBnull/Windows/USBnull_vs2012.vcxproj.filters +++ b/plugins/USBnull/Windows/USBnull_vs2012.vcxproj.filters @@ -1,38 +1,38 @@ - - - - - {94a66e11-75eb-4a79-a044-b78e97a6ccc3} - cpp;c;cxx;def;odl;idl;hpj;bat;asm - - - {2790b344-7a1a-45ef-9a16-0dd847d6de56} - h;hpp;hxx;hm;inl;inc - - - {bf432076-1764-488d-84b7-82e00f408011} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - - - Resource Files - - + + + + + {94a66e11-75eb-4a79-a044-b78e97a6ccc3} + cpp;c;cxx;def;odl;idl;hpj;bat;asm + + + {2790b344-7a1a-45ef-9a16-0dd847d6de56} + h;hpp;hxx;hm;inl;inc + + + {bf432076-1764-488d-84b7-82e00f408011} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + + + Resource Files + + \ No newline at end of file diff --git a/plugins/USBqemu/License-qemu.txt b/plugins/USBqemu/License-qemu.txt index bf51c07090..492bdd8732 100644 --- a/plugins/USBqemu/License-qemu.txt +++ b/plugins/USBqemu/License-qemu.txt @@ -1,23 +1,23 @@ /* * QEMU USB emulation - * - * Copyright (c) 2005 Fabrice Bellard - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ + * + * Copyright (c) 2005 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ diff --git a/plugins/USBqemu/ReadMe.txt b/plugins/USBqemu/ReadMe.txt index 8a5e6cfe51..241c2199ab 100644 --- a/plugins/USBqemu/ReadMe.txt +++ b/plugins/USBqemu/ReadMe.txt @@ -1,26 +1,26 @@ -USBlinuz v0.1 -------------- - - This is an extension to use with play station2 emulators - as PCSX2 (only one right now). - The plugin is free open source code. - -Usage: ------ - Place the file "usblinuz.dll" (win32) or usblinuz_64.dll (win64) - at the Plugin directory of the Emulator to use it. - -Changes: -------- -v0.1 (gigaherz) - * First Release - * Tested with Pcsx2 32 and 64bit - -Authors: -------- - - linuzappz - shadow - - - +USBlinuz v0.1 +------------- + + This is an extension to use with play station2 emulators + as PCSX2 (only one right now). + The plugin is free open source code. + +Usage: +----- + Place the file "usblinuz.dll" (win32) or usblinuz_64.dll (win64) + at the Plugin directory of the Emulator to use it. + +Changes: +------- +v0.1 (gigaherz) + * First Release + * Tested with Pcsx2 32 and 64bit + +Authors: +------- + + linuzappz + shadow + + + diff --git a/plugins/USBqemu/USB.cpp b/plugins/USBqemu/USB.cpp index 1d39ce97a7..a76fbca31b 100644 --- a/plugins/USBqemu/USB.cpp +++ b/plugins/USBqemu/USB.cpp @@ -1,369 +1,369 @@ -/* USBqemu - * Copyright (C) 2002-2011 PCSX2 Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "qemu-usb/USBinternal.h" - -#ifdef _MSC_VER -# include "svnrev.h" -#endif - -const unsigned char version = PS2E_USB_VERSION; -const unsigned char revision = 0; -const unsigned char build = 1; // increase that with each version - -// PCSX2 expects ASNI, not unicode, so this MUST always be char... -static char libraryName[256]; - -OHCIState *qemu_ohci; - -Config conf; - -HWND gsWindowHandle=NULL; - -u8 *ram; -USBcallback _USBirq; -FILE *usbLog; -int64_t usb_frame_time=0; -int64_t usb_bit_time=0; - -s64 clocks=0; -s64 remaining=0; - -int64_t get_ticks_per_sec() -{ - return PSXCLK; -} - -void __Log(char *fmt, ...) { - va_list list; - - if (!conf.Log) return; - - va_start(list, fmt); - vfprintf(usbLog, fmt, list); - va_end(list); -} - -static void InitLibraryName() -{ -#ifdef USBQEMU_PUBLIC_RELEASE - - // Public Release! - // Output a simplified string that's just our name: - - strcpy( libraryName, "USBqemu" ); - -#else - #ifdef SVN_REV_UNKNOWN - - // Unknown revision. - // Output a name that includes devbuild status but not - // subversion revision tags: - - strcpy( libraryName, "USBqemu" - #ifdef DEBUG_FAST - "-Debug" - #elif defined( PCSX2_DEBUG ) - "-Debug/Strict" // strict debugging is slow! - #elif defined( PCSX2_DEVBUILD ) - "-Dev" - #else - "" - #endif - ); - - #else - - // Use TortoiseSVN's SubWCRev utility's output - // to label the specific revision: - - sprintf_s( libraryName, "USBqemu %lld%s" - #ifdef DEBUG_FAST - "-Debug" - #elif defined( PCSX2_DEBUG ) - "-Debug/Strict" // strict debugging is slow! - #elif defined( PCSX2_DEVBUILD ) - "-Dev" - #else - "" - #endif - ,SVN_REV,SVN_MODS ? "m" : "" - ); - #endif -#endif - -} - -u32 CALLBACK PS2EgetLibType() { - return PS2E_LT_USB; -} - -char* CALLBACK PS2EgetLibName() -{ - InitLibraryName(); - return libraryName; -} - -u32 CALLBACK PS2EgetLibVersion2(u32 type) { - return (version<<16) | (revision<<8) | build; -} - -void USBirq(int cycles) -{ - USB_LOG("USBirq.\n"); - - _USBirq(cycles); -} - -s32 CALLBACK USBinit() { - LoadConfig(); - if (conf.Log) - { - usbLog = fopen("logs/usbLog.txt", "w"); - setvbuf(usbLog, NULL, _IONBF, 0); - USB_LOG("USBqemu plugin version %d,%d\n",revision,build); - USB_LOG("USBinit\n"); - } - - qemu_ohci = ohci_create(0x1f801600,2); - qemu_ohci->rhport[0].port.dev = usb_keyboard_init(); - qemu_ohci->rhport[0].port.ops->attach(&(qemu_ohci->rhport[0].port)); - - clocks = 0; - remaining = 0; - - return 0; -} - -void CALLBACK USBshutdown() { - - USBDevice* device = qemu_ohci->rhport[0].port.dev; - - qemu_ohci->rhport[0].port.ops->detach(&(qemu_ohci->rhport[0].port)); - device->info->handle_destroy(qemu_ohci->rhport[0].port.dev); - - free(qemu_ohci); - -#ifdef _DEBUG - if(usbLog) - fclose(usbLog); -#endif -} - -s32 CALLBACK USBopen(void *pDsp) { - USB_LOG("USBopen\n"); - - HWND hWnd=(HWND)pDsp; - - if (!IsWindow (hWnd) && !IsBadReadPtr ((u32*)hWnd, 4)) - hWnd = *(HWND*)hWnd; - if (!IsWindow (hWnd)) - hWnd = NULL; - else - { - while (GetWindowLong (hWnd, GWL_STYLE) & WS_CHILD) - hWnd = GetParent (hWnd); - } - gsWindowHandle = hWnd; - - return 0; -} - -void CALLBACK USBclose() { -} - -u8 CALLBACK USBread8(u32 addr) { - USB_LOG("* Invalid 8bit read at address %lx\n", addr); - return 0; -} - -u16 CALLBACK USBread16(u32 addr) { - USB_LOG("* Invalid 16bit read at address %lx\n", addr); - return 0; -} - -u32 CALLBACK USBread32(u32 addr) { - u32 hard; - - hard=ohci_mem_read(qemu_ohci,addr - qemu_ohci->mem); - - USB_LOG("* Known 32bit read at address %lx: %lx\n", addr, hard); - - return hard; -} - -void CALLBACK USBwrite8(u32 addr, u8 value) { - USB_LOG("* Invalid 8bit write at address %lx value %x\n", addr, value); -} - -void CALLBACK USBwrite16(u32 addr, u16 value) { - USB_LOG("* Invalid 16bit write at address %lx value %x\n", addr, value); -} - -void CALLBACK USBwrite32(u32 addr, u32 value) { - USB_LOG("* Known 32bit write at address %lx value %lx\n", addr, value); - ohci_mem_write(qemu_ohci,addr - qemu_ohci->mem, value); -} - -void CALLBACK USBirqCallback(USBcallback callback) { - _USBirq = callback; -} - -extern u32 bits; - -int CALLBACK _USBirqHandler(void) -{ - //fprintf(stderr," * USB: IRQ Acknowledged.\n"); - //qemu_ohci->intr_status&=~bits; - return 1; -} - -USBhandler CALLBACK USBirqHandler(void) { - return (USBhandler)_USBirqHandler; -} - -void CALLBACK USBsetRAM(void *mem) { - ram = (u8*)mem; -} - -// extended funcs - -char USBfreezeID[] = "USBqemu01"; - -typedef struct { - char freezeID[10]; - int cycles; - int remaining; - OHCIState t; - int extraData; // for future expansion with the device state -} USBfreezeData; - -s32 CALLBACK USBfreeze(int mode, freezeData *data) { - USBfreezeData usbd; - - if (mode == FREEZE_LOAD) - { - if(data->size < sizeof(USBfreezeData)) - { - SysMessage("ERROR: Unable to load freeze data! Got %d bytes, expected >= %d.", data->size, sizeof(USBfreezeData)); - return -1; - } - - usbd = *(USBfreezeData*)data->data; - usbd.freezeID[9] = 0; - usbd.cycles = clocks; - usbd.remaining = remaining; - - if( strcmp(usbd.freezeID, USBfreezeID) != 0) - { - SysMessage("ERROR: Unable to load freeze data! Found ID '%s', expected ID '%s'.", usbd.freezeID, USBfreezeID); - return -1; - } - - if (data->size != sizeof(USBfreezeData)) - return -1; - - for(int i=0; i< qemu_ohci->num_ports; i++) - { - usbd.t.rhport[i].port.opaque = qemu_ohci; - usbd.t.rhport[i].port.ops = qemu_ohci->rhport[i].port.ops; - usbd.t.rhport[i].port.dev = qemu_ohci->rhport[i].port.dev; // pointers - } - *qemu_ohci = usbd.t; - - // WARNING: TODO: Load the state of the attached devices! - - } - else if (mode == FREEZE_SAVE) - { - data->size = sizeof(USBfreezeData); - data->data = (s8*)malloc(data->size); - if (data->data == NULL) - return -1; - - - strcpy(usbd.freezeID, USBfreezeID); - usbd.t = *qemu_ohci; - for(int i=0; i< qemu_ohci->num_ports; i++) - { - usbd.t.rhport[i].port.ops = NULL; // pointers - usbd.t.rhport[i].port.opaque = NULL; // pointers - usbd.t.rhport[i].port.dev = NULL; // pointers - } - - clocks = usbd.cycles; - remaining = usbd.remaining; - - // WARNING: TODO: Save the state of the attached devices! - } - - return 0; -} - -void CALLBACK USBasync(u32 _cycles) -{ - remaining += _cycles; - clocks += remaining; - if(qemu_ohci->eof_timer>0) - { - while(remaining>=qemu_ohci->eof_timer) - { - remaining-=qemu_ohci->eof_timer; - qemu_ohci->eof_timer=0; - ohci_frame_boundary(qemu_ohci); - } - if((remaining>0)&&(qemu_ohci->eof_timer>0)) - { - s64 m = qemu_ohci->eof_timer; - if(remaining < m) - m = remaining; - qemu_ohci->eof_timer -= m; - remaining -= m; - } - } - //if(qemu_ohci->eof_timer <= 0) - //{ - // ohci_frame_boundary(qemu_ohci); - //} -} - -s32 CALLBACK USBtest() { - return 0; -} - -void cpu_physical_memory_rw(u32 addr, u8 *buf, - int len, int is_write) -{ - if(is_write) - memcpy(&(ram[addr]),buf,len); - else - memcpy(buf,&(ram[addr]),len); -} - -s64 get_clock() -{ - return clocks; -} - -void *qemu_mallocz(uint32_t size) -{ - void *m=malloc(size); - if(!m) return NULL; - memset(m,0,size); - return m; -} +/* USBqemu + * Copyright (C) 2002-2011 PCSX2 Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "qemu-usb/USBinternal.h" + +#ifdef _MSC_VER +# include "svnrev.h" +#endif + +const unsigned char version = PS2E_USB_VERSION; +const unsigned char revision = 0; +const unsigned char build = 1; // increase that with each version + +// PCSX2 expects ASNI, not unicode, so this MUST always be char... +static char libraryName[256]; + +OHCIState *qemu_ohci; + +Config conf; + +HWND gsWindowHandle=NULL; + +u8 *ram; +USBcallback _USBirq; +FILE *usbLog; +int64_t usb_frame_time=0; +int64_t usb_bit_time=0; + +s64 clocks=0; +s64 remaining=0; + +int64_t get_ticks_per_sec() +{ + return PSXCLK; +} + +void __Log(char *fmt, ...) { + va_list list; + + if (!conf.Log) return; + + va_start(list, fmt); + vfprintf(usbLog, fmt, list); + va_end(list); +} + +static void InitLibraryName() +{ +#ifdef USBQEMU_PUBLIC_RELEASE + + // Public Release! + // Output a simplified string that's just our name: + + strcpy( libraryName, "USBqemu" ); + +#else + #ifdef SVN_REV_UNKNOWN + + // Unknown revision. + // Output a name that includes devbuild status but not + // subversion revision tags: + + strcpy( libraryName, "USBqemu" + #ifdef DEBUG_FAST + "-Debug" + #elif defined( PCSX2_DEBUG ) + "-Debug/Strict" // strict debugging is slow! + #elif defined( PCSX2_DEVBUILD ) + "-Dev" + #else + "" + #endif + ); + + #else + + // Use TortoiseSVN's SubWCRev utility's output + // to label the specific revision: + + sprintf_s( libraryName, "USBqemu %lld%s" + #ifdef DEBUG_FAST + "-Debug" + #elif defined( PCSX2_DEBUG ) + "-Debug/Strict" // strict debugging is slow! + #elif defined( PCSX2_DEVBUILD ) + "-Dev" + #else + "" + #endif + ,SVN_REV,SVN_MODS ? "m" : "" + ); + #endif +#endif + +} + +u32 CALLBACK PS2EgetLibType() { + return PS2E_LT_USB; +} + +char* CALLBACK PS2EgetLibName() +{ + InitLibraryName(); + return libraryName; +} + +u32 CALLBACK PS2EgetLibVersion2(u32 type) { + return (version<<16) | (revision<<8) | build; +} + +void USBirq(int cycles) +{ + USB_LOG("USBirq.\n"); + + _USBirq(cycles); +} + +s32 CALLBACK USBinit() { + LoadConfig(); + if (conf.Log) + { + usbLog = fopen("logs/usbLog.txt", "w"); + setvbuf(usbLog, NULL, _IONBF, 0); + USB_LOG("USBqemu plugin version %d,%d\n",revision,build); + USB_LOG("USBinit\n"); + } + + qemu_ohci = ohci_create(0x1f801600,2); + qemu_ohci->rhport[0].port.dev = usb_keyboard_init(); + qemu_ohci->rhport[0].port.ops->attach(&(qemu_ohci->rhport[0].port)); + + clocks = 0; + remaining = 0; + + return 0; +} + +void CALLBACK USBshutdown() { + + USBDevice* device = qemu_ohci->rhport[0].port.dev; + + qemu_ohci->rhport[0].port.ops->detach(&(qemu_ohci->rhport[0].port)); + device->info->handle_destroy(qemu_ohci->rhport[0].port.dev); + + free(qemu_ohci); + +#ifdef _DEBUG + if(usbLog) + fclose(usbLog); +#endif +} + +s32 CALLBACK USBopen(void *pDsp) { + USB_LOG("USBopen\n"); + + HWND hWnd=(HWND)pDsp; + + if (!IsWindow (hWnd) && !IsBadReadPtr ((u32*)hWnd, 4)) + hWnd = *(HWND*)hWnd; + if (!IsWindow (hWnd)) + hWnd = NULL; + else + { + while (GetWindowLong (hWnd, GWL_STYLE) & WS_CHILD) + hWnd = GetParent (hWnd); + } + gsWindowHandle = hWnd; + + return 0; +} + +void CALLBACK USBclose() { +} + +u8 CALLBACK USBread8(u32 addr) { + USB_LOG("* Invalid 8bit read at address %lx\n", addr); + return 0; +} + +u16 CALLBACK USBread16(u32 addr) { + USB_LOG("* Invalid 16bit read at address %lx\n", addr); + return 0; +} + +u32 CALLBACK USBread32(u32 addr) { + u32 hard; + + hard=ohci_mem_read(qemu_ohci,addr - qemu_ohci->mem); + + USB_LOG("* Known 32bit read at address %lx: %lx\n", addr, hard); + + return hard; +} + +void CALLBACK USBwrite8(u32 addr, u8 value) { + USB_LOG("* Invalid 8bit write at address %lx value %x\n", addr, value); +} + +void CALLBACK USBwrite16(u32 addr, u16 value) { + USB_LOG("* Invalid 16bit write at address %lx value %x\n", addr, value); +} + +void CALLBACK USBwrite32(u32 addr, u32 value) { + USB_LOG("* Known 32bit write at address %lx value %lx\n", addr, value); + ohci_mem_write(qemu_ohci,addr - qemu_ohci->mem, value); +} + +void CALLBACK USBirqCallback(USBcallback callback) { + _USBirq = callback; +} + +extern u32 bits; + +int CALLBACK _USBirqHandler(void) +{ + //fprintf(stderr," * USB: IRQ Acknowledged.\n"); + //qemu_ohci->intr_status&=~bits; + return 1; +} + +USBhandler CALLBACK USBirqHandler(void) { + return (USBhandler)_USBirqHandler; +} + +void CALLBACK USBsetRAM(void *mem) { + ram = (u8*)mem; +} + +// extended funcs + +char USBfreezeID[] = "USBqemu01"; + +typedef struct { + char freezeID[10]; + int cycles; + int remaining; + OHCIState t; + int extraData; // for future expansion with the device state +} USBfreezeData; + +s32 CALLBACK USBfreeze(int mode, freezeData *data) { + USBfreezeData usbd; + + if (mode == FREEZE_LOAD) + { + if(data->size < sizeof(USBfreezeData)) + { + SysMessage("ERROR: Unable to load freeze data! Got %d bytes, expected >= %d.", data->size, sizeof(USBfreezeData)); + return -1; + } + + usbd = *(USBfreezeData*)data->data; + usbd.freezeID[9] = 0; + usbd.cycles = clocks; + usbd.remaining = remaining; + + if( strcmp(usbd.freezeID, USBfreezeID) != 0) + { + SysMessage("ERROR: Unable to load freeze data! Found ID '%s', expected ID '%s'.", usbd.freezeID, USBfreezeID); + return -1; + } + + if (data->size != sizeof(USBfreezeData)) + return -1; + + for(int i=0; i< qemu_ohci->num_ports; i++) + { + usbd.t.rhport[i].port.opaque = qemu_ohci; + usbd.t.rhport[i].port.ops = qemu_ohci->rhport[i].port.ops; + usbd.t.rhport[i].port.dev = qemu_ohci->rhport[i].port.dev; // pointers + } + *qemu_ohci = usbd.t; + + // WARNING: TODO: Load the state of the attached devices! + + } + else if (mode == FREEZE_SAVE) + { + data->size = sizeof(USBfreezeData); + data->data = (s8*)malloc(data->size); + if (data->data == NULL) + return -1; + + + strcpy(usbd.freezeID, USBfreezeID); + usbd.t = *qemu_ohci; + for(int i=0; i< qemu_ohci->num_ports; i++) + { + usbd.t.rhport[i].port.ops = NULL; // pointers + usbd.t.rhport[i].port.opaque = NULL; // pointers + usbd.t.rhport[i].port.dev = NULL; // pointers + } + + clocks = usbd.cycles; + remaining = usbd.remaining; + + // WARNING: TODO: Save the state of the attached devices! + } + + return 0; +} + +void CALLBACK USBasync(u32 _cycles) +{ + remaining += _cycles; + clocks += remaining; + if(qemu_ohci->eof_timer>0) + { + while(remaining>=qemu_ohci->eof_timer) + { + remaining-=qemu_ohci->eof_timer; + qemu_ohci->eof_timer=0; + ohci_frame_boundary(qemu_ohci); + } + if((remaining>0)&&(qemu_ohci->eof_timer>0)) + { + s64 m = qemu_ohci->eof_timer; + if(remaining < m) + m = remaining; + qemu_ohci->eof_timer -= m; + remaining -= m; + } + } + //if(qemu_ohci->eof_timer <= 0) + //{ + // ohci_frame_boundary(qemu_ohci); + //} +} + +s32 CALLBACK USBtest() { + return 0; +} + +void cpu_physical_memory_rw(u32 addr, u8 *buf, + int len, int is_write) +{ + if(is_write) + memcpy(&(ram[addr]),buf,len); + else + memcpy(buf,&(ram[addr]),len); +} + +s64 get_clock() +{ + return clocks; +} + +void *qemu_mallocz(uint32_t size) +{ + void *m=malloc(size); + if(!m) return NULL; + memset(m,0,size); + return m; +} diff --git a/plugins/USBqemu/USB.h b/plugins/USBqemu/USB.h index 91b51a5a98..b190d94996 100644 --- a/plugins/USBqemu/USB.h +++ b/plugins/USBqemu/USB.h @@ -1,65 +1,65 @@ -/* USBqemu - * Copyright (C) 2002-2011 PCSX2 Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#pragma once - -#ifndef __USB_H__ -#define __USB_H__ - -#include - -#define USBdefs -#include "PS2Edefs.h" - -#ifdef __WIN32__ -# include -# include -#else -# include -# define __inline inline -#endif - -#include -#include -#include -#include - -#define USB_LOG __Log - -typedef struct { - bool Log; -} Config; - -extern Config conf; - -#define PSXCLK 36864000 /* 36.864 Mhz */ - -void USBirq(int); - -void SaveConfig(); -void LoadConfig(); - -extern FILE *usbLog; -void __Log(char *fmt, ...); - -extern void SysMessage(const char *fmt, ...); -extern void SysMessage(const wchar_t *fmt, ...); - -extern HWND gsWindowHandle; - -#endif +/* USBqemu + * Copyright (C) 2002-2011 PCSX2 Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#pragma once + +#ifndef __USB_H__ +#define __USB_H__ + +#include + +#define USBdefs +#include "PS2Edefs.h" + +#ifdef __WIN32__ +# include +# include +#else +# include +# define __inline inline +#endif + +#include +#include +#include +#include + +#define USB_LOG __Log + +typedef struct { + bool Log; +} Config; + +extern Config conf; + +#define PSXCLK 36864000 /* 36.864 Mhz */ + +void USBirq(int); + +void SaveConfig(); +void LoadConfig(); + +extern FILE *usbLog; +void __Log(char *fmt, ...); + +extern void SysMessage(const char *fmt, ...); +extern void SysMessage(const wchar_t *fmt, ...); + +extern HWND gsWindowHandle; + +#endif diff --git a/plugins/USBqemu/Win32/CfgHelpers.cpp b/plugins/USBqemu/Win32/CfgHelpers.cpp index 758c391465..5fe6a75006 100644 --- a/plugins/USBqemu/Win32/CfgHelpers.cpp +++ b/plugins/USBqemu/Win32/CfgHelpers.cpp @@ -1,159 +1,159 @@ -/* SPU2-X, A plugin for Emulating the Sound Processing Unit of the Playstation 2 - * Developed and maintained by the Pcsx2 Development Team. - * - * Original portions from SPU2ghz are (c) 2008 by David Quintana [gigaherz] - * - * SPU2-X is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * SPU2-X is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with SPU2-X. If not, see . - */ -#include "../USB.h" - -void SysMessage(const char *fmt, ...) -{ - va_list list; - char tmp[512]; - wchar_t wtmp[512]; - - va_start(list,fmt); - vsprintf_s(tmp,fmt,list); - va_end(list); - swprintf_s(wtmp, L"%S", tmp); - MessageBox( (!!gsWindowHandle) ? (HWND)gsWindowHandle : GetActiveWindow(), wtmp, - L"USBqemu System Message", MB_OK | MB_SETFOREGROUND); -} - -void SysMessage(const wchar_t *fmt, ...) -{ - va_list list; - wchar_t tmp[512]; - - va_start(list,fmt); - vswprintf_s(tmp,fmt,list); - va_end(list); - - MessageBox( (!!gsWindowHandle) ? (HWND)gsWindowHandle : GetActiveWindow(), tmp, - L"USBqemu System Message", MB_OK | MB_SETFOREGROUND); -} - -////// - -static TCHAR CfgFile[260] = L"inis/USBqemu.ini"; - -void CfgSetSettingsDir( const char* dir ) -{ - if(dir == NULL) - { - wcscpy(CfgFile, L"inis/USBqemu.ini"); - } - else - { - swprintf_s(CfgFile, L"%S", dir); - TCHAR term = CfgFile[wcslen(CfgFile)-1]; - if(term != L'\\' && term != L'/') - wcscat(CfgFile, L"\\"); - wcscat(CfgFile, L"USBQemu.ini" ); - } -} - - -/*¯| Config File Format: |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*\ -+--+---------------------+------------------------+ -| | -| Option=Value | -| | -| | -| Boolean Values: TRUE,YES,1,T,Y mean 'true', | -| everything else means 'false'. | -| | -| All Values are limited to 255 chars. | -| | -+-------------------------------------------------+ -\*______________________________________________*/ - - -void CfgWriteBool(const TCHAR* Section, const TCHAR* Name, bool Value) -{ - const TCHAR *Data = Value ? L"TRUE" : L"FALSE"; - WritePrivateProfileString( Section, Name, Data, CfgFile ); -} - -void CfgWriteInt(const TCHAR* Section, const TCHAR* Name, int Value) -{ - TCHAR Data[32]; - _itow( Value, Data, 10 ); - WritePrivateProfileString(Section,Name,Data,CfgFile); -} - -void CfgWriteStr(const TCHAR* Section, const TCHAR* Name, const TCHAR *Data) -{ - WritePrivateProfileString( Section, Name, Data, CfgFile ); -} - - -/*****************************************************************************/ - -bool CfgReadBool(const TCHAR *Section,const TCHAR* Name, bool Default) -{ - TCHAR Data[255] = {0}; - - GetPrivateProfileString( Section, Name, L"", Data, 255, CfgFile ); - Data[254]=0; - if(wcslen(Data)==0) { - CfgWriteBool(Section,Name,Default); - return Default; - } - - if(wcscmp(Data,L"1")==0) return true; - if(wcscmp(Data,L"Y")==0) return true; - if(wcscmp(Data,L"T")==0) return true; - if(wcscmp(Data,L"YES")==0) return true; - if(wcscmp(Data,L"TRUE")==0) return true; - return false; -} - - -int CfgReadInt(const TCHAR* Section, const TCHAR* Name,int Default) -{ - TCHAR Data[255]={0}; - GetPrivateProfileString(Section,Name,L"",Data,255,CfgFile); - Data[254]=0; - - if(wcslen(Data)==0) { - CfgWriteInt(Section,Name,Default); - return Default; - } - - return _wtoi(Data); -} - -void CfgReadStr(const TCHAR* Section, const TCHAR* Name, TCHAR* Data, int DataSize, const TCHAR* Default) -{ - int chars = GetPrivateProfileString(Section,Name,L"",Data,DataSize,CfgFile); - - if(!chars) - { - wcscpy(Data, Default); - CfgWriteStr( Section, Name, Default ); - } -} - -// Tries to read the requested value. -// Returns FALSE if the value isn't found. -bool CfgFindName( const TCHAR *Section, const TCHAR* Name) -{ - // Only load 24 characters. No need to load more. - TCHAR Data[24]={0}; - GetPrivateProfileString(Section,Name,L"",Data,24,CfgFile); - Data[23]=0; - - if(wcslen(Data)==0) return false; - return true; -} +/* SPU2-X, A plugin for Emulating the Sound Processing Unit of the Playstation 2 + * Developed and maintained by the Pcsx2 Development Team. + * + * Original portions from SPU2ghz are (c) 2008 by David Quintana [gigaherz] + * + * SPU2-X is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * SPU2-X is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with SPU2-X. If not, see . + */ +#include "../USB.h" + +void SysMessage(const char *fmt, ...) +{ + va_list list; + char tmp[512]; + wchar_t wtmp[512]; + + va_start(list,fmt); + vsprintf_s(tmp,fmt,list); + va_end(list); + swprintf_s(wtmp, L"%S", tmp); + MessageBox( (!!gsWindowHandle) ? (HWND)gsWindowHandle : GetActiveWindow(), wtmp, + L"USBqemu System Message", MB_OK | MB_SETFOREGROUND); +} + +void SysMessage(const wchar_t *fmt, ...) +{ + va_list list; + wchar_t tmp[512]; + + va_start(list,fmt); + vswprintf_s(tmp,fmt,list); + va_end(list); + + MessageBox( (!!gsWindowHandle) ? (HWND)gsWindowHandle : GetActiveWindow(), tmp, + L"USBqemu System Message", MB_OK | MB_SETFOREGROUND); +} + +////// + +static TCHAR CfgFile[260] = L"inis/USBqemu.ini"; + +void CfgSetSettingsDir( const char* dir ) +{ + if(dir == NULL) + { + wcscpy(CfgFile, L"inis/USBqemu.ini"); + } + else + { + swprintf_s(CfgFile, L"%S", dir); + TCHAR term = CfgFile[wcslen(CfgFile)-1]; + if(term != L'\\' && term != L'/') + wcscat(CfgFile, L"\\"); + wcscat(CfgFile, L"USBQemu.ini" ); + } +} + + +/*¯| Config File Format: |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*\ ++--+---------------------+------------------------+ +| | +| Option=Value | +| | +| | +| Boolean Values: TRUE,YES,1,T,Y mean 'true', | +| everything else means 'false'. | +| | +| All Values are limited to 255 chars. | +| | ++-------------------------------------------------+ +\*______________________________________________*/ + + +void CfgWriteBool(const TCHAR* Section, const TCHAR* Name, bool Value) +{ + const TCHAR *Data = Value ? L"TRUE" : L"FALSE"; + WritePrivateProfileString( Section, Name, Data, CfgFile ); +} + +void CfgWriteInt(const TCHAR* Section, const TCHAR* Name, int Value) +{ + TCHAR Data[32]; + _itow( Value, Data, 10 ); + WritePrivateProfileString(Section,Name,Data,CfgFile); +} + +void CfgWriteStr(const TCHAR* Section, const TCHAR* Name, const TCHAR *Data) +{ + WritePrivateProfileString( Section, Name, Data, CfgFile ); +} + + +/*****************************************************************************/ + +bool CfgReadBool(const TCHAR *Section,const TCHAR* Name, bool Default) +{ + TCHAR Data[255] = {0}; + + GetPrivateProfileString( Section, Name, L"", Data, 255, CfgFile ); + Data[254]=0; + if(wcslen(Data)==0) { + CfgWriteBool(Section,Name,Default); + return Default; + } + + if(wcscmp(Data,L"1")==0) return true; + if(wcscmp(Data,L"Y")==0) return true; + if(wcscmp(Data,L"T")==0) return true; + if(wcscmp(Data,L"YES")==0) return true; + if(wcscmp(Data,L"TRUE")==0) return true; + return false; +} + + +int CfgReadInt(const TCHAR* Section, const TCHAR* Name,int Default) +{ + TCHAR Data[255]={0}; + GetPrivateProfileString(Section,Name,L"",Data,255,CfgFile); + Data[254]=0; + + if(wcslen(Data)==0) { + CfgWriteInt(Section,Name,Default); + return Default; + } + + return _wtoi(Data); +} + +void CfgReadStr(const TCHAR* Section, const TCHAR* Name, TCHAR* Data, int DataSize, const TCHAR* Default) +{ + int chars = GetPrivateProfileString(Section,Name,L"",Data,DataSize,CfgFile); + + if(!chars) + { + wcscpy(Data, Default); + CfgWriteStr( Section, Name, Default ); + } +} + +// Tries to read the requested value. +// Returns FALSE if the value isn't found. +bool CfgFindName( const TCHAR *Section, const TCHAR* Name) +{ + // Only load 24 characters. No need to load more. + TCHAR Data[24]={0}; + GetPrivateProfileString(Section,Name,L"",Data,24,CfgFile); + Data[23]=0; + + if(wcslen(Data)==0) return false; + return true; +} diff --git a/plugins/USBqemu/Win32/CfgHelpers.h b/plugins/USBqemu/Win32/CfgHelpers.h index 50857184dd..4c87d4d86f 100644 --- a/plugins/USBqemu/Win32/CfgHelpers.h +++ b/plugins/USBqemu/Win32/CfgHelpers.h @@ -1,15 +1,15 @@ -#pragma once - -#include - -extern void CfgSetSettingsDir( const char* dir ); - -extern bool CfgFindName( const TCHAR *Section, const TCHAR* Name); - -extern void CfgWriteBool(const TCHAR* Section, const TCHAR* Name, bool Value); -extern void CfgWriteInt(const TCHAR* Section, const TCHAR* Name, int Value); -extern void CfgWriteStr(const TCHAR* Section, const TCHAR* Name, const TCHAR *Data); - -extern bool CfgReadBool(const TCHAR *Section,const TCHAR* Name, bool Default); -extern void CfgReadStr(const TCHAR* Section, const TCHAR* Name, TCHAR* Data, int DataSize, const TCHAR* Default); -extern int CfgReadInt(const TCHAR* Section, const TCHAR* Name,int Default); +#pragma once + +#include + +extern void CfgSetSettingsDir( const char* dir ); + +extern bool CfgFindName( const TCHAR *Section, const TCHAR* Name); + +extern void CfgWriteBool(const TCHAR* Section, const TCHAR* Name, bool Value); +extern void CfgWriteInt(const TCHAR* Section, const TCHAR* Name, int Value); +extern void CfgWriteStr(const TCHAR* Section, const TCHAR* Name, const TCHAR *Data); + +extern bool CfgReadBool(const TCHAR *Section,const TCHAR* Name, bool Default); +extern void CfgReadStr(const TCHAR* Section, const TCHAR* Name, TCHAR* Data, int DataSize, const TCHAR* Default); +extern int CfgReadInt(const TCHAR* Section, const TCHAR* Name,int Default); diff --git a/plugins/USBqemu/Win32/Config.cpp b/plugins/USBqemu/Win32/Config.cpp index 46bd9b4972..05b1caaa08 100644 --- a/plugins/USBqemu/Win32/Config.cpp +++ b/plugins/USBqemu/Win32/Config.cpp @@ -1,21 +1,21 @@ -#include - -#include "../USB.h" - -#include "CfgHelpers.h" - -void CALLBACK USBsetSettingsDir( const char* dir ) -{ - CfgSetSettingsDir(dir); -} - -void SaveConfig() -{ - CfgWriteBool(L"Interface", L"Logging", conf.Log); -} - -void LoadConfig() -{ - conf.Log = CfgReadBool(L"Interface", L"Logging", false); -} - +#include + +#include "../USB.h" + +#include "CfgHelpers.h" + +void CALLBACK USBsetSettingsDir( const char* dir ) +{ + CfgSetSettingsDir(dir); +} + +void SaveConfig() +{ + CfgWriteBool(L"Interface", L"Logging", conf.Log); +} + +void LoadConfig() +{ + conf.Log = CfgReadBool(L"Interface", L"Logging", false); +} + diff --git a/plugins/USBqemu/Win32/ProjectRootDir.props b/plugins/USBqemu/Win32/ProjectRootDir.props index 5e4da28bf9..45c14ddc1b 100644 --- a/plugins/USBqemu/Win32/ProjectRootDir.props +++ b/plugins/USBqemu/Win32/ProjectRootDir.props @@ -1,16 +1,16 @@ - - - - $(ProjectDir).. - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(SvnRootDir) - - + + + + $(ProjectDir).. + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/plugins/USBqemu/Win32/USBqemu.def b/plugins/USBqemu/Win32/USBqemu.def index 13ae53fa30..115818e3a1 100644 --- a/plugins/USBqemu/Win32/USBqemu.def +++ b/plugins/USBqemu/Win32/USBqemu.def @@ -1,24 +1,24 @@ - -EXPORTS - ; Explicit exports can go here - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - USBinit @5 - USBshutdown @6 - USBopen @7 - USBclose @8 - USBread8 @9 - USBread16 @10 - USBread32 @11 - USBwrite8 @12 - USBwrite16 @13 - USBwrite32 @14 - USBirqCallback @15 - USBirqHandler @16 - USBsetRAM @17 - USBasync @18 - - USBconfigure @19 - USBtest @20 - USBabout @21 + +EXPORTS + ; Explicit exports can go here + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + USBinit @5 + USBshutdown @6 + USBopen @7 + USBclose @8 + USBread8 @9 + USBread16 @10 + USBread32 @11 + USBwrite8 @12 + USBwrite16 @13 + USBwrite32 @14 + USBirqCallback @15 + USBirqHandler @16 + USBsetRAM @17 + USBasync @18 + + USBconfigure @19 + USBtest @20 + USBabout @21 diff --git a/plugins/USBqemu/Win32/USBqemu.rc b/plugins/USBqemu/Win32/USBqemu.rc index 88eb6f1bbf..0e88cb4388 100644 --- a/plugins/USBqemu/Win32/USBqemu.rc +++ b/plugins/USBqemu/Win32/USBqemu.rc @@ -1,159 +1,159 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Spanish (Argentina) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESS) -#ifdef _WIN32 -LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOGEX 0, 0, 212, 121 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "USBconfigure" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,48,100,50,14 - PUSHBUTTON "Cancel",IDCANCEL,113,100,50,14 - CONTROL "Enable Logging (for develop use only)",IDC_LOGGING, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,144,15 - COMBOBOX IDC_COMBO1,7,38,138,51,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Device in Port 1:",IDC_STATIC,8,30,54,8 - COMBOBOX IDC_COMBO2,7,63,138,51,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Device in Port 2:",IDC_STATIC,8,55,54,8 -END - -IDD_ABOUT DIALOGEX 0, 0, 177, 106 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "USBabout" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,65,85,50,14 - LTEXT "USBqemu Driver",IDC_NAME,70,10,54,8 - GROUPBOX "",IDC_STATIC,5,35,170,40 - LTEXT "Author: gigaherz ",IDC_STATIC,20,20,141,10 - LTEXT "Parts of this code were originally from the QEMU project.",IDC_STATIC,14,44,149,26 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 205 - TOPMARGIN, 7 - BOTTOMMARGIN, 114 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 170 - TOPMARGIN, 7 - BOTTOMMARGIN, 99 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog Info -// - -IDD_CONFIG DLGINIT -BEGIN - IDC_COMBO1, 0x403, 10, 0 -0x6f4e, 0x4420, 0x7665, 0x6369, 0x0065, - IDC_COMBO1, 0x403, 9, 0 -0x654b, 0x6279, 0x616f, 0x6472, "\000" - IDC_COMBO1, 0x403, 6, 0 -0x6f4d, 0x7375, 0x0065, - IDC_COMBO1, 0x403, 14, 0 -0x7945, 0x7465, 0x796f, 0x4320, 0x6d61, 0x7265, 0x0061, - IDC_COMBO1, 0x403, 20, 0 -0x6953, 0x676e, 0x7473, 0x7261, 0x4d20, 0x6369, 0x6f72, 0x6870, 0x6e6f, -0x0065, - IDC_COMBO2, 0x403, 10, 0 -0x6f4e, 0x4420, 0x7665, 0x6369, 0x0065, - IDC_COMBO2, 0x403, 9, 0 -0x654b, 0x6279, 0x616f, 0x6472, "\000" - IDC_COMBO2, 0x403, 6, 0 -0x6f4d, 0x7375, 0x0065, - IDC_COMBO2, 0x403, 14, 0 -0x7945, 0x7465, 0x796f, 0x4320, 0x6d61, 0x7265, 0x0061, - IDC_COMBO2, 0x403, 20, 0 -0x6953, 0x676e, 0x7473, 0x7261, 0x4d20, 0x6369, 0x6f72, 0x6870, 0x6e6f, -0x0065, - 0 -END - -#endif // Spanish (Argentina) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Spanish (Argentina) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESS) +#ifdef _WIN32 +LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 212, 121 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "USBconfigure" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,48,100,50,14 + PUSHBUTTON "Cancel",IDCANCEL,113,100,50,14 + CONTROL "Enable Logging (for develop use only)",IDC_LOGGING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,144,15 + COMBOBOX IDC_COMBO1,7,38,138,51,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Device in Port 1:",IDC_STATIC,8,30,54,8 + COMBOBOX IDC_COMBO2,7,63,138,51,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Device in Port 2:",IDC_STATIC,8,55,54,8 +END + +IDD_ABOUT DIALOGEX 0, 0, 177, 106 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "USBabout" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,65,85,50,14 + LTEXT "USBqemu Driver",IDC_NAME,70,10,54,8 + GROUPBOX "",IDC_STATIC,5,35,170,40 + LTEXT "Author: gigaherz ",IDC_STATIC,20,20,141,10 + LTEXT "Parts of this code were originally from the QEMU project.",IDC_STATIC,14,44,149,26 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 205 + TOPMARGIN, 7 + BOTTOMMARGIN, 114 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 170 + TOPMARGIN, 7 + BOTTOMMARGIN, 99 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog Info +// + +IDD_CONFIG DLGINIT +BEGIN + IDC_COMBO1, 0x403, 10, 0 +0x6f4e, 0x4420, 0x7665, 0x6369, 0x0065, + IDC_COMBO1, 0x403, 9, 0 +0x654b, 0x6279, 0x616f, 0x6472, "\000" + IDC_COMBO1, 0x403, 6, 0 +0x6f4d, 0x7375, 0x0065, + IDC_COMBO1, 0x403, 14, 0 +0x7945, 0x7465, 0x796f, 0x4320, 0x6d61, 0x7265, 0x0061, + IDC_COMBO1, 0x403, 20, 0 +0x6953, 0x676e, 0x7473, 0x7261, 0x4d20, 0x6369, 0x6f72, 0x6870, 0x6e6f, +0x0065, + IDC_COMBO2, 0x403, 10, 0 +0x6f4e, 0x4420, 0x7665, 0x6369, 0x0065, + IDC_COMBO2, 0x403, 9, 0 +0x654b, 0x6279, 0x616f, 0x6472, "\000" + IDC_COMBO2, 0x403, 6, 0 +0x6f4d, 0x7375, 0x0065, + IDC_COMBO2, 0x403, 14, 0 +0x7945, 0x7465, 0x796f, 0x4320, 0x6d61, 0x7265, 0x0061, + IDC_COMBO2, 0x403, 20, 0 +0x6953, 0x676e, 0x7473, 0x7261, 0x4d20, 0x6369, 0x6f72, 0x6870, 0x6e6f, +0x0065, + 0 +END + +#endif // Spanish (Argentina) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/USBqemu/Win32/USBqemu_vs2012.vcxproj b/plugins/USBqemu/Win32/USBqemu_vs2012.vcxproj index cd7b882696..1b200cb522 100644 --- a/plugins/USBqemu/Win32/USBqemu_vs2012.vcxproj +++ b/plugins/USBqemu/Win32/USBqemu_vs2012.vcxproj @@ -1,169 +1,169 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - USBqemu - {E613DA9F-41B4-4613-9911-E418EF5533BC} - USBlinuz - Win32Proj - - - - DynamicLibrary - true - Unicode - v110_xp - - - DynamicLibrary - false - Unicode - v110_xp - - - DynamicLibrary - Unicode - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(ProjectName)-dev - - - - - - - - - USBqemu.def - Windows - - - MachineX86 - - - - - - - - - - USBqemu.def - Windows - - - MachineX86 - - - - - - - - - USBqemu.def - Windows - - - MachineX86 - - - - - true - true - true - - - - - - - - true - true - true - - - true - true - true - - - true - true - true - - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + USBqemu + {E613DA9F-41B4-4613-9911-E418EF5533BC} + USBlinuz + Win32Proj + + + + DynamicLibrary + true + Unicode + v110_xp + + + DynamicLibrary + false + Unicode + v110_xp + + + DynamicLibrary + Unicode + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(ProjectName)-dev + + + + + + + + + USBqemu.def + Windows + + + MachineX86 + + + + + + + + + + USBqemu.def + Windows + + + MachineX86 + + + + + + + + + USBqemu.def + Windows + + + MachineX86 + + + + + true + true + true + + + + + + + + true + true + true + + + true + true + true + + + true + true + true + + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/USBqemu/Win32/USBqemu_vs2012.vcxproj.filters b/plugins/USBqemu/Win32/USBqemu_vs2012.vcxproj.filters index 38fa5267c7..b24198a398 100644 --- a/plugins/USBqemu/Win32/USBqemu_vs2012.vcxproj.filters +++ b/plugins/USBqemu/Win32/USBqemu_vs2012.vcxproj.filters @@ -1,97 +1,97 @@ - - - - - {dfc571b5-5df6-405b-9920-d273ad48d332} - cpp;c;cxx;def;odl;idl;hpj;bat;asm - - - {fe40e0a3-a73a-44b8-a8ee-3d9591f91f0b} - - - {2f1d0e2b-ba2b-4bd2-8bbd-63b3e4909ff3} - h;hpp;hxx;hm;inl;inc - - - {d1b11b29-e230-4fb1-84e1-795a3aafe8dd} - - - {5468eb4e-6580-45d9-9432-a8ac8083abf9} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files\qemu-usb - - - Source Files\qemu-usb - - - Source Files\qemu-usb - - - Source Files\qemu-usb - - - Source Files\qemu-usb - - - Source Files\qemu-usb - - - Source Files\qemu-usb - - - Source Files\qemu-usb - - - Source Files - - - Source Files\qemu-usb - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files\qemu-usb - - - Header Files\qemu-usb - - - Header Files\qemu-usb - - - Header Files - - - Header Files\qemu-usb - - - - - Resource Files - - + + + + + {dfc571b5-5df6-405b-9920-d273ad48d332} + cpp;c;cxx;def;odl;idl;hpj;bat;asm + + + {fe40e0a3-a73a-44b8-a8ee-3d9591f91f0b} + + + {2f1d0e2b-ba2b-4bd2-8bbd-63b3e4909ff3} + h;hpp;hxx;hm;inl;inc + + + {d1b11b29-e230-4fb1-84e1-795a3aafe8dd} + + + {5468eb4e-6580-45d9-9432-a8ac8083abf9} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files\qemu-usb + + + Source Files\qemu-usb + + + Source Files\qemu-usb + + + Source Files\qemu-usb + + + Source Files\qemu-usb + + + Source Files\qemu-usb + + + Source Files\qemu-usb + + + Source Files\qemu-usb + + + Source Files + + + Source Files\qemu-usb + + + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files\qemu-usb + + + Header Files\qemu-usb + + + Header Files\qemu-usb + + + Header Files + + + Header Files\qemu-usb + + + + + Resource Files + + \ No newline at end of file diff --git a/plugins/USBqemu/Win32/Win32.cpp b/plugins/USBqemu/Win32/Win32.cpp index 0c30fb3eca..f9a755ad7e 100644 --- a/plugins/USBqemu/Win32/Win32.cpp +++ b/plugins/USBqemu/Win32/Win32.cpp @@ -1,80 +1,80 @@ -#include -#include -#include - -#include "../USB.h" -#include "resource.h" - -HINSTANCE hInst; - -void SysMessage(TCHAR *fmt, ...) { - va_list list; - TCHAR tmp[512]; - - va_start(list,fmt); - _vswprintf(tmp,fmt,list); - va_end(list); - MessageBox(0, tmp, L"USBqemu Msg", 0); -} - -BOOL CALLBACK ConfigureDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { - - switch(uMsg) { - case WM_INITDIALOG: - LoadConfig(); - if (conf.Log) CheckDlgButton(hW, IDC_LOGGING, TRUE); - return TRUE; - - case WM_COMMAND: - switch(LOWORD(wParam)) { - case IDCANCEL: - EndDialog(hW, TRUE); - return TRUE; - case IDOK: - if (IsDlgButtonChecked(hW, IDC_LOGGING)) - conf.Log = 1; - else conf.Log = 0; - SaveConfig(); - EndDialog(hW, FALSE); - return TRUE; - } - } - return FALSE; -} - - -BOOL CALLBACK AboutDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { - switch(uMsg) { - case WM_INITDIALOG: - return TRUE; - - case WM_COMMAND: - switch(LOWORD(wParam)) { - case IDOK: - EndDialog(hW, FALSE); - return TRUE; - } - } - return FALSE; -} - -void CALLBACK USBconfigure() { - DialogBox(hInst, - MAKEINTRESOURCE(IDD_CONFIG), - GetActiveWindow(), - (DLGPROC)ConfigureDlgProc); -} - -void CALLBACK USBabout() { - DialogBox(hInst, - MAKEINTRESOURCE(IDD_ABOUT), - GetActiveWindow(), - (DLGPROC)AboutDlgProc); -} - -BOOL APIENTRY DllMain(HANDLE hModule, // DLL INIT - DWORD dwReason, - LPVOID lpReserved) { - hInst = (HINSTANCE)hModule; - return TRUE; // very quick :) -} +#include +#include +#include + +#include "../USB.h" +#include "resource.h" + +HINSTANCE hInst; + +void SysMessage(TCHAR *fmt, ...) { + va_list list; + TCHAR tmp[512]; + + va_start(list,fmt); + _vswprintf(tmp,fmt,list); + va_end(list); + MessageBox(0, tmp, L"USBqemu Msg", 0); +} + +BOOL CALLBACK ConfigureDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { + + switch(uMsg) { + case WM_INITDIALOG: + LoadConfig(); + if (conf.Log) CheckDlgButton(hW, IDC_LOGGING, TRUE); + return TRUE; + + case WM_COMMAND: + switch(LOWORD(wParam)) { + case IDCANCEL: + EndDialog(hW, TRUE); + return TRUE; + case IDOK: + if (IsDlgButtonChecked(hW, IDC_LOGGING)) + conf.Log = 1; + else conf.Log = 0; + SaveConfig(); + EndDialog(hW, FALSE); + return TRUE; + } + } + return FALSE; +} + + +BOOL CALLBACK AboutDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { + switch(uMsg) { + case WM_INITDIALOG: + return TRUE; + + case WM_COMMAND: + switch(LOWORD(wParam)) { + case IDOK: + EndDialog(hW, FALSE); + return TRUE; + } + } + return FALSE; +} + +void CALLBACK USBconfigure() { + DialogBox(hInst, + MAKEINTRESOURCE(IDD_CONFIG), + GetActiveWindow(), + (DLGPROC)ConfigureDlgProc); +} + +void CALLBACK USBabout() { + DialogBox(hInst, + MAKEINTRESOURCE(IDD_ABOUT), + GetActiveWindow(), + (DLGPROC)AboutDlgProc); +} + +BOOL APIENTRY DllMain(HANDLE hModule, // DLL INIT + DWORD dwReason, + LPVOID lpReserved) { + hInst = (HINSTANCE)hModule; + return TRUE; // very quick :) +} diff --git a/plugins/USBqemu/Win32/resource.h b/plugins/USBqemu/Win32/resource.h index 943cfbe1c8..f86e1500e8 100644 --- a/plugins/USBqemu/Win32/resource.h +++ b/plugins/USBqemu/Win32/resource.h @@ -1,28 +1,28 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by USBqemu.rc -// - -#ifndef IDC_STATIC -#define IDC_STATIC -1 -#endif - -#define IDD_CONFDLG 101 -#define IDD_CONFIG 101 -#define IDD_ABOUT 103 -#define IDC_NAME 1000 -#define IDC_CHECK1 1007 -#define IDC_LOGGING 1007 -#define IDC_COMBO1 1008 -#define IDC_COMBO2 1009 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 106 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1009 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by USBqemu.rc +// + +#ifndef IDC_STATIC +#define IDC_STATIC -1 +#endif + +#define IDD_CONFDLG 101 +#define IDD_CONFIG 101 +#define IDD_ABOUT 103 +#define IDC_NAME 1000 +#define IDC_CHECK1 1007 +#define IDC_LOGGING 1007 +#define IDC_COMBO1 1008 +#define IDC_COMBO2 1009 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 106 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1009 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/plugins/USBqemu/qemu-usb/USBinternal.h b/plugins/USBqemu/qemu-usb/USBinternal.h index 2ca0d4f333..b388c60bd2 100644 --- a/plugins/USBqemu/qemu-usb/USBinternal.h +++ b/plugins/USBqemu/qemu-usb/USBinternal.h @@ -1,289 +1,289 @@ -#pragma once - -#include "../USB.h" -#include "vl.h" - -#ifdef PCSX2_DEVBUILD -# define DEBUG_OHCI -#endif -/* Dump packet contents. */ -//#define DEBUG_PACKET -/* This causes frames to occur 1000x slower */ -//#define OHCI_TIME_WARP 1 - -/* Number of Downstream Ports on the root hub. */ - -#define OHCI_MAX_PORTS 2 - -extern int64_t usb_frame_time; -extern int64_t usb_bit_time; - -typedef struct OHCIPort { - USBPort port; - uint32_t ctrl; -} OHCIPort; - -typedef uint32_t target_phys_addr_t; - -typedef struct { - //USBBus bus; - //qemu_irq irq; - int mem; - int num_ports; - const char *name; - - //QEMUTimer *eof_timer; - int64_t eof_timer; - int64_t sof_time; - - /* OHCI state */ - /* Control partition */ - uint32_t ctl, status; - uint32_t intr_status; - uint32_t intr; - - /* memory pointer partition */ - uint32_t hcca; - uint32_t ctrl_head, ctrl_cur; - uint32_t bulk_head, bulk_cur; - uint32_t per_cur; - uint32_t done; - int done_count; - - /* Frame counter partition */ - uint32_t fsmps:15; - uint32_t fit:1; - uint32_t fi:14; - uint32_t frt:1; - uint16_t frame_number; - uint16_t padding; - uint32_t pstart; - uint32_t lst; - - /* Root Hub partition */ - uint32_t rhdesc_a, rhdesc_b; - uint32_t rhstatus; - OHCIPort rhport[OHCI_MAX_PORTS]; - - /* PXA27x Non-OHCI events */ - uint32_t hstatus; - uint32_t hmask; - uint32_t hreset; - uint32_t htest; - - /* SM501 local memory offset */ - target_phys_addr_t localmem_base; - - /* Active packets. */ - uint32_t old_ctl; - USBPacket usb_packet; - uint8_t usb_buf[8192]; - uint32_t async_td; - int async_complete; - -} OHCIState; - -/* Host Controller Communications Area */ -struct ohci_hcca { - uint32_t intr[32]; - uint16_t frame, pad; - uint32_t done; -}; - -static void ohci_bus_stop(OHCIState *ohci); -static void ohci_async_cancel_device(OHCIState *ohci, USBDevice *dev); - -/* Bitfields for the first word of an Endpoint Desciptor. */ -#define OHCI_ED_FA_SHIFT 0 -#define OHCI_ED_FA_MASK (0x7f<> OHCI_##field##_SHIFT) - -#define OHCI_SET_BM(val, field, newval) do { \ - val &= ~OHCI_##field##_MASK; \ - val |= ((newval) << OHCI_##field##_SHIFT) & OHCI_##field##_MASK; \ - } while(0) - -/* endpoint descriptor */ -struct ohci_ed { - uint32_t flags; - uint32_t tail; - uint32_t head; - uint32_t next; -}; - -/* General transfer descriptor */ -struct ohci_td { - uint32_t flags; - uint32_t cbp; - uint32_t next; - uint32_t be; -}; - -/* Isochronous transfer descriptor */ -struct ohci_iso_td { - uint32_t flags; - uint32_t bp; - uint32_t next; - uint32_t be; - uint16_t offset[8]; -}; - -#define USB_HZ 12000000 - -/* OHCI Local stuff */ -#define OHCI_CTL_CBSR ((1<<0)|(1<<1)) -#define OHCI_CTL_PLE (1<<2) -#define OHCI_CTL_IE (1<<3) -#define OHCI_CTL_CLE (1<<4) -#define OHCI_CTL_BLE (1<<5) -#define OHCI_CTL_HCFS ((1<<6)|(1<<7)) -#define OHCI_USB_RESET 0x00 -#define OHCI_USB_RESUME 0x40 -#define OHCI_USB_OPERATIONAL 0x80 -#define OHCI_USB_SUSPEND 0xc0 -#define OHCI_CTL_IR (1<<8) -#define OHCI_CTL_RWC (1<<9) -#define OHCI_CTL_RWE (1<<10) - -#define OHCI_STATUS_HCR (1<<0) -#define OHCI_STATUS_CLF (1<<1) -#define OHCI_STATUS_BLF (1<<2) -#define OHCI_STATUS_OCR (1<<3) -#define OHCI_STATUS_SOC ((1<<6)|(1<<7)) - -#define OHCI_INTR_SO (1<<0) /* Scheduling overrun */ -#define OHCI_INTR_WD (1<<1) /* HcDoneHead writeback */ -#define OHCI_INTR_SF (1<<2) /* Start of frame */ -#define OHCI_INTR_RD (1<<3) /* Resume detect */ -#define OHCI_INTR_UE (1<<4) /* Unrecoverable error */ -#define OHCI_INTR_FNO (1<<5) /* Frame number overflow */ -#define OHCI_INTR_RHSC (1<<6) /* Root hub status change */ -#define OHCI_INTR_OC (1<<30) /* Ownership change */ -#define OHCI_INTR_MIE (1<<31) /* Master Interrupt Enable */ - -#define OHCI_HCCA_SIZE 0x100 -#define OHCI_HCCA_MASK 0xffffff00 - -#define OHCI_EDPTR_MASK 0xfffffff0 - -#define OHCI_FMI_FI 0x00003fff -#define OHCI_FMI_FSMPS 0xffff0000 -#define OHCI_FMI_FIT 0x80000000 - -#define OHCI_FR_RT (1<<31) - -#define OHCI_LS_THRESH 0x628 - -#define OHCI_RHA_RW_MASK 0x00000000 /* Mask of supported features. */ -#define OHCI_RHA_PSM (1<<8) -#define OHCI_RHA_NPS (1<<9) -#define OHCI_RHA_DT (1<<10) -#define OHCI_RHA_OCPM (1<<11) -#define OHCI_RHA_NOCP (1<<12) -#define OHCI_RHA_POTPGT_MASK 0xff000000 - -#define OHCI_RHS_LPS (1<<0) -#define OHCI_RHS_OCI (1<<1) -#define OHCI_RHS_DRWE (1<<15) -#define OHCI_RHS_LPSC (1<<16) -#define OHCI_RHS_OCIC (1<<17) -#define OHCI_RHS_CRWE (1<<31) - -#define OHCI_PORT_CCS (1<<0) -#define OHCI_PORT_PES (1<<1) -#define OHCI_PORT_PSS (1<<2) -#define OHCI_PORT_POCI (1<<3) -#define OHCI_PORT_PRS (1<<4) -#define OHCI_PORT_PPS (1<<8) -#define OHCI_PORT_LSDA (1<<9) -#define OHCI_PORT_CSC (1<<16) -#define OHCI_PORT_PESC (1<<17) -#define OHCI_PORT_PSSC (1<<18) -#define OHCI_PORT_OCIC (1<<19) -#define OHCI_PORT_PRSC (1<<20) -#define OHCI_PORT_WTC (OHCI_PORT_CSC|OHCI_PORT_PESC|OHCI_PORT_PSSC \ - |OHCI_PORT_OCIC|OHCI_PORT_PRSC) - -#define OHCI_TD_DIR_SETUP 0x0 -#define OHCI_TD_DIR_OUT 0x1 -#define OHCI_TD_DIR_IN 0x2 -#define OHCI_TD_DIR_RESERVED 0x3 - -#define OHCI_CC_NOERROR 0x0 -#define OHCI_CC_CRC 0x1 -#define OHCI_CC_BITSTUFFING 0x2 -#define OHCI_CC_DATATOGGLEMISMATCH 0x3 -#define OHCI_CC_STALL 0x4 -#define OHCI_CC_DEVICENOTRESPONDING 0x5 -#define OHCI_CC_PIDCHECKFAILURE 0x6 -#define OHCI_CC_UNDEXPETEDPID 0x7 -#define OHCI_CC_DATAOVERRUN 0x8 -#define OHCI_CC_DATAUNDERRUN 0x9 -#define OHCI_CC_BUFFEROVERRUN 0xc -#define OHCI_CC_BUFFERUNDERRUN 0xd - -#define OHCI_HRESET_FSBIR (1 << 0) - -int64_t get_ticks_per_sec(); - -int64_t get_clock(); - -OHCIState *ohci_create(uint32_t base, int ports); - -uint32_t ohci_mem_read(void *ptr, target_phys_addr_t addr); -void ohci_mem_write(void *ptr, target_phys_addr_t addr, uint32_t val); -void ohci_frame_boundary(void *opaque); - -int ohci_bus_start(OHCIState *ohci); -void ohci_bus_stop(OHCIState *ohci); - -USBDevice *usb_hub_init(int nb_ports); -USBDevice *usb_msd_init(const char *filename); -USBDevice *eyetoy_init(void); -USBDevice *usb_mouse_init(void); +#pragma once + +#include "../USB.h" +#include "vl.h" + +#ifdef PCSX2_DEVBUILD +# define DEBUG_OHCI +#endif +/* Dump packet contents. */ +//#define DEBUG_PACKET +/* This causes frames to occur 1000x slower */ +//#define OHCI_TIME_WARP 1 + +/* Number of Downstream Ports on the root hub. */ + +#define OHCI_MAX_PORTS 2 + +extern int64_t usb_frame_time; +extern int64_t usb_bit_time; + +typedef struct OHCIPort { + USBPort port; + uint32_t ctrl; +} OHCIPort; + +typedef uint32_t target_phys_addr_t; + +typedef struct { + //USBBus bus; + //qemu_irq irq; + int mem; + int num_ports; + const char *name; + + //QEMUTimer *eof_timer; + int64_t eof_timer; + int64_t sof_time; + + /* OHCI state */ + /* Control partition */ + uint32_t ctl, status; + uint32_t intr_status; + uint32_t intr; + + /* memory pointer partition */ + uint32_t hcca; + uint32_t ctrl_head, ctrl_cur; + uint32_t bulk_head, bulk_cur; + uint32_t per_cur; + uint32_t done; + int done_count; + + /* Frame counter partition */ + uint32_t fsmps:15; + uint32_t fit:1; + uint32_t fi:14; + uint32_t frt:1; + uint16_t frame_number; + uint16_t padding; + uint32_t pstart; + uint32_t lst; + + /* Root Hub partition */ + uint32_t rhdesc_a, rhdesc_b; + uint32_t rhstatus; + OHCIPort rhport[OHCI_MAX_PORTS]; + + /* PXA27x Non-OHCI events */ + uint32_t hstatus; + uint32_t hmask; + uint32_t hreset; + uint32_t htest; + + /* SM501 local memory offset */ + target_phys_addr_t localmem_base; + + /* Active packets. */ + uint32_t old_ctl; + USBPacket usb_packet; + uint8_t usb_buf[8192]; + uint32_t async_td; + int async_complete; + +} OHCIState; + +/* Host Controller Communications Area */ +struct ohci_hcca { + uint32_t intr[32]; + uint16_t frame, pad; + uint32_t done; +}; + +static void ohci_bus_stop(OHCIState *ohci); +static void ohci_async_cancel_device(OHCIState *ohci, USBDevice *dev); + +/* Bitfields for the first word of an Endpoint Desciptor. */ +#define OHCI_ED_FA_SHIFT 0 +#define OHCI_ED_FA_MASK (0x7f<> OHCI_##field##_SHIFT) + +#define OHCI_SET_BM(val, field, newval) do { \ + val &= ~OHCI_##field##_MASK; \ + val |= ((newval) << OHCI_##field##_SHIFT) & OHCI_##field##_MASK; \ + } while(0) + +/* endpoint descriptor */ +struct ohci_ed { + uint32_t flags; + uint32_t tail; + uint32_t head; + uint32_t next; +}; + +/* General transfer descriptor */ +struct ohci_td { + uint32_t flags; + uint32_t cbp; + uint32_t next; + uint32_t be; +}; + +/* Isochronous transfer descriptor */ +struct ohci_iso_td { + uint32_t flags; + uint32_t bp; + uint32_t next; + uint32_t be; + uint16_t offset[8]; +}; + +#define USB_HZ 12000000 + +/* OHCI Local stuff */ +#define OHCI_CTL_CBSR ((1<<0)|(1<<1)) +#define OHCI_CTL_PLE (1<<2) +#define OHCI_CTL_IE (1<<3) +#define OHCI_CTL_CLE (1<<4) +#define OHCI_CTL_BLE (1<<5) +#define OHCI_CTL_HCFS ((1<<6)|(1<<7)) +#define OHCI_USB_RESET 0x00 +#define OHCI_USB_RESUME 0x40 +#define OHCI_USB_OPERATIONAL 0x80 +#define OHCI_USB_SUSPEND 0xc0 +#define OHCI_CTL_IR (1<<8) +#define OHCI_CTL_RWC (1<<9) +#define OHCI_CTL_RWE (1<<10) + +#define OHCI_STATUS_HCR (1<<0) +#define OHCI_STATUS_CLF (1<<1) +#define OHCI_STATUS_BLF (1<<2) +#define OHCI_STATUS_OCR (1<<3) +#define OHCI_STATUS_SOC ((1<<6)|(1<<7)) + +#define OHCI_INTR_SO (1<<0) /* Scheduling overrun */ +#define OHCI_INTR_WD (1<<1) /* HcDoneHead writeback */ +#define OHCI_INTR_SF (1<<2) /* Start of frame */ +#define OHCI_INTR_RD (1<<3) /* Resume detect */ +#define OHCI_INTR_UE (1<<4) /* Unrecoverable error */ +#define OHCI_INTR_FNO (1<<5) /* Frame number overflow */ +#define OHCI_INTR_RHSC (1<<6) /* Root hub status change */ +#define OHCI_INTR_OC (1<<30) /* Ownership change */ +#define OHCI_INTR_MIE (1<<31) /* Master Interrupt Enable */ + +#define OHCI_HCCA_SIZE 0x100 +#define OHCI_HCCA_MASK 0xffffff00 + +#define OHCI_EDPTR_MASK 0xfffffff0 + +#define OHCI_FMI_FI 0x00003fff +#define OHCI_FMI_FSMPS 0xffff0000 +#define OHCI_FMI_FIT 0x80000000 + +#define OHCI_FR_RT (1<<31) + +#define OHCI_LS_THRESH 0x628 + +#define OHCI_RHA_RW_MASK 0x00000000 /* Mask of supported features. */ +#define OHCI_RHA_PSM (1<<8) +#define OHCI_RHA_NPS (1<<9) +#define OHCI_RHA_DT (1<<10) +#define OHCI_RHA_OCPM (1<<11) +#define OHCI_RHA_NOCP (1<<12) +#define OHCI_RHA_POTPGT_MASK 0xff000000 + +#define OHCI_RHS_LPS (1<<0) +#define OHCI_RHS_OCI (1<<1) +#define OHCI_RHS_DRWE (1<<15) +#define OHCI_RHS_LPSC (1<<16) +#define OHCI_RHS_OCIC (1<<17) +#define OHCI_RHS_CRWE (1<<31) + +#define OHCI_PORT_CCS (1<<0) +#define OHCI_PORT_PES (1<<1) +#define OHCI_PORT_PSS (1<<2) +#define OHCI_PORT_POCI (1<<3) +#define OHCI_PORT_PRS (1<<4) +#define OHCI_PORT_PPS (1<<8) +#define OHCI_PORT_LSDA (1<<9) +#define OHCI_PORT_CSC (1<<16) +#define OHCI_PORT_PESC (1<<17) +#define OHCI_PORT_PSSC (1<<18) +#define OHCI_PORT_OCIC (1<<19) +#define OHCI_PORT_PRSC (1<<20) +#define OHCI_PORT_WTC (OHCI_PORT_CSC|OHCI_PORT_PESC|OHCI_PORT_PSSC \ + |OHCI_PORT_OCIC|OHCI_PORT_PRSC) + +#define OHCI_TD_DIR_SETUP 0x0 +#define OHCI_TD_DIR_OUT 0x1 +#define OHCI_TD_DIR_IN 0x2 +#define OHCI_TD_DIR_RESERVED 0x3 + +#define OHCI_CC_NOERROR 0x0 +#define OHCI_CC_CRC 0x1 +#define OHCI_CC_BITSTUFFING 0x2 +#define OHCI_CC_DATATOGGLEMISMATCH 0x3 +#define OHCI_CC_STALL 0x4 +#define OHCI_CC_DEVICENOTRESPONDING 0x5 +#define OHCI_CC_PIDCHECKFAILURE 0x6 +#define OHCI_CC_UNDEXPETEDPID 0x7 +#define OHCI_CC_DATAOVERRUN 0x8 +#define OHCI_CC_DATAUNDERRUN 0x9 +#define OHCI_CC_BUFFEROVERRUN 0xc +#define OHCI_CC_BUFFERUNDERRUN 0xd + +#define OHCI_HRESET_FSBIR (1 << 0) + +int64_t get_ticks_per_sec(); + +int64_t get_clock(); + +OHCIState *ohci_create(uint32_t base, int ports); + +uint32_t ohci_mem_read(void *ptr, target_phys_addr_t addr); +void ohci_mem_write(void *ptr, target_phys_addr_t addr, uint32_t val); +void ohci_frame_boundary(void *opaque); + +int ohci_bus_start(OHCIState *ohci); +void ohci_bus_stop(OHCIState *ohci); + +USBDevice *usb_hub_init(int nb_ports); +USBDevice *usb_msd_init(const char *filename); +USBDevice *eyetoy_init(void); +USBDevice *usb_mouse_init(void); diff --git a/plugins/USBqemu/qemu-usb/usb-kbd.cpp b/plugins/USBqemu/qemu-usb/usb-kbd.cpp index ff9a08d733..ef8762934a 100644 --- a/plugins/USBqemu/qemu-usb/usb-kbd.cpp +++ b/plugins/USBqemu/qemu-usb/usb-kbd.cpp @@ -1,2114 +1,2114 @@ -/* - * QEMU USB HID devices - * - * Copyright (c) 2005 Fabrice Bellard - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#include "USBinternal.h" - -/* HID interface requests */ -#define GET_REPORT 0xa101 -#define GET_IDLE 0xa102 -#define GET_PROTOCOL 0xa103 -#define SET_IDLE 0x210a -#define SET_PROTOCOL 0x210b - -#define USB_MOUSE 1 -#define USB_TABLET 2 - -typedef struct USBKeyboardState { - USBDevice dev; - int keyboard_grabbed; -} USBKeyboardState; - -USBDeviceInfo devinfo; - - -#define VK_BASED - -#ifdef VK_BASED -static const uint8_t vk_to_key_code[] = { -0x00, //FAIL: 0x00 -0x00, //FAIL: LMOUSE -0x00, //FAIL: RMOUSE -0x00, //FAIL: Break -0x00, //FAIL: MMOUSE -0x00, //FAIL: X1MOUSE -0x00, //FAIL: X2MOUSE -0x00, //FAIL: 0x00 -0x2A, //OK: Backspace -0x2B, //OK: Tab -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x9C, //OK: Clear -0x28, //FAIL: ENTER -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: SHIFT -0x00, //FAIL: CTRL -0x00, //FAIL: ALT -0x48, //OK: Pause -0x39, //OK: Caps Lock -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -//0x00, //FAIL: 0x00 -//0x00, //FAIL: 0x00 -//0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x29, //FAIL: ESC -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x2C, //OK: Spacebar -#ifdef ENABLE_KEYPAD_Fx -0x4B, //FAIL: PAGE UP -0x4E, //FAIL: PAGE DOWN -0x4D, //OK: End -0x4A, //OK: Home -0x50, //FAIL: LEFT ARROW -0x52, //FAIL: UP ARROW -0x4F, //FAIL: RIGHT ARROW -0x51, //FAIL: DOWN ARROW -0x77, //OK: Select -0x00, //FAIL: PRINT -0x74, //OK: Execute -0x46, //FAIL: PRINT SCREEN -0x49, //FAIL: INS -0x4C, //FAIL: DEL -0x75, //OK: Help VK_HOME -#else -0x00, //FAIL: PAGE UP -0x00, //FAIL: PAGE DOWN -0x00, //OK: End -0x00, //OK: Home -0x00, //FAIL: LEFT ARROW -0x00, //FAIL: UP ARROW -0x00, //FAIL: RIGHT ARROW -0x00, //FAIL: DOWN ARROW -0x00, //OK: Select -0x00, //FAIL: PRINT -0x00, //OK: Execute -0x00, //FAIL: PRINT SCREEN -0x00, //FAIL: INS -0x00, //FAIL: DEL -0x00, //OK: Help VK_HOME -#endif -0x27, //OK: 0 -0x1E, //OK: 1 -0x1F, //OK: 2 -0x20, //OK: 3 -0x21, //OK: 4 -0x22, //OK: 5 -0x23, //OK: 6 -0x24, //OK: 7 -0x25, //OK: 8 -0x26, //OK: 9 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: not found -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x04, //OK: A -0x05, //OK: B -0x06, //OK: C -0x07, //OK: D -0x08, //OK: E -0x09, //OK: F -0x0A, //OK: G -0x0B, //OK: H -0x0C, //OK: I -0x0D, //OK: J -0x0E, //OK: K -0x0F, //OK: L -0x10, //OK: M -0x11, //OK: N -0x12, //OK: O -0x13, //OK: P -0x14, //OK: Q -0x15, //OK: R -0x16, //OK: S -0x17, //OK: T -0x18, //OK: U -0x19, //OK: V -0x1A, //OK: W -0x1B, //OK: X -0x1C, //OK: Y -0x1D, //OK: Z -#ifdef ENABLE_KEYPAD_Fx -0xE3, //OK: LGUI -0xE7, //OK: RGUI -0x65, //OK: Application -0x00, //FAIL: 0x00 -0x00, //FAIL: SLEEP -0x62, //OK: Keypad 0 -0x59, //OK: Keypad 1 -0x5A, //OK: Keypad 2 -0x5B, //OK: Keypad 3 -0x5C, //OK: Keypad 4 -0x5D, //OK: Keypad 5 -0x5E, //OK: Keypad 6 -0x5F, //OK: Keypad 7 -0x60, //OK: Keypad 8 -0x61, //OK: Keypad 9 -0x55, //OK: Keypad * -0x57, //OK: Keypad + -0x9F, //OK: Separator -0x56, //OK: Keypad - -0x63, //OK: Keypad . -0x54, //OK: Keypad / -0x3A, //OK: F1 -0x3B, //OK: F2 -0x3C, //OK: F3 -0x3D, //OK: F4 -0x3E, //OK: F5 -0x3F, //OK: F6 -0x40, //OK: F7 -0x41, //OK: F8 -0x42, //OK: F9 -0x43, //OK: F10 -0x44, //OK: F11 -0x45, //OK: F12 -0x68, //OK: F13 -0x69, //OK: F14 -0x6A, //OK: F15 -0x6B, //OK: F16 -0x6C, //OK: F17 -0x6D, //OK: F18 -0x6E, //OK: F19 -0x6F, //OK: F20 -0x70, //OK: F21 -0x71, //OK: F22 -0x72, //OK: F23 -0x73, //OK: F24 -#else -0x00, //OK: LGUI -0x00, //OK: RGUI -0x00, //OK: Application -0x00, //FAIL: 0x00 -0x00, //FAIL: SLEEP -0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00, -#endif -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x83, //OK: NUM LOCK -0x47, //OK: Scroll Lock -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0xE1, //OK: LSHIFT -0xE5, //OK: RSHIFT -0xE0, //OK: LCONTROL -0xE4, //OK: RCONTROL -0xE3, //OK: LGUI -0xE7, //OK: RGUI -0x00, //FAIL: Windows 2000/XP: Browser Back -0x00, //FAIL: Windows 2000/XP: Browser Forward -0x00, //FAIL: Windows 2000/XP: Browser Refresh -0x00, //FAIL: Windows 2000/XP: Browser Stop -0x00, //FAIL: Windows 2000/XP: Browser Search -0x00, //FAIL: Windows 2000/XP: Browser Favorites -0x00, //FAIL: Windows 2000/XP: Browser Start and Home -0x00, //FAIL: Windows 2000/XP: Volume Mute -0x00, //FAIL: Windows 2000/XP: Volume Down -0x00, //FAIL: Windows 2000/XP: Volume Up -0x00, //FAIL: Windows 2000/XP: Next Track -0x00, //FAIL: Windows 2000/XP: Previous Track -0x00, //FAIL: Windows 2000/XP: Stop Media -0x00, //FAIL: Windows 2000/XP: Play/Pause Media -0x00, //FAIL: Windows 2000/XP: Start Mail -0x00, //FAIL: Windows 2000/XP: Select Media -0x00, //FAIL: Windows 2000/XP: Start Application 1 -0x00, //FAIL: Windows 2000/XP: Start Application 2 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x33, //FAIL: Windows 2000/XP: For the US standard keyboard, the ';:' key -0x2E, //FAIL: Windows 2000/XP: For any country/region, the '+' -0x36, //FAIL: Windows 2000/XP: For any country/region, the ',' -0x2D, //FAIL: Windows 2000/XP: For any country/region, the '-' -0x37, //FAIL: Windows 2000/XP: For any country/region, the '.' -0x38, //FAIL: Windows 2000/XP: For the US standard keyboard, the '/?' key -0x35, //FAIL: Windows 2000/XP: For the US standard keyboard, the '`~' key -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: not found -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x2F, //FAIL: Windows 2000/XP: For the US standard keyboard, the '[{' key -0x31, //FAIL: Windows 2000/XP: For the US standard keyboard, the '\|' key -0x30, //FAIL: Windows 2000/XP: For the US standard keyboard, the ']}' key -0x34, //FAIL: Windows 2000/XP: For the US standard keyboard, the 'single-quote/double-quote' key -0x00, //FAIL: Used for miscellaneous characters; it can vary byboard. -0x00, //FAIL: Reserved -0x00, //FAIL: OEM specific -0x32, //FAIL: Windows 2000/XP: Either the angle bracket or the backslash key on the RT 102-key keyboard -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCEE6 -0x00, //FAIL: OEM specific -0x00, //FAIL: Windows 2000/XP: Used to pass Unicode characters as if they E8 -0x00, //FAIL: Unassigned -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: 0x00 -0x00, //FAIL: Attn -0xA3, //OK: CrSel -0xA4, //OK: ExSel -0x00, //FAIL: Erase EOF -0x00, //FAIL: Play -0x00, //FAIL: Zoom -0x00, //FAIL: Reserved -0x00, //FAIL: PA1 -0x9C, //OK: Clear -0x00, //FAIL: 0x00 -}; -#else -# ifdef ENABLE_KEYPAD_Fx -static const unsigned char scan_to_usb[] = { -0x00,0x29,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x2f,0x30,0x2a,0x2b, -0x14,0x1a,0x08,0x15,0x17,0x1c,0x18,0x0c,0x12,0x13,0x33,0x2e,0x28,0xe0,0x04,0x16, -0x07,0x09,0x0a,0x0b,0x0d,0x0e,0x0f,0x35,0x34,0x31,0xe1,0x38,0x1d,0x1b,0x06,0x19, -0x05,0x11,0x10,0x36,0x37,0x2d,0xe5,0x55,0xe3,0x2c,0x39,0x3a,0x3b,0x3c,0x3d,0x3e, -0x3f,0x40,0x41,0x42,0x43,0x83,0x47,0x5f,0x60,0x61,0x56,0x5c,0x5d,0x5e,0x57,0x59, -0x5a,0x5b,0x62,0x63,0x46,0x00,0x32,0x44,0x45,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x75,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe4,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x54,0x00,0x00,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe3,0xe7,0x65,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -}; -# else -static const unsigned char scan_to_usb[] = { -0x00,0x29,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x2f,0x30,0x2a,0x2b, -0x14,0x1a,0x08,0x15,0x17,0x1c,0x18,0x0c,0x12,0x13,0x33,0x2e,0x28,0xe0,0x04,0x16, -0x07,0x09,0x0a,0x0b,0x0d,0x0e,0x0f,0x35,0x34,0x31,0xe1,0x38,0x1d,0x1b,0x06,0x19, -0x05,0x11,0x10,0x36,0x37,0x2d,0xe5,0x00,0xe3,0x2c,0x39,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x83,0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x46,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x75,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe4,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe3,0xe7,0x65,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -}; -# endif -#endif - -/* mostly the same values as the Bochs USB Keyboard device */ -static const uint8_t qemu_keyboard_dev_descriptor[] = { - 0x12, /* u8 bLength; */ - 0x01, /* u8 bDescriptorType; Device */ - 0x10, 0x00, /* u16 bcdUSB; v1.0 */ - - 0x00, /* u8 bDeviceClass; */ - 0x00, /* u8 bDeviceSubClass; */ - 0x00, /* u8 bDeviceProtocol; [ low/full speeds only ] */ - 0x08, /* u8 bMaxPacketSize0; 8 Bytes */ - - 0x27, 0x06, /* u16 idVendor; */ - 0x01, 0x00, /* u16 idProduct; */ - 0x00, 0x00, /* u16 bcdDevice */ - - 0x03, /* u8 iManufacturer; */ - 0x02, /* u8 iProduct; */ - 0x01, /* u8 iSerialNumber; */ - 0x01 /* u8 bNumConfigurations; */ -}; - -static const uint8_t qemu_keyboard_config_descriptor[] = { - /* one configuration */ - 0x09, /* u8 bLength; */ - 0x02, /* u8 bDescriptorType; Configuration */ - 0x22, 0x00, /* u16 wTotalLength; */ - 0x01, /* u8 bNumInterfaces; (1) */ - 0x01, /* u8 bConfigurationValue; */ - 0x04, /* u8 iConfiguration; */ - 0xa0, /* u8 bmAttributes; - Bit 7: must be set, - 6: Self-powered, - 5: Remote wakeup, - 4..0: resvd */ - 50, /* u8 MaxPower; */ - - /* USB 1.1: - * USB 2.0, single TT organization (mandatory): - * one interface, protocol 0 - * - * USB 2.0, multiple TT organization (optional): - * two interfaces, protocols 1 (like single TT) - * and 2 (multiple TT mode) ... config is - * sometimes settable - * NOT IMPLEMENTED - */ - - /* one interface */ - 0x09, /* u8 if_bLength; */ - 0x04, /* u8 if_bDescriptorType; Interface */ - 0x00, /* u8 if_bInterfaceNumber; */ - 0x00, /* u8 if_bAlternateSetting; */ - 0x01, /* u8 if_bNumEndpoints; */ - 0x03, /* u8 if_bInterfaceClass; */ - 0x01, /* u8 if_bInterfaceSubClass; */ - 0x01, /* u8 if_bInterfaceProtocol; [usb1.1 or single tt] */ - 0x05, /* u8 if_iInterface; */ - - /* HID descriptor */ - 0x09, /* u8 bLength; */ - 0x21, /* u8 bDescriptorType; */ - 0x01, 0x00, /* u16 HID_class */ - 0x00, /* u8 country_code */ - 0x01, /* u8 num_descriptors */ - 0x22, /* u8 type; Report */ - 50, 0, /* u16 len */ - - /* one endpoint (status change endpoint) */ - 0x07, /* u8 ep_bLength; */ - 0x05, /* u8 ep_bDescriptorType; Endpoint */ - 0x81, /* u8 ep_bEndpointAddress; IN Endpoint 1 */ - 0x03, /* u8 ep_bmAttributes; Interrupt */ - 0x03, 0x00, /* u16 ep_wMaxPacketSize; */ - 0x0a, /* u8 ep_bInterval; (255ms -- usb 2.0 spec) */ -}; - -static const uint8_t qemu_tablet_config_descriptor[] = { - /* one configuration */ - 0x09, /* u8 bLength; */ - 0x02, /* u8 bDescriptorType; Configuration */ - 0x22, 0x00, /* u16 wTotalLength; */ - 0x01, /* u8 bNumInterfaces; (1) */ - 0x01, /* u8 bConfigurationValue; */ - 0x04, /* u8 iConfiguration; */ - 0xa0, /* u8 bmAttributes; - Bit 7: must be set, - 6: Self-powered, - 5: Remote wakeup, - 4..0: resvd */ - 50, /* u8 MaxPower; */ - - /* USB 1.1: - * USB 2.0, single TT organization (mandatory): - * one interface, protocol 0 - * - * USB 2.0, multiple TT organization (optional): - * two interfaces, protocols 1 (like single TT) - * and 2 (multiple TT mode) ... config is - * sometimes settable - * NOT IMPLEMENTED - */ - - /* one interface */ - 0x09, /* u8 if_bLength; */ - 0x04, /* u8 if_bDescriptorType; Interface */ - 0x00, /* u8 if_bInterfaceNumber; */ - 0x00, /* u8 if_bAlternateSetting; */ - 0x01, /* u8 if_bNumEndpoints; */ - 0x03, /* u8 if_bInterfaceClass; */ - 0x01, /* u8 if_bInterfaceSubClass; */ - 0x02, /* u8 if_bInterfaceProtocol; [usb1.1 or single tt] */ - 0x05, /* u8 if_iInterface; */ - - /* HID descriptor */ - 0x09, /* u8 bLength; */ - 0x21, /* u8 bDescriptorType; */ - 0x03, 0x00, /* u16 HID_class */ - 0x00, /* u8 country_code */ - 0x01, /* u8 num_descriptors */ - 0x22, /* u8 type; Report */ - 74, 0, /* u16 len */ - - /* one endpoint (status change endpoint) */ - 0x07, /* u8 ep_bLength; */ - 0x05, /* u8 ep_bDescriptorType; Endpoint */ - 0x81, /* u8 ep_bEndpointAddress; IN Endpoint 1 */ - 0x03, /* u8 ep_bmAttributes; Interrupt */ - 0x08, 0x00, /* u16 ep_wMaxPacketSize; */ - 0x03, /* u8 ep_bInterval; (255ms -- usb 2.0 spec) */ -}; - -static const uint8_t qemu_keyboard_hid_report_descriptor[] = { - 0x05, 0x01, // USAGE_PAGE (Generic Desktop) - 0x09, 0x06, // USAGE (Keyboard) - 0xa1, 0x01, // COLLECTION (Application) - 0x05, 0x07, // USAGE_PAGE (Keyboard) - 0x19, 0xe0, // USAGE_MINIMUM (Keyboard Left Control) - 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) - 0x15, 0x00, // LOGICAL_MINIMUM (0) - 0x25, 0x01, // LOGICAL_MAXIMUM (1) - 0x75, 0x01, // REPORT_SIZE (1) - 0x95, 0x08, // REPORT_COUNT (8) - 0x81, 0x02, // INPUT (Data,Var,Abs) - 0x95, 0x01, // REPORT_COUNT (1) - 0x75, 0x08, // REPORT_SIZE (8) - 0x81, 0x03, // INPUT (Cnst,Var,Abs) - 0x95, 0x05, // REPORT_COUNT (5) - 0x75, 0x01, // REPORT_SIZE (1) - 0x05, 0x08, // USAGE_PAGE (LEDs) - 0x19, 0x01, // USAGE_MINIMUM (Num Lock) - 0x29, 0x05, // USAGE_MAXIMUM (Kana) - 0x91, 0x02, // OUTPUT (Data,Var,Abs) - 0x95, 0x01, // REPORT_COUNT (1) - 0x75, 0x03, // REPORT_SIZE (3) - 0x91, 0x03, // OUTPUT (Cnst,Var,Abs) - 0x95, 0x06, // REPORT_COUNT (6) - 0x75, 0x08, // REPORT_SIZE (8) - 0x15, 0x00, // LOGICAL_MINIMUM (0) - 0x25, 0x65, // LOGICAL_MAXIMUM (101) - 0x05, 0x07, // USAGE_PAGE (Keyboard) - 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) - 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) - 0x81, 0x00, // INPUT (Data,Ary,Abs) - 0xc0 // END_COLLECTION -}; - -static int usb_keyboard_poll(USBKeyboardState *s, uint8_t *buf, int len) -{ - static unsigned char keys[256]; - int i,l; - - if (!s->keyboard_grabbed) { - //qemu_add_keyboard_event_handler(usb_keyboard_event, s, 0); - s->keyboard_grabbed = 1; - } - - if(gsWindowHandle != GetForegroundWindow()) - { - for(int i=0;i<256;i++) - { - keys[i] = 0; - } - } - else - { - for(int i=0;i<256;i++) - { - keys[i] = GetAsyncKeyState(i)>>8; - } - } - - l=1; - l=2; - buf[0] = 0; - if(keys[VK_LCONTROL]>>7) buf[0]|=(1<<0); - if(keys[VK_LSHIFT]>>7) buf[0]|=(1<<1); - if(keys[VK_LMENU]>>7) buf[0]|=(1<<2); //ALT key - if(keys[VK_LWIN]>>7) buf[0]|=(1<<3); - if(keys[VK_RCONTROL]>>7) buf[0]|=(1<<4); - if(keys[VK_RSHIFT]>>7) buf[0]|=(1<<5); - if(keys[VK_RMENU]>>7) buf[0]|=(1<<6); - if(keys[VK_RWIN]>>7) buf[0]|=(1<<7); - - buf[1] = 0; //reserved byte - - int k=0; - for(int i=0;i<256;i++) - { - if(keys[i]>>7) //if pressed - { - if(l==8) - { - buf[1]=buf[1]=buf[1]=buf[1]=buf[1]=buf[1]=buf[1]=buf[1]=1; - } -#ifdef VK_BASED - int uc = vk_to_key_code[i]; -#else - int sc = MapVirtualKey(i,MAPVK_VK_TO_VSC_EX); - if((sc>>8)!=0) - sc=(sc&0x1FF)+256; - int uc = scan_to_usb[sc]; - printf("// %08x->%02x ",i,sc); - k++; -#endif - if((uc>0)&&(uc<=0x65)) // - buf[l++]=uc; - } - - } - if(k) printf("\n"); - - /*if(l>=1) - { - while(l<8) - buf[l++]=0; - printf("KEYS: %02x %02x %02x %02x %02x %02x %02x\n", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6]); - l=l; - }*/ - - while(l<7) - buf[l++]=0; - - return l; -} - -static void usb_keyboard_handle_reset(USBDevice *dev) -{ - USBKeyboardState *s = (USBKeyboardState *)dev; -} - +/* + * QEMU USB HID devices + * + * Copyright (c) 2005 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include "USBinternal.h" + +/* HID interface requests */ +#define GET_REPORT 0xa101 +#define GET_IDLE 0xa102 +#define GET_PROTOCOL 0xa103 +#define SET_IDLE 0x210a +#define SET_PROTOCOL 0x210b + +#define USB_MOUSE 1 +#define USB_TABLET 2 + +typedef struct USBKeyboardState { + USBDevice dev; + int keyboard_grabbed; +} USBKeyboardState; + +USBDeviceInfo devinfo; + + +#define VK_BASED + +#ifdef VK_BASED +static const uint8_t vk_to_key_code[] = { +0x00, //FAIL: 0x00 +0x00, //FAIL: LMOUSE +0x00, //FAIL: RMOUSE +0x00, //FAIL: Break +0x00, //FAIL: MMOUSE +0x00, //FAIL: X1MOUSE +0x00, //FAIL: X2MOUSE +0x00, //FAIL: 0x00 +0x2A, //OK: Backspace +0x2B, //OK: Tab +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x9C, //OK: Clear +0x28, //FAIL: ENTER +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: SHIFT +0x00, //FAIL: CTRL +0x00, //FAIL: ALT +0x48, //OK: Pause +0x39, //OK: Caps Lock +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +//0x00, //FAIL: 0x00 +//0x00, //FAIL: 0x00 +//0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x29, //FAIL: ESC +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x2C, //OK: Spacebar +#ifdef ENABLE_KEYPAD_Fx +0x4B, //FAIL: PAGE UP +0x4E, //FAIL: PAGE DOWN +0x4D, //OK: End +0x4A, //OK: Home +0x50, //FAIL: LEFT ARROW +0x52, //FAIL: UP ARROW +0x4F, //FAIL: RIGHT ARROW +0x51, //FAIL: DOWN ARROW +0x77, //OK: Select +0x00, //FAIL: PRINT +0x74, //OK: Execute +0x46, //FAIL: PRINT SCREEN +0x49, //FAIL: INS +0x4C, //FAIL: DEL +0x75, //OK: Help VK_HOME +#else +0x00, //FAIL: PAGE UP +0x00, //FAIL: PAGE DOWN +0x00, //OK: End +0x00, //OK: Home +0x00, //FAIL: LEFT ARROW +0x00, //FAIL: UP ARROW +0x00, //FAIL: RIGHT ARROW +0x00, //FAIL: DOWN ARROW +0x00, //OK: Select +0x00, //FAIL: PRINT +0x00, //OK: Execute +0x00, //FAIL: PRINT SCREEN +0x00, //FAIL: INS +0x00, //FAIL: DEL +0x00, //OK: Help VK_HOME +#endif +0x27, //OK: 0 +0x1E, //OK: 1 +0x1F, //OK: 2 +0x20, //OK: 3 +0x21, //OK: 4 +0x22, //OK: 5 +0x23, //OK: 6 +0x24, //OK: 7 +0x25, //OK: 8 +0x26, //OK: 9 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: not found +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x04, //OK: A +0x05, //OK: B +0x06, //OK: C +0x07, //OK: D +0x08, //OK: E +0x09, //OK: F +0x0A, //OK: G +0x0B, //OK: H +0x0C, //OK: I +0x0D, //OK: J +0x0E, //OK: K +0x0F, //OK: L +0x10, //OK: M +0x11, //OK: N +0x12, //OK: O +0x13, //OK: P +0x14, //OK: Q +0x15, //OK: R +0x16, //OK: S +0x17, //OK: T +0x18, //OK: U +0x19, //OK: V +0x1A, //OK: W +0x1B, //OK: X +0x1C, //OK: Y +0x1D, //OK: Z +#ifdef ENABLE_KEYPAD_Fx +0xE3, //OK: LGUI +0xE7, //OK: RGUI +0x65, //OK: Application +0x00, //FAIL: 0x00 +0x00, //FAIL: SLEEP +0x62, //OK: Keypad 0 +0x59, //OK: Keypad 1 +0x5A, //OK: Keypad 2 +0x5B, //OK: Keypad 3 +0x5C, //OK: Keypad 4 +0x5D, //OK: Keypad 5 +0x5E, //OK: Keypad 6 +0x5F, //OK: Keypad 7 +0x60, //OK: Keypad 8 +0x61, //OK: Keypad 9 +0x55, //OK: Keypad * +0x57, //OK: Keypad + +0x9F, //OK: Separator +0x56, //OK: Keypad - +0x63, //OK: Keypad . +0x54, //OK: Keypad / +0x3A, //OK: F1 +0x3B, //OK: F2 +0x3C, //OK: F3 +0x3D, //OK: F4 +0x3E, //OK: F5 +0x3F, //OK: F6 +0x40, //OK: F7 +0x41, //OK: F8 +0x42, //OK: F9 +0x43, //OK: F10 +0x44, //OK: F11 +0x45, //OK: F12 +0x68, //OK: F13 +0x69, //OK: F14 +0x6A, //OK: F15 +0x6B, //OK: F16 +0x6C, //OK: F17 +0x6D, //OK: F18 +0x6E, //OK: F19 +0x6F, //OK: F20 +0x70, //OK: F21 +0x71, //OK: F22 +0x72, //OK: F23 +0x73, //OK: F24 +#else +0x00, //OK: LGUI +0x00, //OK: RGUI +0x00, //OK: Application +0x00, //FAIL: 0x00 +0x00, //FAIL: SLEEP +0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +#endif +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x83, //OK: NUM LOCK +0x47, //OK: Scroll Lock +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0xE1, //OK: LSHIFT +0xE5, //OK: RSHIFT +0xE0, //OK: LCONTROL +0xE4, //OK: RCONTROL +0xE3, //OK: LGUI +0xE7, //OK: RGUI +0x00, //FAIL: Windows 2000/XP: Browser Back +0x00, //FAIL: Windows 2000/XP: Browser Forward +0x00, //FAIL: Windows 2000/XP: Browser Refresh +0x00, //FAIL: Windows 2000/XP: Browser Stop +0x00, //FAIL: Windows 2000/XP: Browser Search +0x00, //FAIL: Windows 2000/XP: Browser Favorites +0x00, //FAIL: Windows 2000/XP: Browser Start and Home +0x00, //FAIL: Windows 2000/XP: Volume Mute +0x00, //FAIL: Windows 2000/XP: Volume Down +0x00, //FAIL: Windows 2000/XP: Volume Up +0x00, //FAIL: Windows 2000/XP: Next Track +0x00, //FAIL: Windows 2000/XP: Previous Track +0x00, //FAIL: Windows 2000/XP: Stop Media +0x00, //FAIL: Windows 2000/XP: Play/Pause Media +0x00, //FAIL: Windows 2000/XP: Start Mail +0x00, //FAIL: Windows 2000/XP: Select Media +0x00, //FAIL: Windows 2000/XP: Start Application 1 +0x00, //FAIL: Windows 2000/XP: Start Application 2 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x33, //FAIL: Windows 2000/XP: For the US standard keyboard, the ';:' key +0x2E, //FAIL: Windows 2000/XP: For any country/region, the '+' +0x36, //FAIL: Windows 2000/XP: For any country/region, the ',' +0x2D, //FAIL: Windows 2000/XP: For any country/region, the '-' +0x37, //FAIL: Windows 2000/XP: For any country/region, the '.' +0x38, //FAIL: Windows 2000/XP: For the US standard keyboard, the '/?' key +0x35, //FAIL: Windows 2000/XP: For the US standard keyboard, the '`~' key +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: not found +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x2F, //FAIL: Windows 2000/XP: For the US standard keyboard, the '[{' key +0x31, //FAIL: Windows 2000/XP: For the US standard keyboard, the '\|' key +0x30, //FAIL: Windows 2000/XP: For the US standard keyboard, the ']}' key +0x34, //FAIL: Windows 2000/XP: For the US standard keyboard, the 'single-quote/double-quote' key +0x00, //FAIL: Used for miscellaneous characters; it can vary byboard. +0x00, //FAIL: Reserved +0x00, //FAIL: OEM specific +0x32, //FAIL: Windows 2000/XP: Either the angle bracket or the backslash key on the RT 102-key keyboard +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCEE6 +0x00, //FAIL: OEM specific +0x00, //FAIL: Windows 2000/XP: Used to pass Unicode characters as if they E8 +0x00, //FAIL: Unassigned +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: 0x00 +0x00, //FAIL: Attn +0xA3, //OK: CrSel +0xA4, //OK: ExSel +0x00, //FAIL: Erase EOF +0x00, //FAIL: Play +0x00, //FAIL: Zoom +0x00, //FAIL: Reserved +0x00, //FAIL: PA1 +0x9C, //OK: Clear +0x00, //FAIL: 0x00 +}; +#else +# ifdef ENABLE_KEYPAD_Fx +static const unsigned char scan_to_usb[] = { +0x00,0x29,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x2f,0x30,0x2a,0x2b, +0x14,0x1a,0x08,0x15,0x17,0x1c,0x18,0x0c,0x12,0x13,0x33,0x2e,0x28,0xe0,0x04,0x16, +0x07,0x09,0x0a,0x0b,0x0d,0x0e,0x0f,0x35,0x34,0x31,0xe1,0x38,0x1d,0x1b,0x06,0x19, +0x05,0x11,0x10,0x36,0x37,0x2d,0xe5,0x55,0xe3,0x2c,0x39,0x3a,0x3b,0x3c,0x3d,0x3e, +0x3f,0x40,0x41,0x42,0x43,0x83,0x47,0x5f,0x60,0x61,0x56,0x5c,0x5d,0x5e,0x57,0x59, +0x5a,0x5b,0x62,0x63,0x46,0x00,0x32,0x44,0x45,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x75,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe4,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x54,0x00,0x00,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe3,0xe7,0x65,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +# else +static const unsigned char scan_to_usb[] = { +0x00,0x29,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x2f,0x30,0x2a,0x2b, +0x14,0x1a,0x08,0x15,0x17,0x1c,0x18,0x0c,0x12,0x13,0x33,0x2e,0x28,0xe0,0x04,0x16, +0x07,0x09,0x0a,0x0b,0x0d,0x0e,0x0f,0x35,0x34,0x31,0xe1,0x38,0x1d,0x1b,0x06,0x19, +0x05,0x11,0x10,0x36,0x37,0x2d,0xe5,0x00,0xe3,0x2c,0x39,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x83,0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x46,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x75,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe4,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe3,0xe7,0x65,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +# endif +#endif + +/* mostly the same values as the Bochs USB Keyboard device */ +static const uint8_t qemu_keyboard_dev_descriptor[] = { + 0x12, /* u8 bLength; */ + 0x01, /* u8 bDescriptorType; Device */ + 0x10, 0x00, /* u16 bcdUSB; v1.0 */ + + 0x00, /* u8 bDeviceClass; */ + 0x00, /* u8 bDeviceSubClass; */ + 0x00, /* u8 bDeviceProtocol; [ low/full speeds only ] */ + 0x08, /* u8 bMaxPacketSize0; 8 Bytes */ + + 0x27, 0x06, /* u16 idVendor; */ + 0x01, 0x00, /* u16 idProduct; */ + 0x00, 0x00, /* u16 bcdDevice */ + + 0x03, /* u8 iManufacturer; */ + 0x02, /* u8 iProduct; */ + 0x01, /* u8 iSerialNumber; */ + 0x01 /* u8 bNumConfigurations; */ +}; + +static const uint8_t qemu_keyboard_config_descriptor[] = { + /* one configuration */ + 0x09, /* u8 bLength; */ + 0x02, /* u8 bDescriptorType; Configuration */ + 0x22, 0x00, /* u16 wTotalLength; */ + 0x01, /* u8 bNumInterfaces; (1) */ + 0x01, /* u8 bConfigurationValue; */ + 0x04, /* u8 iConfiguration; */ + 0xa0, /* u8 bmAttributes; + Bit 7: must be set, + 6: Self-powered, + 5: Remote wakeup, + 4..0: resvd */ + 50, /* u8 MaxPower; */ + + /* USB 1.1: + * USB 2.0, single TT organization (mandatory): + * one interface, protocol 0 + * + * USB 2.0, multiple TT organization (optional): + * two interfaces, protocols 1 (like single TT) + * and 2 (multiple TT mode) ... config is + * sometimes settable + * NOT IMPLEMENTED + */ + + /* one interface */ + 0x09, /* u8 if_bLength; */ + 0x04, /* u8 if_bDescriptorType; Interface */ + 0x00, /* u8 if_bInterfaceNumber; */ + 0x00, /* u8 if_bAlternateSetting; */ + 0x01, /* u8 if_bNumEndpoints; */ + 0x03, /* u8 if_bInterfaceClass; */ + 0x01, /* u8 if_bInterfaceSubClass; */ + 0x01, /* u8 if_bInterfaceProtocol; [usb1.1 or single tt] */ + 0x05, /* u8 if_iInterface; */ + + /* HID descriptor */ + 0x09, /* u8 bLength; */ + 0x21, /* u8 bDescriptorType; */ + 0x01, 0x00, /* u16 HID_class */ + 0x00, /* u8 country_code */ + 0x01, /* u8 num_descriptors */ + 0x22, /* u8 type; Report */ + 50, 0, /* u16 len */ + + /* one endpoint (status change endpoint) */ + 0x07, /* u8 ep_bLength; */ + 0x05, /* u8 ep_bDescriptorType; Endpoint */ + 0x81, /* u8 ep_bEndpointAddress; IN Endpoint 1 */ + 0x03, /* u8 ep_bmAttributes; Interrupt */ + 0x03, 0x00, /* u16 ep_wMaxPacketSize; */ + 0x0a, /* u8 ep_bInterval; (255ms -- usb 2.0 spec) */ +}; + +static const uint8_t qemu_tablet_config_descriptor[] = { + /* one configuration */ + 0x09, /* u8 bLength; */ + 0x02, /* u8 bDescriptorType; Configuration */ + 0x22, 0x00, /* u16 wTotalLength; */ + 0x01, /* u8 bNumInterfaces; (1) */ + 0x01, /* u8 bConfigurationValue; */ + 0x04, /* u8 iConfiguration; */ + 0xa0, /* u8 bmAttributes; + Bit 7: must be set, + 6: Self-powered, + 5: Remote wakeup, + 4..0: resvd */ + 50, /* u8 MaxPower; */ + + /* USB 1.1: + * USB 2.0, single TT organization (mandatory): + * one interface, protocol 0 + * + * USB 2.0, multiple TT organization (optional): + * two interfaces, protocols 1 (like single TT) + * and 2 (multiple TT mode) ... config is + * sometimes settable + * NOT IMPLEMENTED + */ + + /* one interface */ + 0x09, /* u8 if_bLength; */ + 0x04, /* u8 if_bDescriptorType; Interface */ + 0x00, /* u8 if_bInterfaceNumber; */ + 0x00, /* u8 if_bAlternateSetting; */ + 0x01, /* u8 if_bNumEndpoints; */ + 0x03, /* u8 if_bInterfaceClass; */ + 0x01, /* u8 if_bInterfaceSubClass; */ + 0x02, /* u8 if_bInterfaceProtocol; [usb1.1 or single tt] */ + 0x05, /* u8 if_iInterface; */ + + /* HID descriptor */ + 0x09, /* u8 bLength; */ + 0x21, /* u8 bDescriptorType; */ + 0x03, 0x00, /* u16 HID_class */ + 0x00, /* u8 country_code */ + 0x01, /* u8 num_descriptors */ + 0x22, /* u8 type; Report */ + 74, 0, /* u16 len */ + + /* one endpoint (status change endpoint) */ + 0x07, /* u8 ep_bLength; */ + 0x05, /* u8 ep_bDescriptorType; Endpoint */ + 0x81, /* u8 ep_bEndpointAddress; IN Endpoint 1 */ + 0x03, /* u8 ep_bmAttributes; Interrupt */ + 0x08, 0x00, /* u16 ep_wMaxPacketSize; */ + 0x03, /* u8 ep_bInterval; (255ms -- usb 2.0 spec) */ +}; + +static const uint8_t qemu_keyboard_hid_report_descriptor[] = { + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x06, // USAGE (Keyboard) + 0xa1, 0x01, // COLLECTION (Application) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + 0x19, 0xe0, // USAGE_MINIMUM (Keyboard Left Control) + 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x75, 0x01, // REPORT_SIZE (1) + 0x95, 0x08, // REPORT_COUNT (8) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x08, // REPORT_SIZE (8) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + 0x95, 0x05, // REPORT_COUNT (5) + 0x75, 0x01, // REPORT_SIZE (1) + 0x05, 0x08, // USAGE_PAGE (LEDs) + 0x19, 0x01, // USAGE_MINIMUM (Num Lock) + 0x29, 0x05, // USAGE_MAXIMUM (Kana) + 0x91, 0x02, // OUTPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x03, // REPORT_SIZE (3) + 0x91, 0x03, // OUTPUT (Cnst,Var,Abs) + 0x95, 0x06, // REPORT_COUNT (6) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x65, // LOGICAL_MAXIMUM (101) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) + 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) + 0x81, 0x00, // INPUT (Data,Ary,Abs) + 0xc0 // END_COLLECTION +}; + +static int usb_keyboard_poll(USBKeyboardState *s, uint8_t *buf, int len) +{ + static unsigned char keys[256]; + int i,l; + + if (!s->keyboard_grabbed) { + //qemu_add_keyboard_event_handler(usb_keyboard_event, s, 0); + s->keyboard_grabbed = 1; + } + + if(gsWindowHandle != GetForegroundWindow()) + { + for(int i=0;i<256;i++) + { + keys[i] = 0; + } + } + else + { + for(int i=0;i<256;i++) + { + keys[i] = GetAsyncKeyState(i)>>8; + } + } + + l=1; + l=2; + buf[0] = 0; + if(keys[VK_LCONTROL]>>7) buf[0]|=(1<<0); + if(keys[VK_LSHIFT]>>7) buf[0]|=(1<<1); + if(keys[VK_LMENU]>>7) buf[0]|=(1<<2); //ALT key + if(keys[VK_LWIN]>>7) buf[0]|=(1<<3); + if(keys[VK_RCONTROL]>>7) buf[0]|=(1<<4); + if(keys[VK_RSHIFT]>>7) buf[0]|=(1<<5); + if(keys[VK_RMENU]>>7) buf[0]|=(1<<6); + if(keys[VK_RWIN]>>7) buf[0]|=(1<<7); + + buf[1] = 0; //reserved byte + + int k=0; + for(int i=0;i<256;i++) + { + if(keys[i]>>7) //if pressed + { + if(l==8) + { + buf[1]=buf[1]=buf[1]=buf[1]=buf[1]=buf[1]=buf[1]=buf[1]=1; + } +#ifdef VK_BASED + int uc = vk_to_key_code[i]; +#else + int sc = MapVirtualKey(i,MAPVK_VK_TO_VSC_EX); + if((sc>>8)!=0) + sc=(sc&0x1FF)+256; + int uc = scan_to_usb[sc]; + printf("// %08x->%02x ",i,sc); + k++; +#endif + if((uc>0)&&(uc<=0x65)) // + buf[l++]=uc; + } + + } + if(k) printf("\n"); + + /*if(l>=1) + { + while(l<8) + buf[l++]=0; + printf("KEYS: %02x %02x %02x %02x %02x %02x %02x\n", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6]); + l=l; + }*/ + + while(l<7) + buf[l++]=0; + + return l; +} + +static void usb_keyboard_handle_reset(USBDevice *dev) +{ + USBKeyboardState *s = (USBKeyboardState *)dev; +} + static int usb_keyboard_handle_control(USBDevice *dev, USBPacket *p, int request, int value, - int index, int length, uint8_t *data) -{ - USBKeyboardState *s = (USBKeyboardState *)dev; - int ret = 0; - - switch(request) { - case DeviceRequest | USB_REQ_GET_STATUS: - data[0] = (1 << USB_DEVICE_SELF_POWERED) | - (dev->remote_wakeup << USB_DEVICE_REMOTE_WAKEUP); - data[1] = 0x00; - ret = 2; - break; - case DeviceOutRequest | USB_REQ_CLEAR_FEATURE: - if (value == USB_DEVICE_REMOTE_WAKEUP) { - dev->remote_wakeup = 0; - } else { - goto fail; - } - ret = 0; - break; - case DeviceOutRequest | USB_REQ_SET_FEATURE: - if (value == USB_DEVICE_REMOTE_WAKEUP) { - dev->remote_wakeup = 1; - } else { - goto fail; - } - ret = 0; - break; - case DeviceOutRequest | USB_REQ_SET_ADDRESS: - dev->addr = value; - ret = 0; - break; - case DeviceRequest | USB_REQ_GET_DESCRIPTOR: - switch(value >> 8) { - case USB_DT_DEVICE: - memcpy(data, qemu_keyboard_dev_descriptor, - sizeof(qemu_keyboard_dev_descriptor)); - ret = sizeof(qemu_keyboard_dev_descriptor); - break; - case USB_DT_CONFIG: - memcpy(data, qemu_keyboard_config_descriptor, - sizeof(qemu_keyboard_config_descriptor)); - ret = sizeof(qemu_keyboard_config_descriptor); - break; - case USB_DT_STRING: - switch(value & 0xff) { - case 0: - /* language ids */ - data[0] = 4; - data[1] = 3; - data[2] = 0x09; - data[3] = 0x04; - ret = 4; - break; - case 1: - /* serial number */ - ret = set_usb_string(data, "1"); - break; - case 2: - /* product description */ - ret = set_usb_string(data, "Generic USB Keyboard"); - break; - case 3: - /* vendor description */ - ret = set_usb_string(data, "PCSX2/QEMU"); - break; - case 4: - ret = set_usb_string(data, "HID Keyboard"); - break; - case 5: - ret = set_usb_string(data, "Endpoint1 Interrupt Pipe"); - break; - default: - goto fail; - } - break; - default: - goto fail; - } - break; - case DeviceRequest | USB_REQ_GET_CONFIGURATION: - data[0] = 1; - ret = 1; - break; - case DeviceOutRequest | USB_REQ_SET_CONFIGURATION: - ret = 0; - break; - case DeviceRequest | USB_REQ_GET_INTERFACE: - data[0] = 0; - ret = 1; - break; - case DeviceOutRequest | USB_REQ_SET_INTERFACE: - ret = 0; - break; - /* hid specific requests */ - case InterfaceRequest | USB_REQ_GET_DESCRIPTOR: - switch(value >> 8) { - case 0x22: - memcpy(data, qemu_keyboard_hid_report_descriptor, - sizeof(qemu_keyboard_hid_report_descriptor)); - ret = sizeof(qemu_keyboard_hid_report_descriptor); - break; - default: - goto fail; - } - break; - case GET_REPORT: - ret = usb_keyboard_poll(s, data, length); - break; - case SET_IDLE: - ret = 0; - break; - default: - fail: - ret = USB_RET_STALL; - break; - } - return ret; -} - -static int usb_keyboard_handle_data(USBDevice *dev, USBPacket* packet) -{ - USBKeyboardState *s = (USBKeyboardState *)dev; - int ret = 0; - - switch(packet->pid) { - case USB_TOKEN_IN: - if (packet->devep == 1) { - ret = usb_keyboard_poll(s, packet->data, packet->len); - } else { - goto fail; - } - break; - case USB_TOKEN_OUT: - default: - fail: - ret = USB_RET_STALL; - break; - } - return ret; -} - -static void usb_keyboard_handle_destroy(USBDevice *dev) -{ - USBKeyboardState *s = (USBKeyboardState *)dev; - - //qemu_add_keyboard_event_handler(NULL, NULL, 0); - free(s); -} - -USBDevice *usb_keyboard_init(void) -{ - USBKeyboardState *s; - - s = (USBKeyboardState *)malloc(sizeof(USBKeyboardState)); - if (!s) - return NULL; - memset(s,0,sizeof(USBKeyboardState)); - s->dev.speed = USB_SPEED_FULL; - s->dev.info = &devinfo; - s->dev.info->handle_packet = usb_generic_handle_packet; - s->dev.info->handle_reset = usb_keyboard_handle_reset; - s->dev.info->handle_control = usb_keyboard_handle_control; - s->dev.info->handle_data = usb_keyboard_handle_data; - s->dev.info->handle_destroy = usb_keyboard_handle_destroy; - s->dev.info->product_desc = "Generic USB Keyboard"; - - return (USBDevice *)s; -} - -#if 0 -#define PS2KBD_VERSION 0x100 - -#define USB_SUBCLASS_BOOT 1 -#define USB_HIDPROTO_KEYBOARD 1 - -#define PS2KBD_MAXDEV 2 -#define PS2KBD_MAXKEYS 6 - -#define PS2KBD_DEFLINELEN 4096 -#define PS2KBD_DEFREPEATRATE 100 -/* Default repeat rate in milliseconds */ -#define PS2KBD_REPEATWAIT 1000 -/* Number of milliseconds to wait before starting key repeat */ -#define USB_KEYB_NUMLOCK 0x53 -#define USB_KEYB_CAPSLOCK 0x39 -#define USB_KEYB_SCRLOCK 0x47 - -#define USB_KEYB_NUMPAD_START 0x54 -#define USB_KEYB_NUMPAD_END 0x63 - -#define SEMA_ZERO -419 -#define SEMA_DELETED -425 - -int ps2kbd_init(); -void ps2kbd_config_set(int resultCode, int bytes, void *arg); -void ps2kbd_idlemode_set(int resultCode, int bytes, void *arg); -void ps2kbd_data_recv(int resultCode, int bytes, void *arg); -int ps2kbd_probe(int devId); -int ps2kbd_connect(int devId); -int ps2kbd_disconnect(int devId); -void usb_getstring(int endp, int index, char *desc); - -typedef struct _kbd_data_recv - -{ - u8 mod_keys; - u8 reserved; - u8 keycodes[PS2KBD_MAXKEYS]; -} kbd_data_recv; - -typedef struct _keyb_dev - -{ - int configEndp; - int dataEndp; - int packetSize; - int devId; - int interfaceNo; /* Holds the interface number selected on this device */ - char repeatkeys[2]; - u32 eventmask; - u8 ledStatus; /* Maintains state on the led status */ - kbd_data_recv oldData; - kbd_data_recv data; /* Holds the data for the transfers */ -} kbd_dev; - -/* Global Variables */ - -int kbd_readmode; -int kbd_blocking; -u32 kbd_repeatrate; -kbd_dev *devices[PS2KBD_MAXDEV]; /* Holds a list of current devices */ -int dev_count; -UsbDriver kbd_driver = { NULL, NULL, "PS2Kbd", ps2kbd_probe, ps2kbd_connect, ps2kbd_disconnect }; -u8 *lineBuffer; -u32 lineStartP, lineEndP; -int lineSema; -int bufferSema; -u32 lineSize; -u8 keymap[PS2KBD_KEYMAP_SIZE]; /* Normal key map */ -u8 shiftkeymap[PS2KBD_KEYMAP_SIZE]; /* Shifted key map */ -u8 keycap[PS2KBD_KEYMAP_SIZE]; /* Does this key get shifted by capslock ? */ -u8 special_keys[PS2KBD_KEYMAP_SIZE]; -u8 control_map[PS2KBD_KEYMAP_SIZE]; -u8 alt_map[PS2KBD_KEYMAP_SIZE]; -//static struct fileio_driver kbd_fdriver; -iop_device_t kbd_filedrv; -u8 keyModValue[8] = { 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7 }; -int repeat_tid; -int eventid; /* Id of the repeat event */ - -int _start () -{ - FlushDcache(); - - ps2kbd_init(); - - printf("PS2KBD - USB Keyboard Library\n"); - - return 0; - -} - -int ps2kbd_probe(int devId) - -{ - UsbDeviceDescriptor *dev; - UsbConfigDescriptor *conf; - UsbInterfaceDescriptor *intf; - UsbEndpointDescriptor *endp; - //UsbStringDescriptor *str; - - if(dev_count >= PS2KBD_MAXDEV) - { - printf("ERROR: Maximum keyboard devices reached\n"); - return 0; - } - - //printf("PS2Kbd_probe devId %d\n", devId); - - dev = UsbGetDeviceStaticDescriptor(devId, NULL, USB_DT_DEVICE); /* Get device descriptor */ - if(!dev) - { - printf("ERROR: Couldn't get device descriptor\n"); - return 0; - } - - //printf("Device class %d, Size %d, Man %d, Product %d Cpnfigurations %d\n", dev->bDeviceClass, dev->bMaxPacketSize0, dev->iManufacturer, dev->iProduct, dev->bNumConfigurations); - /* Check that the device class is specified in the interfaces and it has at least one configuration */ - if((dev->bDeviceClass != USB_CLASS_PER_INTERFACE) || (dev->bNumConfigurations < 1)) - { - //printf("This is not the droid you're looking for\n"); - return 0; - } - - conf = UsbGetDeviceStaticDescriptor(devId, dev, USB_DT_CONFIG); - if(!conf) - { - printf("ERROR: Couldn't get configuration descriptor\n"); - return 0; - } - //printf("Config Length %d Total %d Interfaces %d\n", conf->bLength, conf->wTotalLength, conf->bNumInterfaces); - - if((conf->bNumInterfaces < 1) || (conf->wTotalLength < (sizeof(UsbConfigDescriptor) + sizeof(UsbInterfaceDescriptor)))) - { - printf("ERROR: No interfaces available\n"); - return 0; - } - - intf = (UsbInterfaceDescriptor *) ((char *) conf + conf->bLength); /* Get first interface */ -/* printf("Interface Length %d Endpoints %d Class %d Sub %d Proto %d\n", intf->bLength, */ -/* intf->bNumEndpoints, intf->bInterfaceClass, intf->bInterfaceSubClass, */ -/* intf->bInterfaceProtocol); */ - - if((intf->bInterfaceClass != USB_CLASS_HID) || (intf->bInterfaceSubClass != USB_SUBCLASS_BOOT) || - (intf->bInterfaceProtocol != USB_HIDPROTO_KEYBOARD) || (intf->bNumEndpoints < 1)) - - { - //printf("We came, we saw, we told it to fuck off\n"); - return 0; - } - - endp = (UsbEndpointDescriptor *) ((char *) intf + intf->bLength); - endp = (UsbEndpointDescriptor *) ((char *) endp + endp->bLength); /* Go to the data endpoint */ - - //printf("Endpoint 1 Addr %d, Attr %d, MaxPacket %d\n", endp->bEndpointAddress, endp->bmAttributes, endp->wMaxPacketSizeLB); - - if(((endp->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_INT) || - ((endp->bEndpointAddress & USB_ENDPOINT_DIR_MASK) != USB_DIR_IN)) - { - printf("ERROR: Endpoint not interrupt type and/or an input\n"); - return 0; - } - - printf("PS2KBD: Found a keyboard device\n"); - - return 1; -} - -int ps2kbd_connect(int devId) - -{ - /* Assume we can only get here if we have already checked the device is kosher */ - - UsbDeviceDescriptor *dev; - UsbConfigDescriptor *conf; - UsbInterfaceDescriptor *intf; - UsbEndpointDescriptor *endp; - kbd_dev *currDev; - int devLoop; - - //printf("PS2Kbd_connect devId %d\n", devId); - - dev = UsbGetDeviceStaticDescriptor(devId, NULL, USB_DT_DEVICE); /* Get device descriptor */ - if(!dev) - { - printf("ERROR: Couldn't get device descriptor\n"); - return 1; - } - - conf = UsbGetDeviceStaticDescriptor(devId, dev, USB_DT_CONFIG); - if(!conf) - { - printf("ERROR: Couldn't get configuration descriptor\n"); - return 1; - } - - intf = (UsbInterfaceDescriptor *) ((char *) conf + conf->bLength); /* Get first interface */ - endp = (UsbEndpointDescriptor *) ((char *) intf + intf->bLength); - endp = (UsbEndpointDescriptor *) ((char *) endp + endp->bLength); /* Go to the data endpoint */ - - for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++) - { - if(devices[devLoop] == NULL) - { - break; - } - } - - if(devLoop == PS2KBD_MAXDEV) - { - /* How the f*** did we end up here ??? */ - printf("ERROR: Device Weirdness!!\n"); - return 1; - } - - currDev = (kbd_dev *) AllocSysMemory(0, sizeof(kbd_dev), NULL); - if(!currDev) - { - printf("ERROR: Couldn't allocate a device point for the kbd\n"); - return 1; - } - - devices[devLoop] = currDev; - memset(currDev, 0, sizeof(kbd_dev)); - currDev->configEndp = UsbOpenEndpoint(devId, NULL); - currDev->dataEndp = UsbOpenEndpoint(devId, endp); - currDev->packetSize = endp->wMaxPacketSizeLB | ((int) endp->wMaxPacketSizeHB << 8); - currDev->eventmask = (1 << devLoop); - if(currDev->packetSize > sizeof(kbd_data_recv)) - { - currDev->packetSize = sizeof(kbd_data_recv); - } - - if(dev->iManufacturer != 0) - { - usb_getstring(currDev->configEndp, dev->iManufacturer, "Keyboard Manufacturer"); - } - - if(dev->iProduct != 0) - { - usb_getstring(currDev->configEndp, dev->iProduct, "Keyboard Product"); - } - - currDev->devId = devId; - currDev->interfaceNo = intf->bInterfaceNumber; - currDev->ledStatus = 0; - - UsbSetDevicePrivateData(devId, currDev); /* Set the index for the device data */ - - //printf("Configuration value %d\n", conf->bConfigurationValue); - UsbSetDeviceConfiguration(currDev->configEndp, conf->bConfigurationValue, ps2kbd_config_set, currDev); - - dev_count++; /* Increment device count */ - printf("PS2KBD: Connected device\n"); - - return 0; -} - -int ps2kbd_disconnect(int devId) - -{ - int devLoop; - //printf("PS2Kbd_disconnect devId %d\n", devId); - - for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++) - { - if((devices[devLoop]) && (devices[devLoop]->devId == devId)) - { - dev_count--; - FreeSysMemory(devices[devLoop]); - devices[devLoop] = NULL; - printf("PS2KBD: Disconnected device\n"); - break; - } - } - - return 0; -} - -typedef struct _string_descriptor - -{ - u8 buf[200]; - char *desc; -} string_descriptor; - -void ps2kbd_getstring_set(int resultCode, int bytes, void *arg) - -{ - UsbStringDescriptor *str = (UsbStringDescriptor *) arg; - string_descriptor *strBuf = (string_descriptor *) arg; - char string[50]; - int strLoop; - -/* printf("=========getstring=========\n"); */ - -/* printf("PS2KEYBOARD: GET_DESCRIPTOR res %d, bytes %d, arg %p\n", resultCode, bytes, arg); */ - - if(resultCode == USB_RC_OK) - { - memset(string, 0, 50); - for(strLoop = 0; strLoop < ((bytes - 2) / 2); strLoop++) - { - string[strLoop] = str->wData[strLoop] & 0xFF; - } - printf("PS2KBD %s: %s\n", strBuf->desc, string); - } - - FreeSysMemory(arg); -} - -void usb_getstring(int endp, int index, char *desc) - -{ - u8 *data; - string_descriptor *str; - int ret; - - data = (u8 *) AllocSysMemory(0, sizeof(string_descriptor), NULL); - str = (string_descriptor *) data; - - if(data != NULL) - { - str->desc = desc; - ret = UsbControlTransfer(endp, 0x80, USB_REQ_GET_DESCRIPTOR, (USB_DT_STRING << 8) | index, - 0, sizeof(string_descriptor) - 4, data, ps2kbd_getstring_set, data); - if(ret != USB_RC_OK) - { - printf("PS2KBD: Error sending string descriptor request\n"); - FreeSysMemory(data); - } - } -} - -void ps2kbd_config_set(int resultCode, int bytes, void *arg) - /* Called when we have finished choosing our configuration */ - -{ - kbd_dev *dev; - - if(resultCode != USB_RC_OK) - { - printf("PS2KEYBOARD: Configuration set error res %d, bytes %d, arg %p\n", resultCode, bytes, arg); - return; - } - - //printf("PS2KEYBOARD: Configuration set res %d, bytes %d, arg %p\n", resultCode, bytes, arg); - /* Do a interrupt data transfer */ - - dev = (kbd_dev *) arg; - if(dev != NULL) - { - int ret; - - ret = UsbControlTransfer(dev->configEndp, 0x21, USB_REQ_SET_IDLE, 0, dev->interfaceNo, 0, NULL, ps2kbd_idlemode_set, arg); - } -} - -void ps2kbd_idlemode_set(int resultCode, int bytes, void *arg) - -{ - kbd_dev *dev; - - - - if(resultCode != USB_RC_OK) - { - printf("PS2KBD: Idlemode set error res %d, bytes %d, arg %p\n", resultCode, bytes, arg); - return; - } - - dev = (kbd_dev *) arg; - if(dev != NULL) - { - int ret; - - ret = UsbInterruptTransfer(dev->dataEndp, &dev->data, dev->packetSize, ps2kbd_data_recv, arg); - } -} - -void ps2kbd_led_set(int resultCode, int bytes, void *arg) - -{ - //printf("LED Set\n"); -} - -void ps2kbd_build_uniquekeys(u8 *res, const u8 *new, const u8 *old) - - /* Builds a list of unique keys */ - -{ - int loopNew, loopOld; - int loopRes = 0; - int foundKey; - - for(loopNew = 0; loopNew < PS2KBD_MAXKEYS; loopNew++) - { - if(new[loopNew] != 0) - { - foundKey = 0; - for(loopOld = 0; loopOld < PS2KBD_MAXKEYS; loopOld++) - { - if(new[loopNew] == old[loopOld]) - { - foundKey = 1; - break; - } - } - if(!foundKey) - { - res[loopRes++] = new[loopNew]; - } - } - } -} - -u32 ps2kbd_repeathandler(void *arg) - -{ - kbd_dev *dev = arg; - iop_sys_clock_t t; - //printf("Repeat handler\n"); - - iSetEventFlag(eventid, dev->eventmask); - - USec2SysClock(kbd_repeatrate * 1000, &t); - iSetAlarm(&t, (void *)ps2kbd_repeathandler, arg); - - return t.hi; -} - -void ps2kbd_getkeys(u8 keyMods, u8 ledStatus, const u8 *keys, kbd_dev *dev) - -{ - int loopKey; - int tempPos = 0; - int byteCount = 0; - u8 currChars[2]; - - if(lineStartP < lineEndP) - { - tempPos = lineStartP + lineSize; - } - else - { - tempPos = lineStartP; - } - - for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) - { - u8 currKey = keys[loopKey]; - - currChars[0] = 0; - currChars[1] = 0; - - if(lineEndP == (tempPos - 1)) - { - break; - } - - if(currKey) /* If this is a valid key */ - { - if((currKey >= USB_KEYB_NUMPAD_START) && (currKey <= USB_KEYB_NUMPAD_END)) - /* Handle numpad specially */ - { - if(ledStatus & PS2KBD_LED_NUMLOCK) - { - if(keymap[currKey]) - { - currChars[0] = keymap[currKey]; - } - } - else - { - if(special_keys[currKey]) - { - currChars[0] = PS2KBD_ESCAPE_KEY; - currChars[1] = special_keys[currKey]; - } - else if(keymap[currKey] != '5') /* Make sure this isnt a 5 key :) */ - { - currChars[0] = keymap[currKey]; - } - } - } - else if(special_keys[currKey]) /* This is a special key */ - { - currChars[0] = PS2KBD_ESCAPE_KEY; - currChars[1] = special_keys[currKey]; - } - else if(keyMods & PS2KBD_CTRL) /* CTRL */ - { - if(control_map[currKey]) - { - currChars[0] = control_map[currKey]; - } - } - else if(keyMods & PS2KBD_ALT) /* ALT */ - { - if(alt_map[currKey]) - { - currChars[0] = alt_map[currKey]; - } - } - else if(keyMods & PS2KBD_SHIFT) /* SHIFT */ - { - if((ledStatus & PS2KBD_LED_CAPSLOCK) && (keycap[currKey])) - { - currChars[0] = keymap[currKey]; - } - else - { - currChars[0] = shiftkeymap[currKey]; - } - } - else /* Normal key */ - { - if(keymap[keys[loopKey]]) - { - if((ledStatus & PS2KBD_LED_CAPSLOCK) && (keycap[currKey])) - { - currChars[0] = shiftkeymap[currKey]; - } - else - { - currChars[0] = keymap[currKey]; - } - } - } - } - - if((currChars[0] == PS2KBD_ESCAPE_KEY) && (currChars[1] != 0)) - { - if(lineEndP != (tempPos - 2)) - { - lineBuffer[lineEndP++] = currChars[0]; - lineEndP %= lineSize; - lineBuffer[lineEndP++] = currChars[1]; - lineEndP %= lineSize; - byteCount += 2; - } - dev->repeatkeys[0] = currChars[0]; - dev->repeatkeys[1] = currChars[1]; - } - else if(currChars[0] != 0) - { - lineBuffer[lineEndP++] = currChars[0]; - lineEndP %= lineSize; - byteCount++; - dev->repeatkeys[0] = currChars[0]; - dev->repeatkeys[1] = 0; - } - } - - if(byteCount > 0) - { - iop_sys_clock_t t; - /* Set alarm to do repeat rate */ - //printf("repeatkeys %d %d\n", kbd_repeatkeys[0], kbd_repeatkeys[1]); - USec2SysClock(PS2KBD_REPEATWAIT * 1000, &t); - SetAlarm(&t, (void *)ps2kbd_repeathandler, dev); - } - - for(loopKey = 0; loopKey < byteCount; loopKey++) /* Signal the sema to indicate data */ - { - SignalSema(bufferSema); - } - -/* lineBuffer[PS2KBD_DEFLINELEN - 1] = 0; */ -/* printf(lineBuffer); */ - //printf("lineStart %d, lineEnd %d\n", lineStartP, lineEndP); -} - - -void ps2kbd_getkeys_raw(u8 newKeyMods, u8 oldKeyMods, u8 *new, const u8 *old) - -{ - int loopKey; - u8 currKey; - u8 keyMods = newKeyMods ^ oldKeyMods; - u8 keyModsMap = newKeyMods & keyMods; - int tempPos = 0; - int byteCount = 0; - - if(lineStartP < lineEndP) - { - tempPos = lineStartP + lineSize; - } - else - { - tempPos = lineStartP; - } - - for(loopKey = 0; loopKey < 8; loopKey++) - { - int currMod = (1 << loopKey); - if(keyMods & currMod) - { - if(lineEndP == (tempPos - 2)) - { - return; - } - - currKey = keyModValue[loopKey]; - - if(keyModsMap & currMod) /* If key pressed */ - { - lineBuffer[lineEndP++] = PS2KBD_RAWKEY_DOWN; - //printf("Key down\n"); - } - else - { - lineBuffer[lineEndP++] = PS2KBD_RAWKEY_UP; - //printf("Key up\n"); - } - - lineEndP %= lineSize; - lineBuffer[lineEndP++] = currKey; - lineEndP %= lineSize; - byteCount += 2; - //printf("Key %d\n", currKey); - } - } - - for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) - { - if(lineEndP == (tempPos - 2)) - { - return; - } - - if(new[loopKey] != 0) - { - lineBuffer[lineEndP++] = PS2KBD_RAWKEY_DOWN; - lineEndP %= lineSize; - lineBuffer[lineEndP++] = new[loopKey]; - lineEndP %= lineSize; - byteCount += 2; - //printf("Key down\nKey %d\n", new[loopKey]); - } - - } - - for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) - { - if(lineEndP == (tempPos - 2)) - { - return; - } - - if(old[loopKey] != 0) - { - lineBuffer[lineEndP++] = PS2KBD_RAWKEY_UP; - lineEndP %= lineSize; - lineBuffer[lineEndP++] = old[loopKey]; - lineEndP %= lineSize; - byteCount += 2; - //printf("Key up\nKey %d\n", old[loopKey]); - } - - } - - for(loopKey = 0; loopKey < byteCount; loopKey++) /* Signal the sema for the number of bytes read */ - { - SignalSema(bufferSema); - } -} - -void ps2kbd_data_recv(int resultCode, int bytes, void *arg) - -{ - kbd_dev *dev; - int ret; - int phantom; - int loop; - - if(resultCode != USB_RC_OK) - { - printf("PS2KEYBOARD: Data Recv set res %d, bytes %d, arg %p\n", resultCode, bytes, arg); - return; - } - - //printf("PS2KBD: Data Recv set res %d, bytes %d, arg %p\n", resultCode, bytes, arg); - - dev = (kbd_dev *) arg; - if(dev == NULL) - { - printf("PS2KBD: dev == NULL\n"); - return; - } - -/* printf("PS2KBD Modifiers %02X, Keys ", dev->data.mod_keys); */ -/* for(loop = 0; loop < PS2KBD_MAXKEYS; loop++) */ -/* { */ -/* printf("%02X ", dev->data.keycodes[loop]); */ -/* } */ -/* printf("\n"); */ - - CancelAlarm((void *)ps2kbd_repeathandler, dev); /* Make sure repeat alarm is cancelled */ - - /* Check for phantom states */ - phantom = 1; - for(loop = 0; loop < PS2KBD_MAXKEYS; loop++) - { - if(dev->data.keycodes[loop] != 1) - { - phantom = 0; - break; - } - } - - if(!phantom) /* If not in a phantom state */ - { - u8 uniqueKeys[PS2KBD_MAXKEYS]; - u8 missingKeys[PS2KBD_MAXKEYS]; - int loopKey; - - memset(uniqueKeys, 0, PS2KBD_MAXKEYS); - memset(missingKeys, 0, PS2KBD_MAXKEYS); - ps2kbd_build_uniquekeys(uniqueKeys, dev->data.keycodes, dev->oldData.keycodes); - ps2kbd_build_uniquekeys(missingKeys, dev->oldData.keycodes, dev->data.keycodes); - /* Build new and missing key lists */ - -/* printf("Unique keys : "); */ -/* for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) */ -/* { */ -/* printf("%02X ", uniqueKeys[loopKey]); */ -/* } */ -/* printf("\n"); */ - -/* printf("Missing keys : "); */ -/* for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) */ -/* { */ -/* printf("%02X ", missingKeys[loopKey]); */ -/* } */ -/* printf("\n"); */ - - if(kbd_readmode == PS2KBD_READMODE_NORMAL) - { - u8 ledStatus; - - ledStatus = dev->ledStatus; - //printf("ledStatus %02X\n", ledStatus); - - for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) /* Process key codes */ - { - switch(uniqueKeys[loopKey]) - { - case USB_KEYB_NUMLOCK : - ledStatus ^= PS2KBD_LED_NUMLOCK; - uniqueKeys[loopKey] = 0; - break; - case USB_KEYB_CAPSLOCK : - ledStatus ^= PS2KBD_LED_CAPSLOCK; - uniqueKeys[loopKey] = 0; - break; - case USB_KEYB_SCRLOCK : - ledStatus ^= PS2KBD_LED_SCRLOCK; - uniqueKeys[loopKey] = 0; - break; - } - } - - if(ledStatus != dev->ledStatus) - { - dev->ledStatus = ledStatus & PS2KBD_LED_MASK; - //printf("LEDS %02X\n", dev->ledStatus); - /* Call Set LEDS */ - UsbControlTransfer(dev->configEndp, 0x21, USB_REQ_SET_REPORT, 0x200, - dev->interfaceNo, 1, &dev->ledStatus, ps2kbd_led_set, arg); - } - - WaitSema(lineSema); /* Make sure no other thread is going to manipulate the buffer */ - ps2kbd_getkeys(dev->data.mod_keys, dev->ledStatus, uniqueKeys, dev); /* read in remaining keys */ - SignalSema(lineSema); - } - else /* RAW Mode */ - { - WaitSema(lineSema); - ps2kbd_getkeys_raw(dev->data.mod_keys, dev->oldData.mod_keys, uniqueKeys, missingKeys); - SignalSema(lineSema); - } - - memcpy(&dev->oldData, &dev->data, sizeof(kbd_data_recv)); - } - - ret = UsbInterruptTransfer(dev->dataEndp, &dev->data, dev->packetSize, ps2kbd_data_recv, arg); -} - -void flushbuffer() - -{ - iop_sema_t s; - - lineStartP = 0; - lineEndP = 0; - memset(lineBuffer, 0, lineSize); - - DeleteSema(bufferSema); - s.initial = 0; - s.max = lineSize; - s.option = 0; - s.attr = 0; - bufferSema = CreateSema(&s); /* Create a sema to maintain status of readable data */ - - if(bufferSema <= 0) - { - printf("PS2KBD: Error creating buffer sema\n"); - } -} - -void ps2kbd_ioctl_setreadmode(u32 readmode) - -{ - int devLoop; - - if(readmode == kbd_readmode) return; - - if((readmode == PS2KBD_READMODE_NORMAL) || (readmode == PS2KBD_READMODE_RAW)) - { - /* Reset line buffer */ - //printf("ioctl_setreadmode %d\n", readmode); - for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++) - { - CancelAlarm((void *)ps2kbd_repeathandler, devices[devLoop]); - } - - WaitSema(lineSema); - kbd_readmode = readmode; - flushbuffer(); - SignalSema(lineSema); - } -} - -void ps2kbd_ioctl_setkeymap(kbd_keymap *keymaps) - -{ - //printf("ioctl_setkeymap %p\n", keymaps); - WaitSema(lineSema); /* Lock the input so you dont end up with weird results */ - memcpy(keymap, keymaps->keymap, PS2KBD_KEYMAP_SIZE); - memcpy(shiftkeymap, keymaps->shiftkeymap, PS2KBD_KEYMAP_SIZE); - memcpy(keycap, keymaps->keycap, PS2KBD_KEYMAP_SIZE); - SignalSema(lineSema); -} - -void ps2kbd_ioctl_setctrlmap(u8 *ctrlmap) - -{ - //printf("ioctl_setctrlmap %p\n", ctrlmap); - WaitSema(lineSema); - memcpy(control_map, ctrlmap, PS2KBD_KEYMAP_SIZE); - SignalSema(lineSema); -} - -void ps2kbd_ioctl_setaltmap(u8 *altmap) - -{ - //printf("ioctl_setaltmap %p\n", altmap); - WaitSema(lineSema); - memcpy(alt_map, altmap, PS2KBD_KEYMAP_SIZE); - SignalSema(lineSema); -} - -void ps2kbd_ioctl_setspecialmap(u8 *special) - -{ - //printf("ioctl_setspecialmap %p\n", special); - WaitSema(lineSema); - memcpy(special_keys, special, PS2KBD_KEYMAP_SIZE); - SignalSema(lineSema); -} - -void ps2kbd_ioctl_resetkeymap() - /* Reset keymap to default US variety */ - -{ - //printf("ioctl_resetkeymap()\n"); - WaitSema(lineSema); - memcpy(keymap, us_keymap, PS2KBD_KEYMAP_SIZE); - memcpy(shiftkeymap, us_shiftkeymap, PS2KBD_KEYMAP_SIZE); - memcpy(keycap, us_keycap, PS2KBD_KEYMAP_SIZE); - memcpy(special_keys, us_special_keys, PS2KBD_KEYMAP_SIZE); - memcpy(control_map, us_control_map, PS2KBD_KEYMAP_SIZE); - memcpy(alt_map, us_alt_map, PS2KBD_KEYMAP_SIZE); - SignalSema(lineSema); -} - -void ps2kbd_ioctl_flushbuffer() - /* Flush the internal buffer */ - -{ - //printf("ioctl_flushbuffer()\n"); - WaitSema(lineSema); - flushbuffer(); - SignalSema(lineSema); -} - -void ps2kbd_ioctl_setleds(u8 ledStatus) - -{ - int devLoop; - kbd_dev *dev; - - //printf("ioctl_setleds %d\n", ledStatus); - ledStatus &= PS2KBD_LED_MASK; - for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++) - { - dev = devices[devLoop]; - if(dev) - { - if(ledStatus != dev->ledStatus) - { - dev->ledStatus = ledStatus & PS2KBD_LED_MASK; - UsbControlTransfer(dev->configEndp, 0x21, USB_REQ_SET_REPORT, 0x200, - dev->interfaceNo, 1, &dev->ledStatus, ps2kbd_led_set, dev); - } - } - } -} - -void ps2kbd_ioctl_setblockmode(u32 blockmode) - -{ - if((blockmode == PS2KBD_BLOCKING) || (blockmode == PS2KBD_NONBLOCKING)) - { - kbd_blocking = blockmode; - //printf("ioctl_setblockmode %d\n", blockmode); - } -} - -void ps2kbd_ioctl_setrepeatrate(u32 rate) - -{ - kbd_repeatrate = rate; -} - -int fio_dummy() -{ - //printf("fio_dummy()\n"); - return -5; -} - -int fio_init(iop_device_t *driver) -{ - //printf("fio_init()\n"); - return 0; -} - -int fio_format(iop_file_t *f) -{ - //printf("fio_format()\n"); - return 0; -} - -int fio_open(iop_file_t *f, const char *name, int mode) -{ - //printf("fio_open() %s %d\n", name, mode); - if(strcmp(name, PS2KBD_KBDFILE)) /* If not the keyboard file */ - { - return -1; - } - - return 0; -} - -int fio_read(iop_file_t *f, void *buf, int size) - -{ - int count = 0; - char *data = (char *) buf; - int ret; - - //printf("fio_read() %p %d\n", buf, size); - - if(kbd_readmode == PS2KBD_READMODE_RAW) - { - size &= ~1; /* Ensure size of a multiple of 2 */ - } - - ret = PollSema(bufferSema); - if(ret < 0) - { - if((ret == SEMA_ZERO) && (kbd_blocking == PS2KBD_BLOCKING)) - { - //printf("Blocking\n"); - ret = WaitSema(bufferSema); - if(ret < 0) /* Means either an error or the sema was deleted from under us */ - { - return 0; - } - } - else - { - return 0; - } - } - - SignalSema(bufferSema); - ret = WaitSema(lineSema); - if(ret < 0) return 0; - - while((count < size) && (lineStartP != lineEndP)) - { - data[count] = lineBuffer[lineStartP++]; - lineStartP %= lineSize; - count++; - PollSema(bufferSema); /* Take off one count from the sema */ - } - - SignalSema(lineSema); -/* //printf("read %d bytes\n", count); */ -/* { */ -/* struct t_sema_status s; */ - -/* ReferSemaStatus(bufferSema, &s); */ -/* //printf("Sema count %d\n", s.curr_count); */ -/* } */ - - return count; -} - -int fio_ioctl(iop_file_t *f, unsigned long arg, void *param) - -{ - //printf("fio_ioctl() %ld %d\n", arg, *((u32 *) param)); - switch(arg) - { - case PS2KBD_IOCTL_SETREADMODE: ps2kbd_ioctl_setreadmode(*((u32 *) param)); - break; - case PS2KBD_IOCTL_SETKEYMAP: ps2kbd_ioctl_setkeymap((kbd_keymap *) param); - break; - case PS2KBD_IOCTL_SETALTMAP: ps2kbd_ioctl_setaltmap((u8 *) param); - break; - case PS2KBD_IOCTL_SETCTRLMAP: ps2kbd_ioctl_setctrlmap((u8 *) param); - break; - case PS2KBD_IOCTL_SETSPECIALMAP: ps2kbd_ioctl_setspecialmap((u8 *) param); - break; - case PS2KBD_IOCTL_FLUSHBUFFER: ps2kbd_ioctl_flushbuffer(); - break; - case PS2KBD_IOCTL_SETLEDS: ps2kbd_ioctl_setleds(*(u8*) param); - break; - case PS2KBD_IOCTL_SETBLOCKMODE: ps2kbd_ioctl_setblockmode(*(u32 *) param); - break; - case PS2KBD_IOCTL_RESETKEYMAP: ps2kbd_ioctl_resetkeymap(); - break; - case PS2KBD_IOCTL_SETREPEATRATE: ps2kbd_ioctl_setrepeatrate(*(u32 *) param); - break; - default : return -1; - } - - return 0; -} - -int fio_close(iop_file_t *f) - -{ - //printf("fio_close()\n"); - return 0; -} - -iop_device_ops_t fio_ops = - - { - fio_init, - fio_dummy, - fio_format, - fio_open, - fio_close, - fio_read, - fio_dummy, - fio_dummy, - fio_ioctl, - fio_dummy, - fio_dummy, - fio_dummy, - fio_dummy, - fio_dummy, - fio_dummy, - fio_dummy, - fio_dummy - }; - -int init_fio() - -{ - kbd_filedrv.name = PS2KBD_FSNAME; - kbd_filedrv.type = IOP_DT_CHAR; - kbd_filedrv.version = 0; - kbd_filedrv.desc = "USB Keyboard FIO driver"; - kbd_filedrv.ops = &fio_ops; - return AddDrv(&kbd_filedrv); -} - -void repeat_thread(void *arg) - -{ - u32 eventmask; - int devLoop; - - for(;;) - { - WaitEventFlag(eventid, 0xFFFFFFFF, 0x01 | 0x10, &eventmask); - //printf("Recieved event %08X\n", eventmask); - for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++) - { - if((eventmask & (1 << devLoop)) && (devices[devLoop])) - { - int tempPos = 0; - - WaitSema(lineSema); - if(lineStartP < lineEndP) - { - tempPos = lineStartP + lineSize; - } - else - { - tempPos = lineStartP; - } - - if((devices[devLoop]->repeatkeys[0]) && (devices[devLoop]->repeatkeys[1])) - { - if(lineEndP != (tempPos - 2)) - { - lineBuffer[lineEndP++] = devices[devLoop]->repeatkeys[0]; - lineEndP %= lineSize; - lineBuffer[lineEndP++] = devices[devLoop]->repeatkeys[1]; - lineEndP %= lineSize; - SignalSema(bufferSema); - SignalSema(bufferSema); - } - } - else if(devices[devLoop]->repeatkeys[0]) - { - if(lineEndP != (tempPos - 1)) - { - lineBuffer[lineEndP++] = devices[devLoop]->repeatkeys[0]; - lineEndP %= lineSize; - SignalSema(bufferSema); - } - } - - SignalSema(lineSema); - } - } - } -} - -int init_repeatthread() - /* Creates a thread to handle key repeats */ - -{ - iop_thread_t param; - iop_event_t event; - - event.attr = 0; - event.option = 0; - event.bits = 0; - eventid = CreateEventFlag(&event); - - param.attr = TH_C; - param.thread = repeat_thread; - param.priority = 40; - param.stacksize = 0x800; - param.option = 0; - - repeat_tid = CreateThread(¶m); - if (repeat_tid > 0) { - StartThread(repeat_tid, 0); - return 0; - } - else - { - return 1; - } -} - -int ps2kbd_init() - -{ - int ret; - iop_sema_t s; - - s.initial = 1; - s.max = 1; - s.option = 0; - s.attr = 0; - lineSema = CreateSema(&s); - if(lineSema <= 0) - { - printf("PS2KBD: Error creating sema\n"); - return 1; - } - - s.initial = 0; - s.max = PS2KBD_DEFLINELEN; - s.option = 0; - s.attr = 0; - bufferSema = CreateSema(&s); /* Create a sema to maintain status of readable data */ - if(bufferSema <= 0) - { - printf("PS2KBD: Error creating buffer sema\n"); - return 1; - } - - lineBuffer = (u8 *) AllocSysMemory(0, PS2KBD_DEFLINELEN, NULL); - if(lineBuffer == NULL) - { - printf("PS2KBD: Error allocating line buffer\n"); - return 1; - } - lineStartP = 0; - lineEndP = 0; - lineSize = PS2KBD_DEFLINELEN; - memset(lineBuffer, 0, PS2KBD_DEFLINELEN); - - memset(devices, 0, sizeof(kbd_dev *) * PS2KBD_MAXDEV); - dev_count = 0; - kbd_blocking = PS2KBD_NONBLOCKING; - kbd_readmode = PS2KBD_READMODE_NORMAL; - kbd_repeatrate = PS2KBD_DEFREPEATRATE; - memcpy(keymap, us_keymap, PS2KBD_KEYMAP_SIZE); - memcpy(shiftkeymap, us_shiftkeymap, PS2KBD_KEYMAP_SIZE); - memcpy(keycap, us_keycap, PS2KBD_KEYMAP_SIZE); - memcpy(special_keys, us_special_keys, PS2KBD_KEYMAP_SIZE); - memcpy(control_map, us_control_map, PS2KBD_KEYMAP_SIZE); - memcpy(alt_map, us_alt_map, PS2KBD_KEYMAP_SIZE); - - ret = init_fio(); - //printf("ps2kbd AddDrv [%d]\n", ret); - init_repeatthread(); - - ret = UsbRegisterDriver(&kbd_driver); - if(ret != USB_RC_OK) - { - printf("PS2KBD: Error registering USB devices\n"); - return 1; - } - - //printf("UsbRegisterDriver %d\n", ret); - - return 0; -} + int index, int length, uint8_t *data) +{ + USBKeyboardState *s = (USBKeyboardState *)dev; + int ret = 0; + + switch(request) { + case DeviceRequest | USB_REQ_GET_STATUS: + data[0] = (1 << USB_DEVICE_SELF_POWERED) | + (dev->remote_wakeup << USB_DEVICE_REMOTE_WAKEUP); + data[1] = 0x00; + ret = 2; + break; + case DeviceOutRequest | USB_REQ_CLEAR_FEATURE: + if (value == USB_DEVICE_REMOTE_WAKEUP) { + dev->remote_wakeup = 0; + } else { + goto fail; + } + ret = 0; + break; + case DeviceOutRequest | USB_REQ_SET_FEATURE: + if (value == USB_DEVICE_REMOTE_WAKEUP) { + dev->remote_wakeup = 1; + } else { + goto fail; + } + ret = 0; + break; + case DeviceOutRequest | USB_REQ_SET_ADDRESS: + dev->addr = value; + ret = 0; + break; + case DeviceRequest | USB_REQ_GET_DESCRIPTOR: + switch(value >> 8) { + case USB_DT_DEVICE: + memcpy(data, qemu_keyboard_dev_descriptor, + sizeof(qemu_keyboard_dev_descriptor)); + ret = sizeof(qemu_keyboard_dev_descriptor); + break; + case USB_DT_CONFIG: + memcpy(data, qemu_keyboard_config_descriptor, + sizeof(qemu_keyboard_config_descriptor)); + ret = sizeof(qemu_keyboard_config_descriptor); + break; + case USB_DT_STRING: + switch(value & 0xff) { + case 0: + /* language ids */ + data[0] = 4; + data[1] = 3; + data[2] = 0x09; + data[3] = 0x04; + ret = 4; + break; + case 1: + /* serial number */ + ret = set_usb_string(data, "1"); + break; + case 2: + /* product description */ + ret = set_usb_string(data, "Generic USB Keyboard"); + break; + case 3: + /* vendor description */ + ret = set_usb_string(data, "PCSX2/QEMU"); + break; + case 4: + ret = set_usb_string(data, "HID Keyboard"); + break; + case 5: + ret = set_usb_string(data, "Endpoint1 Interrupt Pipe"); + break; + default: + goto fail; + } + break; + default: + goto fail; + } + break; + case DeviceRequest | USB_REQ_GET_CONFIGURATION: + data[0] = 1; + ret = 1; + break; + case DeviceOutRequest | USB_REQ_SET_CONFIGURATION: + ret = 0; + break; + case DeviceRequest | USB_REQ_GET_INTERFACE: + data[0] = 0; + ret = 1; + break; + case DeviceOutRequest | USB_REQ_SET_INTERFACE: + ret = 0; + break; + /* hid specific requests */ + case InterfaceRequest | USB_REQ_GET_DESCRIPTOR: + switch(value >> 8) { + case 0x22: + memcpy(data, qemu_keyboard_hid_report_descriptor, + sizeof(qemu_keyboard_hid_report_descriptor)); + ret = sizeof(qemu_keyboard_hid_report_descriptor); + break; + default: + goto fail; + } + break; + case GET_REPORT: + ret = usb_keyboard_poll(s, data, length); + break; + case SET_IDLE: + ret = 0; + break; + default: + fail: + ret = USB_RET_STALL; + break; + } + return ret; +} + +static int usb_keyboard_handle_data(USBDevice *dev, USBPacket* packet) +{ + USBKeyboardState *s = (USBKeyboardState *)dev; + int ret = 0; + + switch(packet->pid) { + case USB_TOKEN_IN: + if (packet->devep == 1) { + ret = usb_keyboard_poll(s, packet->data, packet->len); + } else { + goto fail; + } + break; + case USB_TOKEN_OUT: + default: + fail: + ret = USB_RET_STALL; + break; + } + return ret; +} + +static void usb_keyboard_handle_destroy(USBDevice *dev) +{ + USBKeyboardState *s = (USBKeyboardState *)dev; + + //qemu_add_keyboard_event_handler(NULL, NULL, 0); + free(s); +} + +USBDevice *usb_keyboard_init(void) +{ + USBKeyboardState *s; + + s = (USBKeyboardState *)malloc(sizeof(USBKeyboardState)); + if (!s) + return NULL; + memset(s,0,sizeof(USBKeyboardState)); + s->dev.speed = USB_SPEED_FULL; + s->dev.info = &devinfo; + s->dev.info->handle_packet = usb_generic_handle_packet; + s->dev.info->handle_reset = usb_keyboard_handle_reset; + s->dev.info->handle_control = usb_keyboard_handle_control; + s->dev.info->handle_data = usb_keyboard_handle_data; + s->dev.info->handle_destroy = usb_keyboard_handle_destroy; + s->dev.info->product_desc = "Generic USB Keyboard"; + + return (USBDevice *)s; +} + +#if 0 +#define PS2KBD_VERSION 0x100 + +#define USB_SUBCLASS_BOOT 1 +#define USB_HIDPROTO_KEYBOARD 1 + +#define PS2KBD_MAXDEV 2 +#define PS2KBD_MAXKEYS 6 + +#define PS2KBD_DEFLINELEN 4096 +#define PS2KBD_DEFREPEATRATE 100 +/* Default repeat rate in milliseconds */ +#define PS2KBD_REPEATWAIT 1000 +/* Number of milliseconds to wait before starting key repeat */ +#define USB_KEYB_NUMLOCK 0x53 +#define USB_KEYB_CAPSLOCK 0x39 +#define USB_KEYB_SCRLOCK 0x47 + +#define USB_KEYB_NUMPAD_START 0x54 +#define USB_KEYB_NUMPAD_END 0x63 + +#define SEMA_ZERO -419 +#define SEMA_DELETED -425 + +int ps2kbd_init(); +void ps2kbd_config_set(int resultCode, int bytes, void *arg); +void ps2kbd_idlemode_set(int resultCode, int bytes, void *arg); +void ps2kbd_data_recv(int resultCode, int bytes, void *arg); +int ps2kbd_probe(int devId); +int ps2kbd_connect(int devId); +int ps2kbd_disconnect(int devId); +void usb_getstring(int endp, int index, char *desc); + +typedef struct _kbd_data_recv + +{ + u8 mod_keys; + u8 reserved; + u8 keycodes[PS2KBD_MAXKEYS]; +} kbd_data_recv; + +typedef struct _keyb_dev + +{ + int configEndp; + int dataEndp; + int packetSize; + int devId; + int interfaceNo; /* Holds the interface number selected on this device */ + char repeatkeys[2]; + u32 eventmask; + u8 ledStatus; /* Maintains state on the led status */ + kbd_data_recv oldData; + kbd_data_recv data; /* Holds the data for the transfers */ +} kbd_dev; + +/* Global Variables */ + +int kbd_readmode; +int kbd_blocking; +u32 kbd_repeatrate; +kbd_dev *devices[PS2KBD_MAXDEV]; /* Holds a list of current devices */ +int dev_count; +UsbDriver kbd_driver = { NULL, NULL, "PS2Kbd", ps2kbd_probe, ps2kbd_connect, ps2kbd_disconnect }; +u8 *lineBuffer; +u32 lineStartP, lineEndP; +int lineSema; +int bufferSema; +u32 lineSize; +u8 keymap[PS2KBD_KEYMAP_SIZE]; /* Normal key map */ +u8 shiftkeymap[PS2KBD_KEYMAP_SIZE]; /* Shifted key map */ +u8 keycap[PS2KBD_KEYMAP_SIZE]; /* Does this key get shifted by capslock ? */ +u8 special_keys[PS2KBD_KEYMAP_SIZE]; +u8 control_map[PS2KBD_KEYMAP_SIZE]; +u8 alt_map[PS2KBD_KEYMAP_SIZE]; +//static struct fileio_driver kbd_fdriver; +iop_device_t kbd_filedrv; +u8 keyModValue[8] = { 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7 }; +int repeat_tid; +int eventid; /* Id of the repeat event */ + +int _start () +{ + FlushDcache(); + + ps2kbd_init(); + + printf("PS2KBD - USB Keyboard Library\n"); + + return 0; + +} + +int ps2kbd_probe(int devId) + +{ + UsbDeviceDescriptor *dev; + UsbConfigDescriptor *conf; + UsbInterfaceDescriptor *intf; + UsbEndpointDescriptor *endp; + //UsbStringDescriptor *str; + + if(dev_count >= PS2KBD_MAXDEV) + { + printf("ERROR: Maximum keyboard devices reached\n"); + return 0; + } + + //printf("PS2Kbd_probe devId %d\n", devId); + + dev = UsbGetDeviceStaticDescriptor(devId, NULL, USB_DT_DEVICE); /* Get device descriptor */ + if(!dev) + { + printf("ERROR: Couldn't get device descriptor\n"); + return 0; + } + + //printf("Device class %d, Size %d, Man %d, Product %d Cpnfigurations %d\n", dev->bDeviceClass, dev->bMaxPacketSize0, dev->iManufacturer, dev->iProduct, dev->bNumConfigurations); + /* Check that the device class is specified in the interfaces and it has at least one configuration */ + if((dev->bDeviceClass != USB_CLASS_PER_INTERFACE) || (dev->bNumConfigurations < 1)) + { + //printf("This is not the droid you're looking for\n"); + return 0; + } + + conf = UsbGetDeviceStaticDescriptor(devId, dev, USB_DT_CONFIG); + if(!conf) + { + printf("ERROR: Couldn't get configuration descriptor\n"); + return 0; + } + //printf("Config Length %d Total %d Interfaces %d\n", conf->bLength, conf->wTotalLength, conf->bNumInterfaces); + + if((conf->bNumInterfaces < 1) || (conf->wTotalLength < (sizeof(UsbConfigDescriptor) + sizeof(UsbInterfaceDescriptor)))) + { + printf("ERROR: No interfaces available\n"); + return 0; + } + + intf = (UsbInterfaceDescriptor *) ((char *) conf + conf->bLength); /* Get first interface */ +/* printf("Interface Length %d Endpoints %d Class %d Sub %d Proto %d\n", intf->bLength, */ +/* intf->bNumEndpoints, intf->bInterfaceClass, intf->bInterfaceSubClass, */ +/* intf->bInterfaceProtocol); */ + + if((intf->bInterfaceClass != USB_CLASS_HID) || (intf->bInterfaceSubClass != USB_SUBCLASS_BOOT) || + (intf->bInterfaceProtocol != USB_HIDPROTO_KEYBOARD) || (intf->bNumEndpoints < 1)) + + { + //printf("We came, we saw, we told it to fuck off\n"); + return 0; + } + + endp = (UsbEndpointDescriptor *) ((char *) intf + intf->bLength); + endp = (UsbEndpointDescriptor *) ((char *) endp + endp->bLength); /* Go to the data endpoint */ + + //printf("Endpoint 1 Addr %d, Attr %d, MaxPacket %d\n", endp->bEndpointAddress, endp->bmAttributes, endp->wMaxPacketSizeLB); + + if(((endp->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_INT) || + ((endp->bEndpointAddress & USB_ENDPOINT_DIR_MASK) != USB_DIR_IN)) + { + printf("ERROR: Endpoint not interrupt type and/or an input\n"); + return 0; + } + + printf("PS2KBD: Found a keyboard device\n"); + + return 1; +} + +int ps2kbd_connect(int devId) + +{ + /* Assume we can only get here if we have already checked the device is kosher */ + + UsbDeviceDescriptor *dev; + UsbConfigDescriptor *conf; + UsbInterfaceDescriptor *intf; + UsbEndpointDescriptor *endp; + kbd_dev *currDev; + int devLoop; + + //printf("PS2Kbd_connect devId %d\n", devId); + + dev = UsbGetDeviceStaticDescriptor(devId, NULL, USB_DT_DEVICE); /* Get device descriptor */ + if(!dev) + { + printf("ERROR: Couldn't get device descriptor\n"); + return 1; + } + + conf = UsbGetDeviceStaticDescriptor(devId, dev, USB_DT_CONFIG); + if(!conf) + { + printf("ERROR: Couldn't get configuration descriptor\n"); + return 1; + } + + intf = (UsbInterfaceDescriptor *) ((char *) conf + conf->bLength); /* Get first interface */ + endp = (UsbEndpointDescriptor *) ((char *) intf + intf->bLength); + endp = (UsbEndpointDescriptor *) ((char *) endp + endp->bLength); /* Go to the data endpoint */ + + for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++) + { + if(devices[devLoop] == NULL) + { + break; + } + } + + if(devLoop == PS2KBD_MAXDEV) + { + /* How the f*** did we end up here ??? */ + printf("ERROR: Device Weirdness!!\n"); + return 1; + } + + currDev = (kbd_dev *) AllocSysMemory(0, sizeof(kbd_dev), NULL); + if(!currDev) + { + printf("ERROR: Couldn't allocate a device point for the kbd\n"); + return 1; + } + + devices[devLoop] = currDev; + memset(currDev, 0, sizeof(kbd_dev)); + currDev->configEndp = UsbOpenEndpoint(devId, NULL); + currDev->dataEndp = UsbOpenEndpoint(devId, endp); + currDev->packetSize = endp->wMaxPacketSizeLB | ((int) endp->wMaxPacketSizeHB << 8); + currDev->eventmask = (1 << devLoop); + if(currDev->packetSize > sizeof(kbd_data_recv)) + { + currDev->packetSize = sizeof(kbd_data_recv); + } + + if(dev->iManufacturer != 0) + { + usb_getstring(currDev->configEndp, dev->iManufacturer, "Keyboard Manufacturer"); + } + + if(dev->iProduct != 0) + { + usb_getstring(currDev->configEndp, dev->iProduct, "Keyboard Product"); + } + + currDev->devId = devId; + currDev->interfaceNo = intf->bInterfaceNumber; + currDev->ledStatus = 0; + + UsbSetDevicePrivateData(devId, currDev); /* Set the index for the device data */ + + //printf("Configuration value %d\n", conf->bConfigurationValue); + UsbSetDeviceConfiguration(currDev->configEndp, conf->bConfigurationValue, ps2kbd_config_set, currDev); + + dev_count++; /* Increment device count */ + printf("PS2KBD: Connected device\n"); + + return 0; +} + +int ps2kbd_disconnect(int devId) + +{ + int devLoop; + //printf("PS2Kbd_disconnect devId %d\n", devId); + + for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++) + { + if((devices[devLoop]) && (devices[devLoop]->devId == devId)) + { + dev_count--; + FreeSysMemory(devices[devLoop]); + devices[devLoop] = NULL; + printf("PS2KBD: Disconnected device\n"); + break; + } + } + + return 0; +} + +typedef struct _string_descriptor + +{ + u8 buf[200]; + char *desc; +} string_descriptor; + +void ps2kbd_getstring_set(int resultCode, int bytes, void *arg) + +{ + UsbStringDescriptor *str = (UsbStringDescriptor *) arg; + string_descriptor *strBuf = (string_descriptor *) arg; + char string[50]; + int strLoop; + +/* printf("=========getstring=========\n"); */ + +/* printf("PS2KEYBOARD: GET_DESCRIPTOR res %d, bytes %d, arg %p\n", resultCode, bytes, arg); */ + + if(resultCode == USB_RC_OK) + { + memset(string, 0, 50); + for(strLoop = 0; strLoop < ((bytes - 2) / 2); strLoop++) + { + string[strLoop] = str->wData[strLoop] & 0xFF; + } + printf("PS2KBD %s: %s\n", strBuf->desc, string); + } + + FreeSysMemory(arg); +} + +void usb_getstring(int endp, int index, char *desc) + +{ + u8 *data; + string_descriptor *str; + int ret; + + data = (u8 *) AllocSysMemory(0, sizeof(string_descriptor), NULL); + str = (string_descriptor *) data; + + if(data != NULL) + { + str->desc = desc; + ret = UsbControlTransfer(endp, 0x80, USB_REQ_GET_DESCRIPTOR, (USB_DT_STRING << 8) | index, + 0, sizeof(string_descriptor) - 4, data, ps2kbd_getstring_set, data); + if(ret != USB_RC_OK) + { + printf("PS2KBD: Error sending string descriptor request\n"); + FreeSysMemory(data); + } + } +} + +void ps2kbd_config_set(int resultCode, int bytes, void *arg) + /* Called when we have finished choosing our configuration */ + +{ + kbd_dev *dev; + + if(resultCode != USB_RC_OK) + { + printf("PS2KEYBOARD: Configuration set error res %d, bytes %d, arg %p\n", resultCode, bytes, arg); + return; + } + + //printf("PS2KEYBOARD: Configuration set res %d, bytes %d, arg %p\n", resultCode, bytes, arg); + /* Do a interrupt data transfer */ + + dev = (kbd_dev *) arg; + if(dev != NULL) + { + int ret; + + ret = UsbControlTransfer(dev->configEndp, 0x21, USB_REQ_SET_IDLE, 0, dev->interfaceNo, 0, NULL, ps2kbd_idlemode_set, arg); + } +} + +void ps2kbd_idlemode_set(int resultCode, int bytes, void *arg) + +{ + kbd_dev *dev; + + + + if(resultCode != USB_RC_OK) + { + printf("PS2KBD: Idlemode set error res %d, bytes %d, arg %p\n", resultCode, bytes, arg); + return; + } + + dev = (kbd_dev *) arg; + if(dev != NULL) + { + int ret; + + ret = UsbInterruptTransfer(dev->dataEndp, &dev->data, dev->packetSize, ps2kbd_data_recv, arg); + } +} + +void ps2kbd_led_set(int resultCode, int bytes, void *arg) + +{ + //printf("LED Set\n"); +} + +void ps2kbd_build_uniquekeys(u8 *res, const u8 *new, const u8 *old) + + /* Builds a list of unique keys */ + +{ + int loopNew, loopOld; + int loopRes = 0; + int foundKey; + + for(loopNew = 0; loopNew < PS2KBD_MAXKEYS; loopNew++) + { + if(new[loopNew] != 0) + { + foundKey = 0; + for(loopOld = 0; loopOld < PS2KBD_MAXKEYS; loopOld++) + { + if(new[loopNew] == old[loopOld]) + { + foundKey = 1; + break; + } + } + if(!foundKey) + { + res[loopRes++] = new[loopNew]; + } + } + } +} + +u32 ps2kbd_repeathandler(void *arg) + +{ + kbd_dev *dev = arg; + iop_sys_clock_t t; + //printf("Repeat handler\n"); + + iSetEventFlag(eventid, dev->eventmask); + + USec2SysClock(kbd_repeatrate * 1000, &t); + iSetAlarm(&t, (void *)ps2kbd_repeathandler, arg); + + return t.hi; +} + +void ps2kbd_getkeys(u8 keyMods, u8 ledStatus, const u8 *keys, kbd_dev *dev) + +{ + int loopKey; + int tempPos = 0; + int byteCount = 0; + u8 currChars[2]; + + if(lineStartP < lineEndP) + { + tempPos = lineStartP + lineSize; + } + else + { + tempPos = lineStartP; + } + + for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) + { + u8 currKey = keys[loopKey]; + + currChars[0] = 0; + currChars[1] = 0; + + if(lineEndP == (tempPos - 1)) + { + break; + } + + if(currKey) /* If this is a valid key */ + { + if((currKey >= USB_KEYB_NUMPAD_START) && (currKey <= USB_KEYB_NUMPAD_END)) + /* Handle numpad specially */ + { + if(ledStatus & PS2KBD_LED_NUMLOCK) + { + if(keymap[currKey]) + { + currChars[0] = keymap[currKey]; + } + } + else + { + if(special_keys[currKey]) + { + currChars[0] = PS2KBD_ESCAPE_KEY; + currChars[1] = special_keys[currKey]; + } + else if(keymap[currKey] != '5') /* Make sure this isnt a 5 key :) */ + { + currChars[0] = keymap[currKey]; + } + } + } + else if(special_keys[currKey]) /* This is a special key */ + { + currChars[0] = PS2KBD_ESCAPE_KEY; + currChars[1] = special_keys[currKey]; + } + else if(keyMods & PS2KBD_CTRL) /* CTRL */ + { + if(control_map[currKey]) + { + currChars[0] = control_map[currKey]; + } + } + else if(keyMods & PS2KBD_ALT) /* ALT */ + { + if(alt_map[currKey]) + { + currChars[0] = alt_map[currKey]; + } + } + else if(keyMods & PS2KBD_SHIFT) /* SHIFT */ + { + if((ledStatus & PS2KBD_LED_CAPSLOCK) && (keycap[currKey])) + { + currChars[0] = keymap[currKey]; + } + else + { + currChars[0] = shiftkeymap[currKey]; + } + } + else /* Normal key */ + { + if(keymap[keys[loopKey]]) + { + if((ledStatus & PS2KBD_LED_CAPSLOCK) && (keycap[currKey])) + { + currChars[0] = shiftkeymap[currKey]; + } + else + { + currChars[0] = keymap[currKey]; + } + } + } + } + + if((currChars[0] == PS2KBD_ESCAPE_KEY) && (currChars[1] != 0)) + { + if(lineEndP != (tempPos - 2)) + { + lineBuffer[lineEndP++] = currChars[0]; + lineEndP %= lineSize; + lineBuffer[lineEndP++] = currChars[1]; + lineEndP %= lineSize; + byteCount += 2; + } + dev->repeatkeys[0] = currChars[0]; + dev->repeatkeys[1] = currChars[1]; + } + else if(currChars[0] != 0) + { + lineBuffer[lineEndP++] = currChars[0]; + lineEndP %= lineSize; + byteCount++; + dev->repeatkeys[0] = currChars[0]; + dev->repeatkeys[1] = 0; + } + } + + if(byteCount > 0) + { + iop_sys_clock_t t; + /* Set alarm to do repeat rate */ + //printf("repeatkeys %d %d\n", kbd_repeatkeys[0], kbd_repeatkeys[1]); + USec2SysClock(PS2KBD_REPEATWAIT * 1000, &t); + SetAlarm(&t, (void *)ps2kbd_repeathandler, dev); + } + + for(loopKey = 0; loopKey < byteCount; loopKey++) /* Signal the sema to indicate data */ + { + SignalSema(bufferSema); + } + +/* lineBuffer[PS2KBD_DEFLINELEN - 1] = 0; */ +/* printf(lineBuffer); */ + //printf("lineStart %d, lineEnd %d\n", lineStartP, lineEndP); +} + + +void ps2kbd_getkeys_raw(u8 newKeyMods, u8 oldKeyMods, u8 *new, const u8 *old) + +{ + int loopKey; + u8 currKey; + u8 keyMods = newKeyMods ^ oldKeyMods; + u8 keyModsMap = newKeyMods & keyMods; + int tempPos = 0; + int byteCount = 0; + + if(lineStartP < lineEndP) + { + tempPos = lineStartP + lineSize; + } + else + { + tempPos = lineStartP; + } + + for(loopKey = 0; loopKey < 8; loopKey++) + { + int currMod = (1 << loopKey); + if(keyMods & currMod) + { + if(lineEndP == (tempPos - 2)) + { + return; + } + + currKey = keyModValue[loopKey]; + + if(keyModsMap & currMod) /* If key pressed */ + { + lineBuffer[lineEndP++] = PS2KBD_RAWKEY_DOWN; + //printf("Key down\n"); + } + else + { + lineBuffer[lineEndP++] = PS2KBD_RAWKEY_UP; + //printf("Key up\n"); + } + + lineEndP %= lineSize; + lineBuffer[lineEndP++] = currKey; + lineEndP %= lineSize; + byteCount += 2; + //printf("Key %d\n", currKey); + } + } + + for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) + { + if(lineEndP == (tempPos - 2)) + { + return; + } + + if(new[loopKey] != 0) + { + lineBuffer[lineEndP++] = PS2KBD_RAWKEY_DOWN; + lineEndP %= lineSize; + lineBuffer[lineEndP++] = new[loopKey]; + lineEndP %= lineSize; + byteCount += 2; + //printf("Key down\nKey %d\n", new[loopKey]); + } + + } + + for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) + { + if(lineEndP == (tempPos - 2)) + { + return; + } + + if(old[loopKey] != 0) + { + lineBuffer[lineEndP++] = PS2KBD_RAWKEY_UP; + lineEndP %= lineSize; + lineBuffer[lineEndP++] = old[loopKey]; + lineEndP %= lineSize; + byteCount += 2; + //printf("Key up\nKey %d\n", old[loopKey]); + } + + } + + for(loopKey = 0; loopKey < byteCount; loopKey++) /* Signal the sema for the number of bytes read */ + { + SignalSema(bufferSema); + } +} + +void ps2kbd_data_recv(int resultCode, int bytes, void *arg) + +{ + kbd_dev *dev; + int ret; + int phantom; + int loop; + + if(resultCode != USB_RC_OK) + { + printf("PS2KEYBOARD: Data Recv set res %d, bytes %d, arg %p\n", resultCode, bytes, arg); + return; + } + + //printf("PS2KBD: Data Recv set res %d, bytes %d, arg %p\n", resultCode, bytes, arg); + + dev = (kbd_dev *) arg; + if(dev == NULL) + { + printf("PS2KBD: dev == NULL\n"); + return; + } + +/* printf("PS2KBD Modifiers %02X, Keys ", dev->data.mod_keys); */ +/* for(loop = 0; loop < PS2KBD_MAXKEYS; loop++) */ +/* { */ +/* printf("%02X ", dev->data.keycodes[loop]); */ +/* } */ +/* printf("\n"); */ + + CancelAlarm((void *)ps2kbd_repeathandler, dev); /* Make sure repeat alarm is cancelled */ + + /* Check for phantom states */ + phantom = 1; + for(loop = 0; loop < PS2KBD_MAXKEYS; loop++) + { + if(dev->data.keycodes[loop] != 1) + { + phantom = 0; + break; + } + } + + if(!phantom) /* If not in a phantom state */ + { + u8 uniqueKeys[PS2KBD_MAXKEYS]; + u8 missingKeys[PS2KBD_MAXKEYS]; + int loopKey; + + memset(uniqueKeys, 0, PS2KBD_MAXKEYS); + memset(missingKeys, 0, PS2KBD_MAXKEYS); + ps2kbd_build_uniquekeys(uniqueKeys, dev->data.keycodes, dev->oldData.keycodes); + ps2kbd_build_uniquekeys(missingKeys, dev->oldData.keycodes, dev->data.keycodes); + /* Build new and missing key lists */ + +/* printf("Unique keys : "); */ +/* for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) */ +/* { */ +/* printf("%02X ", uniqueKeys[loopKey]); */ +/* } */ +/* printf("\n"); */ + +/* printf("Missing keys : "); */ +/* for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) */ +/* { */ +/* printf("%02X ", missingKeys[loopKey]); */ +/* } */ +/* printf("\n"); */ + + if(kbd_readmode == PS2KBD_READMODE_NORMAL) + { + u8 ledStatus; + + ledStatus = dev->ledStatus; + //printf("ledStatus %02X\n", ledStatus); + + for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) /* Process key codes */ + { + switch(uniqueKeys[loopKey]) + { + case USB_KEYB_NUMLOCK : + ledStatus ^= PS2KBD_LED_NUMLOCK; + uniqueKeys[loopKey] = 0; + break; + case USB_KEYB_CAPSLOCK : + ledStatus ^= PS2KBD_LED_CAPSLOCK; + uniqueKeys[loopKey] = 0; + break; + case USB_KEYB_SCRLOCK : + ledStatus ^= PS2KBD_LED_SCRLOCK; + uniqueKeys[loopKey] = 0; + break; + } + } + + if(ledStatus != dev->ledStatus) + { + dev->ledStatus = ledStatus & PS2KBD_LED_MASK; + //printf("LEDS %02X\n", dev->ledStatus); + /* Call Set LEDS */ + UsbControlTransfer(dev->configEndp, 0x21, USB_REQ_SET_REPORT, 0x200, + dev->interfaceNo, 1, &dev->ledStatus, ps2kbd_led_set, arg); + } + + WaitSema(lineSema); /* Make sure no other thread is going to manipulate the buffer */ + ps2kbd_getkeys(dev->data.mod_keys, dev->ledStatus, uniqueKeys, dev); /* read in remaining keys */ + SignalSema(lineSema); + } + else /* RAW Mode */ + { + WaitSema(lineSema); + ps2kbd_getkeys_raw(dev->data.mod_keys, dev->oldData.mod_keys, uniqueKeys, missingKeys); + SignalSema(lineSema); + } + + memcpy(&dev->oldData, &dev->data, sizeof(kbd_data_recv)); + } + + ret = UsbInterruptTransfer(dev->dataEndp, &dev->data, dev->packetSize, ps2kbd_data_recv, arg); +} + +void flushbuffer() + +{ + iop_sema_t s; + + lineStartP = 0; + lineEndP = 0; + memset(lineBuffer, 0, lineSize); + + DeleteSema(bufferSema); + s.initial = 0; + s.max = lineSize; + s.option = 0; + s.attr = 0; + bufferSema = CreateSema(&s); /* Create a sema to maintain status of readable data */ + + if(bufferSema <= 0) + { + printf("PS2KBD: Error creating buffer sema\n"); + } +} + +void ps2kbd_ioctl_setreadmode(u32 readmode) + +{ + int devLoop; + + if(readmode == kbd_readmode) return; + + if((readmode == PS2KBD_READMODE_NORMAL) || (readmode == PS2KBD_READMODE_RAW)) + { + /* Reset line buffer */ + //printf("ioctl_setreadmode %d\n", readmode); + for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++) + { + CancelAlarm((void *)ps2kbd_repeathandler, devices[devLoop]); + } + + WaitSema(lineSema); + kbd_readmode = readmode; + flushbuffer(); + SignalSema(lineSema); + } +} + +void ps2kbd_ioctl_setkeymap(kbd_keymap *keymaps) + +{ + //printf("ioctl_setkeymap %p\n", keymaps); + WaitSema(lineSema); /* Lock the input so you dont end up with weird results */ + memcpy(keymap, keymaps->keymap, PS2KBD_KEYMAP_SIZE); + memcpy(shiftkeymap, keymaps->shiftkeymap, PS2KBD_KEYMAP_SIZE); + memcpy(keycap, keymaps->keycap, PS2KBD_KEYMAP_SIZE); + SignalSema(lineSema); +} + +void ps2kbd_ioctl_setctrlmap(u8 *ctrlmap) + +{ + //printf("ioctl_setctrlmap %p\n", ctrlmap); + WaitSema(lineSema); + memcpy(control_map, ctrlmap, PS2KBD_KEYMAP_SIZE); + SignalSema(lineSema); +} + +void ps2kbd_ioctl_setaltmap(u8 *altmap) + +{ + //printf("ioctl_setaltmap %p\n", altmap); + WaitSema(lineSema); + memcpy(alt_map, altmap, PS2KBD_KEYMAP_SIZE); + SignalSema(lineSema); +} + +void ps2kbd_ioctl_setspecialmap(u8 *special) + +{ + //printf("ioctl_setspecialmap %p\n", special); + WaitSema(lineSema); + memcpy(special_keys, special, PS2KBD_KEYMAP_SIZE); + SignalSema(lineSema); +} + +void ps2kbd_ioctl_resetkeymap() + /* Reset keymap to default US variety */ + +{ + //printf("ioctl_resetkeymap()\n"); + WaitSema(lineSema); + memcpy(keymap, us_keymap, PS2KBD_KEYMAP_SIZE); + memcpy(shiftkeymap, us_shiftkeymap, PS2KBD_KEYMAP_SIZE); + memcpy(keycap, us_keycap, PS2KBD_KEYMAP_SIZE); + memcpy(special_keys, us_special_keys, PS2KBD_KEYMAP_SIZE); + memcpy(control_map, us_control_map, PS2KBD_KEYMAP_SIZE); + memcpy(alt_map, us_alt_map, PS2KBD_KEYMAP_SIZE); + SignalSema(lineSema); +} + +void ps2kbd_ioctl_flushbuffer() + /* Flush the internal buffer */ + +{ + //printf("ioctl_flushbuffer()\n"); + WaitSema(lineSema); + flushbuffer(); + SignalSema(lineSema); +} + +void ps2kbd_ioctl_setleds(u8 ledStatus) + +{ + int devLoop; + kbd_dev *dev; + + //printf("ioctl_setleds %d\n", ledStatus); + ledStatus &= PS2KBD_LED_MASK; + for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++) + { + dev = devices[devLoop]; + if(dev) + { + if(ledStatus != dev->ledStatus) + { + dev->ledStatus = ledStatus & PS2KBD_LED_MASK; + UsbControlTransfer(dev->configEndp, 0x21, USB_REQ_SET_REPORT, 0x200, + dev->interfaceNo, 1, &dev->ledStatus, ps2kbd_led_set, dev); + } + } + } +} + +void ps2kbd_ioctl_setblockmode(u32 blockmode) + +{ + if((blockmode == PS2KBD_BLOCKING) || (blockmode == PS2KBD_NONBLOCKING)) + { + kbd_blocking = blockmode; + //printf("ioctl_setblockmode %d\n", blockmode); + } +} + +void ps2kbd_ioctl_setrepeatrate(u32 rate) + +{ + kbd_repeatrate = rate; +} + +int fio_dummy() +{ + //printf("fio_dummy()\n"); + return -5; +} + +int fio_init(iop_device_t *driver) +{ + //printf("fio_init()\n"); + return 0; +} + +int fio_format(iop_file_t *f) +{ + //printf("fio_format()\n"); + return 0; +} + +int fio_open(iop_file_t *f, const char *name, int mode) +{ + //printf("fio_open() %s %d\n", name, mode); + if(strcmp(name, PS2KBD_KBDFILE)) /* If not the keyboard file */ + { + return -1; + } + + return 0; +} + +int fio_read(iop_file_t *f, void *buf, int size) + +{ + int count = 0; + char *data = (char *) buf; + int ret; + + //printf("fio_read() %p %d\n", buf, size); + + if(kbd_readmode == PS2KBD_READMODE_RAW) + { + size &= ~1; /* Ensure size of a multiple of 2 */ + } + + ret = PollSema(bufferSema); + if(ret < 0) + { + if((ret == SEMA_ZERO) && (kbd_blocking == PS2KBD_BLOCKING)) + { + //printf("Blocking\n"); + ret = WaitSema(bufferSema); + if(ret < 0) /* Means either an error or the sema was deleted from under us */ + { + return 0; + } + } + else + { + return 0; + } + } + + SignalSema(bufferSema); + ret = WaitSema(lineSema); + if(ret < 0) return 0; + + while((count < size) && (lineStartP != lineEndP)) + { + data[count] = lineBuffer[lineStartP++]; + lineStartP %= lineSize; + count++; + PollSema(bufferSema); /* Take off one count from the sema */ + } + + SignalSema(lineSema); +/* //printf("read %d bytes\n", count); */ +/* { */ +/* struct t_sema_status s; */ + +/* ReferSemaStatus(bufferSema, &s); */ +/* //printf("Sema count %d\n", s.curr_count); */ +/* } */ + + return count; +} + +int fio_ioctl(iop_file_t *f, unsigned long arg, void *param) + +{ + //printf("fio_ioctl() %ld %d\n", arg, *((u32 *) param)); + switch(arg) + { + case PS2KBD_IOCTL_SETREADMODE: ps2kbd_ioctl_setreadmode(*((u32 *) param)); + break; + case PS2KBD_IOCTL_SETKEYMAP: ps2kbd_ioctl_setkeymap((kbd_keymap *) param); + break; + case PS2KBD_IOCTL_SETALTMAP: ps2kbd_ioctl_setaltmap((u8 *) param); + break; + case PS2KBD_IOCTL_SETCTRLMAP: ps2kbd_ioctl_setctrlmap((u8 *) param); + break; + case PS2KBD_IOCTL_SETSPECIALMAP: ps2kbd_ioctl_setspecialmap((u8 *) param); + break; + case PS2KBD_IOCTL_FLUSHBUFFER: ps2kbd_ioctl_flushbuffer(); + break; + case PS2KBD_IOCTL_SETLEDS: ps2kbd_ioctl_setleds(*(u8*) param); + break; + case PS2KBD_IOCTL_SETBLOCKMODE: ps2kbd_ioctl_setblockmode(*(u32 *) param); + break; + case PS2KBD_IOCTL_RESETKEYMAP: ps2kbd_ioctl_resetkeymap(); + break; + case PS2KBD_IOCTL_SETREPEATRATE: ps2kbd_ioctl_setrepeatrate(*(u32 *) param); + break; + default : return -1; + } + + return 0; +} + +int fio_close(iop_file_t *f) + +{ + //printf("fio_close()\n"); + return 0; +} + +iop_device_ops_t fio_ops = + + { + fio_init, + fio_dummy, + fio_format, + fio_open, + fio_close, + fio_read, + fio_dummy, + fio_dummy, + fio_ioctl, + fio_dummy, + fio_dummy, + fio_dummy, + fio_dummy, + fio_dummy, + fio_dummy, + fio_dummy, + fio_dummy + }; + +int init_fio() + +{ + kbd_filedrv.name = PS2KBD_FSNAME; + kbd_filedrv.type = IOP_DT_CHAR; + kbd_filedrv.version = 0; + kbd_filedrv.desc = "USB Keyboard FIO driver"; + kbd_filedrv.ops = &fio_ops; + return AddDrv(&kbd_filedrv); +} + +void repeat_thread(void *arg) + +{ + u32 eventmask; + int devLoop; + + for(;;) + { + WaitEventFlag(eventid, 0xFFFFFFFF, 0x01 | 0x10, &eventmask); + //printf("Recieved event %08X\n", eventmask); + for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++) + { + if((eventmask & (1 << devLoop)) && (devices[devLoop])) + { + int tempPos = 0; + + WaitSema(lineSema); + if(lineStartP < lineEndP) + { + tempPos = lineStartP + lineSize; + } + else + { + tempPos = lineStartP; + } + + if((devices[devLoop]->repeatkeys[0]) && (devices[devLoop]->repeatkeys[1])) + { + if(lineEndP != (tempPos - 2)) + { + lineBuffer[lineEndP++] = devices[devLoop]->repeatkeys[0]; + lineEndP %= lineSize; + lineBuffer[lineEndP++] = devices[devLoop]->repeatkeys[1]; + lineEndP %= lineSize; + SignalSema(bufferSema); + SignalSema(bufferSema); + } + } + else if(devices[devLoop]->repeatkeys[0]) + { + if(lineEndP != (tempPos - 1)) + { + lineBuffer[lineEndP++] = devices[devLoop]->repeatkeys[0]; + lineEndP %= lineSize; + SignalSema(bufferSema); + } + } + + SignalSema(lineSema); + } + } + } +} + +int init_repeatthread() + /* Creates a thread to handle key repeats */ + +{ + iop_thread_t param; + iop_event_t event; + + event.attr = 0; + event.option = 0; + event.bits = 0; + eventid = CreateEventFlag(&event); + + param.attr = TH_C; + param.thread = repeat_thread; + param.priority = 40; + param.stacksize = 0x800; + param.option = 0; + + repeat_tid = CreateThread(¶m); + if (repeat_tid > 0) { + StartThread(repeat_tid, 0); + return 0; + } + else + { + return 1; + } +} + +int ps2kbd_init() + +{ + int ret; + iop_sema_t s; + + s.initial = 1; + s.max = 1; + s.option = 0; + s.attr = 0; + lineSema = CreateSema(&s); + if(lineSema <= 0) + { + printf("PS2KBD: Error creating sema\n"); + return 1; + } + + s.initial = 0; + s.max = PS2KBD_DEFLINELEN; + s.option = 0; + s.attr = 0; + bufferSema = CreateSema(&s); /* Create a sema to maintain status of readable data */ + if(bufferSema <= 0) + { + printf("PS2KBD: Error creating buffer sema\n"); + return 1; + } + + lineBuffer = (u8 *) AllocSysMemory(0, PS2KBD_DEFLINELEN, NULL); + if(lineBuffer == NULL) + { + printf("PS2KBD: Error allocating line buffer\n"); + return 1; + } + lineStartP = 0; + lineEndP = 0; + lineSize = PS2KBD_DEFLINELEN; + memset(lineBuffer, 0, PS2KBD_DEFLINELEN); + + memset(devices, 0, sizeof(kbd_dev *) * PS2KBD_MAXDEV); + dev_count = 0; + kbd_blocking = PS2KBD_NONBLOCKING; + kbd_readmode = PS2KBD_READMODE_NORMAL; + kbd_repeatrate = PS2KBD_DEFREPEATRATE; + memcpy(keymap, us_keymap, PS2KBD_KEYMAP_SIZE); + memcpy(shiftkeymap, us_shiftkeymap, PS2KBD_KEYMAP_SIZE); + memcpy(keycap, us_keycap, PS2KBD_KEYMAP_SIZE); + memcpy(special_keys, us_special_keys, PS2KBD_KEYMAP_SIZE); + memcpy(control_map, us_control_map, PS2KBD_KEYMAP_SIZE); + memcpy(alt_map, us_alt_map, PS2KBD_KEYMAP_SIZE); + + ret = init_fio(); + //printf("ps2kbd AddDrv [%d]\n", ret); + init_repeatthread(); + + ret = UsbRegisterDriver(&kbd_driver); + if(ret != USB_RC_OK) + { + printf("PS2KBD: Error registering USB devices\n"); + return 1; + } + + //printf("UsbRegisterDriver %d\n", ret); + + return 0; +} #endif \ No newline at end of file diff --git a/plugins/USBqemu/qemu-usb/usb-ohci.cpp b/plugins/USBqemu/qemu-usb/usb-ohci.cpp index 84261bed7b..3f7e0c5a17 100644 --- a/plugins/USBqemu/qemu-usb/usb-ohci.cpp +++ b/plugins/USBqemu/qemu-usb/usb-ohci.cpp @@ -1,1512 +1,1512 @@ -/* - * QEMU USB OHCI Emulation - * Copyright (c) 2004 Gianni Tedesco - * Copyright (c) 2006 CodeSourcery - * Copyright (c) 2006 Openedhand Ltd. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, see . - * - * TODO: - * o Isochronous transfers - * o Allocate bandwidth in frames properly - * o Disable timers when nothing needs to be done, or remove timer usage - * all together. - * o Handle unrecoverable errors properly - * o BIOS work to boot from USB storage -*/ - -//typedef CPUReadMemoryFunc - -#include "USBinternal.h" - -s64 last_cycle = 0; -#define MIN_IRQ_INTERVAL 64 /* hack */ - -extern FILE* usbLog; - -int dprintf(const char *fmt,...) -{ -#ifdef DEBUG_OHCI - int t; - va_list list; - - va_start(list, fmt); - t=vfprintf(stderr, fmt, list); - va_end(list); - - if(usbLog) - { - va_start(list, fmt); - vfprintf(usbLog, fmt, list); - va_end(list); - } - - return t; -#else - return 0; -#endif -} - -static int last_level = 0; - -/* Update IRQ levels */ -static inline void ohci_intr_update(OHCIState *ohci) -{ - int level = 0; - - if ((ohci->intr & OHCI_INTR_MIE) && - (ohci->intr_status & ohci->intr)) - level = 1; - - if(level && !last_level) - { - if( (get_clock() - last_cycle) > MIN_IRQ_INTERVAL) - { - USBirq(1); - last_cycle = get_clock(); - } - } -} - -/* Set an interrupt */ -static inline void ohci_set_interrupt(OHCIState *ohci, uint32_t intr) -{ - ohci->intr_status |= intr; - ohci_intr_update(ohci); -} - -/* Attach or detach a device on a root hub port. */ -static void ohci_attach(USBPort *port1) -{ - OHCIState *s = (OHCIState*)port1->opaque; - OHCIPort *port = &s->rhport[port1->index]; - uint32_t old_state = port->ctrl; - - /* set connect status */ - port->ctrl |= OHCI_PORT_CCS | OHCI_PORT_CSC; - - /* update speed */ - if (port->port.dev->speed == USB_SPEED_LOW) { - port->ctrl |= OHCI_PORT_LSDA; - } else { - port->ctrl &= ~OHCI_PORT_LSDA; - } - - /* notify of remote-wakeup */ - if ((s->ctl & OHCI_CTL_HCFS) == OHCI_USB_SUSPEND) { - ohci_set_interrupt(s, OHCI_INTR_RD); - } - - dprintf("usb-ohci: Attached port %d\n", port1->index); - - if (old_state != port->ctrl) { - ohci_set_interrupt(s, OHCI_INTR_RHSC); - } -} - -static void ohci_async_cancel_device(OHCIState *ohci, USBDevice *dev) -{ - if (ohci->async_td && ohci->usb_packet.owner == dev) { - usb_cancel_packet(&ohci->usb_packet); - ohci->async_td = 0; - } -} - -static void ohci_detach(USBPort *port1) -{ - OHCIState *s = (OHCIState*)port1->opaque; - OHCIPort *port = &s->rhport[port1->index]; - uint32_t old_state = port->ctrl; - - ohci_async_cancel_device(s, port1->dev); - - /* set connect status */ - if (port->ctrl & OHCI_PORT_CCS) { - port->ctrl &= ~OHCI_PORT_CCS; - port->ctrl |= OHCI_PORT_CSC; - } - /* disable port */ - if (port->ctrl & OHCI_PORT_PES) { - port->ctrl &= ~OHCI_PORT_PES; - port->ctrl |= OHCI_PORT_PESC; - } - dprintf("usb-ohci: Detached port %d\n", port1->index); - - if (old_state != port->ctrl) { - ohci_set_interrupt(s, OHCI_INTR_RHSC); - } -} - -static void ohci_wakeup(USBPort *port1) -{ - OHCIState *s = (OHCIState*)port1->opaque; - OHCIPort *port = &s->rhport[port1->index]; - uint32_t intr = 0; - if (port->ctrl & OHCI_PORT_PSS) { - dprintf("usb-ohci: port %d: wakeup\n", port1->index); - port->ctrl |= OHCI_PORT_PSSC; - port->ctrl &= ~OHCI_PORT_PSS; - intr = OHCI_INTR_RHSC; - } - /* Note that the controller can be suspended even if this port is not */ - if ((s->ctl & OHCI_CTL_HCFS) == OHCI_USB_SUSPEND) { - dprintf("usb-ohci: remote-wakeup: SUSPEND->RESUME\n"); - /* This is the one state transition the controller can do by itself */ - s->ctl &= ~OHCI_CTL_HCFS; - s->ctl |= OHCI_USB_RESUME; - /* In suspend mode only ResumeDetected is possible, not RHSC: - * see the OHCI spec 5.1.2.3. - */ - intr = OHCI_INTR_RD; - } - ohci_set_interrupt(s, intr); -} - -static void ohci_child_detach(USBPort *port1, USBDevice *child) -{ - OHCIState *s = (OHCIState*)port1->opaque; - - ohci_async_cancel_device(s, child); -} - -/* Reset the controller */ -static void ohci_reset(void *opaque) -{ - OHCIState *ohci = (OHCIState *)opaque; - OHCIPort *port; - int i; - - ohci_bus_stop(ohci); - ohci->ctl = 0; - ohci->old_ctl = 0; - ohci->status = 0; - ohci->intr_status = 0; - ohci->intr = OHCI_INTR_MIE; - - ohci->hcca = 0; - ohci->ctrl_head = ohci->ctrl_cur = 0; - ohci->bulk_head = ohci->bulk_cur = 0; - ohci->per_cur = 0; - ohci->done = 0; - ohci->done_count = 7; - - /* FSMPS is marked TBD in OCHI 1.0, what gives ffs? - * I took the value linux sets ... - */ - ohci->fsmps = 0x2778; - ohci->fi = 0x2edf; - ohci->fit = 0; - ohci->frt = 0; - ohci->frame_number = 0; - ohci->pstart = 0; - ohci->lst = OHCI_LS_THRESH; - - ohci->rhdesc_a = OHCI_RHA_NPS | ohci->num_ports; - ohci->rhdesc_b = 0x0; /* Impl. specific */ - ohci->rhstatus = 0; - - for (i = 0; i < ohci->num_ports; i++) - { - port = &ohci->rhport[i]; - port->ctrl = 0; - if (port->port.dev) { - usb_attach(&port->port, port->port.dev); - } - } - if (ohci->async_td) { - usb_cancel_packet(&ohci->usb_packet); - ohci->async_td = 0; - } - dprintf("usb-ohci: Reset %s\n", ohci->name); -} - -/* Get an array of dwords from main memory */ -static inline int get_dwords(OHCIState *ohci, - uint32_t addr, uint32_t *buf, int num) -{ - int i; - - addr += ohci->localmem_base; - - for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { - cpu_physical_memory_read(addr, (uint8_t*)buf, sizeof(*buf)); - *buf = (*buf); - } - - return 1; -} - -/* Put an array of dwords in to main memory */ -static inline int put_dwords(OHCIState *ohci, - uint32_t addr, uint32_t *buf, int num) -{ - int i; - - addr += ohci->localmem_base; - - for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { - uint32_t tmp = (*buf); - cpu_physical_memory_write(addr, (uint8_t*)&tmp, sizeof(tmp)); - } - - return 1; -} - -/* Get an array of words from main memory */ -static inline int get_words(OHCIState *ohci, - uint32_t addr, uint16_t *buf, int num) -{ - int i; - - addr += ohci->localmem_base; - - for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { - cpu_physical_memory_read(addr, (uint8_t*)buf, sizeof(*buf)); - *buf = (*buf); - } - - return 1; -} - -/* Put an array of words in to main memory */ -static inline int put_words(OHCIState *ohci, - uint32_t addr, uint16_t *buf, int num) -{ - int i; - - addr += ohci->localmem_base; - - for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { - uint16_t tmp = (*buf); - cpu_physical_memory_write(addr, (uint8_t*)&tmp, sizeof(tmp)); - } - - return 1; -} - -static inline int ohci_read_ed(OHCIState *ohci, - uint32_t addr, struct ohci_ed *ed) -{ - return get_dwords(ohci, addr, (uint32_t *)ed, sizeof(*ed) >> 2); -} - -static inline int ohci_read_td(OHCIState *ohci, - uint32_t addr, struct ohci_td *td) -{ - return get_dwords(ohci, addr, (uint32_t *)td, sizeof(*td) >> 2); -} - -static inline int ohci_read_iso_td(OHCIState *ohci, - uint32_t addr, struct ohci_iso_td *td) -{ - return (get_dwords(ohci, addr, (uint32_t *)td, 4) && - get_words(ohci, addr + 16, td->offset, 8)); -} - -static inline int ohci_read_hcca(OHCIState *ohci, - uint32_t addr, struct ohci_hcca *hcca) -{ - cpu_physical_memory_read(addr + ohci->localmem_base, (uint8_t*)hcca, sizeof(*hcca)); - return 1; -} - -static inline int ohci_put_ed(OHCIState *ohci, - uint32_t addr, struct ohci_ed *ed) -{ - return put_dwords(ohci, addr, (uint32_t *)ed, sizeof(*ed) >> 2); -} - -static inline int ohci_put_td(OHCIState *ohci, - uint32_t addr, struct ohci_td *td) -{ - return put_dwords(ohci, addr, (uint32_t *)td, sizeof(*td) >> 2); -} - -static inline int ohci_put_iso_td(OHCIState *ohci, - uint32_t addr, struct ohci_iso_td *td) -{ - return (put_dwords(ohci, addr, (uint32_t *)td, 4) && - put_words(ohci, addr + 16, td->offset, 8)); -} - -static inline int ohci_put_hcca(OHCIState *ohci, - uint32_t addr, struct ohci_hcca *hcca) -{ - cpu_physical_memory_write(addr + ohci->localmem_base, (uint8_t*)hcca, sizeof(*hcca)); - return 1; -} - -/* Read/Write the contents of a TD from/to main memory. */ -static void ohci_copy_td(OHCIState *ohci, struct ohci_td *td, - uint8_t *buf, int len, int write) -{ - uint32_t ptr; - uint32_t n; - - ptr = td->cbp; - n = 0x1000 - (ptr & 0xfff); - if (n > len) - n = len; - cpu_physical_memory_rw(ptr + ohci->localmem_base, buf, n, write); - if (n == len) - return; - ptr = td->be & ~0xfffu; - buf += n; - cpu_physical_memory_rw(ptr + ohci->localmem_base, buf, len - n, write); -} - -/* Read/Write the contents of an ISO TD from/to main memory. */ -static void ohci_copy_iso_td(OHCIState *ohci, - uint32_t start_addr, uint32_t end_addr, - uint8_t *buf, int len, int write) -{ - uint32_t ptr; - uint32_t n; - - ptr = start_addr; - n = 0x1000 - (ptr & 0xfff); - if (n > len) - n = len; - cpu_physical_memory_rw(ptr + ohci->localmem_base, buf, n, write); - if (n == len) - return; - ptr = end_addr & ~0xfffu; - buf += n; - cpu_physical_memory_rw(ptr + ohci->localmem_base, buf, len - n, write); -} - -static void ohci_process_lists(OHCIState *ohci, int completion); - -static void ohci_async_complete_packet(USBPort *port, USBPacket *packet) -{ - OHCIState *ohci = (OHCIState*)packet->owner->opaque; -#ifdef DEBUG_PACKET - dprintf("Async packet complete\n"); -#endif - ohci->async_complete = 1; - ohci_process_lists(ohci, 1); -} - -#define USUB(a, b) ((int16_t)((uint16_t)(a) - (uint16_t)(b))) - -static int ohci_service_iso_td(OHCIState *ohci, struct ohci_ed *ed, - int completion) -{ - int dir; - size_t len = 0; -#ifdef DEBUG_ISOCH - const char *str = NULL; -#endif - int pid; - int ret; - int i; - USBDevice *dev; - struct ohci_iso_td iso_td; - uint32_t addr; - uint16_t starting_frame; - int16_t relative_frame_number; - int frame_count; - uint32_t start_offset, next_offset, end_offset = 0; - uint32_t start_addr, end_addr; - - addr = ed->head & OHCI_DPTR_MASK; - - if (!ohci_read_iso_td(ohci, addr, &iso_td)) { - printf("usb-ohci: ISO_TD read error at %x\n", addr); - return 0; - } - - starting_frame = OHCI_BM(iso_td.flags, TD_SF); - frame_count = OHCI_BM(iso_td.flags, TD_FC); - relative_frame_number = USUB(ohci->frame_number, starting_frame); - -#ifdef DEBUG_ISOCH - printf("--- ISO_TD ED head 0x%.8x tailp 0x%.8x\n" - "0x%.8x 0x%.8x 0x%.8x 0x%.8x\n" - "0x%.8x 0x%.8x 0x%.8x 0x%.8x\n" - "0x%.8x 0x%.8x 0x%.8x 0x%.8x\n" - "frame_number 0x%.8x starting_frame 0x%.8x\n" - "frame_count 0x%.8x relative %d\n" - "di 0x%.8x cc 0x%.8x\n", - ed->head & OHCI_DPTR_MASK, ed->tail & OHCI_DPTR_MASK, - iso_td.flags, iso_td.bp, iso_td.next, iso_td.be, - iso_td.offset[0], iso_td.offset[1], iso_td.offset[2], iso_td.offset[3], - iso_td.offset[4], iso_td.offset[5], iso_td.offset[6], iso_td.offset[7], - ohci->frame_number, starting_frame, - frame_count, relative_frame_number, - OHCI_BM(iso_td.flags, TD_DI), OHCI_BM(iso_td.flags, TD_CC)); -#endif - - if (relative_frame_number < 0) { - dprintf("usb-ohci: ISO_TD R=%d < 0\n", relative_frame_number); - return 1; - } else if (relative_frame_number > frame_count) { - /* ISO TD expired - retire the TD to the Done Queue and continue with - the next ISO TD of the same ED */ - dprintf("usb-ohci: ISO_TD R=%d > FC=%d\n", relative_frame_number, - frame_count); - OHCI_SET_BM(iso_td.flags, TD_CC, OHCI_CC_DATAOVERRUN); - ed->head &= ~OHCI_DPTR_MASK; - ed->head |= (iso_td.next & OHCI_DPTR_MASK); - iso_td.next = ohci->done; - ohci->done = addr; - i = OHCI_BM(iso_td.flags, TD_DI); - if (i < ohci->done_count) - ohci->done_count = i; - ohci_put_iso_td(ohci, addr, &iso_td); - return 0; - } - - dir = OHCI_BM(ed->flags, ED_D); - switch (dir) { - case OHCI_TD_DIR_IN: -#ifdef DEBUG_ISOCH - str = "in"; -#endif - pid = USB_TOKEN_IN; - break; - case OHCI_TD_DIR_OUT: -#ifdef DEBUG_ISOCH - str = "out"; -#endif - pid = USB_TOKEN_OUT; - break; - case OHCI_TD_DIR_SETUP: -#ifdef DEBUG_ISOCH - str = "setup"; -#endif - pid = USB_TOKEN_SETUP; - break; - default: - printf("usb-ohci: Bad direction %d\n", dir); - return 1; - } - - if (!iso_td.bp || !iso_td.be) { - printf("usb-ohci: ISO_TD bp 0x%.8x be 0x%.8x\n", iso_td.bp, iso_td.be); - return 1; - } - - start_offset = iso_td.offset[relative_frame_number]; - next_offset = iso_td.offset[relative_frame_number + 1]; - - if (!(OHCI_BM(start_offset, TD_PSW_CC) & 0xe) || - ((relative_frame_number < frame_count) && - !(OHCI_BM(next_offset, TD_PSW_CC) & 0xe))) { - printf("usb-ohci: ISO_TD cc != not accessed 0x%.8x 0x%.8x\n", - start_offset, next_offset); - return 1; - } - - if ((relative_frame_number < frame_count) && (start_offset > next_offset)) { - printf("usb-ohci: ISO_TD start_offset=0x%.8x > next_offset=0x%.8x\n", - start_offset, next_offset); - return 1; - } - - if ((start_offset & 0x1000) == 0) { - start_addr = (iso_td.bp & OHCI_PAGE_MASK) | - (start_offset & OHCI_OFFSET_MASK); - } else { - start_addr = (iso_td.be & OHCI_PAGE_MASK) | - (start_offset & OHCI_OFFSET_MASK); - } - - if (relative_frame_number < frame_count) { - end_offset = next_offset - 1; - if ((end_offset & 0x1000) == 0) { - end_addr = (iso_td.bp & OHCI_PAGE_MASK) | - (end_offset & OHCI_OFFSET_MASK); - } else { - end_addr = (iso_td.be & OHCI_PAGE_MASK) | - (end_offset & OHCI_OFFSET_MASK); - } - } else { - /* Last packet in the ISO TD */ - end_addr = iso_td.be; - } - - if ((start_addr & OHCI_PAGE_MASK) != (end_addr & OHCI_PAGE_MASK)) { - len = (end_addr & OHCI_OFFSET_MASK) + 0x1001 - - (start_addr & OHCI_OFFSET_MASK); - } else { - len = end_addr - start_addr + 1; - } - - if (len && dir != OHCI_TD_DIR_IN) { - ohci_copy_iso_td(ohci, start_addr, end_addr, ohci->usb_buf, len, 0); - } - - if (completion) { - ret = ohci->usb_packet.len; - } else { - ret = USB_RET_NODEV; - for (i = 0; i < ohci->num_ports; i++) { - dev = ohci->rhport[i].port.dev; - if ((ohci->rhport[i].ctrl & OHCI_PORT_PES) == 0) - continue; - ohci->usb_packet.pid = pid; - ohci->usb_packet.devaddr = OHCI_BM(ed->flags, ED_FA); - ohci->usb_packet.devep = OHCI_BM(ed->flags, ED_EN); - ohci->usb_packet.data = ohci->usb_buf; - ohci->usb_packet.len = len; - ret = usb_handle_packet(dev, &ohci->usb_packet); - if (ret != USB_RET_NODEV) - break; - } - - if (ret == USB_RET_ASYNC) { - return 1; - } - } - -#ifdef DEBUG_ISOCH - printf("so 0x%.8x eo 0x%.8x\nsa 0x%.8x ea 0x%.8x\ndir %s len %zu ret %d\n", - start_offset, end_offset, start_addr, end_addr, str, len, ret); -#endif - - /* Writeback */ - if (dir == OHCI_TD_DIR_IN && ret >= 0 && ret <= len) { - /* IN transfer succeeded */ - ohci_copy_iso_td(ohci, start_addr, end_addr, ohci->usb_buf, ret, 1); - OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, - OHCI_CC_NOERROR); - OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_SIZE, ret); - } else if (dir == OHCI_TD_DIR_OUT && ret == len) { - /* OUT transfer succeeded */ - OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, - OHCI_CC_NOERROR); - OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_SIZE, 0); - } else { - if (ret > (signed) len) { - printf("usb-ohci: DataOverrun %d > %zu\n", ret, len); - OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, - OHCI_CC_DATAOVERRUN); - OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_SIZE, - len); - } else if (ret >= 0) { - printf("usb-ohci: DataUnderrun %d\n", ret); - OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, - OHCI_CC_DATAUNDERRUN); - } else { - switch (ret) { - case USB_RET_NODEV: - OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, - OHCI_CC_DEVICENOTRESPONDING); - OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_SIZE, - 0); - break; - case USB_RET_NAK: - case USB_RET_STALL: - printf("usb-ohci: got NAK/STALL %d\n", ret); - OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, - OHCI_CC_STALL); - OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_SIZE, - 0); - break; - default: - printf("usb-ohci: Bad device response %d\n", ret); - OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, - OHCI_CC_UNDEXPETEDPID); - break; - } - } - } - - if (relative_frame_number == frame_count) { - /* Last data packet of ISO TD - retire the TD to the Done Queue */ - OHCI_SET_BM(iso_td.flags, TD_CC, OHCI_CC_NOERROR); - ed->head &= ~OHCI_DPTR_MASK; - ed->head |= (iso_td.next & OHCI_DPTR_MASK); - iso_td.next = ohci->done; - ohci->done = addr; - i = OHCI_BM(iso_td.flags, TD_DI); - if (i < ohci->done_count) - ohci->done_count = i; - } - ohci_put_iso_td(ohci, addr, &iso_td); - return 1; -} - -/* Service a transport descriptor. - Returns nonzero to terminate processing of this endpoint. */ - -static int ohci_service_td(OHCIState *ohci, struct ohci_ed *ed) -{ - int dir; - size_t len = 0; -#ifdef DEBUG_PACKET - const char *str = NULL; -#endif - int pid; - int ret; - int i; - USBDevice *dev; - struct ohci_td td; - uint32_t addr; - int flag_r; - int completion; - - addr = ed->head & OHCI_DPTR_MASK; - /* See if this TD has already been submitted to the device. */ - completion = (addr == ohci->async_td); - if (completion && !ohci->async_complete) { -#ifdef DEBUG_PACKET - dprintf("Skipping async TD\n"); -#endif - return 1; - } - if (!ohci_read_td(ohci, addr, &td)) { - fprintf(stderr, "usb-ohci: TD read error at %x\n", addr); - return 0; - } - - dir = OHCI_BM(ed->flags, ED_D); - switch (dir) { - case OHCI_TD_DIR_OUT: - case OHCI_TD_DIR_IN: - /* Same value. */ - break; - default: - dir = OHCI_BM(td.flags, TD_DP); - break; - } - - switch (dir) { - case OHCI_TD_DIR_IN: -#ifdef DEBUG_PACKET - str = "in"; -#endif - pid = USB_TOKEN_IN; - break; - case OHCI_TD_DIR_OUT: -#ifdef DEBUG_PACKET - str = "out"; -#endif - pid = USB_TOKEN_OUT; - break; - case OHCI_TD_DIR_SETUP: -#ifdef DEBUG_PACKET - str = "setup"; -#endif - pid = USB_TOKEN_SETUP; - break; - default: - fprintf(stderr, "usb-ohci: Bad direction\n"); - return 1; - } - if (td.cbp && td.be) { - if ((td.cbp & 0xfffff000) != (td.be & 0xfffff000)) { - len = (td.be & 0xfff) + 0x1001 - (td.cbp & 0xfff); - } else { - len = (td.be - td.cbp) + 1; - } - - if (len && dir != OHCI_TD_DIR_IN && !completion) { - ohci_copy_td(ohci, &td, ohci->usb_buf, len, 0); - } - } - - flag_r = (td.flags & OHCI_TD_R) != 0; -#ifdef DEBUG_PACKET - dprintf(" TD @ 0x%.8x %" PRId64 " bytes %s r=%d cbp=0x%.8x be=0x%.8x\n", - addr, (int64_t)len, str, flag_r, td.cbp, td.be); - - if (len > 0 && dir != OHCI_TD_DIR_IN) { - dprintf(" data:"); - for (i = 0; i < len; i++) - printf(" %.2x", ohci->usb_buf[i]); - dprintf("\n"); - } -#endif - if (completion) { - ret = ohci->usb_packet.len; - ohci->async_td = 0; - ohci->async_complete = 0; - } else { - ret = USB_RET_NODEV; - for (i = 0; i < ohci->num_ports; i++) { - dev = ohci->rhport[i].port.dev; - if ((ohci->rhport[i].ctrl & OHCI_PORT_PES) == 0) - continue; - - if (ohci->async_td) { - /* ??? The hardware should allow one active packet per - endpoint. We only allow one active packet per controller. - This should be sufficient as long as devices respond in a - timely manner. - */ -#ifdef DEBUG_PACKET - dprintf("Too many pending packets\n"); -#endif - return 1; - } - ohci->usb_packet.pid = pid; - ohci->usb_packet.devaddr = OHCI_BM(ed->flags, ED_FA); - ohci->usb_packet.devep = OHCI_BM(ed->flags, ED_EN); - ohci->usb_packet.data = ohci->usb_buf; - ohci->usb_packet.len = len; - ret = usb_handle_packet(dev, &ohci->usb_packet); - if (ret != USB_RET_NODEV) - break; - } -#ifdef DEBUG_PACKET - dprintf("ret=%d\n", ret); -#endif - if (ret == USB_RET_ASYNC) { - ohci->async_td = addr; - return 1; - } - } - if (ret >= 0) { - if (dir == OHCI_TD_DIR_IN) { - ohci_copy_td(ohci, &td, ohci->usb_buf, ret, 1); -#ifdef DEBUG_PACKET - dprintf(" data:"); - for (i = 0; i < ret; i++) - printf(" %.2x", ohci->usb_buf[i]); - dprintf("\n"); -#endif - } else { - ret = len; - } - } - - /* Writeback */ - if (ret == len || (dir == OHCI_TD_DIR_IN && ret >= 0 && flag_r)) { - /* Transmission succeeded. */ - if (ret == len) { - td.cbp = 0; - } else { - td.cbp += ret; - if ((td.cbp & 0xfff) + ret > 0xfff) { - td.cbp &= 0xfff; - td.cbp |= td.be & ~0xfff; - } - } - td.flags |= OHCI_TD_T1; - td.flags ^= OHCI_TD_T0; - OHCI_SET_BM(td.flags, TD_CC, OHCI_CC_NOERROR); - OHCI_SET_BM(td.flags, TD_EC, 0); - - ed->head &= ~OHCI_ED_C; - if (td.flags & OHCI_TD_T0) - ed->head |= OHCI_ED_C; - } else { - if (ret >= 0) { - dprintf("usb-ohci: Underrun\n"); - OHCI_SET_BM(td.flags, TD_CC, OHCI_CC_DATAUNDERRUN); - } else { - switch (ret) { - case USB_RET_NODEV: - OHCI_SET_BM(td.flags, TD_CC, OHCI_CC_DEVICENOTRESPONDING); - case USB_RET_NAK: - dprintf("usb-ohci: got NAK\n"); - return 1; - case USB_RET_STALL: - dprintf("usb-ohci: got STALL\n"); - OHCI_SET_BM(td.flags, TD_CC, OHCI_CC_STALL); - break; - case USB_RET_BABBLE: - dprintf("usb-ohci: got BABBLE\n"); - OHCI_SET_BM(td.flags, TD_CC, OHCI_CC_DATAOVERRUN); - break; - default: - fprintf(stderr, "usb-ohci: Bad device response %d\n", ret); - OHCI_SET_BM(td.flags, TD_CC, OHCI_CC_UNDEXPETEDPID); - OHCI_SET_BM(td.flags, TD_EC, 3); - break; - } - } - ed->head |= OHCI_ED_H; - } - - /* Retire this TD */ - ed->head &= ~OHCI_DPTR_MASK; - ed->head |= td.next & OHCI_DPTR_MASK; - td.next = ohci->done; - ohci->done = addr; - i = OHCI_BM(td.flags, TD_DI); - if (i < ohci->done_count) - ohci->done_count = i; - ohci_put_td(ohci, addr, &td); - return OHCI_BM(td.flags, TD_CC) != OHCI_CC_NOERROR; -} - -/* Service an endpoint list. Returns nonzero if active TD were found. */ -static int ohci_service_ed_list(OHCIState *ohci, uint32_t head, int completion) -{ - struct ohci_ed ed; - uint32_t next_ed; - uint32_t cur; - int active; - - active = 0; - - if (head == 0) - return 0; - - for (cur = head; cur; cur = next_ed) { - if (!ohci_read_ed(ohci, cur, &ed)) { - fprintf(stderr, "usb-ohci: ED read error at %x\n", cur); - return 0; - } - - next_ed = ed.next & OHCI_DPTR_MASK; - - if ((ed.head & OHCI_ED_H) || (ed.flags & OHCI_ED_K)) { - uint32_t addr; - /* Cancel pending packets for ED that have been paused. */ - addr = ed.head & OHCI_DPTR_MASK; - if (ohci->async_td && addr == ohci->async_td) { - usb_cancel_packet(&ohci->usb_packet); - ohci->async_td = 0; - } - continue; - } - - while ((ed.head & OHCI_DPTR_MASK) != ed.tail) { -#ifdef DEBUG_PACKET - dprintf("ED @ 0x%.8x fa=%u en=%u d=%u s=%u k=%u f=%u mps=%u " - "h=%u c=%u\n head=0x%.8x tailp=0x%.8x next=0x%.8x\n", cur, - OHCI_BM(ed.flags, ED_FA), OHCI_BM(ed.flags, ED_EN), - OHCI_BM(ed.flags, ED_D), (ed.flags & OHCI_ED_S)!= 0, - (ed.flags & OHCI_ED_K) != 0, (ed.flags & OHCI_ED_F) != 0, - OHCI_BM(ed.flags, ED_MPS), (ed.head & OHCI_ED_H) != 0, - (ed.head & OHCI_ED_C) != 0, ed.head & OHCI_DPTR_MASK, - ed.tail & OHCI_DPTR_MASK, ed.next & OHCI_DPTR_MASK); -#endif - active = 1; - - if ((ed.flags & OHCI_ED_F) == 0) { - if (ohci_service_td(ohci, &ed)) - break; - } else { - /* Handle isochronous endpoints */ - if (ohci_service_iso_td(ohci, &ed, completion)) - break; - } - } - - ohci_put_ed(ohci, cur, &ed); - } - - return active; -} - -/* Generate a SOF event, and set a timer for EOF */ -static void ohci_sof(OHCIState *ohci) -{ - ohci->sof_time = get_clock(); - ohci->eof_timer += usb_frame_time; - //ohci->sof_time = qemu_get_clock_ns(vm_clock); - //qemu_mod_timer(ohci->eof_timer, ohci->sof_time + usb_frame_time); - ohci_set_interrupt(ohci, OHCI_INTR_SF); -} - -/* Process Control and Bulk lists. */ -static void ohci_process_lists(OHCIState *ohci, int completion) -{ - if ((ohci->ctl & OHCI_CTL_CLE) && (ohci->status & OHCI_STATUS_CLF)) { - if (ohci->ctrl_cur && ohci->ctrl_cur != ohci->ctrl_head) { - dprintf("usb-ohci: head %x, cur %x\n", - ohci->ctrl_head, ohci->ctrl_cur); - } - if (!ohci_service_ed_list(ohci, ohci->ctrl_head, completion)) { - ohci->ctrl_cur = 0; - ohci->status &= ~OHCI_STATUS_CLF; - } - } - - if ((ohci->ctl & OHCI_CTL_BLE) && (ohci->status & OHCI_STATUS_BLF)) { - if (!ohci_service_ed_list(ohci, ohci->bulk_head, completion)) { - ohci->bulk_cur = 0; - ohci->status &= ~OHCI_STATUS_BLF; - } - } -} - -/* Do frame processing on frame boundary */ -void ohci_frame_boundary(void *opaque) -{ - OHCIState *ohci = (OHCIState*)opaque; - struct ohci_hcca hcca; - - ohci_read_hcca(ohci, ohci->hcca, &hcca); - - /* Process all the lists at the end of the frame */ - if (ohci->ctl & OHCI_CTL_PLE) { - int n; - - n = ohci->frame_number & 0x1f; - ohci_service_ed_list(ohci, (hcca.intr[n]), 0); - } - - /* Cancel all pending packets if either of the lists has been disabled. */ - if (ohci->async_td && - ohci->old_ctl & (~ohci->ctl) & (OHCI_CTL_BLE | OHCI_CTL_CLE)) { - usb_cancel_packet(&ohci->usb_packet); - ohci->async_td = 0; - } - ohci->old_ctl = ohci->ctl; - ohci_process_lists(ohci, 0); - - /* Frame boundary, so do EOF stuf here */ - ohci->frt = ohci->fit; - - /* Increment frame number and take care of endianness. */ - ohci->frame_number = (ohci->frame_number + 1) & 0xffff; - hcca.frame = (ohci->frame_number); - - if (ohci->done_count == 0 && !(ohci->intr_status & OHCI_INTR_WD)) { - if (!ohci->done) - abort(); - if (ohci->intr & ohci->intr_status) - ohci->done |= 1; - hcca.done = (ohci->done); - ohci->done = 0; - ohci->done_count = 7; - ohci_set_interrupt(ohci, OHCI_INTR_WD); - } - - if (ohci->done_count != 7 && ohci->done_count != 0) - ohci->done_count--; - - /* Do SOF stuff here */ - ohci_sof(ohci); - - /* Writeback HCCA */ - ohci_put_hcca(ohci, ohci->hcca, &hcca); -} - -/* Start sending SOF tokens across the USB bus, lists are processed in - * next frame - */ -static int ohci_bus_start(OHCIState *ohci) -{ - ohci->eof_timer = 0; - - dprintf("usb-ohci: %s: USB Operational\n", ohci->name); - - ohci_sof(ohci); - - return 1; -} - -/* Stop sending SOF tokens on the bus */ -static void ohci_bus_stop(OHCIState *ohci) -{ - if (ohci->eof_timer) - ohci->eof_timer=0; -} - -/* Sets a flag in a port status register but only set it if the port is - * connected, if not set ConnectStatusChange flag. If flag is enabled - * return 1. - */ -static int ohci_port_set_if_connected(OHCIState *ohci, int i, uint32_t val) -{ - int ret = 1; - - /* writing a 0 has no effect */ - if (val == 0) - return 0; - - /* If CurrentConnectStatus is cleared we set - * ConnectStatusChange - */ - if (!(ohci->rhport[i].ctrl & OHCI_PORT_CCS)) { - ohci->rhport[i].ctrl |= OHCI_PORT_CSC; - if (ohci->rhstatus & OHCI_RHS_DRWE) { - /* TODO: CSC is a wakeup event */ - } - return 0; - } - - if (ohci->rhport[i].ctrl & val) - ret = 0; - - /* set the bit */ - ohci->rhport[i].ctrl |= val; - - return ret; -} - -/* Set the frame interval - frame interval toggle is manipulated by the hcd only */ -static void ohci_set_frame_interval(OHCIState *ohci, uint16_t val) -{ - val &= OHCI_FMI_FI; - - if (val != ohci->fi) { - dprintf("usb-ohci: %s: FrameInterval = 0x%x (%u)\n", - ohci->name, ohci->fi, ohci->fi); - } - - ohci->fi = val; -} - -static void ohci_port_power(OHCIState *ohci, int i, int p) -{ - if (p) { - ohci->rhport[i].ctrl |= OHCI_PORT_PPS; - } else { - ohci->rhport[i].ctrl &= ~(OHCI_PORT_PPS| - OHCI_PORT_CCS| - OHCI_PORT_PSS| - OHCI_PORT_PRS); - } -} - -/* Set HcControlRegister */ -static void ohci_set_ctl(OHCIState *ohci, uint32_t val) -{ - uint32_t old_state; - uint32_t new_state; - - old_state = ohci->ctl & OHCI_CTL_HCFS; - ohci->ctl = val; - new_state = ohci->ctl & OHCI_CTL_HCFS; - - /* no state change */ - if (old_state == new_state) - return; - - switch (new_state) { - case OHCI_USB_OPERATIONAL: - ohci_bus_start(ohci); - break; - case OHCI_USB_SUSPEND: - ohci_bus_stop(ohci); - dprintf("usb-ohci: %s: USB Suspended\n", ohci->name); - break; - case OHCI_USB_RESUME: - dprintf("usb-ohci: %s: USB Resume\n", ohci->name); - break; - case OHCI_USB_RESET: - ohci_reset(ohci); - dprintf("usb-ohci: %s: USB Reset\n", ohci->name); - break; - } -} - -static uint32_t ohci_get_frame_remaining(OHCIState *ohci) -{ - uint16_t fr; - int64_t tks; - - if ((ohci->ctl & OHCI_CTL_HCFS) != OHCI_USB_OPERATIONAL) - return (ohci->frt << 31); - - /* Being in USB operational state guarnatees sof_time was - * set already. - */ - tks = get_clock() - ohci->sof_time; - - /* avoid muldiv if possible */ - if (tks >= usb_frame_time) - return (ohci->frt << 31); - - tks = muldiv64(1, tks, usb_bit_time); - fr = (uint16_t)(ohci->fi - tks); - - return (ohci->frt << 31) | fr; -} - - -/* Set root hub status */ -static void ohci_set_hub_status(OHCIState *ohci, uint32_t val) -{ - uint32_t old_state; - - old_state = ohci->rhstatus; - - /* write 1 to clear OCIC */ - if (val & OHCI_RHS_OCIC) - ohci->rhstatus &= ~OHCI_RHS_OCIC; - - if (val & OHCI_RHS_LPS) { - int i; - - for (i = 0; i < ohci->num_ports; i++) - ohci_port_power(ohci, i, 0); - dprintf("usb-ohci: powered down all ports\n"); - } - - if (val & OHCI_RHS_LPSC) { - int i; - - for (i = 0; i < ohci->num_ports; i++) - ohci_port_power(ohci, i, 1); - dprintf("usb-ohci: powered up all ports\n"); - } - - if (val & OHCI_RHS_DRWE) - ohci->rhstatus |= OHCI_RHS_DRWE; - - if (val & OHCI_RHS_CRWE) - ohci->rhstatus &= ~OHCI_RHS_DRWE; - - if (old_state != ohci->rhstatus) - ohci_set_interrupt(ohci, OHCI_INTR_RHSC); -} - -/* Set root hub port status */ -static void ohci_port_set_status(OHCIState *ohci, int portnum, uint32_t val) -{ - uint32_t old_state; - OHCIPort *port; - - port = &ohci->rhport[portnum]; - old_state = port->ctrl; - - /* Write to clear CSC, PESC, PSSC, OCIC, PRSC */ - if (val & OHCI_PORT_WTC) - port->ctrl &= ~(val & OHCI_PORT_WTC); - - if (val & OHCI_PORT_CCS) - port->ctrl &= ~OHCI_PORT_PES; - - ohci_port_set_if_connected(ohci, portnum, val & OHCI_PORT_PES); - - if (ohci_port_set_if_connected(ohci, portnum, val & OHCI_PORT_PSS)) { - dprintf("usb-ohci: port %d: SUSPEND\n", portnum); - } - - if (ohci_port_set_if_connected(ohci, portnum, val & OHCI_PORT_PRS)) { - dprintf("usb-ohci: port %d: RESET\n", portnum); - usb_send_msg(port->port.dev, USB_MSG_RESET); - port->ctrl &= ~OHCI_PORT_PRS; - /* ??? Should this also set OHCI_PORT_PESC. */ - port->ctrl |= OHCI_PORT_PES | OHCI_PORT_PRSC; - } - - /* Invert order here to ensure in ambiguous case, device is - * powered up... - */ - if (val & OHCI_PORT_LSDA) - ohci_port_power(ohci, portnum, 0); - if (val & OHCI_PORT_PPS) - ohci_port_power(ohci, portnum, 1); - - if (old_state != port->ctrl) - ohci_set_interrupt(ohci, OHCI_INTR_RHSC); - - return; -} - -uint32_t ohci_mem_read(void *ptr, target_phys_addr_t addr) -{ - OHCIState *ohci = (OHCIState*)ptr; - uint32_t retval; - - addr &= 0xff; - - /* Only aligned reads are allowed on OHCI */ - if (addr & 3) { - fprintf(stderr, "usb-ohci: Mis-aligned read\n"); - return 0xffffffff; - } else if (addr >= 0x54 && addr < 0x54 + ohci->num_ports * 4) { - /* HcRhPortStatus */ - retval = ohci->rhport[(addr - 0x54) >> 2].ctrl | OHCI_PORT_PPS; - } else { - switch (addr >> 2) { - case 0: /* HcRevision */ - retval = 0x10; - break; - - case 1: /* HcControl */ - retval = ohci->ctl; - break; - - case 2: /* HcCommandStatus */ - retval = ohci->status; - break; - - case 3: /* HcInterruptStatus */ - retval = ohci->intr_status; - break; - - case 4: /* HcInterruptEnable */ - case 5: /* HcInterruptDisable */ - retval = ohci->intr; - break; - - case 6: /* HcHCCA */ - retval = ohci->hcca; - break; - - case 7: /* HcPeriodCurrentED */ - retval = ohci->per_cur; - break; - - case 8: /* HcControlHeadED */ - retval = ohci->ctrl_head; - break; - - case 9: /* HcControlCurrentED */ - retval = ohci->ctrl_cur; - break; - - case 10: /* HcBulkHeadED */ - retval = ohci->bulk_head; - break; - - case 11: /* HcBulkCurrentED */ - retval = ohci->bulk_cur; - break; - - case 12: /* HcDoneHead */ - retval = ohci->done; - break; - - case 13: /* HcFmInterretval */ - retval = (ohci->fit << 31) | (ohci->fsmps << 16) | (ohci->fi); - break; - - case 14: /* HcFmRemaining */ - retval = ohci_get_frame_remaining(ohci); - break; - - case 15: /* HcFmNumber */ - retval = ohci->frame_number; - break; - - case 16: /* HcPeriodicStart */ - retval = ohci->pstart; - break; - - case 17: /* HcLSThreshold */ - retval = ohci->lst; - break; - - case 18: /* HcRhDescriptorA */ - retval = ohci->rhdesc_a; - break; - - case 19: /* HcRhDescriptorB */ - retval = ohci->rhdesc_b; - break; - - case 20: /* HcRhStatus */ - retval = ohci->rhstatus; - break; - - /* PXA27x specific registers */ - case 24: /* HcStatus */ - retval = ohci->hstatus & ohci->hmask; - break; - - case 25: /* HcHReset */ - retval = ohci->hreset; - break; - - case 26: /* HcHInterruptEnable */ - retval = ohci->hmask; - break; - - case 27: /* HcHInterruptTest */ - retval = ohci->htest; - break; - - default: - fprintf(stderr, "ohci_read: Bad offset %x\n", (int)addr); - retval = 0xffffffff; - } - } - - return retval; -} - -void ohci_mem_write(void *ptr, target_phys_addr_t addr, uint32_t val) -{ - OHCIState *ohci = (OHCIState *)ptr; - - addr &= 0xff; - - /* Only aligned reads are allowed on OHCI */ - if (addr & 3) { - fprintf(stderr, "usb-ohci: Mis-aligned write\n"); - return; - } - - if (addr >= 0x54 && addr < 0x54 + ohci->num_ports * 4) { - /* HcRhPortStatus */ - ohci_port_set_status(ohci, (addr - 0x54) >> 2, val); - return; - } - - switch (addr >> 2) { - case 1: /* HcControl */ - ohci_set_ctl(ohci, val); - break; - - case 2: /* HcCommandStatus */ - /* SOC is read-only */ - val = (val & ~OHCI_STATUS_SOC); - - /* Bits written as '0' remain unchanged in the register */ - ohci->status |= val; - - if (ohci->status & OHCI_STATUS_HCR) - ohci_reset(ohci); - break; - - case 3: /* HcInterruptStatus */ - ohci->intr_status &= ~val; - ohci_intr_update(ohci); - break; - - case 4: /* HcInterruptEnable */ - ohci->intr |= val; - ohci_intr_update(ohci); - break; - - case 5: /* HcInterruptDisable */ - ohci->intr &= ~val; - ohci_intr_update(ohci); - break; - - case 6: /* HcHCCA */ - ohci->hcca = val & OHCI_HCCA_MASK; - break; - - case 7: /* HcPeriodCurrentED */ - /* Ignore writes to this read-only register, Linux does them */ - break; - - case 8: /* HcControlHeadED */ - ohci->ctrl_head = val & OHCI_EDPTR_MASK; - break; - - case 9: /* HcControlCurrentED */ - ohci->ctrl_cur = val & OHCI_EDPTR_MASK; - break; - - case 10: /* HcBulkHeadED */ - ohci->bulk_head = val & OHCI_EDPTR_MASK; - break; - - case 11: /* HcBulkCurrentED */ - ohci->bulk_cur = val & OHCI_EDPTR_MASK; - break; - - case 13: /* HcFmInterval */ - ohci->fsmps = (val & OHCI_FMI_FSMPS) >> 16; - ohci->fit = (val & OHCI_FMI_FIT) >> 31; - ohci_set_frame_interval(ohci, val); - break; - - case 15: /* HcFmNumber */ - break; - - case 16: /* HcPeriodicStart */ - ohci->pstart = val & 0xffff; - break; - - case 17: /* HcLSThreshold */ - ohci->lst = val & 0xffff; - break; - - case 18: /* HcRhDescriptorA */ - ohci->rhdesc_a &= ~OHCI_RHA_RW_MASK; - ohci->rhdesc_a |= val & OHCI_RHA_RW_MASK; - break; - - case 19: /* HcRhDescriptorB */ - break; - - case 20: /* HcRhStatus */ - ohci_set_hub_status(ohci, val); - break; - - /* PXA27x specific registers */ - case 24: /* HcStatus */ - ohci->hstatus &= ~(val & ohci->hmask); - - case 25: /* HcHReset */ - ohci->hreset = val & ~OHCI_HRESET_FSBIR; - if (val & OHCI_HRESET_FSBIR) - ohci_reset(ohci); - break; - - case 26: /* HcHInterruptEnable */ - ohci->hmask = val; - break; - - case 27: /* HcHInterruptTest */ - ohci->htest = val; - break; - - default: - fprintf(stderr, "ohci_write: Bad offset %x\n", (int)addr); - break; - } -} - -static USBPortOps ohci_port_ops = { - ohci_attach, - ohci_detach, - ohci_child_detach, - ohci_wakeup, - ohci_async_complete_packet, -}; - -static USBBusOps ohci_bus_ops = { -}; - -OHCIState *ohci_create(uint32_t base, int ports) -{ - OHCIState *ohci=(OHCIState*)malloc(sizeof(OHCIState)); - int i; - - memset(ohci,0,sizeof(OHCIState)); - - //ohci->localmem_base=base; - - ohci->mem = base; - //ohci->mem = cpu_register_io_memory(ohci_readfn, ohci_writefn, ohci); - //ohci->localmem_base = localmem_base; - ohci->name = "USBemu"; - - //ohci->irq = irq; - //ohci->type = type; - - - if (usb_frame_time == 0) { -#ifdef OHCI_TIME_WARP - usb_frame_time = get_ticks_per_sec(); - usb_bit_time = muldiv64(1, get_ticks_per_sec(), USB_HZ/1000); -#else - usb_frame_time = muldiv64(1, get_ticks_per_sec(), 1000); - if (get_ticks_per_sec() >= USB_HZ) { - usb_bit_time = muldiv64(1, get_ticks_per_sec(), USB_HZ); - } else { - usb_bit_time = 1; - } -#endif - dprintf("usb-ohci: usb_bit_time=%" PRId64 " usb_frame_time=%" PRId64 "\n", - usb_frame_time, usb_bit_time); - } - - ohci->num_ports = ports; - for (i = 0; i < ports; i++) { - ohci->rhport[i].port.opaque = ohci; - ohci->rhport[i].port.index = i; - ohci->rhport[i].port.ops = &ohci_port_ops; - } - - ohci->async_td = 0; - - return ohci; -} +/* + * QEMU USB OHCI Emulation + * Copyright (c) 2004 Gianni Tedesco + * Copyright (c) 2006 CodeSourcery + * Copyright (c) 2006 Openedhand Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * TODO: + * o Isochronous transfers + * o Allocate bandwidth in frames properly + * o Disable timers when nothing needs to be done, or remove timer usage + * all together. + * o Handle unrecoverable errors properly + * o BIOS work to boot from USB storage +*/ + +//typedef CPUReadMemoryFunc + +#include "USBinternal.h" + +s64 last_cycle = 0; +#define MIN_IRQ_INTERVAL 64 /* hack */ + +extern FILE* usbLog; + +int dprintf(const char *fmt,...) +{ +#ifdef DEBUG_OHCI + int t; + va_list list; + + va_start(list, fmt); + t=vfprintf(stderr, fmt, list); + va_end(list); + + if(usbLog) + { + va_start(list, fmt); + vfprintf(usbLog, fmt, list); + va_end(list); + } + + return t; +#else + return 0; +#endif +} + +static int last_level = 0; + +/* Update IRQ levels */ +static inline void ohci_intr_update(OHCIState *ohci) +{ + int level = 0; + + if ((ohci->intr & OHCI_INTR_MIE) && + (ohci->intr_status & ohci->intr)) + level = 1; + + if(level && !last_level) + { + if( (get_clock() - last_cycle) > MIN_IRQ_INTERVAL) + { + USBirq(1); + last_cycle = get_clock(); + } + } +} + +/* Set an interrupt */ +static inline void ohci_set_interrupt(OHCIState *ohci, uint32_t intr) +{ + ohci->intr_status |= intr; + ohci_intr_update(ohci); +} + +/* Attach or detach a device on a root hub port. */ +static void ohci_attach(USBPort *port1) +{ + OHCIState *s = (OHCIState*)port1->opaque; + OHCIPort *port = &s->rhport[port1->index]; + uint32_t old_state = port->ctrl; + + /* set connect status */ + port->ctrl |= OHCI_PORT_CCS | OHCI_PORT_CSC; + + /* update speed */ + if (port->port.dev->speed == USB_SPEED_LOW) { + port->ctrl |= OHCI_PORT_LSDA; + } else { + port->ctrl &= ~OHCI_PORT_LSDA; + } + + /* notify of remote-wakeup */ + if ((s->ctl & OHCI_CTL_HCFS) == OHCI_USB_SUSPEND) { + ohci_set_interrupt(s, OHCI_INTR_RD); + } + + dprintf("usb-ohci: Attached port %d\n", port1->index); + + if (old_state != port->ctrl) { + ohci_set_interrupt(s, OHCI_INTR_RHSC); + } +} + +static void ohci_async_cancel_device(OHCIState *ohci, USBDevice *dev) +{ + if (ohci->async_td && ohci->usb_packet.owner == dev) { + usb_cancel_packet(&ohci->usb_packet); + ohci->async_td = 0; + } +} + +static void ohci_detach(USBPort *port1) +{ + OHCIState *s = (OHCIState*)port1->opaque; + OHCIPort *port = &s->rhport[port1->index]; + uint32_t old_state = port->ctrl; + + ohci_async_cancel_device(s, port1->dev); + + /* set connect status */ + if (port->ctrl & OHCI_PORT_CCS) { + port->ctrl &= ~OHCI_PORT_CCS; + port->ctrl |= OHCI_PORT_CSC; + } + /* disable port */ + if (port->ctrl & OHCI_PORT_PES) { + port->ctrl &= ~OHCI_PORT_PES; + port->ctrl |= OHCI_PORT_PESC; + } + dprintf("usb-ohci: Detached port %d\n", port1->index); + + if (old_state != port->ctrl) { + ohci_set_interrupt(s, OHCI_INTR_RHSC); + } +} + +static void ohci_wakeup(USBPort *port1) +{ + OHCIState *s = (OHCIState*)port1->opaque; + OHCIPort *port = &s->rhport[port1->index]; + uint32_t intr = 0; + if (port->ctrl & OHCI_PORT_PSS) { + dprintf("usb-ohci: port %d: wakeup\n", port1->index); + port->ctrl |= OHCI_PORT_PSSC; + port->ctrl &= ~OHCI_PORT_PSS; + intr = OHCI_INTR_RHSC; + } + /* Note that the controller can be suspended even if this port is not */ + if ((s->ctl & OHCI_CTL_HCFS) == OHCI_USB_SUSPEND) { + dprintf("usb-ohci: remote-wakeup: SUSPEND->RESUME\n"); + /* This is the one state transition the controller can do by itself */ + s->ctl &= ~OHCI_CTL_HCFS; + s->ctl |= OHCI_USB_RESUME; + /* In suspend mode only ResumeDetected is possible, not RHSC: + * see the OHCI spec 5.1.2.3. + */ + intr = OHCI_INTR_RD; + } + ohci_set_interrupt(s, intr); +} + +static void ohci_child_detach(USBPort *port1, USBDevice *child) +{ + OHCIState *s = (OHCIState*)port1->opaque; + + ohci_async_cancel_device(s, child); +} + +/* Reset the controller */ +static void ohci_reset(void *opaque) +{ + OHCIState *ohci = (OHCIState *)opaque; + OHCIPort *port; + int i; + + ohci_bus_stop(ohci); + ohci->ctl = 0; + ohci->old_ctl = 0; + ohci->status = 0; + ohci->intr_status = 0; + ohci->intr = OHCI_INTR_MIE; + + ohci->hcca = 0; + ohci->ctrl_head = ohci->ctrl_cur = 0; + ohci->bulk_head = ohci->bulk_cur = 0; + ohci->per_cur = 0; + ohci->done = 0; + ohci->done_count = 7; + + /* FSMPS is marked TBD in OCHI 1.0, what gives ffs? + * I took the value linux sets ... + */ + ohci->fsmps = 0x2778; + ohci->fi = 0x2edf; + ohci->fit = 0; + ohci->frt = 0; + ohci->frame_number = 0; + ohci->pstart = 0; + ohci->lst = OHCI_LS_THRESH; + + ohci->rhdesc_a = OHCI_RHA_NPS | ohci->num_ports; + ohci->rhdesc_b = 0x0; /* Impl. specific */ + ohci->rhstatus = 0; + + for (i = 0; i < ohci->num_ports; i++) + { + port = &ohci->rhport[i]; + port->ctrl = 0; + if (port->port.dev) { + usb_attach(&port->port, port->port.dev); + } + } + if (ohci->async_td) { + usb_cancel_packet(&ohci->usb_packet); + ohci->async_td = 0; + } + dprintf("usb-ohci: Reset %s\n", ohci->name); +} + +/* Get an array of dwords from main memory */ +static inline int get_dwords(OHCIState *ohci, + uint32_t addr, uint32_t *buf, int num) +{ + int i; + + addr += ohci->localmem_base; + + for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { + cpu_physical_memory_read(addr, (uint8_t*)buf, sizeof(*buf)); + *buf = (*buf); + } + + return 1; +} + +/* Put an array of dwords in to main memory */ +static inline int put_dwords(OHCIState *ohci, + uint32_t addr, uint32_t *buf, int num) +{ + int i; + + addr += ohci->localmem_base; + + for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { + uint32_t tmp = (*buf); + cpu_physical_memory_write(addr, (uint8_t*)&tmp, sizeof(tmp)); + } + + return 1; +} + +/* Get an array of words from main memory */ +static inline int get_words(OHCIState *ohci, + uint32_t addr, uint16_t *buf, int num) +{ + int i; + + addr += ohci->localmem_base; + + for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { + cpu_physical_memory_read(addr, (uint8_t*)buf, sizeof(*buf)); + *buf = (*buf); + } + + return 1; +} + +/* Put an array of words in to main memory */ +static inline int put_words(OHCIState *ohci, + uint32_t addr, uint16_t *buf, int num) +{ + int i; + + addr += ohci->localmem_base; + + for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { + uint16_t tmp = (*buf); + cpu_physical_memory_write(addr, (uint8_t*)&tmp, sizeof(tmp)); + } + + return 1; +} + +static inline int ohci_read_ed(OHCIState *ohci, + uint32_t addr, struct ohci_ed *ed) +{ + return get_dwords(ohci, addr, (uint32_t *)ed, sizeof(*ed) >> 2); +} + +static inline int ohci_read_td(OHCIState *ohci, + uint32_t addr, struct ohci_td *td) +{ + return get_dwords(ohci, addr, (uint32_t *)td, sizeof(*td) >> 2); +} + +static inline int ohci_read_iso_td(OHCIState *ohci, + uint32_t addr, struct ohci_iso_td *td) +{ + return (get_dwords(ohci, addr, (uint32_t *)td, 4) && + get_words(ohci, addr + 16, td->offset, 8)); +} + +static inline int ohci_read_hcca(OHCIState *ohci, + uint32_t addr, struct ohci_hcca *hcca) +{ + cpu_physical_memory_read(addr + ohci->localmem_base, (uint8_t*)hcca, sizeof(*hcca)); + return 1; +} + +static inline int ohci_put_ed(OHCIState *ohci, + uint32_t addr, struct ohci_ed *ed) +{ + return put_dwords(ohci, addr, (uint32_t *)ed, sizeof(*ed) >> 2); +} + +static inline int ohci_put_td(OHCIState *ohci, + uint32_t addr, struct ohci_td *td) +{ + return put_dwords(ohci, addr, (uint32_t *)td, sizeof(*td) >> 2); +} + +static inline int ohci_put_iso_td(OHCIState *ohci, + uint32_t addr, struct ohci_iso_td *td) +{ + return (put_dwords(ohci, addr, (uint32_t *)td, 4) && + put_words(ohci, addr + 16, td->offset, 8)); +} + +static inline int ohci_put_hcca(OHCIState *ohci, + uint32_t addr, struct ohci_hcca *hcca) +{ + cpu_physical_memory_write(addr + ohci->localmem_base, (uint8_t*)hcca, sizeof(*hcca)); + return 1; +} + +/* Read/Write the contents of a TD from/to main memory. */ +static void ohci_copy_td(OHCIState *ohci, struct ohci_td *td, + uint8_t *buf, int len, int write) +{ + uint32_t ptr; + uint32_t n; + + ptr = td->cbp; + n = 0x1000 - (ptr & 0xfff); + if (n > len) + n = len; + cpu_physical_memory_rw(ptr + ohci->localmem_base, buf, n, write); + if (n == len) + return; + ptr = td->be & ~0xfffu; + buf += n; + cpu_physical_memory_rw(ptr + ohci->localmem_base, buf, len - n, write); +} + +/* Read/Write the contents of an ISO TD from/to main memory. */ +static void ohci_copy_iso_td(OHCIState *ohci, + uint32_t start_addr, uint32_t end_addr, + uint8_t *buf, int len, int write) +{ + uint32_t ptr; + uint32_t n; + + ptr = start_addr; + n = 0x1000 - (ptr & 0xfff); + if (n > len) + n = len; + cpu_physical_memory_rw(ptr + ohci->localmem_base, buf, n, write); + if (n == len) + return; + ptr = end_addr & ~0xfffu; + buf += n; + cpu_physical_memory_rw(ptr + ohci->localmem_base, buf, len - n, write); +} + +static void ohci_process_lists(OHCIState *ohci, int completion); + +static void ohci_async_complete_packet(USBPort *port, USBPacket *packet) +{ + OHCIState *ohci = (OHCIState*)packet->owner->opaque; +#ifdef DEBUG_PACKET + dprintf("Async packet complete\n"); +#endif + ohci->async_complete = 1; + ohci_process_lists(ohci, 1); +} + +#define USUB(a, b) ((int16_t)((uint16_t)(a) - (uint16_t)(b))) + +static int ohci_service_iso_td(OHCIState *ohci, struct ohci_ed *ed, + int completion) +{ + int dir; + size_t len = 0; +#ifdef DEBUG_ISOCH + const char *str = NULL; +#endif + int pid; + int ret; + int i; + USBDevice *dev; + struct ohci_iso_td iso_td; + uint32_t addr; + uint16_t starting_frame; + int16_t relative_frame_number; + int frame_count; + uint32_t start_offset, next_offset, end_offset = 0; + uint32_t start_addr, end_addr; + + addr = ed->head & OHCI_DPTR_MASK; + + if (!ohci_read_iso_td(ohci, addr, &iso_td)) { + printf("usb-ohci: ISO_TD read error at %x\n", addr); + return 0; + } + + starting_frame = OHCI_BM(iso_td.flags, TD_SF); + frame_count = OHCI_BM(iso_td.flags, TD_FC); + relative_frame_number = USUB(ohci->frame_number, starting_frame); + +#ifdef DEBUG_ISOCH + printf("--- ISO_TD ED head 0x%.8x tailp 0x%.8x\n" + "0x%.8x 0x%.8x 0x%.8x 0x%.8x\n" + "0x%.8x 0x%.8x 0x%.8x 0x%.8x\n" + "0x%.8x 0x%.8x 0x%.8x 0x%.8x\n" + "frame_number 0x%.8x starting_frame 0x%.8x\n" + "frame_count 0x%.8x relative %d\n" + "di 0x%.8x cc 0x%.8x\n", + ed->head & OHCI_DPTR_MASK, ed->tail & OHCI_DPTR_MASK, + iso_td.flags, iso_td.bp, iso_td.next, iso_td.be, + iso_td.offset[0], iso_td.offset[1], iso_td.offset[2], iso_td.offset[3], + iso_td.offset[4], iso_td.offset[5], iso_td.offset[6], iso_td.offset[7], + ohci->frame_number, starting_frame, + frame_count, relative_frame_number, + OHCI_BM(iso_td.flags, TD_DI), OHCI_BM(iso_td.flags, TD_CC)); +#endif + + if (relative_frame_number < 0) { + dprintf("usb-ohci: ISO_TD R=%d < 0\n", relative_frame_number); + return 1; + } else if (relative_frame_number > frame_count) { + /* ISO TD expired - retire the TD to the Done Queue and continue with + the next ISO TD of the same ED */ + dprintf("usb-ohci: ISO_TD R=%d > FC=%d\n", relative_frame_number, + frame_count); + OHCI_SET_BM(iso_td.flags, TD_CC, OHCI_CC_DATAOVERRUN); + ed->head &= ~OHCI_DPTR_MASK; + ed->head |= (iso_td.next & OHCI_DPTR_MASK); + iso_td.next = ohci->done; + ohci->done = addr; + i = OHCI_BM(iso_td.flags, TD_DI); + if (i < ohci->done_count) + ohci->done_count = i; + ohci_put_iso_td(ohci, addr, &iso_td); + return 0; + } + + dir = OHCI_BM(ed->flags, ED_D); + switch (dir) { + case OHCI_TD_DIR_IN: +#ifdef DEBUG_ISOCH + str = "in"; +#endif + pid = USB_TOKEN_IN; + break; + case OHCI_TD_DIR_OUT: +#ifdef DEBUG_ISOCH + str = "out"; +#endif + pid = USB_TOKEN_OUT; + break; + case OHCI_TD_DIR_SETUP: +#ifdef DEBUG_ISOCH + str = "setup"; +#endif + pid = USB_TOKEN_SETUP; + break; + default: + printf("usb-ohci: Bad direction %d\n", dir); + return 1; + } + + if (!iso_td.bp || !iso_td.be) { + printf("usb-ohci: ISO_TD bp 0x%.8x be 0x%.8x\n", iso_td.bp, iso_td.be); + return 1; + } + + start_offset = iso_td.offset[relative_frame_number]; + next_offset = iso_td.offset[relative_frame_number + 1]; + + if (!(OHCI_BM(start_offset, TD_PSW_CC) & 0xe) || + ((relative_frame_number < frame_count) && + !(OHCI_BM(next_offset, TD_PSW_CC) & 0xe))) { + printf("usb-ohci: ISO_TD cc != not accessed 0x%.8x 0x%.8x\n", + start_offset, next_offset); + return 1; + } + + if ((relative_frame_number < frame_count) && (start_offset > next_offset)) { + printf("usb-ohci: ISO_TD start_offset=0x%.8x > next_offset=0x%.8x\n", + start_offset, next_offset); + return 1; + } + + if ((start_offset & 0x1000) == 0) { + start_addr = (iso_td.bp & OHCI_PAGE_MASK) | + (start_offset & OHCI_OFFSET_MASK); + } else { + start_addr = (iso_td.be & OHCI_PAGE_MASK) | + (start_offset & OHCI_OFFSET_MASK); + } + + if (relative_frame_number < frame_count) { + end_offset = next_offset - 1; + if ((end_offset & 0x1000) == 0) { + end_addr = (iso_td.bp & OHCI_PAGE_MASK) | + (end_offset & OHCI_OFFSET_MASK); + } else { + end_addr = (iso_td.be & OHCI_PAGE_MASK) | + (end_offset & OHCI_OFFSET_MASK); + } + } else { + /* Last packet in the ISO TD */ + end_addr = iso_td.be; + } + + if ((start_addr & OHCI_PAGE_MASK) != (end_addr & OHCI_PAGE_MASK)) { + len = (end_addr & OHCI_OFFSET_MASK) + 0x1001 + - (start_addr & OHCI_OFFSET_MASK); + } else { + len = end_addr - start_addr + 1; + } + + if (len && dir != OHCI_TD_DIR_IN) { + ohci_copy_iso_td(ohci, start_addr, end_addr, ohci->usb_buf, len, 0); + } + + if (completion) { + ret = ohci->usb_packet.len; + } else { + ret = USB_RET_NODEV; + for (i = 0; i < ohci->num_ports; i++) { + dev = ohci->rhport[i].port.dev; + if ((ohci->rhport[i].ctrl & OHCI_PORT_PES) == 0) + continue; + ohci->usb_packet.pid = pid; + ohci->usb_packet.devaddr = OHCI_BM(ed->flags, ED_FA); + ohci->usb_packet.devep = OHCI_BM(ed->flags, ED_EN); + ohci->usb_packet.data = ohci->usb_buf; + ohci->usb_packet.len = len; + ret = usb_handle_packet(dev, &ohci->usb_packet); + if (ret != USB_RET_NODEV) + break; + } + + if (ret == USB_RET_ASYNC) { + return 1; + } + } + +#ifdef DEBUG_ISOCH + printf("so 0x%.8x eo 0x%.8x\nsa 0x%.8x ea 0x%.8x\ndir %s len %zu ret %d\n", + start_offset, end_offset, start_addr, end_addr, str, len, ret); +#endif + + /* Writeback */ + if (dir == OHCI_TD_DIR_IN && ret >= 0 && ret <= len) { + /* IN transfer succeeded */ + ohci_copy_iso_td(ohci, start_addr, end_addr, ohci->usb_buf, ret, 1); + OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, + OHCI_CC_NOERROR); + OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_SIZE, ret); + } else if (dir == OHCI_TD_DIR_OUT && ret == len) { + /* OUT transfer succeeded */ + OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, + OHCI_CC_NOERROR); + OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_SIZE, 0); + } else { + if (ret > (signed) len) { + printf("usb-ohci: DataOverrun %d > %zu\n", ret, len); + OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, + OHCI_CC_DATAOVERRUN); + OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_SIZE, + len); + } else if (ret >= 0) { + printf("usb-ohci: DataUnderrun %d\n", ret); + OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, + OHCI_CC_DATAUNDERRUN); + } else { + switch (ret) { + case USB_RET_NODEV: + OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, + OHCI_CC_DEVICENOTRESPONDING); + OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_SIZE, + 0); + break; + case USB_RET_NAK: + case USB_RET_STALL: + printf("usb-ohci: got NAK/STALL %d\n", ret); + OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, + OHCI_CC_STALL); + OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_SIZE, + 0); + break; + default: + printf("usb-ohci: Bad device response %d\n", ret); + OHCI_SET_BM(iso_td.offset[relative_frame_number], TD_PSW_CC, + OHCI_CC_UNDEXPETEDPID); + break; + } + } + } + + if (relative_frame_number == frame_count) { + /* Last data packet of ISO TD - retire the TD to the Done Queue */ + OHCI_SET_BM(iso_td.flags, TD_CC, OHCI_CC_NOERROR); + ed->head &= ~OHCI_DPTR_MASK; + ed->head |= (iso_td.next & OHCI_DPTR_MASK); + iso_td.next = ohci->done; + ohci->done = addr; + i = OHCI_BM(iso_td.flags, TD_DI); + if (i < ohci->done_count) + ohci->done_count = i; + } + ohci_put_iso_td(ohci, addr, &iso_td); + return 1; +} + +/* Service a transport descriptor. + Returns nonzero to terminate processing of this endpoint. */ + +static int ohci_service_td(OHCIState *ohci, struct ohci_ed *ed) +{ + int dir; + size_t len = 0; +#ifdef DEBUG_PACKET + const char *str = NULL; +#endif + int pid; + int ret; + int i; + USBDevice *dev; + struct ohci_td td; + uint32_t addr; + int flag_r; + int completion; + + addr = ed->head & OHCI_DPTR_MASK; + /* See if this TD has already been submitted to the device. */ + completion = (addr == ohci->async_td); + if (completion && !ohci->async_complete) { +#ifdef DEBUG_PACKET + dprintf("Skipping async TD\n"); +#endif + return 1; + } + if (!ohci_read_td(ohci, addr, &td)) { + fprintf(stderr, "usb-ohci: TD read error at %x\n", addr); + return 0; + } + + dir = OHCI_BM(ed->flags, ED_D); + switch (dir) { + case OHCI_TD_DIR_OUT: + case OHCI_TD_DIR_IN: + /* Same value. */ + break; + default: + dir = OHCI_BM(td.flags, TD_DP); + break; + } + + switch (dir) { + case OHCI_TD_DIR_IN: +#ifdef DEBUG_PACKET + str = "in"; +#endif + pid = USB_TOKEN_IN; + break; + case OHCI_TD_DIR_OUT: +#ifdef DEBUG_PACKET + str = "out"; +#endif + pid = USB_TOKEN_OUT; + break; + case OHCI_TD_DIR_SETUP: +#ifdef DEBUG_PACKET + str = "setup"; +#endif + pid = USB_TOKEN_SETUP; + break; + default: + fprintf(stderr, "usb-ohci: Bad direction\n"); + return 1; + } + if (td.cbp && td.be) { + if ((td.cbp & 0xfffff000) != (td.be & 0xfffff000)) { + len = (td.be & 0xfff) + 0x1001 - (td.cbp & 0xfff); + } else { + len = (td.be - td.cbp) + 1; + } + + if (len && dir != OHCI_TD_DIR_IN && !completion) { + ohci_copy_td(ohci, &td, ohci->usb_buf, len, 0); + } + } + + flag_r = (td.flags & OHCI_TD_R) != 0; +#ifdef DEBUG_PACKET + dprintf(" TD @ 0x%.8x %" PRId64 " bytes %s r=%d cbp=0x%.8x be=0x%.8x\n", + addr, (int64_t)len, str, flag_r, td.cbp, td.be); + + if (len > 0 && dir != OHCI_TD_DIR_IN) { + dprintf(" data:"); + for (i = 0; i < len; i++) + printf(" %.2x", ohci->usb_buf[i]); + dprintf("\n"); + } +#endif + if (completion) { + ret = ohci->usb_packet.len; + ohci->async_td = 0; + ohci->async_complete = 0; + } else { + ret = USB_RET_NODEV; + for (i = 0; i < ohci->num_ports; i++) { + dev = ohci->rhport[i].port.dev; + if ((ohci->rhport[i].ctrl & OHCI_PORT_PES) == 0) + continue; + + if (ohci->async_td) { + /* ??? The hardware should allow one active packet per + endpoint. We only allow one active packet per controller. + This should be sufficient as long as devices respond in a + timely manner. + */ +#ifdef DEBUG_PACKET + dprintf("Too many pending packets\n"); +#endif + return 1; + } + ohci->usb_packet.pid = pid; + ohci->usb_packet.devaddr = OHCI_BM(ed->flags, ED_FA); + ohci->usb_packet.devep = OHCI_BM(ed->flags, ED_EN); + ohci->usb_packet.data = ohci->usb_buf; + ohci->usb_packet.len = len; + ret = usb_handle_packet(dev, &ohci->usb_packet); + if (ret != USB_RET_NODEV) + break; + } +#ifdef DEBUG_PACKET + dprintf("ret=%d\n", ret); +#endif + if (ret == USB_RET_ASYNC) { + ohci->async_td = addr; + return 1; + } + } + if (ret >= 0) { + if (dir == OHCI_TD_DIR_IN) { + ohci_copy_td(ohci, &td, ohci->usb_buf, ret, 1); +#ifdef DEBUG_PACKET + dprintf(" data:"); + for (i = 0; i < ret; i++) + printf(" %.2x", ohci->usb_buf[i]); + dprintf("\n"); +#endif + } else { + ret = len; + } + } + + /* Writeback */ + if (ret == len || (dir == OHCI_TD_DIR_IN && ret >= 0 && flag_r)) { + /* Transmission succeeded. */ + if (ret == len) { + td.cbp = 0; + } else { + td.cbp += ret; + if ((td.cbp & 0xfff) + ret > 0xfff) { + td.cbp &= 0xfff; + td.cbp |= td.be & ~0xfff; + } + } + td.flags |= OHCI_TD_T1; + td.flags ^= OHCI_TD_T0; + OHCI_SET_BM(td.flags, TD_CC, OHCI_CC_NOERROR); + OHCI_SET_BM(td.flags, TD_EC, 0); + + ed->head &= ~OHCI_ED_C; + if (td.flags & OHCI_TD_T0) + ed->head |= OHCI_ED_C; + } else { + if (ret >= 0) { + dprintf("usb-ohci: Underrun\n"); + OHCI_SET_BM(td.flags, TD_CC, OHCI_CC_DATAUNDERRUN); + } else { + switch (ret) { + case USB_RET_NODEV: + OHCI_SET_BM(td.flags, TD_CC, OHCI_CC_DEVICENOTRESPONDING); + case USB_RET_NAK: + dprintf("usb-ohci: got NAK\n"); + return 1; + case USB_RET_STALL: + dprintf("usb-ohci: got STALL\n"); + OHCI_SET_BM(td.flags, TD_CC, OHCI_CC_STALL); + break; + case USB_RET_BABBLE: + dprintf("usb-ohci: got BABBLE\n"); + OHCI_SET_BM(td.flags, TD_CC, OHCI_CC_DATAOVERRUN); + break; + default: + fprintf(stderr, "usb-ohci: Bad device response %d\n", ret); + OHCI_SET_BM(td.flags, TD_CC, OHCI_CC_UNDEXPETEDPID); + OHCI_SET_BM(td.flags, TD_EC, 3); + break; + } + } + ed->head |= OHCI_ED_H; + } + + /* Retire this TD */ + ed->head &= ~OHCI_DPTR_MASK; + ed->head |= td.next & OHCI_DPTR_MASK; + td.next = ohci->done; + ohci->done = addr; + i = OHCI_BM(td.flags, TD_DI); + if (i < ohci->done_count) + ohci->done_count = i; + ohci_put_td(ohci, addr, &td); + return OHCI_BM(td.flags, TD_CC) != OHCI_CC_NOERROR; +} + +/* Service an endpoint list. Returns nonzero if active TD were found. */ +static int ohci_service_ed_list(OHCIState *ohci, uint32_t head, int completion) +{ + struct ohci_ed ed; + uint32_t next_ed; + uint32_t cur; + int active; + + active = 0; + + if (head == 0) + return 0; + + for (cur = head; cur; cur = next_ed) { + if (!ohci_read_ed(ohci, cur, &ed)) { + fprintf(stderr, "usb-ohci: ED read error at %x\n", cur); + return 0; + } + + next_ed = ed.next & OHCI_DPTR_MASK; + + if ((ed.head & OHCI_ED_H) || (ed.flags & OHCI_ED_K)) { + uint32_t addr; + /* Cancel pending packets for ED that have been paused. */ + addr = ed.head & OHCI_DPTR_MASK; + if (ohci->async_td && addr == ohci->async_td) { + usb_cancel_packet(&ohci->usb_packet); + ohci->async_td = 0; + } + continue; + } + + while ((ed.head & OHCI_DPTR_MASK) != ed.tail) { +#ifdef DEBUG_PACKET + dprintf("ED @ 0x%.8x fa=%u en=%u d=%u s=%u k=%u f=%u mps=%u " + "h=%u c=%u\n head=0x%.8x tailp=0x%.8x next=0x%.8x\n", cur, + OHCI_BM(ed.flags, ED_FA), OHCI_BM(ed.flags, ED_EN), + OHCI_BM(ed.flags, ED_D), (ed.flags & OHCI_ED_S)!= 0, + (ed.flags & OHCI_ED_K) != 0, (ed.flags & OHCI_ED_F) != 0, + OHCI_BM(ed.flags, ED_MPS), (ed.head & OHCI_ED_H) != 0, + (ed.head & OHCI_ED_C) != 0, ed.head & OHCI_DPTR_MASK, + ed.tail & OHCI_DPTR_MASK, ed.next & OHCI_DPTR_MASK); +#endif + active = 1; + + if ((ed.flags & OHCI_ED_F) == 0) { + if (ohci_service_td(ohci, &ed)) + break; + } else { + /* Handle isochronous endpoints */ + if (ohci_service_iso_td(ohci, &ed, completion)) + break; + } + } + + ohci_put_ed(ohci, cur, &ed); + } + + return active; +} + +/* Generate a SOF event, and set a timer for EOF */ +static void ohci_sof(OHCIState *ohci) +{ + ohci->sof_time = get_clock(); + ohci->eof_timer += usb_frame_time; + //ohci->sof_time = qemu_get_clock_ns(vm_clock); + //qemu_mod_timer(ohci->eof_timer, ohci->sof_time + usb_frame_time); + ohci_set_interrupt(ohci, OHCI_INTR_SF); +} + +/* Process Control and Bulk lists. */ +static void ohci_process_lists(OHCIState *ohci, int completion) +{ + if ((ohci->ctl & OHCI_CTL_CLE) && (ohci->status & OHCI_STATUS_CLF)) { + if (ohci->ctrl_cur && ohci->ctrl_cur != ohci->ctrl_head) { + dprintf("usb-ohci: head %x, cur %x\n", + ohci->ctrl_head, ohci->ctrl_cur); + } + if (!ohci_service_ed_list(ohci, ohci->ctrl_head, completion)) { + ohci->ctrl_cur = 0; + ohci->status &= ~OHCI_STATUS_CLF; + } + } + + if ((ohci->ctl & OHCI_CTL_BLE) && (ohci->status & OHCI_STATUS_BLF)) { + if (!ohci_service_ed_list(ohci, ohci->bulk_head, completion)) { + ohci->bulk_cur = 0; + ohci->status &= ~OHCI_STATUS_BLF; + } + } +} + +/* Do frame processing on frame boundary */ +void ohci_frame_boundary(void *opaque) +{ + OHCIState *ohci = (OHCIState*)opaque; + struct ohci_hcca hcca; + + ohci_read_hcca(ohci, ohci->hcca, &hcca); + + /* Process all the lists at the end of the frame */ + if (ohci->ctl & OHCI_CTL_PLE) { + int n; + + n = ohci->frame_number & 0x1f; + ohci_service_ed_list(ohci, (hcca.intr[n]), 0); + } + + /* Cancel all pending packets if either of the lists has been disabled. */ + if (ohci->async_td && + ohci->old_ctl & (~ohci->ctl) & (OHCI_CTL_BLE | OHCI_CTL_CLE)) { + usb_cancel_packet(&ohci->usb_packet); + ohci->async_td = 0; + } + ohci->old_ctl = ohci->ctl; + ohci_process_lists(ohci, 0); + + /* Frame boundary, so do EOF stuf here */ + ohci->frt = ohci->fit; + + /* Increment frame number and take care of endianness. */ + ohci->frame_number = (ohci->frame_number + 1) & 0xffff; + hcca.frame = (ohci->frame_number); + + if (ohci->done_count == 0 && !(ohci->intr_status & OHCI_INTR_WD)) { + if (!ohci->done) + abort(); + if (ohci->intr & ohci->intr_status) + ohci->done |= 1; + hcca.done = (ohci->done); + ohci->done = 0; + ohci->done_count = 7; + ohci_set_interrupt(ohci, OHCI_INTR_WD); + } + + if (ohci->done_count != 7 && ohci->done_count != 0) + ohci->done_count--; + + /* Do SOF stuff here */ + ohci_sof(ohci); + + /* Writeback HCCA */ + ohci_put_hcca(ohci, ohci->hcca, &hcca); +} + +/* Start sending SOF tokens across the USB bus, lists are processed in + * next frame + */ +static int ohci_bus_start(OHCIState *ohci) +{ + ohci->eof_timer = 0; + + dprintf("usb-ohci: %s: USB Operational\n", ohci->name); + + ohci_sof(ohci); + + return 1; +} + +/* Stop sending SOF tokens on the bus */ +static void ohci_bus_stop(OHCIState *ohci) +{ + if (ohci->eof_timer) + ohci->eof_timer=0; +} + +/* Sets a flag in a port status register but only set it if the port is + * connected, if not set ConnectStatusChange flag. If flag is enabled + * return 1. + */ +static int ohci_port_set_if_connected(OHCIState *ohci, int i, uint32_t val) +{ + int ret = 1; + + /* writing a 0 has no effect */ + if (val == 0) + return 0; + + /* If CurrentConnectStatus is cleared we set + * ConnectStatusChange + */ + if (!(ohci->rhport[i].ctrl & OHCI_PORT_CCS)) { + ohci->rhport[i].ctrl |= OHCI_PORT_CSC; + if (ohci->rhstatus & OHCI_RHS_DRWE) { + /* TODO: CSC is a wakeup event */ + } + return 0; + } + + if (ohci->rhport[i].ctrl & val) + ret = 0; + + /* set the bit */ + ohci->rhport[i].ctrl |= val; + + return ret; +} + +/* Set the frame interval - frame interval toggle is manipulated by the hcd only */ +static void ohci_set_frame_interval(OHCIState *ohci, uint16_t val) +{ + val &= OHCI_FMI_FI; + + if (val != ohci->fi) { + dprintf("usb-ohci: %s: FrameInterval = 0x%x (%u)\n", + ohci->name, ohci->fi, ohci->fi); + } + + ohci->fi = val; +} + +static void ohci_port_power(OHCIState *ohci, int i, int p) +{ + if (p) { + ohci->rhport[i].ctrl |= OHCI_PORT_PPS; + } else { + ohci->rhport[i].ctrl &= ~(OHCI_PORT_PPS| + OHCI_PORT_CCS| + OHCI_PORT_PSS| + OHCI_PORT_PRS); + } +} + +/* Set HcControlRegister */ +static void ohci_set_ctl(OHCIState *ohci, uint32_t val) +{ + uint32_t old_state; + uint32_t new_state; + + old_state = ohci->ctl & OHCI_CTL_HCFS; + ohci->ctl = val; + new_state = ohci->ctl & OHCI_CTL_HCFS; + + /* no state change */ + if (old_state == new_state) + return; + + switch (new_state) { + case OHCI_USB_OPERATIONAL: + ohci_bus_start(ohci); + break; + case OHCI_USB_SUSPEND: + ohci_bus_stop(ohci); + dprintf("usb-ohci: %s: USB Suspended\n", ohci->name); + break; + case OHCI_USB_RESUME: + dprintf("usb-ohci: %s: USB Resume\n", ohci->name); + break; + case OHCI_USB_RESET: + ohci_reset(ohci); + dprintf("usb-ohci: %s: USB Reset\n", ohci->name); + break; + } +} + +static uint32_t ohci_get_frame_remaining(OHCIState *ohci) +{ + uint16_t fr; + int64_t tks; + + if ((ohci->ctl & OHCI_CTL_HCFS) != OHCI_USB_OPERATIONAL) + return (ohci->frt << 31); + + /* Being in USB operational state guarnatees sof_time was + * set already. + */ + tks = get_clock() - ohci->sof_time; + + /* avoid muldiv if possible */ + if (tks >= usb_frame_time) + return (ohci->frt << 31); + + tks = muldiv64(1, tks, usb_bit_time); + fr = (uint16_t)(ohci->fi - tks); + + return (ohci->frt << 31) | fr; +} + + +/* Set root hub status */ +static void ohci_set_hub_status(OHCIState *ohci, uint32_t val) +{ + uint32_t old_state; + + old_state = ohci->rhstatus; + + /* write 1 to clear OCIC */ + if (val & OHCI_RHS_OCIC) + ohci->rhstatus &= ~OHCI_RHS_OCIC; + + if (val & OHCI_RHS_LPS) { + int i; + + for (i = 0; i < ohci->num_ports; i++) + ohci_port_power(ohci, i, 0); + dprintf("usb-ohci: powered down all ports\n"); + } + + if (val & OHCI_RHS_LPSC) { + int i; + + for (i = 0; i < ohci->num_ports; i++) + ohci_port_power(ohci, i, 1); + dprintf("usb-ohci: powered up all ports\n"); + } + + if (val & OHCI_RHS_DRWE) + ohci->rhstatus |= OHCI_RHS_DRWE; + + if (val & OHCI_RHS_CRWE) + ohci->rhstatus &= ~OHCI_RHS_DRWE; + + if (old_state != ohci->rhstatus) + ohci_set_interrupt(ohci, OHCI_INTR_RHSC); +} + +/* Set root hub port status */ +static void ohci_port_set_status(OHCIState *ohci, int portnum, uint32_t val) +{ + uint32_t old_state; + OHCIPort *port; + + port = &ohci->rhport[portnum]; + old_state = port->ctrl; + + /* Write to clear CSC, PESC, PSSC, OCIC, PRSC */ + if (val & OHCI_PORT_WTC) + port->ctrl &= ~(val & OHCI_PORT_WTC); + + if (val & OHCI_PORT_CCS) + port->ctrl &= ~OHCI_PORT_PES; + + ohci_port_set_if_connected(ohci, portnum, val & OHCI_PORT_PES); + + if (ohci_port_set_if_connected(ohci, portnum, val & OHCI_PORT_PSS)) { + dprintf("usb-ohci: port %d: SUSPEND\n", portnum); + } + + if (ohci_port_set_if_connected(ohci, portnum, val & OHCI_PORT_PRS)) { + dprintf("usb-ohci: port %d: RESET\n", portnum); + usb_send_msg(port->port.dev, USB_MSG_RESET); + port->ctrl &= ~OHCI_PORT_PRS; + /* ??? Should this also set OHCI_PORT_PESC. */ + port->ctrl |= OHCI_PORT_PES | OHCI_PORT_PRSC; + } + + /* Invert order here to ensure in ambiguous case, device is + * powered up... + */ + if (val & OHCI_PORT_LSDA) + ohci_port_power(ohci, portnum, 0); + if (val & OHCI_PORT_PPS) + ohci_port_power(ohci, portnum, 1); + + if (old_state != port->ctrl) + ohci_set_interrupt(ohci, OHCI_INTR_RHSC); + + return; +} + +uint32_t ohci_mem_read(void *ptr, target_phys_addr_t addr) +{ + OHCIState *ohci = (OHCIState*)ptr; + uint32_t retval; + + addr &= 0xff; + + /* Only aligned reads are allowed on OHCI */ + if (addr & 3) { + fprintf(stderr, "usb-ohci: Mis-aligned read\n"); + return 0xffffffff; + } else if (addr >= 0x54 && addr < 0x54 + ohci->num_ports * 4) { + /* HcRhPortStatus */ + retval = ohci->rhport[(addr - 0x54) >> 2].ctrl | OHCI_PORT_PPS; + } else { + switch (addr >> 2) { + case 0: /* HcRevision */ + retval = 0x10; + break; + + case 1: /* HcControl */ + retval = ohci->ctl; + break; + + case 2: /* HcCommandStatus */ + retval = ohci->status; + break; + + case 3: /* HcInterruptStatus */ + retval = ohci->intr_status; + break; + + case 4: /* HcInterruptEnable */ + case 5: /* HcInterruptDisable */ + retval = ohci->intr; + break; + + case 6: /* HcHCCA */ + retval = ohci->hcca; + break; + + case 7: /* HcPeriodCurrentED */ + retval = ohci->per_cur; + break; + + case 8: /* HcControlHeadED */ + retval = ohci->ctrl_head; + break; + + case 9: /* HcControlCurrentED */ + retval = ohci->ctrl_cur; + break; + + case 10: /* HcBulkHeadED */ + retval = ohci->bulk_head; + break; + + case 11: /* HcBulkCurrentED */ + retval = ohci->bulk_cur; + break; + + case 12: /* HcDoneHead */ + retval = ohci->done; + break; + + case 13: /* HcFmInterretval */ + retval = (ohci->fit << 31) | (ohci->fsmps << 16) | (ohci->fi); + break; + + case 14: /* HcFmRemaining */ + retval = ohci_get_frame_remaining(ohci); + break; + + case 15: /* HcFmNumber */ + retval = ohci->frame_number; + break; + + case 16: /* HcPeriodicStart */ + retval = ohci->pstart; + break; + + case 17: /* HcLSThreshold */ + retval = ohci->lst; + break; + + case 18: /* HcRhDescriptorA */ + retval = ohci->rhdesc_a; + break; + + case 19: /* HcRhDescriptorB */ + retval = ohci->rhdesc_b; + break; + + case 20: /* HcRhStatus */ + retval = ohci->rhstatus; + break; + + /* PXA27x specific registers */ + case 24: /* HcStatus */ + retval = ohci->hstatus & ohci->hmask; + break; + + case 25: /* HcHReset */ + retval = ohci->hreset; + break; + + case 26: /* HcHInterruptEnable */ + retval = ohci->hmask; + break; + + case 27: /* HcHInterruptTest */ + retval = ohci->htest; + break; + + default: + fprintf(stderr, "ohci_read: Bad offset %x\n", (int)addr); + retval = 0xffffffff; + } + } + + return retval; +} + +void ohci_mem_write(void *ptr, target_phys_addr_t addr, uint32_t val) +{ + OHCIState *ohci = (OHCIState *)ptr; + + addr &= 0xff; + + /* Only aligned reads are allowed on OHCI */ + if (addr & 3) { + fprintf(stderr, "usb-ohci: Mis-aligned write\n"); + return; + } + + if (addr >= 0x54 && addr < 0x54 + ohci->num_ports * 4) { + /* HcRhPortStatus */ + ohci_port_set_status(ohci, (addr - 0x54) >> 2, val); + return; + } + + switch (addr >> 2) { + case 1: /* HcControl */ + ohci_set_ctl(ohci, val); + break; + + case 2: /* HcCommandStatus */ + /* SOC is read-only */ + val = (val & ~OHCI_STATUS_SOC); + + /* Bits written as '0' remain unchanged in the register */ + ohci->status |= val; + + if (ohci->status & OHCI_STATUS_HCR) + ohci_reset(ohci); + break; + + case 3: /* HcInterruptStatus */ + ohci->intr_status &= ~val; + ohci_intr_update(ohci); + break; + + case 4: /* HcInterruptEnable */ + ohci->intr |= val; + ohci_intr_update(ohci); + break; + + case 5: /* HcInterruptDisable */ + ohci->intr &= ~val; + ohci_intr_update(ohci); + break; + + case 6: /* HcHCCA */ + ohci->hcca = val & OHCI_HCCA_MASK; + break; + + case 7: /* HcPeriodCurrentED */ + /* Ignore writes to this read-only register, Linux does them */ + break; + + case 8: /* HcControlHeadED */ + ohci->ctrl_head = val & OHCI_EDPTR_MASK; + break; + + case 9: /* HcControlCurrentED */ + ohci->ctrl_cur = val & OHCI_EDPTR_MASK; + break; + + case 10: /* HcBulkHeadED */ + ohci->bulk_head = val & OHCI_EDPTR_MASK; + break; + + case 11: /* HcBulkCurrentED */ + ohci->bulk_cur = val & OHCI_EDPTR_MASK; + break; + + case 13: /* HcFmInterval */ + ohci->fsmps = (val & OHCI_FMI_FSMPS) >> 16; + ohci->fit = (val & OHCI_FMI_FIT) >> 31; + ohci_set_frame_interval(ohci, val); + break; + + case 15: /* HcFmNumber */ + break; + + case 16: /* HcPeriodicStart */ + ohci->pstart = val & 0xffff; + break; + + case 17: /* HcLSThreshold */ + ohci->lst = val & 0xffff; + break; + + case 18: /* HcRhDescriptorA */ + ohci->rhdesc_a &= ~OHCI_RHA_RW_MASK; + ohci->rhdesc_a |= val & OHCI_RHA_RW_MASK; + break; + + case 19: /* HcRhDescriptorB */ + break; + + case 20: /* HcRhStatus */ + ohci_set_hub_status(ohci, val); + break; + + /* PXA27x specific registers */ + case 24: /* HcStatus */ + ohci->hstatus &= ~(val & ohci->hmask); + + case 25: /* HcHReset */ + ohci->hreset = val & ~OHCI_HRESET_FSBIR; + if (val & OHCI_HRESET_FSBIR) + ohci_reset(ohci); + break; + + case 26: /* HcHInterruptEnable */ + ohci->hmask = val; + break; + + case 27: /* HcHInterruptTest */ + ohci->htest = val; + break; + + default: + fprintf(stderr, "ohci_write: Bad offset %x\n", (int)addr); + break; + } +} + +static USBPortOps ohci_port_ops = { + ohci_attach, + ohci_detach, + ohci_child_detach, + ohci_wakeup, + ohci_async_complete_packet, +}; + +static USBBusOps ohci_bus_ops = { +}; + +OHCIState *ohci_create(uint32_t base, int ports) +{ + OHCIState *ohci=(OHCIState*)malloc(sizeof(OHCIState)); + int i; + + memset(ohci,0,sizeof(OHCIState)); + + //ohci->localmem_base=base; + + ohci->mem = base; + //ohci->mem = cpu_register_io_memory(ohci_readfn, ohci_writefn, ohci); + //ohci->localmem_base = localmem_base; + ohci->name = "USBemu"; + + //ohci->irq = irq; + //ohci->type = type; + + + if (usb_frame_time == 0) { +#ifdef OHCI_TIME_WARP + usb_frame_time = get_ticks_per_sec(); + usb_bit_time = muldiv64(1, get_ticks_per_sec(), USB_HZ/1000); +#else + usb_frame_time = muldiv64(1, get_ticks_per_sec(), 1000); + if (get_ticks_per_sec() >= USB_HZ) { + usb_bit_time = muldiv64(1, get_ticks_per_sec(), USB_HZ); + } else { + usb_bit_time = 1; + } +#endif + dprintf("usb-ohci: usb_bit_time=%" PRId64 " usb_frame_time=%" PRId64 "\n", + usb_frame_time, usb_bit_time); + } + + ohci->num_ports = ports; + for (i = 0; i < ports; i++) { + ohci->rhport[i].port.opaque = ohci; + ohci->rhport[i].port.index = i; + ohci->rhport[i].port.ops = &ohci_port_ops; + } + + ohci->async_td = 0; + + return ohci; +} diff --git a/plugins/USBqemu/qemu-usb/vl.cpp b/plugins/USBqemu/qemu-usb/vl.cpp index b05bf7869a..809b36305b 100644 --- a/plugins/USBqemu/qemu-usb/vl.cpp +++ b/plugins/USBqemu/qemu-usb/vl.cpp @@ -1,31 +1,31 @@ -#include -#include -#include -#include "vl.h" - -void cpu_physical_memory_rw(uint32_t addr, uint8_t *buf, - int len, int is_write); - -/* compute with 96 bit intermediate result: (a*b)/c */ -uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c) -{ - union { - uint64_t ll; - struct { -#ifdef WORDS_BIGENDIAN - uint32_t high, low; -#else - uint32_t low, high; -#endif - } l; - } u, res; - uint64_t rl, rh; - - u.ll = a; - rl = (uint64_t)u.l.low * (uint64_t)b; - rh = (uint64_t)u.l.high * (uint64_t)b; - rh += (rl >> 32); - res.l.high = rh / c; - res.l.low = (((rh % c) << 32) + (rl & 0xffffffff)) / c; - return res.ll; -} +#include +#include +#include +#include "vl.h" + +void cpu_physical_memory_rw(uint32_t addr, uint8_t *buf, + int len, int is_write); + +/* compute with 96 bit intermediate result: (a*b)/c */ +uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c) +{ + union { + uint64_t ll; + struct { +#ifdef WORDS_BIGENDIAN + uint32_t high, low; +#else + uint32_t low, high; +#endif + } l; + } u, res; + uint64_t rl, rh; + + u.ll = a; + rl = (uint64_t)u.l.low * (uint64_t)b; + rh = (uint64_t)u.l.high * (uint64_t)b; + rh += (rl >> 32); + res.l.high = rh / c; + res.l.low = (((rh % c) << 32) + (rl & 0xffffffff)) / c; + return res.ll; +} diff --git a/plugins/USBqemu/qemu-usb/vl.h b/plugins/USBqemu/qemu-usb/vl.h index f1935f08bb..226862f07b 100644 --- a/plugins/USBqemu/qemu-usb/vl.h +++ b/plugins/USBqemu/qemu-usb/vl.h @@ -96,13 +96,13 @@ static inline char *realpath(const char *path, char *resolved_path) uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c); void cpu_physical_memory_rw(uint32_t addr, uint8_t *buf, int len, int is_write); static inline void cpu_physical_memory_read(uint32_t addr, uint8_t *buf, int len) -{ - cpu_physical_memory_rw(addr, buf, len, 0); +{ + cpu_physical_memory_rw(addr, buf, len, 0); } static inline void cpu_physical_memory_write(uint32_t addr, const uint8_t *buf, int len) -{ - cpu_physical_memory_rw(addr, (uint8_t *)buf, len, 1); +{ + cpu_physical_memory_rw(addr, (uint8_t *)buf, len, 1); } void *qemu_mallocz(uint32_t size); diff --git a/plugins/USBqemu/usb-eyetoy/usb-eyetoy.cpp b/plugins/USBqemu/usb-eyetoy/usb-eyetoy.cpp index 2a89a17af3..a8b7c5f9e3 100644 --- a/plugins/USBqemu/usb-eyetoy/usb-eyetoy.cpp +++ b/plugins/USBqemu/usb-eyetoy/usb-eyetoy.cpp @@ -1,7873 +1,7873 @@ -/* - * QEMU USB HUB emulation - * - * Copyright (c) 2005 Fabrice Bellard - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -//#define DEBUG - -#define MAX_PORTS 8 - -#include "../qemu-usb/vl.h" - -/* HID interface requests */ -#define GET_REPORT 0xa101 -#define GET_IDLE 0xa102 -#define GET_PROTOCOL 0xa103 -#define SET_IDLE 0x210a -#define SET_PROTOCOL 0x210b - -typedef struct EYETOYState { - USBDevice dev; - //nothing yet -} EYETOYState; - -/* same as Linux kernel root hubs */ - -/* mostly the same values as the Bochs USB Mouse device */ -static const uint8_t eyetoy_dev_descriptor[] = { - 0x12, /* bLength */ - 0x01, /* bDescriptorType */ - 0x10, 0x01, /* bcdUSB */ - 0x00, /* bDeviceClass */ - 0x00, /* bDeviceSubClass */ - 0x00, /* bDeviceProtocol */ - 0x08, /* bMaxPacketSize0 */ - 0x4c, 0x05, /* idVendor */ - 0x55, 0x01, /* idProduct */ - 0x00, 0x01, /* bcdDevice */ - 0x01, /* iManufacturer */ - 0x02, /* iProduct */ - 0x00, /* iSerialNumber */ - 0x01, /* bNumConfigurations */ -}; - -/* XXX: patch interrupt size */ -static const uint8_t eyetoy_config_descriptor[] = { - - /* one configuration */ - 0x09, /* u8 bLength; */ - 0x02, /* u8 bDescriptorType; Configuration */ - 0xb4, 0x00, /* u16 wTotalLength; */ - 0x03, /* u8 bNumInterfaces; (3) */ - 0x01, /* u8 bConfigurationValue; */ - 0x00, /* u8 iConfiguration; */ - 0x90, /* u8 bmAttributes; - Bit 7: must be set, - 6: Self-powered, - 5: Remote wakeup, - 4..0: resvd */ - 0xfa, /* u8 MaxPower; */ - - /* interface #0 alternate setting #0 */ - 0x09, /* u8 if_bLength; */ - 0x04, /* u8 if_bDescriptorType; Interface */ - 0x00, /* u8 if_bInterfaceNumber; */ - 0x00, /* u8 if_bAlternateSetting; */ - 0x01, /* u8 if_bNumEndpoints; */ - 0xff, /* u8 if_bInterfaceClass; Vendor Specific */ - 0x00, /* u8 if_bInterfaceSubClass; */ - 0x00, /* u8 if_bInterfaceProtocol; [usb1.1 or single tt] */ - 0x00, /* u8 if_iInterface; */ - - /* interface #0 alternate setting #0 endpoint */ - 0x07, /* u8 ep_bLength; */ - 0x05, /* u8 ep_bDescriptorType; Endpoint */ - 0x81, /* u8 ep_bEndpointAddress; IN Endpoint 1 */ - 0x01, /* u8 ep_bmAttributes; */ - 0x00, 0x00, /* u16 ep_wMaxPacketSize; 1 + (MAX_ROOT_PORTS / 8) */ - 0x01, /* u8 ep_bInterval; */ - - /* interface #0 alternate setting #1 */ - 0x09, 0x04, 0x00, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, - 0x07, 0x05, 0x81, 0x01, 0x80, 0x01, 0x01, - - /* interface #0 alternate setting #2*/ - 0x09, 0x04, 0x00, 0x02, 0x01, 0xff, 0x00, 0x00, 0x00, - 0x07, 0x05, 0x81, 0x01, 0x00, 0x02, 0x01, - - /* interface #0 alternate setting #3 */ - 0x09, 0x04, 0x00, 0x03, 0x01, 0xff, 0x00, 0x00, 0x00, - 0x07, 0x05, 0x81, 0x01, 0x00, 0x03, 0x01, - - /* interface #0 alternate setting #4 */ - 0x09, 0x04, 0x00, 0x04, 0x01, 0xff, 0x00, 0x00, 0x00, - 0x07, 0x05, 0x81, 0x01, 0x80, 0x03, 0x01, - - /* interface #1 alternate setting #0 */ - 0x09, /* u8 if_bLength; */ - 0x04, /* u8 if_bDescriptorType; Interface */ - 0x01, /* u8 if_bInterfaceNumber; */ - 0x00, /* u8 if_bAlternateSetting; */ - 0x00, /* u8 if_bNumEndpoints; */ - 0x01, /* u8 if_bInterfaceClass; AUDIO */ - 0x01, /* u8 if_bInterfaceSubClass; AUDIOCONTROL*/ - 0x00, /* u8 if_bInterfaceProtocol; [usb1.1 or single tt] */ - 0x00, /* u8 if_iInterface; */ - - /* interface #1 alternate setting #0 classes */ - 0x09, 0x24, 0x01, 0x00, 0x01, 0x1e, 0x00, 0x01, 0x02, - 0x0c, 0x24, 0x02, 0x01, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x09, 0x24, 0x03, 0x02, 0x01, 0x01, 0x00, 0x01, 0x00, - - /* interface #2 alternate setting #0 (AUDIO class, AUDIOSTREAMING subclass) */ - 0x09, 0x04, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, - - /* interface #2 alternate setting #1 (AUDIO class, AUDIOSTREAMING subclass) */ - 0x09, 0x04, 0x02, 0x01, 0x01, 0x01, 0x02, 0x00, 0x00, - - /* interface #1 class-specific interface (HEADER) */ - 0x07, 0x24, 0x01, 0x02, 0x01, 0x01, 0x00, - - /* interface #1 class-specific interface (INPUT TERMINAL) */ - 0x0b, 0x24, 0x02, 0x01, 0x01, 0x02, 0x10, 0x01, 0x80, 0x3e, 0x00, - - /* interface #1 alternate setting #1 endpoint */ - 0x09, 0x05, 0x82, 0x05, 0x28, 0x00, 0x01, 0x00, 0x00, - - /* interface #1 class-specific endpoint */ - 0x07, 0x25, 0x01, 0x00, 0x00, 0x00, 0x00 -}; - -static void eyetoy_handle_reset(USBDevice *dev) -{ - /* XXX: do it */ - return; -} - -static int eyetoy_handle_control(USBDevice *dev, int request, int value, - int index, int length, uint8_t *data) -{ - EYETOYState *s = (EYETOYState *)dev; - int ret = 0; - - switch(request) { - case DeviceRequest | USB_REQ_GET_STATUS: - data[0] = (dev->remote_wakeup << USB_DEVICE_REMOTE_WAKEUP); - data[1] = 0x00; - ret = 2; - break; - case DeviceOutRequest | USB_REQ_CLEAR_FEATURE: - if (value == USB_DEVICE_REMOTE_WAKEUP) { - dev->remote_wakeup = 0; - } else { - goto fail; - } - ret = 0; - break; - case DeviceOutRequest | USB_REQ_SET_FEATURE: - if (value == USB_DEVICE_REMOTE_WAKEUP) { - dev->remote_wakeup = 1; - } else { - goto fail; - } - ret = 0; - break; - case DeviceOutRequest | USB_REQ_SET_ADDRESS: - dev->addr = value; - ret = 0; - break; - case DeviceRequest | USB_REQ_GET_DESCRIPTOR: - switch(value >> 8) { - case USB_DT_DEVICE: - memcpy(data, eyetoy_dev_descriptor, - sizeof(eyetoy_dev_descriptor)); - ret = sizeof(eyetoy_dev_descriptor); - break; - case USB_DT_CONFIG: - memcpy(data, eyetoy_config_descriptor, - sizeof(eyetoy_config_descriptor)); - ret = sizeof(eyetoy_config_descriptor); - break; - case USB_DT_STRING: - switch(value & 0xff) { - case 0: - /* language ids */ - data[0] = 4; - data[1] = 3; - data[2] = 0x09; - data[3] = 0x04; - ret = 4; - break; - case 1: - /* serial number */ - ret = set_usb_string(data, "3X0420811"); - break; - case 2: - /* product description */ - ret = set_usb_string(data, "EyeToy USB camera Namtai"); - break; - case 3: - /* vendor description */ - ret = set_usb_string(data, "PCSX2/QEMU"); - break; - default: - goto fail; - } - break; - default: - goto fail; - } - break; - case DeviceRequest | USB_REQ_GET_CONFIGURATION: - data[0] = 1; - ret = 1; - break; - case DeviceOutRequest | USB_REQ_SET_CONFIGURATION: - ret = 0; - break; - case DeviceRequest | USB_REQ_GET_INTERFACE: - data[0] = 0; - ret = 1; - break; - case DeviceOutRequest | USB_REQ_SET_INTERFACE: - ret = 0; - break; - /* hid specific requests */ - case InterfaceRequest | USB_REQ_GET_DESCRIPTOR: - //switch(value >> 8) { - //((case 0x22: - // memcpy(data, qemu_mouse_hid_report_descriptor, - // sizeof(qemu_mouse_hid_report_descriptor)); - // ret = sizeof(qemu_mouse_hid_report_descriptor); - // break; - //default: - goto fail; - //} - break; - case GET_REPORT: - ret = 0; - break; - case SET_IDLE: - ret = 0; - break; - default: - fail: - ret = USB_RET_STALL; - break; - } - return ret; -} - -static int eyetoy_handle_data(USBDevice *dev, int pid, - uint8_t devep, uint8_t *data, int len) -{ - EYETOYState *s = (EYETOYState *)dev; - int ret = 0; - - switch(pid) { - case USB_TOKEN_IN: - if (devep == 1) { - goto fail; - } - break; - case USB_TOKEN_OUT: - default: - fail: - ret = USB_RET_STALL; - break; - } - return ret; -} - - -static void eyetoy_handle_destroy(USBDevice *dev) -{ - EYETOYState *s = (EYETOYState *)dev; - - free(s); -} - -int eyetoy_handle_packet(USBDevice *s, int pid, - uint8_t devaddr, uint8_t devep, - uint8_t *data, int len) -{ - fprintf(stderr,"usb-eyetoy: packet received with pid=%x, devaddr=%x, devep=%x and len=%x\n",pid,devaddr,devep,len); - usb_generic_handle_packet(s,pid,devaddr,devep,data,len); -} - -USBDevice *eyetoy_init() -{ - EYETOYState *s; - - s = qemu_mallocz(sizeof(EYETOYState)); - if (!s) - return NULL; - s->dev.speed = USB_SPEED_FULL; - s->dev.handle_packet = eyetoy_handle_packet; - - s->dev.handle_reset = eyetoy_handle_reset; - s->dev.handle_control = eyetoy_handle_control; - s->dev.handle_data = eyetoy_handle_data; - s->dev.handle_destroy = eyetoy_handle_destroy; - - strncpy(s->dev.devname, "EyeToy USB camera Namtai", sizeof(s->dev.devname)); - - return (USBDevice *)s; - -} - -#ifdef X_DRIVER -//////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////// - -/* Video-to-USB Bridge Driver for OmniVision OV511/OV511+/OV518/OV518+/OV519 - * - * Copyright (c) 1999-2005 Mark W. McClelland - * Support for OV519, OV8610 Copyright (c) 2003 Joerg Heckenbach - * - * Original decompression code Copyright 1998-2000 OmniVision Technologies - * Many improvements by Bret Wallach - * Color fixes by by Orion Sky Lawlor (2/26/2000) - * Snapshot code by Kevin Moore - * OV7620 fixes by Charl P. Botha - * Changes by Claudio Matsuoka - * Original SAA7111A code by Dave Perks - * URB error messages from pwc driver by Nemosoft - * generic_ioctl() code from videodev.c by Gerd Knorr and Alan Cox - * Memory management (rvmalloc) code from bttv driver, by Gerd Knorr and others - * OV7x3x/7x4x detection by Franz Reinhardt - * 2004/01/25: Added OV7640 and EyeToy support (Mark McClelland) - * - * Based on the Linux CPiA driver written by Peter Pregler, - * Scott J. Bertin and Johannes Erdfelt. - * - * Please see the file: doc/ov51x.txt - * and the website at: http://alpha.dyndns.org/ov511 - * for more info. - * For Questions on OV519 or OV8610 please contact - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA USA. - */ - -#ifdef OV511_ALLOW_CONVERSION - /* Pixel count * 3 bytes for RGB */ - #define MAX_FRAME_SIZE(w, h) ((w) * (h) * 3) -#else - /* Pixel count * bytes per YUV420 pixel (1.5) */ - #define MAX_FRAME_SIZE(w, h) ((w) * (h) * 3 / 2) -#endif - -#define MAX_DATA_SIZE(w, h) (MAX_FRAME_SIZE(w, h) + sizeof(struct timeval)) - -/* Max size * bytes per YUV420 pixel (1.5) + one extra isoc frame for safety */ -#define MAX_RAW_DATA_SIZE(w, h) ((w) * (h) * 3 / 2 + 1024) - -#define FATAL_ERROR(rc) ((rc) < 0 && (rc) != -EPERM) - -/* URB error codes: */ -static struct symbolic_list urb_errlist[] = { - { -ENOSR, "Buffer error (overrun)" }, - { -EPIPE, "Stalled (device not responding)" }, - { -EOVERFLOW, "Babble (bad cable?)" }, - { -EPROTO, "Bit-stuff error (bad cable?)" }, - { -EILSEQ, "CRC/Timeout" }, - { -ETIMEDOUT, "NAK (device does not respond)" }, - { -1, NULL } -}; - - -/********************************************************************** - * /proc interface - * Based on the CPiA driver version 0.7.4 -claudio - **********************************************************************/ - -#if defined(CONFIG_VIDEO_PROC_FS) - -static struct proc_dir_entry *ov511_proc_entry = NULL; -extern struct proc_dir_entry *video_proc_entry; - -/* Prototypes */ -static void ov51x_clear_snapshot(struct usb_ov511 *); -static int sensor_get_picture(struct usb_ov511 *, struct video_picture *); -static int sensor_get_exposure(struct usb_ov511 *, unsigned char *); -static int ov51x_check_snapshot(struct usb_ov511 *); -static int ov51x_control_ioctl(struct inode *, struct file *, unsigned int, - unsigned long); - -static struct file_operations ov511_control_fops = { - .ioctl = ov51x_control_ioctl, -}; - -#define YES_NO(x) ((x) ? "yes" : "no") - - -/********************************************************************** - * - * Register I/O - * - **********************************************************************/ - -/* Write an OV51x register - - -ov->cbuf[0] = value; - -usb_control_msg: -pipe: ((PIPE_CONTROL << 30) | (dev->devnum << 8) | (0 << 15)), -request: 1, -requesttype: USB_TYPE_VENDOR | USB_RECIP_DEVICE, -value: 0, -index: (__u16)reg, -bytes: &ov->cbuf[0], -size: 1, -timeout: 1000 - -*/ - -/* Read from an OV51x register - -usb_control_msg: -pipe: ((PIPE_CONTROL << 30) | (dev->devnum << 8) | (0 << 15)), -request: 1, -requesttype: USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, -value: 0, -index: (__u16)reg, -bytes: &ov->cbuf[0], -size: 1, -timeout: 1000 - -if result<0 then error -else value = ov->cbuf[0]; - -*/ - -/* - * Writes a multbyte value to a single register. Only valid with certain - * registers (0x30 and 0xc4 - 0xce). - - ov->cbuf = value (in le order) - - rc = usb_control_msg(ov->dev, - usb_sndctrlpipe(ov->dev, 0) - 1 // REG_IO - USB_TYPE_VENDOR | USB_RECIP_DEVICE - 0 - (__u16)reg - ov->cbuf - n - 1000 - - */ - -static int -ov511_upload_quan_tables(struct usb_ov511 *ov) -{ - unsigned char *pYTable = yQuanTable511; - unsigned char *pUVTable = uvQuanTable511; - unsigned char val0, val1; - int i, rc, reg = R511_COMP_LUT_BEGIN; - - PDEBUG(4, "Uploading quantization tables"); - - for (i = 0; i < OV511_QUANTABLESIZE / 2; i++) { - if (ENABLE_Y_QUANTABLE) { - val0 = *pYTable++; - val1 = *pYTable++; - val0 &= 0x0f; - val1 &= 0x0f; - val0 |= val1 << 4; - rc = reg_w(ov, reg, val0); - if (rc < 0) - return rc; - } - - if (ENABLE_UV_QUANTABLE) { - val0 = *pUVTable++; - val1 = *pUVTable++; - val0 &= 0x0f; - val1 &= 0x0f; - val0 |= val1 << 4; - rc = reg_w(ov, reg + OV511_QUANTABLESIZE/2, val0); - if (rc < 0) - return rc; - } - - reg++; - } - - return 0; -} - -/* OV518 quantization tables are 8x4 (instead of 8x8) */ -static int -ov518_upload_quan_tables(struct usb_ov511 *ov) -{ - unsigned char *pYTable = yQuanTable518; - unsigned char *pUVTable = uvQuanTable518; - unsigned char val0, val1; - int i, rc, reg = R511_COMP_LUT_BEGIN; - - PDEBUG(4, "Uploading quantization tables"); - - for (i = 0; i < OV518_QUANTABLESIZE / 2; i++) { - if (ENABLE_Y_QUANTABLE) { - val0 = *pYTable++; - val1 = *pYTable++; - val0 &= 0x0f; - val1 &= 0x0f; - val0 |= val1 << 4; - rc = reg_w(ov, reg, val0); - if (rc < 0) - return rc; - } - - if (ENABLE_UV_QUANTABLE) { - val0 = *pUVTable++; - val1 = *pUVTable++; - val0 &= 0x0f; - val1 &= 0x0f; - val0 |= val1 << 4; - rc = reg_w(ov, reg + OV518_QUANTABLESIZE/2, val0); - if (rc < 0) - return rc; - } - - reg++; - } - - return 0; -} - -static int -ov51x_reset(struct usb_ov511 *ov, unsigned char reset_type) -{ - int rc = -1; - - if (ov->bclass == BCL_OV519) { - //~~~ - PDEBUG(1, "Reset: type=0x0f"); - switch (reset_type) { - case OV511_RESET_NOREGS: - rc = reg_w(ov, OV519_SYS_RESET1, 0x0f); -// rc = reg_w(ov, OV519_SYS_RESET0, 0xdc); -// rc = reg_w(ov, OV519_SYS_RESET0, 0); - rc = reg_w(ov, OV519_SYS_RESET1, 0); - break; - } - } else { - /* Setting bit 0 not allowed on 518/518Plus */ - if (ov->bclass == BCL_OV518) - reset_type &= 0xfe; - - PDEBUG(4, "Reset: type=0x%02X", reset_type); - - rc = reg_w(ov, R51x_SYS_RESET, reset_type); - rc = reg_w(ov, R51x_SYS_RESET, 0); - } - if (rc < 0) - err("reset: command failed"); - - return rc; -} - -/********************************************************************** - * - * Low-level I2C I/O functions - * - **********************************************************************/ - -/* NOTE: Do not call this function directly! - * The OV518 I2C I/O procedure is different, hence, this function. - * This is normally only called from i2c_w(). Note that this function - * always succeeds regardless of whether the sensor is present and working. - */ -static int -ov518_i2c_write_internal(struct usb_ov511 *ov, - unsigned char reg, - unsigned char value) -{ - int rc; - - PDEBUG(5, "0x%02X:0x%02X", reg, value); - - /* Select camera register */ - rc = reg_w(ov, R51x_I2C_SADDR_3, reg); - if (rc < 0) return rc; - - /* Write "value" to I2C data port of OV511 */ - rc = reg_w(ov, R51x_I2C_DATA, value); - if (rc < 0) return rc; - - /* Initiate 3-byte write cycle */ - rc = reg_w(ov, R518_I2C_CTL, 0x01); - if (rc < 0) return rc; - - return 0; -} - -/* NOTE: Do not call this function directly! */ -static int -ov511_i2c_write_internal(struct usb_ov511 *ov, - unsigned char reg, - unsigned char value) -{ - int rc, retries; - - PDEBUG(5, "0x%02X:0x%02X", reg, value); - - /* Three byte write cycle */ - for (retries = OV511_I2C_RETRIES; ; ) { - /* Select camera register */ - rc = reg_w(ov, R51x_I2C_SADDR_3, reg); - if (rc < 0) return rc; - - /* Write "value" to I2C data port of OV511 */ - rc = reg_w(ov, R51x_I2C_DATA, value); - if (rc < 0) return rc; - - /* Initiate 3-byte write cycle */ - rc = reg_w(ov, R511_I2C_CTL, 0x01); - if (rc < 0) return rc; - - do rc = reg_r(ov, R511_I2C_CTL); - while (rc > 0 && ((rc&1) == 0)); /* Retry until idle */ - if (rc < 0) return rc; - - if ((rc&2) == 0) /* Ack? */ - break; -#if 0 - /* I2C abort */ - reg_w(ov, R511_I2C_CTL, 0x10); -#endif - if (--retries < 0) { - PDEBUG(5, "i2c write retries exhausted"); - return -1; - } - } - - return 0; -} - -/* NOTE: Do not call this function directly! - * The OV518 I2C I/O procedure is different, hence, this function. - * This is normally only called from i2c_r(). Note that this function - * always succeeds regardless of whether the sensor is present and working. - */ -static int -ov518_i2c_read_internal(struct usb_ov511 *ov, unsigned char reg) -{ - int rc, value; - - /* Select camera register */ - rc = reg_w(ov, R51x_I2C_SADDR_2, reg); - if (rc < 0) return rc; - - /* Initiate 2-byte write cycle */ - rc = reg_w(ov, R518_I2C_CTL, 0x03); - if (rc < 0) return rc; - - /* Initiate 2-byte read cycle */ - rc = reg_w(ov, R518_I2C_CTL, 0x05); - if (rc < 0) return rc; - - value = reg_r(ov, R51x_I2C_DATA); - - PDEBUG(5, "0x%02X:0x%02X", reg, value); - - return value; -} - -/* NOTE: Do not call this function directly! - * returns: negative is error, pos or zero is data */ -static int -ov511_i2c_read_internal(struct usb_ov511 *ov, unsigned char reg) -{ - int rc, value, retries; - - /* Two byte write cycle */ - for (retries = OV511_I2C_RETRIES; ; ) { - /* Select camera register */ - rc = reg_w(ov, R51x_I2C_SADDR_2, reg); - if (rc < 0) return rc; - - /* Initiate 2-byte write cycle */ - rc = reg_w(ov, R511_I2C_CTL, 0x03); - if (rc < 0) return rc; - - do rc = reg_r(ov, R511_I2C_CTL); - while (rc > 0 && ((rc&1) == 0)); /* Retry until idle */ - if (rc < 0) return rc; - - if ((rc&2) == 0) /* Ack? */ - break; - - /* I2C abort */ - reg_w(ov, R511_I2C_CTL, 0x10); - - if (--retries < 0) { - PDEBUG(5, "i2c write retries exhausted"); - return -1; - } - } - - /* Two byte read cycle */ - for (retries = OV511_I2C_RETRIES; ; ) { - /* Initiate 2-byte read cycle */ - rc = reg_w(ov, R511_I2C_CTL, 0x05); - if (rc < 0) return rc; - - do rc = reg_r(ov, R511_I2C_CTL); - while (rc > 0 && ((rc&1) == 0)); /* Retry until idle */ - if (rc < 0) return rc; - - if ((rc&2) == 0) /* Ack? */ - break; - - /* I2C abort */ - rc = reg_w(ov, R511_I2C_CTL, 0x10); - if (rc < 0) return rc; - - if (--retries < 0) { - PDEBUG(5, "i2c read retries exhausted"); - return -1; - } - } - - value = reg_r(ov, R51x_I2C_DATA); - - PDEBUG(5, "0x%02X:0x%02X", reg, value); - - /* This is needed to make i2c_w() work */ - rc = reg_w(ov, R511_I2C_CTL, 0x05); - if (rc < 0) - return rc; - - return value; -} - -/* returns: negative is error, pos or zero is data */ -static int -i2c_r(struct usb_ov511 *ov, unsigned char reg) -{ - int rc; - - down(&ov->i2c_lock); - - switch (ov->bclass) { - case BCL_OV511: - rc = ov511_i2c_read_internal(ov, reg); - break; - case BCL_OV518: - case BCL_OV519: - rc = ov518_i2c_read_internal(ov, reg); - break; - default: - err("i2c_r: Invalid bridge class"); - rc = -EINVAL; - } - up(&ov->i2c_lock); - - return rc; -} - -static int -i2c_w(struct usb_ov511 *ov, unsigned char reg, unsigned char value) -{ - int rc; - - down(&ov->i2c_lock); - - switch (ov->bclass) { - case BCL_OV511: - rc = ov511_i2c_write_internal(ov, reg, value); - break; - case BCL_OV518: - case BCL_OV519: - rc = ov518_i2c_write_internal(ov, reg, value); - break; - default: - err("ic2_w: Invalid bridge class"); - rc = -EINVAL; - } - - up(&ov->i2c_lock); - - return rc; -} - -/* Do not call this function directly! */ -static int -ov51x_i2c_write_mask_internal(struct usb_ov511 *ov, - unsigned char reg, - unsigned char value, - unsigned char mask) -{ - int rc; - unsigned char oldval, newval; - - if (mask == 0xff) { - newval = value; - } else { - switch (ov->bclass) { - case BCL_OV511: - rc = ov511_i2c_read_internal(ov, reg); - break; - case BCL_OV518: - case BCL_OV519: - rc = ov518_i2c_read_internal(ov, reg); - break; - default: - err("ov51x_i2c_write_mask_internal: Invalid bridge class"); - rc = -EINVAL; - } - if (rc < 0) - return rc; - - oldval = (unsigned char) rc; - oldval &= (~mask); /* Clear the masked bits */ - value &= mask; /* Enforce mask on value */ - newval = oldval | value; /* Set the desired bits */ - } - - switch (ov->bclass) { - case BCL_OV511: - return (ov511_i2c_write_internal(ov, reg, newval)); - break; - case BCL_OV518: - case BCL_OV519: - return (ov518_i2c_write_internal(ov, reg, newval)); - break; - default: - return -EINVAL; - } -} - -/* Writes bits at positions specified by mask to an I2C reg. Bits that are in - * the same position as 1's in "mask" are cleared and set to "value". Bits - * that are in the same position as 0's in "mask" are preserved, regardless - * of their respective state in "value". - */ -static int -i2c_w_mask(struct usb_ov511 *ov, - unsigned char reg, - unsigned char value, - unsigned char mask) -{ - int rc; - - down(&ov->i2c_lock); - rc = ov51x_i2c_write_mask_internal(ov, reg, value, mask); - up(&ov->i2c_lock); - - return rc; -} - -/* Do not call this function directly! */ -static int -ov51x_i2c_setbit_internal(struct usb_ov511 *ov, - unsigned char reg, - unsigned char value, - unsigned char bitaddr) -{ - int rc; - unsigned char newval; - - switch (ov->bclass) { - case BCL_OV511: - rc = ov511_i2c_read_internal(ov, reg); - break; - case BCL_OV518: - case BCL_OV519: - rc = ov518_i2c_read_internal(ov, reg); - break; - default: - err("ov51x_i2c_setbit_internal: Invalid bridge class"); - rc = -EINVAL; - } - if (rc < 0) - return rc; - - newval = ((unsigned char)rc & ~(1 << bitaddr)) | (value ? (1 << bitaddr) : 0); /* Set the desired bit */ - - switch (ov->bclass) { - case BCL_OV511: - return (ov511_i2c_write_internal(ov, reg, newval)); - break; - case BCL_OV518: - case BCL_OV519: - return (ov518_i2c_write_internal(ov, reg, newval)); - break; - default: - return -EINVAL; - } -} - -/* Writes bits at positions specified by bitaddr to an I2C reg. Bits are cleared - * if value = 0 and set if value = 1. - */ -static int -i2c_setbit(struct usb_ov511 *ov, - unsigned char reg, - unsigned char value, - unsigned char bitaddr) -{ - int rc; - - down(&ov->i2c_lock); - rc = ov51x_i2c_setbit_internal(ov, reg, value, bitaddr); - up(&ov->i2c_lock); - - return rc; -} - -/* Set the read and write slave IDs. The "slave" argument is the write slave, - * and the read slave will be set to (slave + 1). ov->i2c_lock should be held - * when calling this. This should not be called from outside the i2c I/O - * functions. - */ -static int -i2c_set_slave_internal(struct usb_ov511 *ov, unsigned char slave) -{ - int rc; - - rc = reg_w(ov, R51x_I2C_W_SID, slave); - if (rc < 0) return rc; - - rc = reg_w(ov, R51x_I2C_R_SID, slave + 1); - if (rc < 0) return rc; - - return 0; -} - -/* Write to a specific I2C slave ID and register, using the specified mask */ -static int -i2c_w_slave(struct usb_ov511 *ov, - unsigned char slave, - unsigned char reg, - unsigned char value, - unsigned char mask) -{ - int rc = 0; - - down(&ov->i2c_lock); - - /* Set new slave IDs */ - rc = i2c_set_slave_internal(ov, slave); - if (rc < 0) goto out; - - rc = ov51x_i2c_write_mask_internal(ov, reg, value, mask); - -out: - /* Restore primary IDs */ - if (i2c_set_slave_internal(ov, ov->primary_i2c_slave) < 0) - err("Couldn't restore primary I2C slave"); - - up(&ov->i2c_lock); - return rc; -} - -/* Read from a specific I2C slave ID and register */ -static int -i2c_r_slave(struct usb_ov511 *ov, - unsigned char slave, - unsigned char reg) -{ - int rc; - - down(&ov->i2c_lock); - - /* Set new slave IDs */ - rc = i2c_set_slave_internal(ov, slave); - if (rc < 0) goto out; - - switch (ov->bclass) { - case BCL_OV511: - rc = ov511_i2c_read_internal(ov, reg); - break; - case BCL_OV518: - case BCL_OV519: - rc = ov518_i2c_read_internal(ov, reg); - break; - default: - err("i2c_r_slave: Invalid bridge class"); - rc = -EINVAL; - } -out: - /* Restore primary IDs */ - if (i2c_set_slave_internal(ov, ov->primary_i2c_slave) < 0) - err("Couldn't restore primary I2C slave"); - - up(&ov->i2c_lock); - return rc; -} - -/* Sets I2C read and write slave IDs. Returns <0 for error */ -static int -ov51x_set_slave_ids(struct usb_ov511 *ov, unsigned char sid) -{ - int rc; - - down(&ov->i2c_lock); - - rc = i2c_set_slave_internal(ov, sid); - if (rc < 0) goto out; - - // FIXME: Is this actually necessary? - if (ov->bclass != BCL_OV519) - rc = ov51x_reset(ov, OV511_RESET_NOREGS); - if (rc < 0) goto out; - -out: - up(&ov->i2c_lock); - return rc; -} - -static int -write_regvals(struct usb_ov511 *ov, struct ov511_regvals * pRegvals) -{ - int rc; - - while (pRegvals->bus != OV511_DONE_BUS) { - if (pRegvals->bus == OV511_REG_BUS) { - if ((rc = reg_w(ov, pRegvals->reg, pRegvals->val)) < 0) - return rc; - } else if (pRegvals->bus == OV511_I2C_BUS) { - if ((rc = i2c_w(ov, pRegvals->reg, pRegvals->val)) < 0) - return rc; - } else { - err("Bad regval array"); - return -1; - } - pRegvals++; - } - return 0; -} - -#ifdef OV511_DEBUG -static void -dump_i2c_range(struct usb_ov511 *ov, int reg1, int regn) -{ - int i, rc; - - for (i = reg1; i <= regn; i++) { - rc = i2c_r(ov, i); - info("Sensor[0x%02X] = 0x%02X", i, rc); - } -} - -static void -dump_i2c_regs(struct usb_ov511 *ov) -{ - info("I2C REGS"); - dump_i2c_range(ov, 0x00, 0x7C); -} - -static void -dump_reg_range(struct usb_ov511 *ov, int reg1, int regn) -{ - int i, rc; - - for (i = reg1; i <= regn; i++) { - rc = reg_r(ov, i); - info("OV511[0x%02X] = 0x%02X", i, rc); - } -} - -static void -ov511_dump_regs(struct usb_ov511 *ov) -{ - info("CAMERA INTERFACE REGS"); - dump_reg_range(ov, 0x10, 0x1f); - info("DRAM INTERFACE REGS"); - dump_reg_range(ov, 0x20, 0x23); - info("ISO FIFO REGS"); - dump_reg_range(ov, 0x30, 0x31); - info("PIO REGS"); - dump_reg_range(ov, 0x38, 0x39); - dump_reg_range(ov, 0x3e, 0x3e); - info("I2C REGS"); - dump_reg_range(ov, 0x40, 0x49); - info("SYSTEM CONTROL REGS"); - dump_reg_range(ov, 0x50, 0x55); - dump_reg_range(ov, 0x5e, 0x5f); - info("OmniCE REGS"); - dump_reg_range(ov, 0x70, 0x79); - /* NOTE: Quantization tables are not readable. You will get the value - * in reg. 0x79 for every table register */ - dump_reg_range(ov, 0x80, 0x9f); - dump_reg_range(ov, 0xa0, 0xbf); - -} - -static void -ov518_dump_regs(struct usb_ov511 *ov) -{ - info("VIDEO MODE REGS"); - dump_reg_range(ov, 0x20, 0x2f); - info("DATA PUMP AND SNAPSHOT REGS"); - dump_reg_range(ov, 0x30, 0x3f); - info("I2C REGS"); - dump_reg_range(ov, 0x40, 0x4f); - info("SYSTEM CONTROL AND VENDOR REGS"); - dump_reg_range(ov, 0x50, 0x5f); - info("60 - 6F"); - dump_reg_range(ov, 0x60, 0x6f); - info("70 - 7F"); - dump_reg_range(ov, 0x70, 0x7f); - info("Y QUANTIZATION TABLE"); - dump_reg_range(ov, 0x80, 0x8f); - info("UV QUANTIZATION TABLE"); - dump_reg_range(ov, 0x90, 0x9f); - info("A0 - BF"); - dump_reg_range(ov, 0xa0, 0xbf); - info("CBR"); - dump_reg_range(ov, 0xc0, 0xcf); -} -#endif - -/*****************************************************************************/ - -/* Temporarily stops OV511 from functioning. Must do this before changing - * registers while the camera is streaming */ -static inline int -ov51x_stop(struct usb_ov511 *ov) -{ - PDEBUG(4, "stopping"); - ov->stopped = 1; - switch (ov->bclass) { - case BCL_OV511: - return (reg_w(ov, R51x_SYS_RESET, 0x3d)); - break; - case BCL_OV518: - return (reg_w_mask(ov, R51x_SYS_RESET, 0x3a, 0x3a)); - break; - case BCL_OV519: - return (reg_w(ov, OV519_SYS_RESET1, 0x0f)); - break; - default: - err("ov51x_stop: invalid bridge type"); - } - return -1; -} - -/* Restarts OV511 after ov511_stop() is called. Has no effect if it is not - * actually stopped (for performance). */ -static inline int -ov51x_restart(struct usb_ov511 *ov) -{ - int rc = 0; - - if (ov->stopped) { - PDEBUG(4, "restarting"); - ov->stopped = 0; - - /* Reinitialize the stream */ - switch (ov->bclass) { - case BCL_OV511: - rc = reg_w(ov, R51x_SYS_RESET, 0x00); - break; - case BCL_OV518: - rc = reg_w(ov, 0x2f, 0x80); - rc = reg_w(ov, R51x_SYS_RESET, 0x00); - break; - case BCL_OV519: - rc = reg_w(ov, OV519_SYS_RESET1, 0x00); - break; - default: - err("ov51x_restart: invalid bridge type"); - rc = -EINVAL; - } - } - - return rc; -} - -/* Sleeps until no frames are active. Returns !0 if got signal */ -static int -ov51x_wait_frames_inactive(struct usb_ov511 *ov) -{ - return wait_event_interruptible(ov->wq, ov->curframe < 0); -} - -/* Resets the hardware snapshot button */ -static void -ov51x_clear_snapshot(struct usb_ov511 *ov) -{ - if (ov->bclass == BCL_OV511) { - reg_w(ov, R51x_SYS_SNAP, 0x00); - reg_w(ov, R51x_SYS_SNAP, 0x02); - reg_w(ov, R51x_SYS_SNAP, 0x00); - } else if (ov->bclass == BCL_OV518) { - warn("snapshot reset not supported yet on OV518(+)"); - } else { - err("clear snap: invalid bridge type"); - } -} - -#if defined(CONFIG_VIDEO_PROC_FS) -/* Checks the status of the snapshot button. Returns 1 if it was pressed since - * it was last cleared, and zero in all other cases (including errors) */ -static int -ov51x_check_snapshot(struct usb_ov511 *ov) -{ - int ret, status = 0; - - if (ov->bclass == BCL_OV511) { - ret = reg_r(ov, R51x_SYS_SNAP); - if (ret < 0) { - err("Error checking snspshot status (%d)", ret); - } else if (ret & 0x08) { - status = 1; - } - } else if (ov->bclass == BCL_OV518) { - warn("snapshot check not supported yet on OV518(+)"); - } else { - err("check snap: invalid bridge type"); - } - - return status; -} -#endif - -/* This does an initial reset of an OmniVision sensor and ensures that I2C - * is synchronized. Returns <0 for failure. - */ -static int -init_ov_sensor(struct usb_ov511 *ov) -{ - int i, success; - - /* Reset the sensor */ - if (i2c_w(ov, 0x12, 0x80) < 0) return -EIO; - - /* Wait for it to initialize */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 9) - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(1 + 150 * HZ / 1000); -#else - msleep(150); -#endif - - for (i = 0, success = 0; i < i2c_detect_tries && !success; i++) { - if ((i2c_r(ov, OV7610_REG_ID_HIGH) == 0x7F) && - (i2c_r(ov, OV7610_REG_ID_LOW) == 0xA2)) { - success = 1; - continue; - } - - /* Reset the sensor */ - if (i2c_w(ov, 0x12, 0x80) < 0) return -EIO; - /* Wait for it to initialize */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 9) - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(1 + 150 * HZ / 1000); -#else - msleep(150); -#endif - /* Dummy read to sync I2C */ - if (i2c_r(ov, 0x00) < 0) return -EIO; - } - - if (!success) - return -EIO; - - PDEBUG(1, "I2C synced in %d attempt(s)", i); - - return 0; -} - -static int -ov511_set_packet_size(struct usb_ov511 *ov, int size) -{ - int alt, mult; - - if (ov51x_stop(ov) < 0) - return -EIO; - - mult = size >> 5; - - if (ov->bridge == BRG_OV511) { - if (size == 0) alt = OV511_ALT_SIZE_0; - else if (size == 257) alt = OV511_ALT_SIZE_257; - else if (size == 513) alt = OV511_ALT_SIZE_513; - else if (size == 769) alt = OV511_ALT_SIZE_769; - else if (size == 993) alt = OV511_ALT_SIZE_993; - else { - err("Set packet size: invalid size (%d)", size); - return -EINVAL; - } - } else if (ov->bridge == BRG_OV511PLUS) { - if (size == 0) alt = OV511PLUS_ALT_SIZE_0; - else if (size == 33) alt = OV511PLUS_ALT_SIZE_33; - else if (size == 129) alt = OV511PLUS_ALT_SIZE_129; - else if (size == 257) alt = OV511PLUS_ALT_SIZE_257; - else if (size == 385) alt = OV511PLUS_ALT_SIZE_385; - else if (size == 513) alt = OV511PLUS_ALT_SIZE_513; - else if (size == 769) alt = OV511PLUS_ALT_SIZE_769; - else if (size == 961) alt = OV511PLUS_ALT_SIZE_961; - else { - err("Set packet size: invalid size (%d)", size); - return -EINVAL; - } - } else { - err("Set packet size: Invalid bridge type"); - return -EINVAL; - } - - PDEBUG(3, "%d, mult=%d, alt=%d", size, mult, alt); - - if (reg_w(ov, R51x_FIFO_PSIZE, mult) < 0) - return -EIO; - - if (usb_set_interface(ov->dev, ov->iface, alt) < 0) { - err("Set packet size: set interface error"); - return -EBUSY; - } - - if (ov51x_reset(ov, OV511_RESET_NOREGS) < 0) - return -EIO; - - ov->packet_size = size; - - if (ov51x_restart(ov) < 0) - return -EIO; - - return 0; -} - -/* Note: Unlike the OV511/OV511+, the size argument does NOT include the - * optional packet number byte. The actual size *is* stored in ov->packet_size, - * though. */ -static int -ov518_set_packet_size(struct usb_ov511 *ov, int size) -{ - int alt; - - if (ov51x_stop(ov) < 0) - return -EIO; - - if (ov->bclass == BCL_OV518) { - if (size == 0) alt = OV518_ALT_SIZE_0; - else if (size == 128) alt = OV518_ALT_SIZE_128; - else if (size == 256) alt = OV518_ALT_SIZE_256; - else if (size == 384) alt = OV518_ALT_SIZE_384; - else if (size == 512) alt = OV518_ALT_SIZE_512; - else if (size == 640) alt = OV518_ALT_SIZE_640; - else if (size == 768) alt = OV518_ALT_SIZE_768; - else if (size == 896) alt = OV518_ALT_SIZE_896; - else { - err("Set packet size: invalid size (%d)", size); - return -EINVAL; - } - } else { - err("Set packet size: Invalid bridge type"); - return -EINVAL; - } - - PDEBUG(3, "%d, alt=%d", size, alt); - - ov->packet_size = size; - if (size > 0) { - /* Program ISO FIFO size reg (packet number isn't included) */ - ov518_reg_w32(ov, 0x30, size, 2); - - if (ov->packet_numbering) - ++ov->packet_size; - } - - if (usb_set_interface(ov->dev, ov->iface, alt) < 0) { - err("Set packet size: set interface error"); - return -EBUSY; - } - - /* Initialize the stream */ - if (reg_w(ov, 0x2f, 0x80) < 0) - return -EIO; - - if (ov51x_restart(ov) < 0) - return -EIO; - - if (ov51x_reset(ov, OV511_RESET_NOREGS) < 0) - return -EIO; - - return 0; -} - -/* Note: Unlike the OV511/OV511+, the size argument does NOT include the - * optional packet number byte. The actual size *is* stored in ov->packet_size, - * though. */ -static int -ov519_set_packet_size(struct usb_ov511 *ov, int size) -{ - int alt; - - if (ov51x_stop(ov) < 0) - return -EIO; - - if (ov->bclass == BCL_OV519) { - if (size == 0) alt = OV519_ALT_SIZE_0; - else if (size == 384) alt = OV519_ALT_SIZE_384; - else if (size == 512) alt = OV519_ALT_SIZE_512; - else if (size == 768) alt = OV519_ALT_SIZE_768; - else if (size == 896) alt = OV519_ALT_SIZE_896; - else { - err("Set packet size: invalid size (%d)", size); - return -EINVAL; - } - } else { - err("Set packet size: Invalid bridge class"); - return -EINVAL; - } - - PDEBUG(3, "%d, alt=%d", size, alt); - - ov->packet_size = size; - if (size > 0) { - /* Program ISO FIFO size reg (packet number isn't included) */ - //~~~ is this nessecary? ov518_reg_w32(ov, 0x30, size, 2); - - if (ov->packet_numbering) - ++ov->packet_size; - } - - if (usb_set_interface(ov->dev, ov->iface, alt) < 0) { - err("Set packet size: set interface error"); - return -EBUSY; - } - - /* Initialize the stream */ - - if (size > 0) { - if (ov51x_restart(ov) < 0) - return -EIO; - } - -// if (ov51x_reset(ov, OV511_RESET_NOREGS) < 0) -// return -EIO; - - return 0; -} - -/* Upload compression params and quantization tables. Returns 0 for success. */ -static int -ov511_init_compression(struct usb_ov511 *ov) -{ - int rc = 0; - - if (!ov->compress_inited) { - reg_w(ov, 0x70, phy); - reg_w(ov, 0x71, phuv); - reg_w(ov, 0x72, pvy); - reg_w(ov, 0x73, pvuv); - reg_w(ov, 0x74, qhy); - reg_w(ov, 0x75, qhuv); - reg_w(ov, 0x76, qvy); - reg_w(ov, 0x77, qvuv); - - if (ov511_upload_quan_tables(ov) < 0) { - err("Error uploading quantization tables"); - rc = -EIO; - goto out; - } - } - - ov->compress_inited = 1; -out: - return rc; -} - -/* Upload compression params and quantization tables. Returns 0 for success. */ -static int -ov518_init_compression(struct usb_ov511 *ov) -{ - int rc = 0; - - if (!ov->compress_inited) { - if (ov518_upload_quan_tables(ov) < 0) { - err("Error uploading quantization tables"); - rc = -EIO; - goto out; - } - } - - ov->compress_inited = 1; -out: - return rc; -} - -/* Switch on standard JPEG compression. Returns 0 for success. */ -static int -ov519_init_compression(struct usb_ov511 *ov) -{ - int rc = 0; - - if (!ov->compress_inited) { - if (reg_setbit(ov, OV519_SYS_EN_CLK1, 1, 2 ) < 0) { - err("Error switching to compressed mode"); - rc = -EIO; - goto out; - } - } - - ov->compress_inited = 1; -out: - return rc; -} - -/* -------------------------------------------------------------------------- */ - -/* Sets sensor's contrast setting to "val" */ -static int -sensor_set_contrast(struct usb_ov511 *ov, unsigned short val) -{ - int rc; - - PDEBUG(3, "%d", val); - - if (ov->stop_during_set) - if (ov51x_stop(ov) < 0) - return -EIO; - - switch (ov->sensor) { - case SEN_OV7610: - case SEN_OV6620: - { - rc = i2c_w(ov, OV7610_REG_CNT, val >> 8); - if (rc < 0) - goto out; - break; - } - case SEN_OV6630: - { - rc = i2c_w_mask(ov, OV7610_REG_CNT, val >> 12, 0x0f); - if (rc < 0) - goto out; - break; - } - case SEN_OV8610: - { - static unsigned char ctab[] = { - 0x03, 0x09, 0x0b, 0x0f, 0x53, 0x6f, 0x35, 0x7f - }; - - /* Use Y gamma control instead. Bit 0 enables it. */ - rc = i2c_w(ov, 0x64, ctab[val>>13]); - if (rc < 0) - goto out; - break; - } - case SEN_OV7620: - { - static unsigned char ctab[] = { - 0x01, 0x05, 0x09, 0x11, 0x15, 0x35, 0x37, 0x57, - 0x5b, 0xa5, 0xa7, 0xc7, 0xc9, 0xcf, 0xef, 0xff - }; - - /* Use Y gamma control instead. Bit 0 enables it. */ - rc = i2c_w(ov, 0x64, ctab[val>>12]); - if (rc < 0) - goto out; - break; - } - case SEN_OV7640: - { - /* Use gain control instead. */ - rc = i2c_w(ov, OV7610_REG_GAIN, val>>10); - if (rc < 0) - goto out; - break; - } - case SEN_SAA7111A: - { - rc = i2c_w(ov, 0x0b, val >> 9); - if (rc < 0) - goto out; - break; - } - default: - { - PDEBUG(3, "Unsupported with this sensor"); - rc = -EPERM; - goto out; - } - } - - rc = 0; /* Success */ - ov->contrast = val; -out: - if (ov51x_restart(ov) < 0) - return -EIO; - - return rc; -} - -/* Gets sensor's contrast setting */ -static int -sensor_get_contrast(struct usb_ov511 *ov, unsigned short *val) -{ - int rc; - - switch (ov->sensor) { - case SEN_OV7610: - case SEN_OV6620: - rc = i2c_r(ov, OV7610_REG_CNT); - if (rc < 0) - return rc; - else - *val = rc << 8; - break; - case SEN_OV6630: - rc = i2c_r(ov, OV7610_REG_CNT); - if (rc < 0) - return rc; - else - *val = rc << 12; - break; - case SEN_OV8610: - { - static unsigned char ctab[] = { - 0x03, 0x09, 0x0b, 0x0f, 0x53, 0x6f, 0x35, 0x7f - }; - static int cidx = 0; - - /* Use Y gamma control instead. Bit 0 enables it. */ - rc = i2c_r(ov, 0x64); - if (rc < 0) { - return rc; - } else { - for (cidx = 0; cidx < 8; cidx++) { - if (ctab[cidx] == rc) { - *val = cidx << 13; - break; - } - } - if (cidx == 8) // could not find value in table - return -EINVAL; - } - break; - } - case SEN_OV7620: - /* Use Y gamma reg instead. Bit 0 is the enable bit. */ - rc = i2c_r(ov, 0x64); - if (rc < 0) - return rc; - else - *val = (rc & 0xfe) << 8; - break; - case SEN_OV7640: - /* Use gain control instead. */ - rc = i2c_r(ov, OV7610_REG_GAIN); - if (rc < 0) - return rc; - else - *val = rc << 10; - break; - - case SEN_SAA7111A: - *val = ov->contrast; - break; - default: - PDEBUG(3, "Unsupported with this sensor"); - return -EPERM; - } - - PDEBUG(3, "%d", *val); - ov->contrast = *val; - - return 0; -} - -/* -------------------------------------------------------------------------- */ - -/* Sets sensor's brightness setting to "val" */ -static int -sensor_set_brightness(struct usb_ov511 *ov, unsigned short val) -{ - int rc; - - PDEBUG(4, "%d", val); - - if (ov->stop_during_set) - if (ov51x_stop(ov) < 0) - return -EIO; - - switch (ov->sensor) { - case SEN_OV8610: - case SEN_OV7610: - case SEN_OV76BE: - case SEN_OV6620: - case SEN_OV6630: - case SEN_OV7640: - rc = i2c_w(ov, OV7610_REG_BRT, val >> 8); - if (rc < 0) - goto out; - break; - case SEN_OV7620: - /* 7620 doesn't like manual changes when in auto mode */ - if (!ov->auto_brt) { - rc = i2c_w(ov, OV7610_REG_BRT, val >> 8); - if (rc < 0) - goto out; - } - break; - case SEN_SAA7111A: - rc = i2c_w(ov, 0x0a, val >> 8); - if (rc < 0) - goto out; - break; - default: - PDEBUG(3, "Unsupported with this sensor"); - rc = -EPERM; - goto out; - } - - rc = 0; /* Success */ - ov->brightness = val; -out: - if (ov51x_restart(ov) < 0) - return -EIO; - - return rc; -} - -/* Gets sensor's brightness setting */ -static int -sensor_get_brightness(struct usb_ov511 *ov, unsigned short *val) -{ - int rc; - - switch (ov->sensor) { - case SEN_OV8610: - case SEN_OV7610: - case SEN_OV76BE: - case SEN_OV7620: - case SEN_OV6620: - case SEN_OV6630: - case SEN_OV7640: - rc = i2c_r(ov, OV7610_REG_BRT); - if (rc < 0) - return rc; - else - *val = rc << 8; - break; - case SEN_SAA7111A: - *val = ov->brightness; - break; - default: - PDEBUG(3, "Unsupported with this sensor"); - return -EPERM; - } - - PDEBUG(3, "%d", *val); - ov->brightness = *val; - - return 0; -} - -/* -------------------------------------------------------------------------- */ - -/* Sets sensor's saturation (color intensity) setting to "val" */ -static int -sensor_set_saturation(struct usb_ov511 *ov, unsigned short val) -{ - int rc; - - PDEBUG(3, "%d", val); - - if (ov->stop_during_set) - if (ov51x_stop(ov) < 0) - return -EIO; - - switch (ov->sensor) { - case SEN_OV8610: - case SEN_OV7610: - case SEN_OV76BE: - case SEN_OV6620: - case SEN_OV6630: - rc = i2c_w(ov, OV7610_REG_SAT, val >> 8); - if (rc < 0) - goto out; - break; - case SEN_OV7620: -// /* Use UV gamma control instead. Bits 0 & 7 are reserved. */ -// rc = ov_i2c_write(ov->dev, 0x62, (val >> 9) & 0x7e); -// if (rc < 0) -// goto out; - rc = i2c_w(ov, OV7610_REG_SAT, val >> 8); - if (rc < 0) - goto out; - break; - case SEN_OV7640: - rc = i2c_w(ov, OV7610_REG_SAT, (val >> 8) & 0xf0); - if (rc < 0) - goto out; - case SEN_SAA7111A: - rc = i2c_w(ov, 0x0c, val >> 9); - if (rc < 0) - goto out; - break; - default: - PDEBUG(3, "Unsupported with this sensor"); - rc = -EPERM; - goto out; - } - - rc = 0; /* Success */ - ov->colour = val; -out: - if (ov51x_restart(ov) < 0) - return -EIO; - - return rc; -} - -/* Gets sensor's saturation (color intensity) setting */ -static int -sensor_get_saturation(struct usb_ov511 *ov, unsigned short *val) -{ - int rc; - - switch (ov->sensor) { - case SEN_OV8610: - case SEN_OV7610: - case SEN_OV76BE: - case SEN_OV6620: - case SEN_OV6630: - case SEN_OV7640: - rc = i2c_r(ov, OV7610_REG_SAT); - if (rc < 0) - return rc; - else - *val = rc << 8; - break; - case SEN_OV7620: -// /* Use UV gamma reg instead. Bits 0 & 7 are reserved. */ -// rc = i2c_r(ov, 0x62); -// if (rc < 0) -// return rc; -// else -// *val = (rc & 0x7e) << 9; - rc = i2c_r(ov, OV7610_REG_SAT); - if (rc < 0) - return rc; - else - *val = rc << 8; - break; - case SEN_SAA7111A: - *val = ov->colour; - break; - default: - PDEBUG(3, "Unsupported with this sensor"); - return -EPERM; - } - - PDEBUG(3, "%d", *val); - ov->colour = *val; - - return 0; -} - -/* -------------------------------------------------------------------------- */ - -/* Sets sensor's hue (red/blue balance) setting to "val" */ -static int -sensor_set_hue(struct usb_ov511 *ov, unsigned short val) -{ - int rc; - - PDEBUG(3, "%d", val); - - if (ov->stop_during_set) - if (ov51x_stop(ov) < 0) - return -EIO; - - switch (ov->sensor) { - case SEN_OV7610: - case SEN_OV6620: - case SEN_OV6630: - rc = i2c_w(ov, OV7610_REG_RED, 0xFF - (val >> 8)); - if (rc < 0) - goto out; - - rc = i2c_w(ov, OV7610_REG_BLUE, val >> 8); - if (rc < 0) - goto out; - break; - case SEN_OV8610: - case SEN_OV7640: - rc = i2c_w(ov, OV8610_REG_HUE, (val >> 11) | 0x20); - if (rc < 0) - goto out; - break; - case SEN_OV7620: -// Hue control is causing problems. I will enable it once it's fixed. -#if 0 - rc = i2c_w(ov, 0x7a, (unsigned char)(val >> 8) + 0xb); - if (rc < 0) - goto out; - - rc = i2c_w(ov, 0x79, (unsigned char)(val >> 8) + 0xb); - if (rc < 0) - goto out; -#endif - break; - case SEN_SAA7111A: - rc = i2c_w(ov, 0x0d, (val + 32768) >> 8); - if (rc < 0) - goto out; - break; - default: - PDEBUG(3, "Unsupported with this sensor"); - rc = -EPERM; - goto out; - } - - rc = 0; /* Success */ - ov->hue = val; -out: - if (ov51x_restart(ov) < 0) - return -EIO; - - return rc; -} - -/* Gets sensor's hue (red/blue balance) setting */ -static int -sensor_get_hue(struct usb_ov511 *ov, unsigned short *val) -{ - int rc; - - switch (ov->sensor) { - case SEN_OV7610: - case SEN_OV6620: - case SEN_OV6630: - rc = i2c_r(ov, OV7610_REG_BLUE); - if (rc < 0) - return rc; - else - *val = rc << 8; - break; - case SEN_OV8610: - case SEN_OV7640: - rc = i2c_r(ov, OV8610_REG_HUE); - if (rc < 0) - return rc; - else - *val = (rc & 0x1f) << 11; - break; - case SEN_OV7620: - rc = i2c_r(ov, 0x7a); - if (rc < 0) - return rc; - else - *val = rc << 8; - break; - case SEN_SAA7111A: - *val = ov->hue; - break; - default: - PDEBUG(3, "Unsupported with this sensor"); - return -EPERM; - } - - PDEBUG(3, "%d", *val); - ov->hue = *val; - - return 0; -} - -/* -------------------------------------------------------------------------- */ - -static int -sensor_set_picture(struct usb_ov511 *ov, struct video_picture *p) -{ - int rc; - - PDEBUG(4, "sensor_set_picture"); - - ov->whiteness = p->whiteness; - - /* Don't return error if a setting is unsupported, or rest of settings - * will not be performed */ - - rc = sensor_set_contrast(ov, p->contrast); - if (FATAL_ERROR(rc)) - return rc; - - rc = sensor_set_brightness(ov, p->brightness); - if (FATAL_ERROR(rc)) - return rc; - - rc = sensor_set_saturation(ov, p->colour); - if (FATAL_ERROR(rc)) - return rc; - - rc = sensor_set_hue(ov, p->hue); - if (FATAL_ERROR(rc)) - return rc; - - return 0; -} - -static int -sensor_get_picture(struct usb_ov511 *ov, struct video_picture *p) -{ - int rc; - - PDEBUG(4, "sensor_get_picture"); - - /* Don't return error if a setting is unsupported, or rest of settings - * will not be performed */ - - rc = sensor_get_contrast(ov, &(p->contrast)); - if (FATAL_ERROR(rc)) - return rc; - - rc = sensor_get_brightness(ov, &(p->brightness)); - if (FATAL_ERROR(rc)) - return rc; - - rc = sensor_get_saturation(ov, &(p->colour)); - if (FATAL_ERROR(rc)) - return rc; - - rc = sensor_get_hue(ov, &(p->hue)); - if (FATAL_ERROR(rc)) - return rc; - - p->whiteness = 105 << 8; - - return 0; -} - -#if defined(CONFIG_VIDEO_PROC_FS) -// FIXME: Exposure range is only 0x00-0x7f in interlace mode -/* Sets current exposure for sensor. This only has an effect if auto-exposure - * is off */ -static inline int -sensor_set_exposure(struct usb_ov511 *ov, unsigned char val) -{ - int rc; - - PDEBUG(3, "%d", val); - - if (ov->stop_during_set) - if (ov51x_stop(ov) < 0) - return -EIO; - - switch (ov->sensor) { - case SEN_OV6620: - case SEN_OV6630: - case SEN_OV7610: - case SEN_OV7620: - case SEN_OV7640: - case SEN_OV76BE: - case SEN_OV8600: - case SEN_OV8610: - rc = i2c_w(ov, 0x10, val); - if (rc < 0) - goto out; - - break; - case SEN_SAA7111A: - PDEBUG(3, "Unsupported with this sensor"); - return -EPERM; - default: - err("Sensor not supported for set_exposure"); - return -EINVAL; - } - - rc = 0; /* Success */ - ov->exposure = val; -out: - if (ov51x_restart(ov) < 0) - return -EIO; - - return rc; -} - -/* Gets current exposure level from sensor, regardless of whether it is under - * manual control. */ -static int -sensor_get_exposure(struct usb_ov511 *ov, unsigned char *val) -{ - int rc; - - switch (ov->sensor) { - case SEN_OV7610: - case SEN_OV6620: - case SEN_OV6630: - case SEN_OV7620: - case SEN_OV7640: - case SEN_OV76BE: - case SEN_OV8600: - case SEN_OV8610: - rc = i2c_r(ov, 0x10); - if (rc < 0) - return rc; - else - *val = rc; - break; - case SEN_SAA7111A: - val = 0; - PDEBUG(3, "Unsupported with this sensor"); - return -EPERM; - default: - err("Sensor not supported for get_exposure"); - return -EINVAL; - } - - PDEBUG(3, "%d", *val); - ov->exposure = *val; - - return 0; -} -#endif /* CONFIG_VIDEO_PROC_FS */ - -/* Turns on or off the LED. Only has an effect with OV511+/OV518(+)/OV519 */ -static void -ov51x_led_control(struct usb_ov511 *ov, int on) -{ - PDEBUG(4, " (%s)", on ? "turn on" : "turn off"); - - if (ov->bridge == BRG_OV511PLUS) - reg_w(ov, R511_SYS_LED_CTL, on ? 1 : 0); - else if (ov->bridge == BRG_OV519) - reg_w_mask(ov, OV519_GPIO_DATA_OUT0, on ? 0x01 : 0x00, 0x01); - else if (ov->bclass == BCL_OV518) - reg_w_mask(ov, R518_GPIO_OUT, on ? 0x02 : 0x00, 0x02); - - return; -} - -/* Matches the sensor's internal frame rate to the lighting frequency. - * Valid frequencies are: - * 50 - 50Hz, for European and Asian lighting - * 60 - 60Hz, for American lighting - * - * Tested with: OV7610, OV7620, OV76BE, OV6620 - * Unsupported: KS0127, KS0127B, SAA7111A - * Returns: 0 for success - */ -static int -sensor_set_light_freq(struct usb_ov511 *ov, int freq) -{ - int sixty; - - PDEBUG(4, "%d Hz", freq); - - if (freq == 60) - sixty = 1; - else if (freq == 50) - sixty = 0; - else { - err("Invalid light freq (%d Hz)", freq); - return -EINVAL; - } - - switch (ov->sensor) { - case SEN_OV8610: - i2c_w(ov, 0x2b, sixty?0xcc:0xc0); - i2c_w(ov, 0x2a, sixty?0x80:0xa0); - break; - case SEN_OV7610: - i2c_w_mask(ov, 0x2a, sixty?0x00:0x80, 0x80); - i2c_w(ov, 0x2b, sixty?0x00:0xac); - i2c_w_mask(ov, 0x13, 0x10, 0x10); - i2c_w_mask(ov, 0x13, 0x00, 0x10); - break; - case SEN_OV7620: - case SEN_OV76BE: - case SEN_OV8600: - i2c_w_mask(ov, 0x2a, sixty?0x00:0x80, 0x80); - i2c_w(ov, 0x2b, sixty?0x00:0xac); - i2c_w_mask(ov, 0x76, 0x01, 0x01); - break; - case SEN_OV7640: - i2c_w_mask(ov, 0x2a, sixty?0x00:0x80, 0x80); - i2c_w(ov, 0x2b, sixty?0x00:0xac); - case SEN_OV6620: - case SEN_OV6630: - i2c_w(ov, 0x2b, sixty?0xa8:0x28); - i2c_w(ov, 0x2a, sixty?0x84:0xa4); - break; - case SEN_SAA7111A: - PDEBUG(5, "Unsupported with this sensor"); - return -EPERM; - default: - err("Sensor not supported for set_light_freq"); - return -EINVAL; - } - - ov->lightfreq = freq; - - return 0; -} - -/* If enable is true, turn on the sensor's banding filter, otherwise turn it - * off. This filter tries to reduce the pattern of horizontal light/dark bands - * caused by some (usually fluorescent) lighting. The light frequency must be - * set either before or after enabling it with ov51x_set_light_freq(). - * - * Tested with: OV7610, OV7620, OV76BE, OV6620. - * Unsupported: KS0127, KS0127B, SAA7111A - * Returns: 0 for success - */ -static int -sensor_set_banding_filter(struct usb_ov511 *ov, int enable) -{ - int rc; - - PDEBUG(4, " (%s)", enable ? "turn on" : "turn off"); - - if (ov->sensor == SEN_KS0127 || ov->sensor == SEN_KS0127B - || ov->sensor == SEN_SAA7111A) { - PDEBUG(5, "Unsupported with this sensor"); - return -EPERM; - } - - rc = i2c_w_mask(ov, 0x2d, enable?0x04:0x00, 0x04); - if (rc < 0) - return rc; - - ov->bandfilt = enable; - - return 0; -} - -/* If enable is true, turn on the sensor's auto brightness control, otherwise - * turn it off. - * - * Unsupported: KS0127, KS0127B, SAA7111A, OV7640 - * Returns: 0 for success - */ -static int -sensor_set_auto_brightness(struct usb_ov511 *ov, int enable) -{ - int rc; - - PDEBUG(4, " (%s)", enable ? "turn on" : "turn off"); - - if (ov->sensor == SEN_KS0127 || ov->sensor == SEN_KS0127B - || ov->sensor == SEN_SAA7111A || ov->sensor == SEN_OV7640) { - PDEBUG(5, "Unsupported with this sensor"); - return -EPERM; - } - - rc = i2c_w_mask(ov, 0x2d, enable?0x10:0x00, 0x10); - if (rc < 0) - return rc; - - ov->auto_brt = enable; - - return 0; -} - -/* If enable is true, turn on the sensor's auto exposure control, otherwise - * turn it off. - * - * Unsupported: KS0127, KS0127B, SAA7111A - * Returns: 0 for success - */ -static int -sensor_set_auto_exposure(struct usb_ov511 *ov, int enable) -{ - PDEBUG(4, " (%s)", enable ? "turn on" : "turn off"); - - switch (ov->sensor) { - case SEN_OV7610: - i2c_w_mask(ov, 0x29, enable?0x00:0x80, 0x80); - break; - case SEN_OV6620: - case SEN_OV7620: - case SEN_OV7640: - case SEN_OV76BE: - case SEN_OV8600: - i2c_w_mask(ov, 0x13, enable?0x01:0x00, 0x01); - break; - case SEN_OV6630: - case SEN_OV8610: - i2c_w_mask(ov, 0x28, enable?0x00:0x10, 0x10); - break; - case SEN_SAA7111A: - PDEBUG(5, "Unsupported with this sensor"); - return -EPERM; - default: - err("Sensor not supported for set_auto_exposure"); - return -EINVAL; - } - - ov->auto_exp = enable; - - return 0; -} - -/* If enable is true, turn on the sensor's auto gain control, otherwise - * turn it off. - * - * Returns: 0 for success - */ -static int -sensor_set_auto_gain(struct usb_ov511 *ov, int enable) -{ - PDEBUG(4, " (%s)", enable ? "turn on" : "turn off"); - - switch (ov->sensor) { - case SEN_OV7640: - i2c_w_mask(ov, 0x13, enable?0x02:0x00, 0x02); - break; - default: - PDEBUG(5, "Unsupported with this sensor"); - return -EPERM; -// default: -// err("Sensor not supported for set_auto_gain"); -// return -EINVAL; - } - - ov->auto_gain = enable; - - return 0; -} - -/* Modifies the sensor's exposure algorithm to allow proper exposure of objects - * that are illuminated from behind. - * - * Tested with: OV6620, OV7620 - * Unsupported: OV7610, OV7640, OV76BE, KS0127, KS0127B, SAA7111A - * Returns: 0 for success - */ -static int -sensor_set_backlight(struct usb_ov511 *ov, int enable) -{ - PDEBUG(4, " (%s)", enable ? "turn on" : "turn off"); - - switch (ov->sensor) { - case SEN_OV8610: - // change AEC/AGC Reference level - i2c_w_mask(ov, 0x68, enable?0xef:0xcf, 0xff); - // select central 1/4 image to calculate AEC/AGC - i2c_w_mask(ov, 0x29, enable?0x08:0x00, 0x08); - // increase gain 3dB - i2c_w_mask(ov, 0x28, enable?0x02:0x00, 0x02); - break; - case SEN_OV7620: - case SEN_OV8600: - // change AEC/AGC Reference level - i2c_w_mask(ov, 0x68, enable?0xe0:0xc0, 0xe0); - // select central 1/4 image to calculate AEC/AGC - i2c_w_mask(ov, 0x29, enable?0x08:0x00, 0x08); - // increase gain 3dB - i2c_w_mask(ov, 0x28, enable?0x02:0x00, 0x02); - break; - case SEN_OV6620: - i2c_w_mask(ov, 0x4e, enable?0xe0:0xc0, 0xe0); - i2c_w_mask(ov, 0x29, enable?0x08:0x00, 0x08); - i2c_w_mask(ov, 0x0e, enable?0x80:0x00, 0x80); - break; - case SEN_OV6630: - i2c_w_mask(ov, 0x4e, enable?0x80:0x60, 0xe0); - i2c_w_mask(ov, 0x29, enable?0x08:0x00, 0x08); - i2c_w_mask(ov, 0x28, enable?0x02:0x00, 0x02); - break; - case SEN_OV7610: - case SEN_OV7640: - case SEN_OV76BE: - case SEN_SAA7111A: - PDEBUG(5, "Unsupported with this sensor"); - return -EPERM; - default: - err("Sensor not supported for set_backlight"); - return -EINVAL; - } - - ov->backlight = enable; - - return 0; -} - -static int -sensor_set_mirror(struct usb_ov511 *ov, int enable) -{ - PDEBUG(4, " (%s)", enable ? "turn on" : "turn off"); - - switch (ov->sensor) { - case SEN_OV6620: - case SEN_OV6630: - case SEN_OV7610: - case SEN_OV7620: - case SEN_OV76BE: - case SEN_OV7640: - case SEN_OV8600: - case SEN_OV8610: - i2c_w_mask(ov, 0x12, enable?0x40:0x00, 0x40); - break; - case SEN_SAA7111A: - PDEBUG(5, "Unsupported with this sensor"); - return -EPERM; - default: - err("Sensor not supported for set_mirror"); - return -EINVAL; - } - - ov->mirror = enable; - - return 0; -} - -/* Returns number of bits per pixel (regardless of where they are located; - * planar or not), or zero for unsupported format. - */ -static inline int -get_depth(int palette) -{ - switch (palette) { - case VIDEO_PALETTE_GREY: return 8; - case VIDEO_PALETTE_YUV420: return 12; - case VIDEO_PALETTE_YUV420P: return 12; /* Planar */ -#ifdef OV511_ALLOW_CONVERSION - case VIDEO_PALETTE_RGB565: return 16; - case VIDEO_PALETTE_RGB24: return 24; - case VIDEO_PALETTE_YUV422: return 16; - case VIDEO_PALETTE_YUYV: return 16; - case VIDEO_PALETTE_YUV422P: return 16; /* Planar */ -#endif - default: return 0; /* Invalid format */ - } -} - -/* Bytes per frame. Used by read(). Return of 0 indicates error */ -static inline long int -get_frame_length(struct usb_ov511 *ov, struct ov511_frame *frame) -{ - if (!frame) { - return 0; - } else { - if (ov->bclass == BCL_OV519) { - return (frame->bytes_recvd); - } else { - return ((frame->width * frame->height - * get_depth(frame->format)) >> 3); - } - } -} - -static int -mode_init_ov_sensor_regs(struct usb_ov511 *ov, struct ovsensor_window *win) -{ - int qvga = win->quarter; - - /******** Mode (VGA/QVGA) and sensor specific regs ********/ - - switch (ov->sensor) { - case SEN_OV8610: - // For OV8610 qvga means qsvga - i2c_setbit(ov, OV7610_REG_COM_C, qvga?1:0, 5); - // FIXME: Does this improve the image quality or frame rate? -#if 0 - i2c_w_mask(ov, 0x28, qvga?0x00:0x20, 0x20); - i2c_w(ov, 0x24, 0x10); - i2c_w(ov, 0x25, qvga?0x40:0x8a); - i2c_w(ov, 0x2f, qvga?0x30:0xb0); - i2c_w(ov, 0x35, qvga?0x1c:0x9c); -#endif - break; - case SEN_OV7610: - i2c_w_mask(ov, 0x14, qvga?0x20:0x00, 0x20); -// FIXME: Does this improve the image quality or frame rate? -#if 0 - i2c_w_mask(ov, 0x28, qvga?0x00:0x20, 0x20); - i2c_w(ov, 0x24, 0x10); - i2c_w(ov, 0x25, qvga?0x40:0x8a); - i2c_w(ov, 0x2f, qvga?0x30:0xb0); - i2c_w(ov, 0x35, qvga?0x1c:0x9c); -#endif - break; - case SEN_OV7620: -// i2c_w(ov, 0x2b, 0x00); - i2c_w_mask(ov, 0x14, qvga?0x20:0x00, 0x20); - i2c_w_mask(ov, 0x28, qvga?0x00:0x20, 0x20); - i2c_w(ov, 0x24, qvga?0x20:0x3a); - i2c_w(ov, 0x25, qvga?0x30:0x60); - i2c_w_mask(ov, 0x2d, qvga?0x40:0x00, 0x40); - i2c_w_mask(ov, 0x67, qvga?0xf0:0x90, 0xf0); - i2c_w_mask(ov, 0x74, qvga?0x20:0x00, 0x20); - break; - case SEN_OV76BE: -// i2c_w(ov, 0x2b, 0x00); - i2c_w_mask(ov, 0x14, qvga?0x20:0x00, 0x20); -// FIXME: Enable this once 7620AE uses 7620 initial settings -#if 0 - i2c_w_mask(ov, 0x28, qvga?0x00:0x20, 0x20); - i2c_w(ov, 0x24, qvga?0x20:0x3a); - i2c_w(ov, 0x25, qvga?0x30:0x60); - i2c_w_mask(ov, 0x2d, qvga?0x40:0x00, 0x40); - i2c_w_mask(ov, 0x67, qvga?0xb0:0x90, 0xf0); - i2c_w_mask(ov, 0x74, qvga?0x20:0x00, 0x20); -#endif - break; - case SEN_OV7640: -// i2c_w(ov, 0x2b, 0x00); - i2c_w_mask(ov, 0x14, qvga?0x20:0x00, 0x20); - i2c_w_mask(ov, 0x28, qvga?0x00:0x20, 0x20); -// i2c_w(ov, 0x24, qvga?0x20:0x3a); -// i2c_w(ov, 0x25, qvga?0x30:0x60); -// i2c_w_mask(ov, 0x2d, qvga?0x40:0x00, 0x40); -// i2c_w_mask(ov, 0x67, qvga?0xf0:0x90, 0xf0); -// i2c_w_mask(ov, 0x74, qvga?0x20:0x00, 0x20); - break; - case SEN_OV6620: - i2c_w_mask(ov, 0x14, qvga?0x20:0x00, 0x20); - break; - case SEN_OV6630: - i2c_w_mask(ov, 0x14, qvga?0x20:0x00, 0x20); - break; - default: - return -EINVAL; - } - - /******** Palette-specific regs ********/ - - if (win->format == VIDEO_PALETTE_GREY) { - if (ov->sensor == SEN_OV7610 || ov->sensor == SEN_OV76BE) { - /* these aren't valid on the OV6620/OV7620/6630? */ - i2c_w_mask(ov, 0x0e, 0x40, 0x40); - } - - /* OV6630 default reg 0x13 value is always right */ - /* OV7640 is 8-bit only */ - if (ov->sensor != SEN_OV6630 && ov->sensor != SEN_OV7640) - i2c_w_mask(ov, 0x13, 0x20, 0x20); - else - return -EINVAL; /* No OV6630 greyscale support yet */ - } else { - if (ov->sensor == SEN_OV7610 || ov->sensor == SEN_OV76BE) { - /* not valid on the OV6620/OV7620/6630? */ - i2c_w_mask(ov, 0x0e, 0x00, 0x40); - } - - /* The OV518 needs special treatment. Although both the OV518 - * and the OV6630 support a 16-bit video bus, only the 8 bit Y - * bus is actually used. The UV bus is tied to ground. - * Therefore, the OV6630 needs to be in 8-bit multiplexed - * output mode */ - - /* OV7640 is 8-bit only */ - - if (ov->sensor != SEN_OV6630 && ov->sensor != SEN_OV7640) - i2c_w_mask(ov, 0x13, 0x00, 0x20); - } - - /******** Clock programming ********/ - - /* The OV6620 needs special handling. This prevents the - * severe banding that normally occurs */ - if (ov->sensor == SEN_OV6620) { - /* Clock down */ - - i2c_w(ov, 0x2a, 0x04); - i2c_w(ov, 0x11, win->clockdiv); - i2c_w(ov, 0x2a, 0x84); - /* This next setting is critical. It seems to improve - * the gain or the contrast. The "reserved" bits seem - * to have some effect in this case. */ - i2c_w(ov, 0x2d, 0x85); - } else if (win->clockdiv >= 0) { - i2c_w(ov, 0x11, win->clockdiv); - } - - /******** Special Features ********/ - - if (framedrop >= 0 && ov->sensor != SEN_OV7640) - i2c_w(ov, 0x16, framedrop); - - /* Test Pattern */ - if (ov->sensor != SEN_OV7640) - i2c_w_mask(ov, 0x12, (testpat?0x02:0x00), 0x02); - - /* Enable auto white balance */ - i2c_w_mask(ov, 0x12, 0x04, 0x04); - - // This will go away as soon as ov51x_mode_init_sensor_regs() - // is fully tested. - /* 7620/6620/6630? don't have register 0x35, so play it safe */ - if (ov->sensor == SEN_OV7610 || ov->sensor == SEN_OV76BE) { - if (win->width == 640 && win->height == 480) - i2c_w(ov, 0x35, 0x9e); - else - i2c_w(ov, 0x35, 0x1e); - } - - return 0; -} - -static int -set_ov_sensor_window(struct usb_ov511 *ov, struct ovsensor_window *win) -{ - int hwsbase, hwebase, vwsbase, vwebase, hwscale, vwscale, ret; - - /* The different sensor ICs handle setting up of window differently. - * IF YOU SET IT WRONG, YOU WILL GET ALL ZERO ISOC DATA FROM OV51x!!! */ - switch (ov->sensor) { - case SEN_OV8610: - hwsbase = 0x1e; - hwebase = 0x1e; - vwsbase = 0x02; - vwebase = 0x02; - break; - case SEN_OV7610: - case SEN_OV76BE: - hwsbase = 0x38; - hwebase = 0x3a; - vwsbase = vwebase = 0x05; - break; - case SEN_OV6620: - case SEN_OV6630: - hwsbase = 0x38; - hwebase = 0x3a; - vwsbase = 0x05; - vwebase = 0x06; - break; - case SEN_OV7620: - hwsbase = 0x2f; /* From 7620.SET (spec is wrong) */ - hwebase = 0x2f; - vwsbase = vwebase = 0x05; - break; - case SEN_OV7640: - hwsbase = 0x1a; - hwebase = 0x1a; - vwsbase = vwebase = 0x03; - break; - default: - return -EINVAL; - } - - switch (ov->sensor) { - case SEN_OV6620: - case SEN_OV6630: - if (win->quarter) { /* QCIF */ - hwscale = 0; - vwscale = 0; - } else { /* CIF */ - hwscale = 1; - vwscale = 1; /* The datasheet says 0; it's wrong */ - } - break; - case SEN_OV8610: - if (win->quarter) { /* QSVGA */ - hwscale = 1; - vwscale = 1; - } else { /* SVGA */ - hwscale = 2; - vwscale = 2; - } - break; - default: //SEN_OV7xx0 - if (win->quarter) { /* QVGA */ - hwscale = 1; - vwscale = 0; - } else { /* VGA */ - hwscale = 2; - vwscale = 1; - } - } - - ret = mode_init_ov_sensor_regs(ov, win); - if (ret < 0) - return ret; - - if (ov->sensor == SEN_OV8610) { - i2c_w_mask(ov, 0x2d, 0x05, 0x40); /* old 0x95, new 0x05 from windrv 090403 *//* bits 5-7: reserved */ - i2c_w_mask(ov, 0x28, 0x20, 0x20); /* bit 5: progressive mode on */ - } - - i2c_w(ov, 0x17, hwsbase + (win->x >> hwscale)); - i2c_w(ov, 0x18, hwebase + ((win->x + win->width) >> hwscale)); - i2c_w(ov, 0x19, vwsbase + (win->y >> vwscale)); - i2c_w(ov, 0x1a, vwebase + ((win->y + win->height) >> vwscale)); - -#ifdef OV511_DEBUG - if (dump_sensor) - dump_i2c_regs(ov); -#endif - - return 0; -} - -static int -ov_sensor_mode_setup(struct usb_ov511 *ov, - int width, int height, int mode, int sub_flag) -{ - struct ovsensor_window win; - int half_w = ov->maxwidth / 2; - int half_h = ov->maxheight / 2; - - win.format = mode; - - /* Unless subcapture is enabled, center the image window and downsample - * if possible to increase the field of view */ - if (sub_flag) { - win.x = ov->subx; - win.y = ov->suby; - win.width = ov->subw; - win.height = ov->subh; - win.quarter = 0; - } else { - /* NOTE: OV518(+) and OV519 does downsampling on its own */ - if ((width > half_w && height > half_h) - || (ov->bclass == BCL_OV518) - || (ov->bclass == BCL_OV519)) { - win.width = ov->maxwidth; - win.height = ov->maxheight; - win.quarter = 0; - } else if (width > half_w || height > half_h) { - err("Illegal dimensions"); - return -EINVAL; - } else { - win.width = half_w; - win.height = half_h; - win.quarter = 1; - } - - /* Center it */ - win.x = (win.width - width) / 2; - win.y = (win.height - height) / 2; - } - - if (clockdiv >= 0) { - /* Manual override */ - win.clockdiv = clockdiv; - } else if (ov->bridge == BRG_OV518) { - /* OV518 controls the clock externally */ - win.clockdiv = 0; - } else if (ov->bridge == BRG_OV518PLUS) { - /* OV518+ controls the clock externally */ - win.clockdiv = 1; - } else if (ov->bridge == BRG_OV519) { - /* Clock is determined by OV519 frame rate code */ - win.clockdiv = ov->clockdiv; - } else if (ov->compress) { - /* Use the highest possible rate, to maximize FPS */ - switch (ov->sensor) { - case SEN_OV6620: - /* ...except with this sensor, which doesn't like - * higher rates yet */ - win.clockdiv = 3; - break; - case SEN_OV6630: - win.clockdiv = 0; - break; - case SEN_OV76BE: - case SEN_OV7610: - case SEN_OV7620: - win.clockdiv = 1; - break; - case SEN_OV8610: - win.clockdiv = 0; - break; - default: - err("Invalid sensor"); - return -EINVAL; - } - } else { - switch (ov->sensor) { - case SEN_OV6620: - case SEN_OV6630: - win.clockdiv = 3; - break; - case SEN_OV76BE: - case SEN_OV7610: - case SEN_OV7620: - /* Use slowest possible clock without sacrificing - * frame rate */ - win.clockdiv = ((sub_flag ? ov->subw * ov->subh - : width * height) - * (win.format == VIDEO_PALETTE_GREY ? 2 : 3) / 2) - / 66000; - break; - default: - err("Invalid sensor"); - return -EINVAL; - } - } - - PDEBUG(4, "Setting clock divider to %d", win.clockdiv); - - return set_ov_sensor_window(ov, &win); -} - -/* Set up the OV511/OV511+ with the given image parameters. - * - * Do not put any sensor-specific code in here (including I2C I/O functions) - */ -static int -ov511_mode_init_regs(struct usb_ov511 *ov, - int width, int height, int mode, int sub_flag) -{ - int hsegs, vsegs; - - if (sub_flag) { - width = ov->subw; - height = ov->subh; - } - - PDEBUG(3, "width:%d, height:%d, mode:%d, sub:%d", - width, height, mode, sub_flag); - - // FIXME: This should be moved to a 7111a-specific function once - // subcapture is dealt with properly - if (ov->sensor == SEN_SAA7111A) { - if (width == 320 && height == 240) { - /* No need to do anything special */ - } else if (width == 640 && height == 480) { - /* Set the OV511 up as 320x480, but keep the - * V4L resolution as 640x480 */ - width = 320; - } else { - err("SAA7111A only allows 320x240 or 640x480"); - return -EINVAL; - } - } - - /* Make sure width and height are a multiple of 8 */ - if (width % 8 || height % 8) { - err("Invalid size (%d, %d) (mode = %d)", width, height, mode); - return -EINVAL; - } - - if (width < ov->minwidth || height < ov->minheight) { - err("Requested dimensions are too small"); - return -EINVAL; - } - - if (ov51x_stop(ov) < 0) - return -EIO; - - if (mode == VIDEO_PALETTE_GREY) { - reg_w(ov, R511_CAM_UV_EN, 0x00); - reg_w(ov, R511_SNAP_UV_EN, 0x00); - reg_w(ov, R511_SNAP_OPTS, 0x01); - } else { - reg_w(ov, R511_CAM_UV_EN, 0x01); - reg_w(ov, R511_SNAP_UV_EN, 0x01); - reg_w(ov, R511_SNAP_OPTS, 0x03); - } - - /* Here I'm assuming that snapshot size == image size. - * I hope that's always true. --claudio - */ - hsegs = (width >> 3) - 1; - vsegs = (height >> 3) - 1; - - reg_w(ov, R511_CAM_PXCNT, hsegs); - reg_w(ov, R511_CAM_LNCNT, vsegs); - reg_w(ov, R511_CAM_PXDIV, 0x00); - reg_w(ov, R511_CAM_LNDIV, 0x00); - - /* YUV420, low pass filter on */ - reg_w(ov, R511_CAM_OPTS, 0x03); - - /* Snapshot additions */ - reg_w(ov, R511_SNAP_PXCNT, hsegs); - reg_w(ov, R511_SNAP_LNCNT, vsegs); - reg_w(ov, R511_SNAP_PXDIV, 0x00); - reg_w(ov, R511_SNAP_LNDIV, 0x00); - - if (ov->compress) { - /* Enable Y and UV quantization and compression */ - reg_w(ov, R511_COMP_EN, 0x07); - reg_w(ov, R511_COMP_LUT_EN, 0x03); - ov51x_reset(ov, OV511_RESET_OMNICE); - } - - if (ov51x_restart(ov) < 0) - return -EIO; - - return 0; -} - -/* Sets up the OV518/OV518+ with the given image parameters - * - * OV518 needs a completely different approach, until we can figure out what - * the individual registers do. Also, only 15 FPS is supported now. - * - * Do not put any sensor-specific code in here (including I2C I/O functions) - */ -static int -ov518_mode_init_regs(struct usb_ov511 *ov, - int width, int height, int mode, int sub_flag) -{ - int hsegs, vsegs, hi_res; - - if (sub_flag) { - width = ov->subw; - height = ov->subh; - } - - PDEBUG(3, "width:%d, height:%d, mode:%d, sub:%d", - width, height, mode, sub_flag); - - if (width % 16 || height % 8) { - err("Invalid size (%d, %d)", width, height); - return -EINVAL; - } - - if (width < ov->minwidth || height < ov->minheight) { - err("Requested dimensions are too small"); - return -EINVAL; - } - - if (width >= 320 && height >= 240) { - hi_res = 1; - } else if (width >= 320 || height >= 240) { - err("Invalid width/height combination (%d, %d)", width, height); - return -EINVAL; - } else { - hi_res = 0; - } - - if (ov51x_stop(ov) < 0) - return -EIO; - - /******** Set the mode ********/ - - reg_w(ov, 0x2b, 0); - reg_w(ov, 0x2c, 0); - reg_w(ov, 0x2d, 0); - reg_w(ov, 0x2e, 0); - reg_w(ov, 0x3b, 0); - reg_w(ov, 0x3c, 0); - reg_w(ov, 0x3d, 0); - reg_w(ov, 0x3e, 0); - - if (ov->bridge == BRG_OV518 && ov518_color) { - if (mode == VIDEO_PALETTE_GREY) { - /* Set 16-bit input format (UV data are ignored) */ - reg_w_mask(ov, 0x20, 0x00, 0x08); - - /* Set 8-bit (4:0:0) output format */ - reg_w_mask(ov, 0x28, 0x00, 0xf0); - reg_w_mask(ov, 0x38, 0x00, 0xf0); - } else { - /* Set 8-bit (YVYU) input format */ - reg_w_mask(ov, 0x20, 0x08, 0x08); - - /* Set 12-bit (4:2:0) output format */ - reg_w_mask(ov, 0x28, 0x80, 0xf0); - reg_w_mask(ov, 0x38, 0x80, 0xf0); - } - } else { - reg_w(ov, 0x28, (mode == VIDEO_PALETTE_GREY) ? 0x00:0x80); - reg_w(ov, 0x38, (mode == VIDEO_PALETTE_GREY) ? 0x00:0x80); - } - - hsegs = width / 16; - vsegs = height / 4; - - reg_w(ov, 0x29, hsegs); - reg_w(ov, 0x2a, vsegs); - - reg_w(ov, 0x39, hsegs); - reg_w(ov, 0x3a, vsegs); - - /* Windows driver does this here; who knows why */ - reg_w(ov, 0x2f, 0x80); - - /******** Set the framerate (to 30 FPS) ********/ - - /* Mode independent, but framerate dependent, regs */ - reg_w(ov, 0x51, 0x04); /* Clock divider; lower==faster */ - reg_w(ov, 0x22, 0x18); - reg_w(ov, 0x23, 0xff); - - if (ov->bridge == BRG_OV518PLUS) - reg_w(ov, 0x21, 0x19); - else - reg_w(ov, 0x71, 0x17); /* Compression-related? */ - - // FIXME: Sensor-specific - /* Bit 5 is what matters here. Of course, it is "reserved" */ - i2c_w(ov, 0x54, 0x23); - - reg_w(ov, 0x2f, 0x80); - - if (ov->bridge == BRG_OV518PLUS) { - reg_w(ov, 0x24, 0x94); - reg_w(ov, 0x25, 0x90); - ov518_reg_w32(ov, 0xc4, 400, 2); /* 190h */ - ov518_reg_w32(ov, 0xc6, 540, 2); /* 21ch */ - ov518_reg_w32(ov, 0xc7, 540, 2); /* 21ch */ - ov518_reg_w32(ov, 0xc8, 108, 2); /* 6ch */ - ov518_reg_w32(ov, 0xca, 131098, 3); /* 2001ah */ - ov518_reg_w32(ov, 0xcb, 532, 2); /* 214h */ - ov518_reg_w32(ov, 0xcc, 2400, 2); /* 960h */ - ov518_reg_w32(ov, 0xcd, 32, 2); /* 20h */ - ov518_reg_w32(ov, 0xce, 608, 2); /* 260h */ - } else { - reg_w(ov, 0x24, 0x9f); - reg_w(ov, 0x25, 0x90); - ov518_reg_w32(ov, 0xc4, 400, 2); /* 190h */ - ov518_reg_w32(ov, 0xc6, 381, 2); /* 17dh */ - ov518_reg_w32(ov, 0xc7, 381, 2); /* 17dh */ - ov518_reg_w32(ov, 0xc8, 128, 2); /* 80h */ - ov518_reg_w32(ov, 0xca, 183331, 3); /* 2cc23h */ - ov518_reg_w32(ov, 0xcb, 746, 2); /* 2eah */ - ov518_reg_w32(ov, 0xcc, 1750, 2); /* 6d6h */ - ov518_reg_w32(ov, 0xcd, 45, 2); /* 2dh */ - ov518_reg_w32(ov, 0xce, 851, 2); /* 353h */ - } - - reg_w(ov, 0x2f, 0x80); - - if (ov51x_restart(ov) < 0) - return -EIO; - - /* Reset it just for good measure */ - if (ov51x_reset(ov, OV511_RESET_NOREGS) < 0) - return -EIO; - - return 0; -} - -/* Sets up the OV519 with the given image parameters - * - * OV519 needs a completely different approach, until we can figure out what - * the individual registers do. - * - * Do not put any sensor-specific code in here (including I2C I/O functions) - */ -static int -ov519_mode_init_regs(struct usb_ov511 *ov, - int width, int height, int mode, int sub_flag) -{ - static struct ov511_regvals regvals_mode_init_519[] = { - { OV511_REG_BUS, 0x5d, 0x03 }, /* Turn off suspend mode */ - { OV511_REG_BUS, 0x53, 0x9f }, /* was 9b in 1.65-1.08 */ - { OV511_REG_BUS, 0x54, 0x0f }, /* bit2 (jpeg enable) */ - { OV511_REG_BUS, 0xa2, 0x20 }, /* a2-a5 are undocumented */ - { OV511_REG_BUS, 0xa3, 0x18 }, - { OV511_REG_BUS, 0xa4, 0x04 }, - { OV511_REG_BUS, 0xa5, 0x28 }, - { OV511_REG_BUS, 0x37, 0x00 }, /* SetUsbInit */ - { OV511_REG_BUS, 0x55, 0x02 }, /* 4.096 Mhz audio clock */ - /* Enable both fields, YUV Input, disable defect comp (why?) */ - { OV511_REG_BUS, 0x22, 0x1d }, - { OV511_REG_BUS, 0x17, 0x50 }, /* undocumented */ - { OV511_REG_BUS, 0x37, 0x00 }, /* undocumented */ - { OV511_REG_BUS, 0x40, 0xff }, /* I2C timeout counter */ - { OV511_REG_BUS, 0x46, 0x00 }, /* I2C clock prescaler */ - { OV511_REG_BUS, 0x59, 0x04 }, /* new from windrv 090403 */ - { OV511_REG_BUS, 0xff, 0x00 }, /* undocumented */ - /* windows reads 0x55 at this point, why? */ - { OV511_DONE_BUS, 0x0, 0x00}, - }; - -// int hi_res; - - if (sub_flag) { - width = ov->subw; - height = ov->subh; - } - - PDEBUG(3, "width:%d, height:%d, mode:%d, sub:%d", - width, height, mode, sub_flag); - - if ((width % 16) || (height % 8)) { - err("Invalid size (%d, %d)", width, height); - return -EINVAL; - } - - if (width < ov->minwidth || height < ov->minheight) { - err("Requested dimensions are too small %dx%d", width, height); - return -EINVAL; - } - -// if (width >= 800 && height >= 600) { -// hi_res = 1; -// } else - if (width > ov->maxwidth || height > ov->maxheight) { - err("Requested dimensions are too big %dx%d", width, height); - return -EINVAL; - } -// else { -// hi_res = 0; -// } - - if (ov51x_stop(ov) < 0) - return -EIO; - - /******** Set the mode ********/ - - if (write_regvals(ov, regvals_mode_init_519)) - return -EIO; - - if (ov->sensor == SEN_OV7640) { - /* Select 8-bit input mode */ - reg_w_mask(ov, OV519_CAM_DFR, 0x10, 0x10); - } - - reg_w(ov, OV519_CAM_H_SIZE, width>>4); - reg_w(ov, OV519_CAM_V_SIZE, height>>3); - reg_w(ov, OV519_CAM_X_OFFSETL, 0x00); - reg_w(ov, OV519_CAM_X_OFFSETH, 0x00); - reg_w(ov, OV519_CAM_Y_OFFSETL, 0x00); - reg_w(ov, OV519_CAM_Y_OFFSETH, 0x00); - reg_w(ov, OV519_CAM_DIVIDER, 0x00); - reg_w(ov, OV519_CAM_FORMAT, 0x03); /* YUV422 */ - reg_w(ov, 0x26, 0x00); /* Undocumented */ - - - /******** Set the framerate ********/ - if (framerate > 0) { - ov->framerate = framerate; - } - -// FIXME: These are only valid at the max resolution. - if (ov->sensor == SEN_OV7640) { - switch (ov->framerate) { - case 30: - reg_w(ov, 0xa4, 0x0c); - reg_w(ov, 0x23, 0xff); - ov->clockdiv = 0; - break; - case 25: - reg_w(ov, 0xa4, 0x0c); - reg_w(ov, 0x23, 0x1f); - ov->clockdiv = 0; - break; - case 20: - reg_w(ov, 0xa4, 0x0c); - reg_w(ov, 0x23, 0x1b); - ov->clockdiv = 0; - break; - case 15: - reg_w(ov, 0xa4, 0x04); - reg_w(ov, 0x23, 0xff); - ov->clockdiv = 1; - break; - case 10: - reg_w(ov, 0xa4, 0x04); - reg_w(ov, 0x23, 0x1f); - ov->clockdiv = 1; - break; - case 5: - reg_w(ov, 0xa4, 0x04); - reg_w(ov, 0x23, 0x1b); - ov->clockdiv = 1; - break; - default: // 30 fps - reg_w(ov, 0xa4, 0x0c); - reg_w(ov, 0x23, 0xff); - ov->clockdiv = 0; - } - } else if (ov->sensor == SEN_OV8610) { - switch (ov->framerate) { - case 15: - reg_w(ov, 0xa4, 0x06); - reg_w(ov, 0x23, 0xff); - break; - case 10: - reg_w(ov, 0xa4, 0x06); - reg_w(ov, 0x23, 0x1f); - break; - case 5: - reg_w(ov, 0xa4, 0x06); - reg_w(ov, 0x23, 0x1b); - break; - default: // 15 fps - reg_w(ov, 0xa4, 0x06); - reg_w(ov, 0x23, 0xff); - } - - ov->clockdiv = 0; - } else { - err("Sensor not supported for OV519!"); - return -EINVAL; - } - - if (ov51x_restart(ov) < 0) - return -EIO; - - /* Reset it just for good measure */ - if (ov51x_reset(ov, OV511_RESET_NOREGS) < 0) - return -EIO; - - return 0; -} - -/* This is a wrapper around the OV511, OV518, and sensor specific functions */ -static int -mode_init_regs(struct usb_ov511 *ov, - int width, int height, int mode, int sub_flag) -{ - int rc = 0; - - if (!ov || !ov->dev) - return -EFAULT; - - switch (ov->bclass) { - case BCL_OV511: - rc = ov511_mode_init_regs(ov, width, height, mode, sub_flag); - break; - case BCL_OV518: - rc = ov518_mode_init_regs(ov, width, height, mode, sub_flag); - break; - case BCL_OV519: - rc = ov519_mode_init_regs(ov, width, height, mode, sub_flag); - break; - default: - err("mode_init_regs: Invalid bridge class"); - rc = -EINVAL; - } - - if (FATAL_ERROR(rc)) - return rc; - - switch (ov->sensor) { - case SEN_OV8610: - case SEN_OV7610: - case SEN_OV7620: - case SEN_OV76BE: - case SEN_OV7640: - case SEN_OV8600: - case SEN_OV6620: - case SEN_OV6630: - rc = ov_sensor_mode_setup(ov, width, height, mode, sub_flag); - break; - - case SEN_SAA7111A: -// rc = mode_init_saa_sensor_regs(ov, width, height, mode, -// sub_flag); - - PDEBUG(1, "SAA status = 0x%02X", i2c_r(ov, 0x1f)); - break; - default: - rc = -EINVAL; - } - - if (FATAL_ERROR(rc)) - return rc; - - /* Sensor-independent settings */ - rc = sensor_set_auto_brightness(ov, ov->auto_brt); - if (FATAL_ERROR(rc)) - return rc; - - rc = sensor_set_auto_exposure(ov, ov->auto_exp); - if (FATAL_ERROR(rc)) - return rc; - - rc = sensor_set_auto_gain(ov, ov->auto_gain); - if (FATAL_ERROR(rc)) - return rc; - - rc = sensor_set_banding_filter(ov, bandingfilter); - if (FATAL_ERROR(rc)) - return rc; - - if (ov->lightfreq) { - rc = sensor_set_light_freq(ov, lightfreq); - if (FATAL_ERROR(rc)) - return rc; - } - - rc = sensor_set_backlight(ov, ov->backlight); - if (FATAL_ERROR(rc)) - return rc; - - rc = sensor_set_mirror(ov, ov->mirror); - if (FATAL_ERROR(rc)) - return rc; - - return 0; -} - -/* This sets the default image parameters. This is useful for apps that use - * read() and do not set these. - */ -static int -ov51x_set_default_params(struct usb_ov511 *ov) -{ - int i; - - /* Set default sizes in case IOCTL (VIDIOCMCAPTURE) is not used - * (using read() instead). */ - for (i = 0; i < OV511_NUMFRAMES; i++) { - ov->frame[i].width = ov->maxwidth; - ov->frame[i].height = ov->maxheight; - ov->frame[i].bytes_read = 0; - if (force_palette) - ov->frame[i].format = force_palette; - else -#ifdef OV511_ALLOW_CONVERSION - ov->frame[i].format = VIDEO_PALETTE_RGB24; -#else - ov->frame[i].format = VIDEO_PALETTE_YUV420; -#endif - ov->frame[i].depth = get_depth(ov->frame[i].format); - } - - PDEBUG(3, "%dx%d, %s", ov->maxwidth, ov->maxheight, - symbolic(v4l1_plist, ov->frame[0].format)); - - /* Initialize to max width/height, YUV420 or RGB24 (if supported) */ - if (mode_init_regs(ov, ov->maxwidth, ov->maxheight, - ov->frame[0].format, 0) < 0) - return -EINVAL; - - return 0; -} - -/********************************************************************** - * - * Video decoder stuff - * - **********************************************************************/ - -/* Set analog input port of decoder */ -static int -decoder_set_input(struct usb_ov511 *ov, int input) -{ - PDEBUG(4, "port %d", input); - - switch (ov->sensor) { - case SEN_SAA7111A: - { - /* Select mode */ - i2c_w_mask(ov, 0x02, input, 0x07); - /* Bypass chrominance trap for modes 4..7 */ - i2c_w_mask(ov, 0x09, (input > 3) ? 0x80:0x00, 0x80); - break; - } - default: - return -EINVAL; - } - - return 0; -} - -/* Get ASCII name of video input */ -static int -decoder_get_input_name(struct usb_ov511 *ov, int input, char *name) -{ - switch (ov->sensor) { - case SEN_SAA7111A: - { - if (input < 0 || input > 7) - return -EINVAL; - else if (input < 4) - sprintf(name, "CVBS-%d", input); - else // if (input < 8) - sprintf(name, "S-Video-%d", input - 4); - break; - } - default: - sprintf(name, "%s", "Camera"); - } - - return 0; -} - -/* Set norm (NTSC, PAL, SECAM, AUTO) */ -static int -decoder_set_norm(struct usb_ov511 *ov, int norm) -{ - PDEBUG(4, "%d", norm); - - switch (ov->sensor) { - case SEN_SAA7111A: - { - int reg_8, reg_e; - - if (norm == VIDEO_MODE_NTSC) { - reg_8 = 0x40; /* 60 Hz */ - reg_e = 0x00; /* NTSC M / PAL BGHI */ - } else if (norm == VIDEO_MODE_PAL) { - reg_8 = 0x00; /* 50 Hz */ - reg_e = 0x00; /* NTSC M / PAL BGHI */ - } else if (norm == VIDEO_MODE_AUTO) { - reg_8 = 0x80; /* Auto field detect */ - reg_e = 0x00; /* NTSC M / PAL BGHI */ - } else if (norm == VIDEO_MODE_SECAM) { - reg_8 = 0x00; /* 50 Hz */ - reg_e = 0x50; /* SECAM / PAL 4.43 */ - } else { - return -EINVAL; - } - - i2c_w_mask(ov, 0x08, reg_8, 0xc0); - i2c_w_mask(ov, 0x0e, reg_e, 0x70); - break; - } - default: - return -EINVAL; - } - - return 0; -} - -#ifdef OV511_ALLOW_CONVERSION -/********************************************************************** - * - * Color correction functions - * - **********************************************************************/ - -/* - * Turn a YUV4:2:0 block into an RGB block - * - * Video4Linux seems to use the blue, green, red channel - * order convention-- rgb[0] is blue, rgb[1] is green, rgb[2] is red. - * - * Color space conversion coefficients taken from the excellent - * http://www.inforamp.net/~poynton/ColorFAQ.html - * In his terminology, this is a CCIR 601.1 YCbCr -> RGB. - * Y values are given for all 4 pixels, but the U (Pb) - * and V (Pr) are assumed constant over the 2x2 block. - * - * To avoid floating point arithmetic, the color conversion - * coefficients are scaled into 16.16 fixed-point integers. - * They were determined as follows: - * - * double brightness = 1.0; (0->black; 1->full scale) - * double saturation = 1.0; (0->greyscale; 1->full color) - * double fixScale = brightness * 256 * 256; - * int rvScale = (int)(1.402 * saturation * fixScale); - * int guScale = (int)(-0.344136 * saturation * fixScale); - * int gvScale = (int)(-0.714136 * saturation * fixScale); - * int buScale = (int)(1.772 * saturation * fixScale); - * int yScale = (int)(fixScale); - */ - -/* LIMIT: convert a 16.16 fixed-point value to a byte, with clipping. */ -#define LIMIT(x) ((x)>0xffffff?0xff: ((x)<=0xffff?0:((x)>>16))) - -static inline void -move_420_block(int yTL, int yTR, int yBL, int yBR, int u, int v, - int rowPixels, unsigned char * rgb, int bits) -{ - const int rvScale = 91881; - const int guScale = -22553; - const int gvScale = -46801; - const int buScale = 116129; - const int yScale = 65536; - int r, g, b; - - g = guScale * u + gvScale * v; - if (force_rgb) { - r = buScale * u; - b = rvScale * v; - } else { - r = rvScale * v; - b = buScale * u; - } - - yTL *= yScale; yTR *= yScale; - yBL *= yScale; yBR *= yScale; - - if (bits == 24) { - /* Write out top two pixels */ - rgb[0] = LIMIT(b+yTL); rgb[1] = LIMIT(g+yTL); - rgb[2] = LIMIT(r+yTL); - - rgb[3] = LIMIT(b+yTR); rgb[4] = LIMIT(g+yTR); - rgb[5] = LIMIT(r+yTR); - - /* Skip down to next line to write out bottom two pixels */ - rgb += 3 * rowPixels; - rgb[0] = LIMIT(b+yBL); rgb[1] = LIMIT(g+yBL); - rgb[2] = LIMIT(r+yBL); - - rgb[3] = LIMIT(b+yBR); rgb[4] = LIMIT(g+yBR); - rgb[5] = LIMIT(r+yBR); - } else if (bits == 16) { - /* Write out top two pixels */ - rgb[0] = ((LIMIT(b+yTL) >> 3) & 0x1F) - | ((LIMIT(g+yTL) << 3) & 0xE0); - rgb[1] = ((LIMIT(g+yTL) >> 5) & 0x07) - | (LIMIT(r+yTL) & 0xF8); - - rgb[2] = ((LIMIT(b+yTR) >> 3) & 0x1F) - | ((LIMIT(g+yTR) << 3) & 0xE0); - rgb[3] = ((LIMIT(g+yTR) >> 5) & 0x07) - | (LIMIT(r+yTR) & 0xF8); - - /* Skip down to next line to write out bottom two pixels */ - rgb += 2 * rowPixels; - - rgb[0] = ((LIMIT(b+yBL) >> 3) & 0x1F) - | ((LIMIT(g+yBL) << 3) & 0xE0); - rgb[1] = ((LIMIT(g+yBL) >> 5) & 0x07) - | (LIMIT(r+yBL) & 0xF8); - - rgb[2] = ((LIMIT(b+yBR) >> 3) & 0x1F) - | ((LIMIT(g+yBR) << 3) & 0xE0); - rgb[3] = ((LIMIT(g+yBR) >> 5) & 0x07) - | (LIMIT(r+yBR) & 0xF8); - } -} - -#endif /* OV511_ALLOW_CONVERSION */ - -/********************************************************************** - * - * Raw data parsing - * - **********************************************************************/ - -/* Copies a 64-byte segment at pIn to an 8x8 block at pOut. The width of the - * image at pOut is specified by w. - */ -static inline void -make_8x8(unsigned char *pIn, unsigned char *pOut, int w) -{ - unsigned char *pOut1 = pOut; - int x, y; - - for (y = 0; y < 8; y++) { - pOut1 = pOut; - for (x = 0; x < 8; x++) { - *pOut1++ = *pIn++; - } - pOut += w; - } -} - -/* - * For RAW BW (YUV 4:0:0) images, data show up in 256 byte segments. - * The segments represent 4 squares of 8x8 pixels as follows: - * - * 0 1 ... 7 64 65 ... 71 ... 192 193 ... 199 - * 8 9 ... 15 72 73 ... 79 200 201 ... 207 - * ... ... ... - * 56 57 ... 63 120 121 ... 127 248 249 ... 255 - * - */ -static void -yuv400raw_to_yuv400p(struct ov511_frame *frame, - unsigned char *pIn0, unsigned char *pOut0) -{ - int x, y; - unsigned char *pIn, *pOut, *pOutLine; - - /* Copy Y */ - pIn = pIn0; - pOutLine = pOut0; - for (y = 0; y < frame->rawheight - 1; y += 8) { - pOut = pOutLine; - for (x = 0; x < frame->rawwidth - 1; x += 8) { - make_8x8(pIn, pOut, frame->rawwidth); - pIn += 64; - pOut += 8; - } - pOutLine += 8 * frame->rawwidth; - } -} - -/* - * For YUV 4:2:0 images, the data show up in 384 byte segments. - * The first 64 bytes of each segment are U, the next 64 are V. The U and - * V are arranged as follows: - * - * 0 1 ... 7 - * 8 9 ... 15 - * ... - * 56 57 ... 63 - * - * U and V are shipped at half resolution (1 U,V sample -> one 2x2 block). - * - * The next 256 bytes are full resolution Y data and represent 4 squares - * of 8x8 pixels as follows: - * - * 0 1 ... 7 64 65 ... 71 ... 192 193 ... 199 - * 8 9 ... 15 72 73 ... 79 200 201 ... 207 - * ... ... ... - * 56 57 ... 63 120 121 ... 127 ... 248 249 ... 255 - * - * Note that the U and V data in one segment represent a 16 x 16 pixel - * area, but the Y data represent a 32 x 8 pixel area. If the width is not an - * even multiple of 32, the extra 8x8 blocks within a 32x8 block belong to the - * next horizontal stripe. - * - * If dumppix module param is set, _parse_data just dumps the incoming segments, - * verbatim, in order, into the frame. When used with vidcat -f ppm -s 640x480 - * this puts the data on the standard output and can be analyzed with the - * parseppm.c utility I wrote. That's a much faster way for figuring out how - * these data are scrambled. - */ - -/* Converts from raw, uncompressed segments at pIn0 to a YUV420P frame at pOut0. - * - * FIXME: Currently only handles width and height that are multiples of 16 - */ -static void -yuv420raw_to_yuv420p(struct ov511_frame *frame, - unsigned char *pIn0, unsigned char *pOut0) -{ - int k, x, y; - unsigned char *pIn, *pOut, *pOutLine; - const unsigned int a = frame->rawwidth * frame->rawheight; - const unsigned int w = frame->rawwidth / 2; - - /* Copy U and V */ - pIn = pIn0; - pOutLine = pOut0 + a; - for (y = 0; y < frame->rawheight - 1; y += 16) { - pOut = pOutLine; - for (x = 0; x < frame->rawwidth - 1; x += 16) { - make_8x8(pIn, pOut, w); - make_8x8(pIn + 64, pOut + a/4, w); - pIn += 384; - pOut += 8; - } - pOutLine += 8 * w; - } - - /* Copy Y */ - pIn = pIn0 + 128; - pOutLine = pOut0; - k = 0; - for (y = 0; y < frame->rawheight - 1; y += 8) { - pOut = pOutLine; - for (x = 0; x < frame->rawwidth - 1; x += 8) { - make_8x8(pIn, pOut, frame->rawwidth); - pIn += 64; - pOut += 8; - if ((++k) > 3) { - k = 0; - pIn += 128; - } - } - pOutLine += 8 * frame->rawwidth; - } -} - -#ifdef OV511_ALLOW_CONVERSION -/* - * fixFrameRGBoffset-- - * My camera seems to return the red channel about 1 pixel - * low, and the blue channel about 1 pixel high. After YUV->RGB - * conversion, we can correct this easily. OSL 2/24/2000. - */ -static void -fixFrameRGBoffset(struct ov511_frame *frame) -{ - int x, y; - int rowBytes = frame->width*3, w = frame->width; - unsigned char *rgb = frame->data; - const int shift = 1; /* Distance to shift pixels by, vertically */ - - /* Don't bother with little images */ - if (frame->width < 400) - return; - - /* This only works with RGB24 */ - if (frame->format != VIDEO_PALETTE_RGB24) - return; - - /* Shift red channel up */ - for (y = shift; y < frame->height; y++) { - int lp = (y-shift)*rowBytes; /* Previous line offset */ - int lc = y*rowBytes; /* Current line offset */ - for (x = 0; x < w; x++) - rgb[lp+x*3+2] = rgb[lc+x*3+2]; /* Shift red up */ - } - - /* Shift blue channel down */ - for (y = frame->height-shift-1; y >= 0; y--) { - int ln = (y + shift) * rowBytes; /* Next line offset */ - int lc = y * rowBytes; /* Current line offset */ - for (x = 0; x < w; x++) - rgb[ln+x*3+0] = rgb[lc+x*3+0]; /* Shift blue down */ - } -} -#endif - -/********************************************************************** - * - * Decompression - * - **********************************************************************/ - -/* Chooses a decompression module, locks it, and sets ov->decomp_ops - * accordingly. Returns -ENXIO if decompressor is not available, otherwise - * returns 0 if no other error. - */ -static int -request_decompressor(struct usb_ov511 *ov) -{ - if (!ov) - return -ENODEV; - - if (ov->decomp_ops) { - err("ERROR: Decompressor already requested!"); - return -EINVAL; - } - - lock_kernel(); - - /* Try to get MMX, and fall back on no-MMX if necessary */ - if (ov->bclass == BCL_OV511) { - if (ov511_mmx_decomp_ops) { - PDEBUG(3, "Using OV511 MMX decompressor"); - ov->decomp_ops = ov511_mmx_decomp_ops; - } else if (ov511_decomp_ops) { - PDEBUG(3, "Using OV511 decompressor"); - ov->decomp_ops = ov511_decomp_ops; - } else { - err("No decompressor available"); - } - } else if (ov->bclass == BCL_OV518) { - if (ov518_mmx_decomp_ops) { - PDEBUG(3, "Using OV518 MMX decompressor"); - ov->decomp_ops = ov518_mmx_decomp_ops; - } else if (ov518_decomp_ops) { - PDEBUG(3, "Using OV518 decompressor"); - ov->decomp_ops = ov518_decomp_ops; - } else { - err("No decompressor available"); - } - } else if (ov->bclass == BCL_OV519) { - info("OV519 doesn't need proprietary decompressor. It uses standard JPEG"); - } else { - err("Decompressor: Unknown bridge"); - } - - if (ov->decomp_ops) { - if (!ov->decomp_ops->owner) { - ov->decomp_ops = NULL; - unlock_kernel(); - return -ENOSYS; - } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - if (! try_module_get (ov->decomp_ops->owner)) { - ov->decomp_ops = NULL; - unlock_kernel(); - return -ENOSYS; - } -#else - __MOD_INC_USE_COUNT(ov->decomp_ops->owner); -#endif - unlock_kernel(); - return 0; - } else { - unlock_kernel(); - if (ov->bclass == BCL_OV519) - return 0; - else - return -ENOSYS; - } -} - -/* Unlocks decompression module and nulls ov->decomp_ops. Safe to call even - * if ov->decomp_ops is NULL. - */ -static void -release_decompressor(struct usb_ov511 *ov) -{ - int released = 0; /* Did we actually do anything? */ - - if (!ov) - return; - - if (ov->bclass == BCL_OV519) { - ov->compress_inited = 0; - return; - } - - lock_kernel(); - - if (ov->decomp_ops && ov->decomp_ops->owner) { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - module_put(ov->decomp_ops->owner); -#else - __MOD_DEC_USE_COUNT(ov->decomp_ops->owner); -#endif - released = 1; - } - - ov->decomp_ops = NULL; - - unlock_kernel(); - - if (released) - PDEBUG(3, "Decompressor released"); -} - -static void -decompress(struct usb_ov511 *ov, struct ov511_frame *frame, - unsigned char *pIn0, unsigned char *pOut0) -{ - if (!ov->decomp_ops) - if (request_decompressor(ov)) - return; - - PDEBUG(4, "Decompressing %d bytes", frame->bytes_recvd); - - if (frame->format == VIDEO_PALETTE_GREY - && ov->decomp_ops->decomp_400) { - int ret = ov->decomp_ops->decomp_400( - pIn0, - pOut0, - frame->compbuf, - frame->rawwidth, - frame->rawheight, - frame->bytes_recvd); - PDEBUG(4, "DEBUG: decomp_400 returned %d", ret); - } else if (frame->format != VIDEO_PALETTE_GREY - && ov->decomp_ops->decomp_420) { - int ret = ov->decomp_ops->decomp_420( - pIn0, - pOut0, - frame->compbuf, - frame->rawwidth, - frame->rawheight, - frame->bytes_recvd); - PDEBUG(4, "DEBUG: decomp_420 returned %d", ret); - } else { - err("Decompressor does not support this format"); - } -} - -/********************************************************************** - * - * Format conversion - * - **********************************************************************/ - -#ifdef OV511_ALLOW_CONVERSION - -/* Converts from planar YUV420 to RGB24. */ -static void -yuv420p_to_rgb(struct ov511_frame *frame, - unsigned char *pIn0, unsigned char *pOut0, int bits) -{ - const int numpix = frame->width * frame->height; - const int bytes = bits >> 3; - int i, j, y00, y01, y10, y11, u, v; - unsigned char *pY = pIn0; - unsigned char *pU = pY + numpix; - unsigned char *pV = pU + numpix / 4; - unsigned char *pOut = pOut0; - - for (j = 0; j <= frame->height - 2; j += 2) { - for (i = 0; i <= frame->width - 2; i += 2) { - y00 = *pY; - y01 = *(pY + 1); - y10 = *(pY + frame->width); - y11 = *(pY + frame->width + 1); - u = (*pU++) - 128; - v = (*pV++) - 128; - - move_420_block(y00, y01, y10, y11, u, v, - frame->width, pOut, bits); - - pY += 2; - pOut += 2 * bytes; - } - pY += frame->width; - pOut += frame->width * bytes; - } -} - -/* Converts from planar YUV420 to YUV422 (YUYV). */ -static void -yuv420p_to_yuv422(struct ov511_frame *frame, - unsigned char *pIn0, unsigned char *pOut0) -{ - const int numpix = frame->width * frame->height; - int i, j; - unsigned char *pY = pIn0; - unsigned char *pU = pY + numpix; - unsigned char *pV = pU + numpix / 4; - unsigned char *pOut = pOut0; - - for (i = 0; i < numpix; i++) { - *pOut = *(pY + i); - pOut += 2; - } - - pOut = pOut0 + 1; - for (j = 0; j <= frame->height - 2 ; j += 2) { - for (i = 0; i <= frame->width - 2; i += 2) { - int u = *pU++; - int v = *pV++; - - *pOut = u; - *(pOut+2) = v; - *(pOut+frame->width*2) = u; - *(pOut+frame->width*2+2) = v; - pOut += 4; - } - pOut += (frame->width * 2); - } -} - -/* Converts pData from planar YUV420 to planar YUV422 **in place**. */ -static void -yuv420p_to_yuv422p(struct ov511_frame *frame, unsigned char *pData) -{ - const int numpix = frame->width * frame->height; - const int w = frame->width; - int j; - unsigned char *pIn, *pOut; - - /* Clear U and V */ - memset(pData + numpix + numpix / 2, 127, numpix / 2); - - /* Convert V starting from beginning and working forward */ - pIn = pData + numpix + numpix / 4; - pOut = pData + numpix +numpix / 2; - for (j = 0; j <= frame->height - 2; j += 2) { - memmove(pOut, pIn, w/2); - memmove(pOut + w/2, pIn, w/2); - pIn += w/2; - pOut += w; - } - - /* Convert U, starting from end and working backward */ - pIn = pData + numpix + numpix / 4; - pOut = pData + numpix + numpix / 2; - for (j = 0; j <= frame->height - 2; j += 2) { - pIn -= w/2; - pOut -= w; - memmove(pOut, pIn, w/2); - memmove(pOut + w/2, pIn, w/2); - } -} - -#endif /* OV511_ALLOW_CONVERSION */ - -/* Fuses even and odd fields together, and doubles width. - * INPUT: an odd field followed by an even field at pIn0, in YUV planar format - * OUTPUT: a normal YUV planar image, with correct aspect ratio - */ -static void -deinterlace(struct ov511_frame *frame, int rawformat, - unsigned char *pIn0, unsigned char *pOut0) -{ - const int fieldheight = frame->rawheight / 2; - const int fieldpix = fieldheight * frame->rawwidth; - const int w = frame->width; - int x, y; - unsigned char *pInEven, *pInOdd, *pOut; - - PDEBUG(5, "fieldheight=%d", fieldheight); - - if (frame->rawheight != frame->height) { - err("invalid height"); - return; - } - - if ((frame->rawwidth * 2) != frame->width) { - err("invalid width"); - return; - } - - /* Y */ - pInOdd = pIn0; - pInEven = pInOdd + fieldpix; - pOut = pOut0; - for (y = 0; y < fieldheight; y++) { - for (x = 0; x < frame->rawwidth; x++) { - *pOut = *pInEven; - *(pOut+1) = *pInEven++; - *(pOut+w) = *pInOdd; - *(pOut+w+1) = *pInOdd++; - pOut += 2; - } - pOut += w; - } - - if (rawformat == RAWFMT_YUV420) { - /* U */ - pInOdd = pIn0 + fieldpix * 2; - pInEven = pInOdd + fieldpix / 4; - for (y = 0; y < fieldheight / 2; y++) { - for (x = 0; x < frame->rawwidth / 2; x++) { - *pOut = *pInEven; - *(pOut+1) = *pInEven++; - *(pOut+w/2) = *pInOdd; - *(pOut+w/2+1) = *pInOdd++; - pOut += 2; - } - pOut += w/2; - } - /* V */ - pInOdd = pIn0 + fieldpix * 2 + fieldpix / 2; - pInEven = pInOdd + fieldpix / 4; - for (y = 0; y < fieldheight / 2; y++) { - for (x = 0; x < frame->rawwidth / 2; x++) { - *pOut = *pInEven; - *(pOut+1) = *pInEven++; - *(pOut+w/2) = *pInOdd; - *(pOut+w/2+1) = *pInOdd++; - pOut += 2; - } - pOut += w/2; - } - } -} - -static void -ov51x_postprocess_grey(struct usb_ov511 *ov, struct ov511_frame *frame) -{ - /* Deinterlace frame, if necessary */ - if (ov->sensor == SEN_SAA7111A && frame->rawheight >= 480) { - if (frame->compressed) - decompress(ov, frame, frame->rawdata, - frame->tempdata); - else - yuv400raw_to_yuv400p(frame, frame->rawdata, - frame->tempdata); - - deinterlace(frame, RAWFMT_YUV400, frame->tempdata, - frame->data); - } else { - if (frame->compressed) - decompress(ov, frame, frame->rawdata, - frame->data); - else - yuv400raw_to_yuv400p(frame, frame->rawdata, - frame->data); - } -} - -#ifdef OV511_ALLOW_CONVERSION -/* Process raw YUV420 data into the format requested by the app. Conversion - * between V4L formats is allowed. - */ -static void -ov51x_postprocess_yuv420(struct usb_ov511 *ov, struct ov511_frame *frame) -{ - /* Process frame->rawdata to frame->tempdata */ - if (frame->compressed) - decompress(ov, frame, frame->rawdata, frame->tempdata); - else - yuv420raw_to_yuv420p(frame, frame->rawdata, frame->tempdata); - - /* Deinterlace frame, if necessary */ - if (ov->sensor == SEN_SAA7111A && frame->rawheight >= 480) { - memcpy(frame->rawdata, frame->tempdata, - MAX_RAW_DATA_SIZE(frame->width, frame->height)); - deinterlace(frame, RAWFMT_YUV420, frame->rawdata, - frame->tempdata); - } - - /* Frame should be (width x height) and not (rawwidth x rawheight) at - * this point. */ - - /* Process frame->tempdata to frame->data */ - switch (frame->format) { - case VIDEO_PALETTE_RGB565: - yuv420p_to_rgb(frame, frame->tempdata, frame->data, 16); - break; - case VIDEO_PALETTE_RGB24: - yuv420p_to_rgb(frame, frame->tempdata, frame->data, 24); - break; - case VIDEO_PALETTE_YUV422: - case VIDEO_PALETTE_YUYV: - yuv420p_to_yuv422(frame, frame->tempdata, frame->data); - break; - case VIDEO_PALETTE_YUV420: - case VIDEO_PALETTE_YUV420P: - memcpy(frame->data, frame->tempdata, - MAX_RAW_DATA_SIZE(frame->width, frame->height)); - break; - case VIDEO_PALETTE_YUV422P: - /* Data is converted in place, so copy it in advance */ - memcpy(frame->data, frame->tempdata, - MAX_RAW_DATA_SIZE(frame->width, frame->height)); - - yuv420p_to_yuv422p(frame, frame->data); - break; - default: - err("Cannot convert YUV420 to %s", - symbolic(v4l1_plist, frame->format)); - } - - if (fix_rgb_offset) - fixFrameRGBoffset(frame); -} - -#else /* if conversion not allowed */ - -/* Process raw YUV420 data into standard YUV420P */ -static void -ov51x_postprocess_yuv420(struct usb_ov511 *ov, struct ov511_frame *frame) -{ - /* Deinterlace frame, if necessary */ - if (ov->sensor == SEN_SAA7111A && frame->rawheight >= 480) { - if (frame->compressed) - decompress(ov, frame, frame->rawdata, frame->tempdata); - else - yuv420raw_to_yuv420p(frame, frame->rawdata, - frame->tempdata); - - deinterlace(frame, RAWFMT_YUV420, frame->tempdata, - frame->data); - } else { - if (frame->compressed) - decompress(ov, frame, frame->rawdata, frame->data); - else - yuv420raw_to_yuv420p(frame, frame->rawdata, - frame->data); - } -} -#endif /* OV511_ALLOW_CONVERSION */ - -/* Post-processes the specified frame. This consists of: - * 1. Decompress frame, if necessary - * 2. Deinterlace frame and scale to proper size, if necessary - * 3. Convert from YUV planar to destination format, if necessary - * 4. Fix the RGB offset, if necessary - */ -static void -ov51x_postprocess(struct usb_ov511 *ov, struct ov511_frame *frame) -{ - if (dumppix) { - memset(frame->data, 0, - MAX_DATA_SIZE(ov->maxwidth, ov->maxheight)); - PDEBUG(4, "Dumping %d bytes", frame->bytes_recvd); - memcpy(frame->data, frame->rawdata, frame->bytes_recvd); - } else { - switch (frame->format) { - case VIDEO_PALETTE_GREY: - ov51x_postprocess_grey(ov, frame); - break; - case VIDEO_PALETTE_YUV420: - case VIDEO_PALETTE_YUV420P: -#ifdef OV511_ALLOW_CONVERSION - case VIDEO_PALETTE_RGB565: - case VIDEO_PALETTE_RGB24: - case VIDEO_PALETTE_YUV422: - case VIDEO_PALETTE_YUYV: - case VIDEO_PALETTE_YUV422P: -#endif - ov51x_postprocess_yuv420(ov, frame); - break; - default: - err("Cannot convert data to %s", - symbolic(v4l1_plist, frame->format)); - } - } -} - -/********************************************************************** - * - * OV51x data transfer, IRQ handler - * - **********************************************************************/ - -static inline void -ov511_move_data(struct usb_ov511 *ov, unsigned char *in, int n) -{ - int num, offset; - int pnum = in[ov->packet_size - 1]; /* Get packet number */ - int max_raw = MAX_RAW_DATA_SIZE(ov->maxwidth, ov->maxheight); - struct ov511_frame *frame = &ov->frame[ov->curframe]; - struct timeval *ts; - - /* SOF/EOF packets have 1st to 8th bytes zeroed and the 9th - * byte non-zero. The EOF packet has image width/height in the - * 10th and 11th bytes. The 9th byte is given as follows: - * - * bit 7: EOF - * 6: compression enabled - * 5: 422/420/400 modes - * 4: 422/420/400 modes - * 3: 1 - * 2: snapshot button on - * 1: snapshot frame - * 0: even/odd field - */ - - if (printph) { - info("ph(%3d): %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x", - pnum, in[0], in[1], in[2], in[3], in[4], in[5], in[6], - in[7], in[8], in[9], in[10], in[11]); - } - - /* Check for SOF/EOF packet */ - if ((in[0] | in[1] | in[2] | in[3] | in[4] | in[5] | in[6] | in[7]) || - (~in[8] & 0x08)) - goto check_middle; - - /* Frame end */ - if (in[8] & 0x80) { - ts = (struct timeval *)(frame->data - + MAX_FRAME_SIZE(ov->maxwidth, ov->maxheight)); - do_gettimeofday(ts); - - /* Get the actual frame size from the EOF header */ - frame->rawwidth = ((int)(in[9]) + 1) * 8; - frame->rawheight = ((int)(in[10]) + 1) * 8; - - PDEBUG(4, "Frame end, frame=%d, pnum=%d, w=%d, h=%d, recvd=%d", - ov->curframe, pnum, frame->rawwidth, frame->rawheight, - frame->bytes_recvd); - - /* Validate the header data */ - RESTRICT_TO_RANGE(frame->rawwidth, ov->minwidth, ov->maxwidth); - RESTRICT_TO_RANGE(frame->rawheight, ov->minheight, - ov->maxheight); - - /* Don't allow byte count to exceed buffer size */ - RESTRICT_TO_RANGE(frame->bytes_recvd, 8, max_raw); - - if (frame->scanstate == STATE_LINES) { - int nextf; - - frame->grabstate = FRAME_DONE; - wake_up_interruptible(&frame->wq); - - /* If next frame is ready or grabbing, - * point to it */ - nextf = (ov->curframe + 1) % OV511_NUMFRAMES; - if (ov->frame[nextf].grabstate == FRAME_READY - || ov->frame[nextf].grabstate == FRAME_GRABBING) { - ov->curframe = nextf; - ov->frame[nextf].scanstate = STATE_SCANNING; - } else { - if (ov->frame[nextf].grabstate == FRAME_DONE) { - PDEBUG(4, "No empty frames left"); - } else { - PDEBUG(4, "Frame not ready? state = %d", - ov->frame[nextf].grabstate); - } - - ov->curframe = -1; - } - } else { - PDEBUG(5, "Frame done, but not scanning"); - } - /* Image corruption caused by misplaced frame->segment = 0 - * fixed by carlosf@conectiva.com.br - */ - } else { - /* Frame start */ - PDEBUG(4, "Frame start, framenum = %d", ov->curframe); - - /* Check to see if it's a snapshot frame */ - /* FIXME?? Should the snapshot reset go here? Performance? */ - if (in[8] & 0x02) { - frame->snapshot = 1; - PDEBUG(3, "snapshot detected"); - } - - frame->scanstate = STATE_LINES; - frame->bytes_recvd = 0; - frame->compressed = in[8] & 0x40; - } - -check_middle: - /* Are we in a frame? */ - if (frame->scanstate != STATE_LINES) { - PDEBUG(5, "Not in a frame; packet skipped"); - return; - } - - /* If frame start, skip header */ - if (frame->bytes_recvd == 0) - offset = 9; - else - offset = 0; - - num = n - offset - 1; - - /* Dump all data exactly as received */ - if (dumppix == 2) { - frame->bytes_recvd += n - 1; - if (frame->bytes_recvd <= max_raw) - memcpy(frame->rawdata + frame->bytes_recvd - (n - 1), - in, n - 1); - else - PDEBUG(3, "Raw data buffer overrun!! (%d)", - frame->bytes_recvd - max_raw); - } else if (!frame->compressed && !remove_zeros) { - frame->bytes_recvd += num; - if (frame->bytes_recvd <= max_raw) - memcpy(frame->rawdata + frame->bytes_recvd - num, - in + offset, num); - else - PDEBUG(3, "Raw data buffer overrun!! (%d)", - frame->bytes_recvd - max_raw); - } else { /* Remove all-zero FIFO lines (aligned 32-byte blocks) */ - int b, read = 0, allzero, copied = 0; - if (offset) { - frame->bytes_recvd += 32 - offset; // Bytes out - memcpy(frame->rawdata, in + offset, 32 - offset); - read += 32; - } - - while (read < n - 1) { - allzero = 1; - for (b = 0; b < 32; b++) { - if (in[read + b]) { - allzero = 0; - break; - } - } - - if (allzero) { - /* Don't copy it */ - } else { - if (frame->bytes_recvd + copied + 32 <= max_raw) - { - memcpy(frame->rawdata - + frame->bytes_recvd + copied, - in + read, 32); - copied += 32; - } else { - PDEBUG(3, "Raw data buffer overrun!!"); - } - } - read += 32; - } - - frame->bytes_recvd += copied; - } -} - -static inline void -ov518_move_data(struct usb_ov511 *ov, unsigned char *in, int n) -{ - int max_raw = MAX_RAW_DATA_SIZE(ov->maxwidth, ov->maxheight); - struct ov511_frame *frame = &ov->frame[ov->curframe]; - struct timeval *ts; - - /* Don't copy the packet number byte */ - if (ov->packet_numbering) - --n; - - /* A false positive here is likely, until OVT gives me - * the definitive SOF/EOF format */ - if ((!(in[0] | in[1] | in[2] | in[3] | in[5])) && in[6]) { - if (printph) { - info("ph: %2x %2x %2x %2x %2x %2x %2x %2x", in[0], - in[1], in[2], in[3], in[4], in[5], in[6], in[7]); - } - - if (frame->scanstate == STATE_LINES) { - PDEBUG(4, "Detected frame end/start"); - goto eof; - } else { //scanstate == STATE_SCANNING - /* Frame start */ - PDEBUG(4, "Frame start, framenum = %d", ov->curframe); - goto sof; - } - } else { - goto check_middle; - } - -eof: - ts = (struct timeval *)(frame->data - + MAX_FRAME_SIZE(ov->maxwidth, ov->maxheight)); - do_gettimeofday(ts); - - PDEBUG(4, "Frame end, curframe = %d, hw=%d, vw=%d, recvd=%d", - ov->curframe, - (int)(in[9]), (int)(in[10]), frame->bytes_recvd); - - // FIXME: Since we don't know the header formats yet, - // there is no way to know what the actual image size is - frame->rawwidth = frame->width; - frame->rawheight = frame->height; - - /* Validate the header data */ - RESTRICT_TO_RANGE(frame->rawwidth, ov->minwidth, ov->maxwidth); - RESTRICT_TO_RANGE(frame->rawheight, ov->minheight, ov->maxheight); - - /* Don't allow byte count to exceed buffer size */ - RESTRICT_TO_RANGE(frame->bytes_recvd, 8, max_raw); - - if (frame->scanstate == STATE_LINES) { - int nextf; - - frame->grabstate = FRAME_DONE; - wake_up_interruptible(&frame->wq); - - /* If next frame is ready or grabbing, - * point to it */ - nextf = (ov->curframe + 1) % OV511_NUMFRAMES; - if (ov->frame[nextf].grabstate == FRAME_READY - || ov->frame[nextf].grabstate == FRAME_GRABBING) { - ov->curframe = nextf; - ov->frame[nextf].scanstate = STATE_SCANNING; - frame = &ov->frame[nextf]; - } else { - if (ov->frame[nextf].grabstate == FRAME_DONE) { - PDEBUG(4, "No empty frames left"); - } else { - PDEBUG(4, "Frame not ready? state = %d", - ov->frame[nextf].grabstate); - } - - ov->curframe = -1; - PDEBUG(4, "SOF dropped (no active frame)"); - return; /* Nowhere to store this frame */ - } - } -sof: - PDEBUG(4, "Starting capture on frame %d", frame->framenum); - -// Snapshot not reverse-engineered yet. -#if 0 - /* Check to see if it's a snapshot frame */ - /* FIXME?? Should the snapshot reset go here? Performance? */ - if (in[8] & 0x02) { - frame->snapshot = 1; - PDEBUG(3, "snapshot detected"); - } -#endif - frame->scanstate = STATE_LINES; - frame->bytes_recvd = 0; - frame->compressed = 1; - -check_middle: - /* Are we in a frame? */ - if (frame->scanstate != STATE_LINES) { - PDEBUG(4, "scanstate: no SOF yet"); - return; - } - - /* Dump all data exactly as received */ - if (dumppix == 2) { - frame->bytes_recvd += n; - if (frame->bytes_recvd <= max_raw) - memcpy(frame->rawdata + frame->bytes_recvd - n, in, n); - else - PDEBUG(3, "Raw data buffer overrun!! (%d)", - frame->bytes_recvd - max_raw); - } else { - /* All incoming data are divided into 8-byte segments. If the - * segment contains all zero bytes, it must be skipped. These - * zero-segments allow the OV518 to mainain a constant data rate - * regardless of the effectiveness of the compression. Segments - * are aligned relative to the beginning of each isochronous - * packet. The first segment in each image is a header (the - * decompressor skips it later). - */ - - int b, read = 0, allzero, copied = 0; - - while (read < n) { - allzero = 1; - for (b = 0; b < 8; b++) { - if (in[read + b]) { - allzero = 0; - break; - } - } - - if (allzero) { - /* Don't copy it */ - } else { - if (frame->bytes_recvd + copied + 8 <= max_raw) - { - memcpy(frame->rawdata - + frame->bytes_recvd + copied, - in + read, 8); - copied += 8; - } else { - PDEBUG(3, "Raw data buffer overrun!!"); - } - } - read += 8; - } - frame->bytes_recvd += copied; - } -} - -static inline void -ov519_move_data(struct usb_ov511 *ov, unsigned char *in, int n) -{ - int max_raw = MAX_RAW_DATA_SIZE(ov->maxwidth, ov->maxheight); - struct ov511_frame *frame = &ov->frame[ov->curframe]; - struct timeval *ts; - - /* Don't copy the packet number byte */ -// if (ov->packet_numbering) -// --n; -/* Header of ov519 is 16 bytes: - * Byte Value Description - * 0 0xff magic - * 1 0xff magic - * 2 0xff magic - * 3 0xXX 0x50 = SOF, 0x51 = EOF - * 9 0xXX 0x01 initial frame without data, 0x00 standard frame with image - * 14 Lo in EOF: length of image data / 8 - * 15 Hi - */ - - // Start Of Frame - if ((in[0]==0xff) && (in[1]==0xff) && (in[2]==0xff)) { - - if (printph) { - info("ph: %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x", - in[0], in[1], in[2], in[3], in[4], in[5], in[6], in[7], - in[8], in[9], in[10], in[11], in[12], in[13], in[14], in[15]); - } - - if (in[3]==0x50) { - PDEBUG(4, "Start Of Frame, framenum = %d", ov->curframe); - goto sof; - } else if (in[3]==0x51) { - PDEBUG(4, "End Of Frame"); - goto eof; - } else { - goto check_middle; - } - } else { - goto check_middle; - } - -eof: - ts = (struct timeval *)(frame->data - + MAX_FRAME_SIZE(ov->maxwidth, ov->maxheight)); - do_gettimeofday(ts); - PDEBUG(4, "Frame end, curframe=%d, length=%d, recvd=%d", - ov->curframe, (int)((in[14]) + ((int)(in[15])<<8))<<3, frame->bytes_recvd - (jpeginfo?2:0)); - - - if (in[9]) { - PDEBUG(1, "initial frame"); - frame->scanstate = STATE_SCANNING; - return; - } - - // FIXME: Since we don't know the header formats yet, - // there is no way to know what the actual image size is - frame->rawwidth = frame->width; - frame->rawheight = frame->height; - - /* Validate the header data */ - RESTRICT_TO_RANGE(frame->rawwidth, ov->minwidth, ov->maxwidth); - RESTRICT_TO_RANGE(frame->rawheight, ov->minheight, ov->maxheight); - - /* Don't allow byte count to exceed buffer size */ - //RESTRICT_TO_RANGE(frame->bytes_recvd, 8, max_raw); - - if (frame->scanstate == STATE_LINES) { - int nextf; - - if (((int)((in[14]) + ((int)(in[15])<<8))<<3) != (frame->bytes_recvd - (jpeginfo?2:0))) { - info("Data length in header and number of received bytes differ"); - frame->scanstate = STATE_SCANNING; - return; - } - - if (jpeginfo) { - frame->data[0] = in[14]; - frame->data[1] = in[15]; - } - frame->grabstate = FRAME_DONE; - wake_up_interruptible(&frame->wq); - - /* If next frame is ready or grabbing, - * point to it */ - nextf = (ov->curframe + 1) % OV511_NUMFRAMES; - if (ov->frame[nextf].grabstate == FRAME_READY - || ov->frame[nextf].grabstate == FRAME_GRABBING) { - ov->curframe = nextf; - ov->frame[nextf].scanstate = STATE_SCANNING; - } else { - ov->curframe = -1; - } - } else { - info("EOF without SOF"); // This happens if there was no active frame when SOF arrived - } - return; - -sof: - PDEBUG(4, "Starting capture on frame %d", frame->framenum); - - // Skip SOF Header: - in += 16; - n -= 16; - - frame->scanstate = STATE_LINES; - if (jpeginfo) { - frame->bytes_recvd = 2; // Space for length bytes. Will be written at EOF - frame->data[0] = 0; - frame->data[1] = 0; - } else { - frame->bytes_recvd = 0; - } - frame->compressed = 1; - -check_middle: - /* Are we in a frame? */ - if (frame->scanstate != STATE_LINES) { - PDEBUG(4, "scanstate: no SOF yet"); - return; - } - - /* Dump all data exactly as received. It is standard JPEG */ - frame->bytes_recvd += n; - if (frame->bytes_recvd <= max_raw) { - memcpy(frame->data + frame->bytes_recvd - n, in, n); - } else { - PDEBUG(3, "Raw data buffer overrun!! (%d)", frame->bytes_recvd - max_raw); - } -} - -static void -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 51) -ov51x_isoc_irq(struct urb *urb, struct pt_regs *regs) -#else -ov51x_isoc_irq(struct urb *urb) -#endif -{ - int i; - struct usb_ov511 *ov; - struct ov511_sbuf *sbuf; - - if (!urb->context) { - PDEBUG(4, "no context"); - return; - } - - sbuf = urb->context; - ov = sbuf->ov; - - if (!ov || !ov->dev || !ov->user) { - PDEBUG(4, "no device, or not open"); - return; - } - - if (!ov->streaming) { - PDEBUG(4, "hmmm... not streaming, but got interrupt"); - return; - } - - if (urb->status == -ENOENT || urb->status == -ECONNRESET) { - PDEBUG(4, "URB unlinked"); - return; - } - - if (urb->status != -EINPROGRESS && urb->status != 0) { - err("ERROR: urb->status=%d: %s", urb->status, - symbolic(urb_errlist, urb->status)); - } - - /* Copy the data received into our frame buffer */ - PDEBUG(5, "sbuf[%d]: Moving %d packets", sbuf->n, - urb->number_of_packets); - for (i = 0; i < urb->number_of_packets; i++) { - /* Warning: Don't call *_move_data() if no frame active! */ - if (ov->curframe >= 0) { - int n = urb->iso_frame_desc[i].actual_length; - int st = urb->iso_frame_desc[i].status; - unsigned char *cdata; - - urb->iso_frame_desc[i].actual_length = 0; - urb->iso_frame_desc[i].status = 0; - - cdata = urb->transfer_buffer - + urb->iso_frame_desc[i].offset; - - if (!n) { - PDEBUG(4, "Zero-length packet"); - continue; - } - - if (st) - PDEBUG(2, "data error: [%d] len=%d, status=%d", - i, n, st); - - switch (ov->bclass) { - case BCL_OV511: - ov511_move_data(ov, cdata, n); - break; - case BCL_OV518: - ov518_move_data(ov, cdata, n); - break; - case BCL_OV519: - ov519_move_data(ov, cdata, n); - break; - default: - err("Unknown bridge device (%d)", ov->bridge); - } - } else if (waitqueue_active(&ov->wq)) { - wake_up_interruptible(&ov->wq); - } - } - - /* Resubmit this URB */ - urb->dev = ov->dev; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 4) - if ((i = usb_submit_urb(urb, GFP_ATOMIC)) != 0) -#else - if ((i = usb_submit_urb(urb)) != 0) -#endif - err("usb_submit_urb() ret %d", i); - - return; -} - -/**************************************************************************** - * - * Stream initialization and termination - * - ***************************************************************************/ - -static int -ov51x_init_isoc(struct usb_ov511 *ov) -{ - struct urb *urb; - int fx, err, n, size; - - PDEBUG(3, "*** Initializing capture ***"); - - ov->curframe = -1; - - switch (ov->bridge) { - case BRG_OV511: - if (cams == 1) size = 993; - else if (cams == 2) size = 513; - else if (cams == 3 || cams == 4) size = 257; - else { - err("\"cams\" parameter too high!"); - return -1; - } - break; - case BRG_OV511PLUS: - if (cams == 1) size = 961; - else if (cams == 2) size = 513; - else if (cams == 3 || cams == 4) size = 257; - else if (cams >= 5 && cams <= 8) size = 129; - else if (cams >= 9 && cams <= 31) size = 33; - else { - err("\"cams\" parameter too high!"); - return -1; - } - break; - case BRG_OV518: - case BRG_OV518PLUS: - if (cams == 1) size = 896; - else if (cams == 2) size = 512; - else if (cams == 3 || cams == 4) size = 256; - else if (cams >= 5 && cams <= 8) size = 128; - else { - err("\"cams\" parameter too high!"); - return -1; - } - break; - case BRG_OV519: - if (cams == 1) size = 896; - else if (cams == 2) size = 512; - else { - err("\"cams\" parameter too high!"); - return -1; - } - break; - default: - err("invalid bridge type"); - return -1; - } - - // FIXME: OV518+ is hardcoded to 15 FPS (alternate 5) for now - if (ov->bridge == BRG_OV518PLUS) { - if (packetsize == -1) { - ov518_set_packet_size(ov, 640); - } else { - info("Forcing packet size to %d", packetsize); - ov518_set_packet_size(ov, packetsize); - } - } else if (ov->bridge == BRG_OV518) { - if (packetsize == -1) { - ov518_set_packet_size(ov, 896); - } else { - info("Forcing packet size to %d", packetsize); - ov518_set_packet_size(ov, packetsize); - } - } else if (ov->bridge == BRG_OV519) { - if (packetsize == -1) { - ov519_set_packet_size(ov, size); - } else { - info("Forcing packet size to %d", packetsize); - ov519_set_packet_size(ov, packetsize); - } - } else { - if (packetsize == -1) { - ov511_set_packet_size(ov, size); - } else { - info("Forcing packet size to %d", packetsize); - ov511_set_packet_size(ov, packetsize); - } - } - - for (n = 0; n < OV511_NUMSBUF; n++) { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 5) - urb = usb_alloc_urb(FRAMES_PER_DESC, GFP_KERNEL); -#else - urb = usb_alloc_urb(FRAMES_PER_DESC); -#endif - if (!urb) { - err("init isoc: usb_alloc_urb ret. NULL"); - return -ENOMEM; - } - ov->sbuf[n].urb = urb; - urb->dev = ov->dev; - urb->context = &ov->sbuf[n]; - urb->pipe = usb_rcvisocpipe(ov->dev, OV511_ENDPOINT_ADDRESS); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 45) - urb->transfer_flags = URB_ISO_ASAP; -#else - urb->transfer_flags = USB_ISO_ASAP; -#endif - urb->transfer_buffer = ov->sbuf[n].data; - urb->complete = ov51x_isoc_irq; - urb->number_of_packets = FRAMES_PER_DESC; - urb->transfer_buffer_length = ov->packet_size * FRAMES_PER_DESC; - urb->interval = 1; - for (fx = 0; fx < FRAMES_PER_DESC; fx++) { - urb->iso_frame_desc[fx].offset = ov->packet_size * fx; - urb->iso_frame_desc[fx].length = ov->packet_size; - } - } - - ov->streaming = 1; - - for (n = 0; n < OV511_NUMSBUF; n++) { - ov->sbuf[n].urb->dev = ov->dev; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 4) - err = usb_submit_urb(ov->sbuf[n].urb, GFP_KERNEL); -#else - err = usb_submit_urb(ov->sbuf[n].urb); -#endif - if (err) { - err("init isoc: usb_submit_urb(%d) ret %d", n, err); - return err; - } - } - - return 0; -} - -static void -ov51x_unlink_isoc(struct usb_ov511 *ov) -{ - int n; - - /* Unschedule all of the iso td's */ - for (n = OV511_NUMSBUF - 1; n >= 0; n--) { - if (ov->sbuf[n].urb) { -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 10) - usb_unlink_urb(ov->sbuf[n].urb); -#else - usb_kill_urb(ov->sbuf[n].urb); -#endif - usb_free_urb(ov->sbuf[n].urb); - ov->sbuf[n].urb = NULL; - } - } -} - -static void -ov51x_stop_isoc(struct usb_ov511 *ov) -{ - if (!ov->streaming || !ov->dev) - return; - - PDEBUG(3, "*** Stopping capture ***"); - - switch (ov->bclass) { - case BCL_OV511: - ov511_set_packet_size(ov, 0); - break; - case BCL_OV518: - ov518_set_packet_size(ov, 0); - break; - case BCL_OV519: - ov519_set_packet_size(ov, 0); - break; - } - ov->streaming = 0; - - ov51x_unlink_isoc(ov); -} - -static int -ov51x_new_frame(struct usb_ov511 *ov, int framenum) -{ - struct ov511_frame *frame; - int newnum; - - PDEBUG(4, "ov->curframe = %d, framenum = %d", ov->curframe, framenum); - - if (!ov->dev) - return -1; - - /* If we're not grabbing a frame right now and the other frame is */ - /* ready to be grabbed into, then use it instead */ - if (ov->curframe == -1) { - newnum = (framenum - 1 + OV511_NUMFRAMES) % OV511_NUMFRAMES; - if (ov->frame[newnum].grabstate == FRAME_READY) - framenum = newnum; - } else - return 0; - - frame = &ov->frame[framenum]; - - PDEBUG(4, "framenum = %d, width = %d, height = %d", framenum, - frame->width, frame->height); - - frame->grabstate = FRAME_GRABBING; - frame->scanstate = STATE_SCANNING; - frame->snapshot = 0; - - ov->curframe = framenum; - - /* Make sure it's not too big */ - if (frame->width > ov->maxwidth) - frame->width = ov->maxwidth; - - frame->width &= ~7L; /* Multiple of 8 */ - - if (frame->height > ov->maxheight) - frame->height = ov->maxheight; - - frame->height &= ~3L; /* Multiple of 4 */ - - return 0; -} - -/**************************************************************************** - * - * Buffer management - * - ***************************************************************************/ - -/* - * - You must acquire buf_lock before entering this function. - * - Because this code will free any non-null pointer, you must be sure to null - * them if you explicitly free them somewhere else! - */ -static void -ov51x_do_dealloc(struct usb_ov511 *ov) -{ - int i; - PDEBUG(4, "entered"); - - if (ov->fbuf) { - rvfree(ov->fbuf, OV511_NUMFRAMES - * MAX_DATA_SIZE(ov->maxwidth, ov->maxheight)); - ov->fbuf = NULL; - } - - vfree(ov->rawfbuf); - ov->rawfbuf = NULL; - - vfree(ov->tempfbuf); - ov->tempfbuf = NULL; - - for (i = 0; i < OV511_NUMSBUF; i++) { - kfree(ov->sbuf[i].data); - ov->sbuf[i].data = NULL; - } - - for (i = 0; i < OV511_NUMFRAMES; i++) { - ov->frame[i].data = NULL; - ov->frame[i].rawdata = NULL; - ov->frame[i].tempdata = NULL; - if (ov->frame[i].compbuf) { - free_page((unsigned long) ov->frame[i].compbuf); - ov->frame[i].compbuf = NULL; - } - } - - PDEBUG(4, "buffer memory deallocated"); - ov->buf_state = BUF_NOT_ALLOCATED; - PDEBUG(4, "leaving"); -} - -static int -ov51x_alloc(struct usb_ov511 *ov) -{ - int i; - const int w = ov->maxwidth; - const int h = ov->maxheight; - const int data_bufsize = OV511_NUMFRAMES * MAX_DATA_SIZE(w, h); - const int raw_bufsize = OV511_NUMFRAMES * MAX_RAW_DATA_SIZE(w, h); - - PDEBUG(4, "entered"); - down(&ov->buf_lock); - - if (ov->buf_state == BUF_ALLOCATED) - goto out; - - ov->fbuf = rvmalloc(data_bufsize); - if (!ov->fbuf) - goto error; - - ov->rawfbuf = vmalloc(raw_bufsize); - if (!ov->rawfbuf) - goto error; - - memset(ov->rawfbuf, 0, raw_bufsize); - - ov->tempfbuf = vmalloc(raw_bufsize); - if (!ov->tempfbuf) - goto error; - - memset(ov->tempfbuf, 0, raw_bufsize); - - for (i = 0; i < OV511_NUMSBUF; i++) { - ov->sbuf[i].data = kmalloc(FRAMES_PER_DESC * - MAX_FRAME_SIZE_PER_DESC, GFP_KERNEL); - if (!ov->sbuf[i].data) - goto error; - - PDEBUG(4, "sbuf[%d] @ %p", i, ov->sbuf[i].data); - } - - for (i = 0; i < OV511_NUMFRAMES; i++) { - ov->frame[i].data = ov->fbuf + i * MAX_DATA_SIZE(w, h); - ov->frame[i].rawdata = ov->rawfbuf - + i * MAX_RAW_DATA_SIZE(w, h); - ov->frame[i].tempdata = ov->tempfbuf - + i * MAX_RAW_DATA_SIZE(w, h); - - ov->frame[i].compbuf = - (unsigned char *) __get_free_page(GFP_KERNEL); - if (!ov->frame[i].compbuf) - goto error; - - PDEBUG(4, "frame[%d] @ %p", i, ov->frame[i].data); - } - - ov->buf_state = BUF_ALLOCATED; -out: - up(&ov->buf_lock); - PDEBUG(4, "leaving"); - return 0; -error: - ov51x_do_dealloc(ov); - up(&ov->buf_lock); - PDEBUG(4, "errored"); - return -ENOMEM; -} - -static void -ov51x_dealloc(struct usb_ov511 *ov) -{ - PDEBUG(4, "entered"); - down(&ov->buf_lock); - ov51x_do_dealloc(ov); - up(&ov->buf_lock); - PDEBUG(4, "leaving"); -} - -/**************************************************************************** - * - * V4L 1 API - * - ***************************************************************************/ - -#ifdef OV511_OLD_V4L -static int -ov51x_v4l1_open(struct video_device *vdev, int flags) -{ -#else -static int -ov51x_v4l1_open(struct inode *inode, struct file *file) -{ - struct video_device *vdev = video_devdata(file); -#endif - struct usb_ov511 *ov = video_get_drvdata(vdev); - int err, i; - -/* 2.2.x needs explicit module-locking */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 17) - MOD_INC_USE_COUNT; -#endif - - PDEBUG(4, "opening"); - - down(&ov->lock); - - err = -EBUSY; - if (ov->user) - goto out; - - ov->sub_flag = 0; - - /* In case app doesn't set them... */ - err = ov51x_set_default_params(ov); - if (err < 0) - goto out; - - /* Make sure frames are reset */ - for (i = 0; i < OV511_NUMFRAMES; i++) { - ov->frame[i].grabstate = FRAME_UNUSED; - ov->frame[i].bytes_read = 0; - } - - /* If compression is on, make sure now that a - * decompressor can be loaded */ - if (ov->compress && !ov->decomp_ops) { - err = request_decompressor(ov); - if (err && !dumppix) - goto out; - } - - err = ov51x_alloc(ov); - if (err < 0) - goto out; - - err = ov51x_init_isoc(ov); - if (err) { - ov51x_dealloc(ov); - goto out; - } - - ov->user++; -// If using _NEW_ V4L... -#if !defined(OV511_OLD_V4L) - file->private_data = vdev; -#endif - - if (ov->led_policy == LED_AUTO) - ov51x_led_control(ov, 1); - -out: - up(&ov->lock); - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 17) - if (err) - MOD_DEC_USE_COUNT; -#endif - - return err; -} - -#ifdef OV511_OLD_V4L -static void -ov51x_v4l1_close(struct video_device *vdev) -{ -#else -static int -ov51x_v4l1_close(struct inode *inode, struct file *file) -{ - struct video_device *vdev = file->private_data; -#endif - struct usb_ov511 *ov = video_get_drvdata(vdev); - - PDEBUG(4, "ov511_close"); - - down(&ov->lock); - - ov->user--; - ov51x_stop_isoc(ov); - - release_decompressor(ov); - - if (ov->led_policy == LED_AUTO) - ov51x_led_control(ov, 0); - - if (ov->dev) - ov51x_dealloc(ov); - - up(&ov->lock); - - /* Device unplugged while open. Only a minimum of unregistration is done - * here; the disconnect callback already did the rest. */ - if (!ov->dev) { - down(&ov->cbuf_lock); - kfree(ov->cbuf); - ov->cbuf = NULL; - up(&ov->cbuf_lock); - - ov51x_dealloc(ov); -#ifdef OV511_OLD_V4L - video_unregister_device(&ov->vdev); -#endif - kfree(ov); - ov = NULL; - } - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 17) - MOD_DEC_USE_COUNT; -#endif - -#ifdef OV511_OLD_V4L - return; -#else - file->private_data = NULL; - return 0; -#endif -} - -/* Do not call this function directly! */ -static int -#ifdef OV511_OLD_V4L -ov51x_v4l1_ioctl_internal(struct usb_ov511 *ov, unsigned int cmd, - void *arg) -{ -#else -ov51x_v4l1_ioctl_internal(struct inode *inode, struct file *file, - unsigned int cmd, void *arg) -{ - struct video_device *vdev = file->private_data; - struct usb_ov511 *ov = video_get_drvdata(vdev); -#endif - PDEBUG(5, "IOCtl: 0x%X", cmd); - - if (!ov->dev) - return -EIO; - - switch (cmd) { - case VIDIOCGCAP: - { - struct video_capability *b = arg; - - PDEBUG(4, "VIDIOCGCAP"); - - memset(b, 0, sizeof(struct video_capability)); - sprintf(b->name, "%s USB Camera", - symbolic(brglist, ov->bridge)); - b->type = VID_TYPE_CAPTURE | VID_TYPE_SUBCAPTURE; - b->channels = ov->num_inputs; - b->audios = 0; - b->maxwidth = ov->maxwidth; - b->maxheight = ov->maxheight; - b->minwidth = ov->minwidth; - b->minheight = ov->minheight; - - return 0; - } - case VIDIOCGCHAN: - { - struct video_channel *v = arg; - - PDEBUG(4, "VIDIOCGCHAN"); - - if ((unsigned)(v->channel) >= ov->num_inputs) { - err("Invalid channel (%d)", v->channel); - return -EINVAL; - } - - v->norm = ov->norm; - v->type = VIDEO_TYPE_CAMERA; - v->flags = 0; -// v->flags |= (ov->has_decoder) ? VIDEO_VC_NORM : 0; - v->tuners = 0; - decoder_get_input_name(ov, v->channel, v->name); - - return 0; - } - case VIDIOCSCHAN: - { - struct video_channel *v = arg; - int err; - - PDEBUG(4, "VIDIOCSCHAN"); - - /* Make sure it's not a camera */ - if (!ov->has_decoder) { - if (v->channel == 0) - return 0; - else - return -EINVAL; - } - - if (v->norm != VIDEO_MODE_PAL && - v->norm != VIDEO_MODE_NTSC && - v->norm != VIDEO_MODE_SECAM && - v->norm != VIDEO_MODE_AUTO) { - err("Invalid norm (%d)", v->norm); - return -EINVAL; - } - - if ((unsigned)(v->channel) >= ov->num_inputs) { - err("Invalid channel (%d)", v->channel); - return -EINVAL; - } - - err = decoder_set_input(ov, v->channel); - if (err) - return err; - - err = decoder_set_norm(ov, v->norm); - if (err) - return err; - - return 0; - } - case VIDIOCGPICT: - { - struct video_picture *p = arg; - - PDEBUG(4, "VIDIOCGPICT"); - - memset(p, 0, sizeof(struct video_picture)); - if (sensor_get_picture(ov, p)) - return -EIO; - - /* Can we get these from frame[0]? -claudio? */ - p->depth = ov->frame[0].depth; - p->palette = ov->frame[0].format; - - return 0; - } - case VIDIOCSPICT: - { - struct video_picture *p = arg; - int i, rc; - - PDEBUG(4, "VIDIOCSPICT"); - - if (!get_depth(p->palette)) - return -EINVAL; - - if (sensor_set_picture(ov, p)) - return -EIO; - - if (force_palette && p->palette != force_palette) { - info("Palette rejected (%s)", - symbolic(v4l1_plist, p->palette)); - return -EINVAL; - } - - // FIXME: Format should be independent of frames - if (p->palette != ov->frame[0].format) { - PDEBUG(4, "Detected format change"); - - rc = ov51x_wait_frames_inactive(ov); - if (rc) - return rc; - - mode_init_regs(ov, ov->frame[0].width, - ov->frame[0].height, p->palette, ov->sub_flag); - } - - PDEBUG(4, "Setting depth=%d, palette=%s", - p->depth, symbolic(v4l1_plist, p->palette)); - - for (i = 0; i < OV511_NUMFRAMES; i++) { - ov->frame[i].depth = p->depth; - ov->frame[i].format = p->palette; - } - - return 0; - } - case VIDIOCGCAPTURE: - { - int *vf = arg; - - PDEBUG(4, "VIDIOCGCAPTURE"); - - ov->sub_flag = *vf; - return 0; - } - case VIDIOCSCAPTURE: - { - struct video_capture *vc = arg; - - PDEBUG(4, "VIDIOCSCAPTURE"); - - if (vc->flags) - return -EINVAL; - if (vc->decimation) - return -EINVAL; - - vc->x &= ~3L; - vc->y &= ~1L; - vc->y &= ~31L; - - if (vc->width == 0) - vc->width = 32; - - vc->height /= 16; - vc->height *= 16; - if (vc->height == 0) - vc->height = 16; - - ov->subx = vc->x; - ov->suby = vc->y; - ov->subw = vc->width; - ov->subh = vc->height; - - return 0; - } - case VIDIOCSWIN: - { - struct video_window *vw = arg; - int i, rc; - - PDEBUG(4, "VIDIOCSWIN: %dx%d", vw->width, vw->height); - -#if 0 - if (vw->flags) - return -EINVAL; - if (vw->clipcount) - return -EINVAL; - if (vw->height != ov->maxheight) - return -EINVAL; - if (vw->width != ov->maxwidth) - return -EINVAL; -#endif - - rc = ov51x_wait_frames_inactive(ov); - if (rc) - return rc; - - rc = mode_init_regs(ov, vw->width, vw->height, - ov->frame[0].format, ov->sub_flag); - if (rc < 0) - return rc; - - for (i = 0; i < OV511_NUMFRAMES; i++) { - ov->frame[i].width = vw->width; - ov->frame[i].height = vw->height; - } - - return 0; - } - case VIDIOCGWIN: - { - struct video_window *vw = arg; - - memset(vw, 0, sizeof(struct video_window)); - vw->x = 0; /* FIXME */ - vw->y = 0; - vw->width = ov->frame[0].width; - vw->height = ov->frame[0].height; - vw->flags = 30; - - PDEBUG(4, "VIDIOCGWIN: %dx%d", vw->width, vw->height); - - return 0; - } - case VIDIOCGMBUF: - { - struct video_mbuf *vm = arg; - int i; - - PDEBUG(4, "VIDIOCGMBUF"); - - memset(vm, 0, sizeof(struct video_mbuf)); - vm->size = OV511_NUMFRAMES - * MAX_DATA_SIZE(ov->maxwidth, ov->maxheight); - vm->frames = OV511_NUMFRAMES; - - vm->offsets[0] = 0; - for (i = 1; i < OV511_NUMFRAMES; i++) { - vm->offsets[i] = vm->offsets[i-1] - + MAX_DATA_SIZE(ov->maxwidth, ov->maxheight); - } - - return 0; - } - case VIDIOCMCAPTURE: - { - struct video_mmap *vm = arg; - int rc, depth; - unsigned int f = vm->frame; - - PDEBUG(4, "VIDIOCMCAPTURE: frame: %d, %dx%d, %s", f, vm->width, - vm->height, symbolic(v4l1_plist, vm->format)); - - depth = get_depth(vm->format); - if (!depth) { - PDEBUG(2, "VIDIOCMCAPTURE: invalid format (%s)", - symbolic(v4l1_plist, vm->format)); - return -EINVAL; - } - - if (f >= OV511_NUMFRAMES) { - err("VIDIOCMCAPTURE: invalid frame (%d)", f); - return -EINVAL; - } - - if (vm->width > ov->maxwidth - || vm->height > ov->maxheight) { - err("VIDIOCMCAPTURE: requested dimensions too big"); - return -EINVAL; - } - - if (ov->frame[f].grabstate == FRAME_GRABBING) { - PDEBUG(4, "VIDIOCMCAPTURE: already grabbing"); - return -EBUSY; - } - - if (force_palette && (vm->format != force_palette)) { - PDEBUG(2, "palette rejected (%s)", - symbolic(v4l1_plist, vm->format)); - return -EINVAL; - } - - if ((ov->frame[f].width != vm->width) || - (ov->frame[f].height != vm->height) || - (ov->frame[f].format != vm->format) || - (ov->frame[f].sub_flag != ov->sub_flag) || - (ov->frame[f].depth != depth)) { - PDEBUG(4, "VIDIOCMCAPTURE: change in image parameters"); - - rc = ov51x_wait_frames_inactive(ov); - if (rc) - return rc; - - rc = mode_init_regs(ov, vm->width, vm->height, - vm->format, ov->sub_flag); -#if 0 - if (rc < 0) { - PDEBUG(1, "Got error while initializing regs "); - return ret; - } -#endif - ov->frame[f].width = vm->width; - ov->frame[f].height = vm->height; - ov->frame[f].format = vm->format; - ov->frame[f].sub_flag = ov->sub_flag; - ov->frame[f].depth = depth; - } - - /* Mark it as ready */ - ov->frame[f].grabstate = FRAME_READY; - - PDEBUG(4, "VIDIOCMCAPTURE: renewing frame %d", f); - - return ov51x_new_frame(ov, f); - } - case VIDIOCSYNC: - { - unsigned int fnum = *((unsigned int *) arg); - struct ov511_frame *frame; - int rc; - - if (fnum >= OV511_NUMFRAMES) { - err("VIDIOCSYNC: invalid frame (%d)", fnum); - return -EINVAL; - } - - frame = &ov->frame[fnum]; - - PDEBUG(4, "syncing to frame %d, grabstate = %d", fnum, - frame->grabstate); - - switch (frame->grabstate) { - case FRAME_UNUSED: - return -EINVAL; - case FRAME_READY: - case FRAME_GRABBING: - case FRAME_ERROR: -redo: - if (!ov->dev) - return -EIO; - - rc = wait_event_interruptible(frame->wq, - (frame->grabstate == FRAME_DONE) - || (frame->grabstate == FRAME_ERROR)); - - if (rc) - return rc; - - if (frame->grabstate == FRAME_ERROR) { - if ((rc = ov51x_new_frame(ov, fnum)) < 0) - return rc; - goto redo; - } - /* Fall through */ - case FRAME_DONE: - if (ov->snap_enabled && !frame->snapshot) { - if ((rc = ov51x_new_frame(ov, fnum)) < 0) - return rc; - goto redo; - } - - frame->grabstate = FRAME_UNUSED; - - /* Reset the hardware snapshot button */ - /* FIXME - Is this the best place for this? */ - if ((ov->snap_enabled) && (frame->snapshot)) { - frame->snapshot = 0; - ov51x_clear_snapshot(ov); - } - - /* Decompression, format conversion, etc... */ - if (ov->bclass != BCL_OV519) { - ov51x_postprocess(ov, frame); - } - - break; - } /* end switch */ - - return 0; - } - case VIDIOCGFBUF: - { - struct video_buffer *vb = arg; - - PDEBUG(4, "VIDIOCGFBUF"); - - memset(vb, 0, sizeof(struct video_buffer)); - - return 0; - } - case VIDIOCGUNIT: - { - struct video_unit *vu = arg; - - PDEBUG(4, "VIDIOCGUNIT"); - - memset(vu, 0, sizeof(struct video_unit)); - - vu->video = ov->vdev->minor; - vu->vbi = VIDEO_NO_UNIT; - vu->radio = VIDEO_NO_UNIT; - vu->audio = VIDEO_NO_UNIT; - vu->teletext = VIDEO_NO_UNIT; - - return 0; - } - case OV511IOC_WI2C: - { - struct ov511_i2c_struct *w = arg; - - return i2c_w_slave(ov, w->slave, w->reg, w->value, w->mask); - } - case OV511IOC_RI2C: - { - struct ov511_i2c_struct *r = arg; - int rc; - - rc = i2c_r_slave(ov, r->slave, r->reg); - if (rc < 0) - return rc; - - r->value = rc; - return 0; - } - default: - PDEBUG(3, "Unsupported IOCtl: 0x%X", cmd); - return -ENOIOCTLCMD; - } /* end switch */ - - return 0; -} - -#ifdef OV511_OLD_V4L -/* This is implemented as video_generic_ioctl() in the new V4L's videodev.c */ -static int -ov51x_v4l1_generic_ioctl(struct video_device *vdev, unsigned int cmd, void *arg) -{ - char sbuf[128]; - void *mbuf = NULL; - void *parg = NULL; - int err = -EINVAL; - - /* Copy arguments into temp kernel buffer */ - switch (_IOC_DIR(cmd)) { - case _IOC_NONE: - parg = arg; - break; - case _IOC_READ: /* some v4l ioctls are marked wrong ... */ - case _IOC_WRITE: - case (_IOC_WRITE | _IOC_READ): - if (_IOC_SIZE(cmd) <= sizeof(sbuf)) { - parg = sbuf; - } else { - /* too big to allocate from stack */ - mbuf = kmalloc(_IOC_SIZE(cmd), GFP_KERNEL); - if (NULL == mbuf) - return -ENOMEM; - parg = mbuf; - } - - err = -EFAULT; - if (copy_from_user(parg, arg, _IOC_SIZE(cmd))) - goto out; - break; - } - - err = ov51x_v4l1_ioctl_internal(vdev->priv, cmd, parg); - if (err == -ENOIOCTLCMD) - err = -EINVAL; - if (err < 0) - goto out; - - /* Copy results into user buffer */ - switch (_IOC_DIR(cmd)) - { - case _IOC_READ: - case (_IOC_WRITE | _IOC_READ): - if (copy_to_user(arg, parg, _IOC_SIZE(cmd))) - err = -EFAULT; - break; - } - -out: - if (mbuf) - kfree(mbuf); - return err; -} - -static int -ov51x_v4l1_ioctl(struct video_device *vdev, unsigned int cmd, void *arg) -{ - struct usb_ov511 *ov = vdev->priv; - int rc; - - if (down_interruptible(&ov->lock)) - return -EINTR; - - rc = ov51x_v4l1_generic_ioctl(vdev, cmd, arg); - - up(&ov->lock); - return rc; -} - -#else /* If new V4L API */ - -static int -ov51x_v4l1_ioctl(struct inode *inode, struct file *file, - unsigned int cmd, unsigned long arg) -{ - struct video_device *vdev = file->private_data; - struct usb_ov511 *ov = video_get_drvdata(vdev); - int rc; - - if (down_interruptible(&ov->lock)) - return -EINTR; - - rc = video_usercopy(inode, file, cmd, arg, ov51x_v4l1_ioctl_internal); - - up(&ov->lock); - return rc; -} -#endif /* OV511_OLD_V4L */ - -#ifdef OV511_OLD_V4L -static long -ov51x_v4l1_read(struct video_device *vdev, char *buf, unsigned long count, - int noblock) -{ -#else -static ssize_t -ov51x_v4l1_read(struct file *file, char *buf, size_t cnt, loff_t *ppos) -{ - struct video_device *vdev = file->private_data; - int noblock = file->f_flags&O_NONBLOCK; - unsigned long count = cnt; -#endif - struct usb_ov511 *ov = video_get_drvdata(vdev); - int i, rc = 0, frmx = -1; - struct ov511_frame *frame; - - if (down_interruptible(&ov->lock)) - return -EINTR; - - PDEBUG(4, "%ld bytes, noblock=%d", count, noblock); - - if (!vdev || !buf) { - rc = -EFAULT; - goto error; - } - - if (!ov->dev) { - rc = -EIO; - goto error; - } - -// FIXME: Only supports two frames - /* See if a frame is completed, then use it. */ - if (ov->frame[0].grabstate >= FRAME_DONE) /* _DONE or _ERROR */ - frmx = 0; - else if (ov->frame[1].grabstate >= FRAME_DONE)/* _DONE or _ERROR */ - frmx = 1; - - /* If nonblocking we return immediately */ - if (noblock && (frmx == -1)) { - rc = -EAGAIN; - goto error; - } - - /* If no FRAME_DONE, look for a FRAME_GRABBING state. */ - /* See if a frame is in process (grabbing), then use it. */ - if (frmx == -1) { - if (ov->frame[0].grabstate == FRAME_GRABBING) - frmx = 0; - else if (ov->frame[1].grabstate == FRAME_GRABBING) - frmx = 1; - } - - /* If no frame is active, start one. */ - if (frmx == -1) { - if ((rc = ov51x_new_frame(ov, frmx = 0))) { - err("read: ov51x_new_frame error"); - goto error; - } - } - - frame = &ov->frame[frmx]; - -restart: - if (!ov->dev) { - rc = -EIO; - goto error; - } - - /* Wait while we're grabbing the image */ - PDEBUG(4, "Waiting image grabbing"); - rc = wait_event_interruptible(frame->wq, - (frame->grabstate == FRAME_DONE) - || (frame->grabstate == FRAME_ERROR)); - - if (rc) - goto error; - - PDEBUG(4, "Got image, frame->grabstate = %d", frame->grabstate); - PDEBUG(4, "bytes_recvd = %d", frame->bytes_recvd); - - if (frame->grabstate == FRAME_ERROR) { - frame->bytes_read = 0; - err("** ick! ** Errored frame %d", ov->curframe); - if (ov51x_new_frame(ov, frmx)) { - err("read: ov51x_new_frame error"); - goto error; - } - goto restart; - } - - - /* Repeat until we get a snapshot frame */ - if (ov->snap_enabled) - PDEBUG(4, "Waiting snapshot frame"); - if (ov->snap_enabled && !frame->snapshot) { - frame->bytes_read = 0; - if ((rc = ov51x_new_frame(ov, frmx))) { - err("read: ov51x_new_frame error"); - goto error; - } - goto restart; - } - - /* Clear the snapshot */ - if (ov->snap_enabled && frame->snapshot) { - frame->snapshot = 0; - ov51x_clear_snapshot(ov); - } - - /* Decompression, format conversion, etc... */ - if (ov->bclass != BCL_OV519) { - ov51x_postprocess(ov, frame); - } - - PDEBUG(4, "frmx=%d, bytes_read=%ld, length=%ld", frmx, - frame->bytes_read, - get_frame_length(ov, frame)); - - /* copy bytes to user space; we allow for partials reads */ - if ((count + frame->bytes_read) > get_frame_length(ov, (struct ov511_frame *)frame)) { - count = frame->bytes_recvd - frame->bytes_read; - PDEBUG(4, "set count to %d", (int)count); - } - - /* FIXME - count hardwired to be one frame... */ - //count = get_frame_length(ov, frame); - - PDEBUG(4, "Copy to user space: %ld bytes", count); - if ((i = copy_to_user(buf, frame->data + frame->bytes_read, count))) { - PDEBUG(4, "Copy failed! %d bytes not copied", i); - rc = -EFAULT; - goto error; - } - - frame->bytes_read += count; - PDEBUG(4, "{copy} count used=%ld, new bytes_read=%ld", - count, frame->bytes_read); - - /* If all data have been read... */ - if (frame->bytes_read >= get_frame_length(ov, frame)) { - frame->bytes_read = 0; - -// FIXME: Only supports two frames - /* Mark it as available to be used again. */ - ov->frame[frmx].grabstate = FRAME_UNUSED; - if ((rc = ov51x_new_frame(ov, !frmx))) { - err("ov51x_new_frame returned error"); - goto error; - } - } - - PDEBUG(4, "read finished, returning %ld (sweet)", count); - - up(&ov->lock); - return count; - -error: - up(&ov->lock); - return rc; -} - -static int -#ifdef OV511_OLD_V4L - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 3) -ov51x_v4l1_mmap(struct vm_area_struct *vma, struct video_device *vdev, - const char *adr, unsigned long size) - #else -ov51x_v4l1_mmap(struct video_device *vdev, const char *adr, unsigned long size) - #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 3) */ -{ - unsigned long start = (unsigned long)adr; - -#else /* New V4L API */ - -ov51x_v4l1_mmap(struct file *file, struct vm_area_struct *vma) -{ - struct video_device *vdev = file->private_data; - unsigned long start = vma->vm_start; - unsigned long size = vma->vm_end - vma->vm_start; -#endif /* OV511_OLD_V4L */ - - struct usb_ov511 *ov = video_get_drvdata(vdev); - unsigned long page, pos; - - if (ov->dev == NULL) - return -EIO; - - PDEBUG(4, "mmap: %ld (%lX) bytes", size, size); - - if (size > (((OV511_NUMFRAMES - * MAX_DATA_SIZE(ov->maxwidth, ov->maxheight) - + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)))) - return -EINVAL; - - if (down_interruptible(&ov->lock)) - return -EINTR; - - pos = (unsigned long)ov->fbuf; - while (size > 0) { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 10) - page = vmalloc_to_pfn((void *)pos); - if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) { -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 3) || defined(RH9_REMAP) - page = kvirt_to_pa(pos); - if (remap_page_range(vma, start, page, PAGE_SIZE, - PAGE_SHARED)) { -#else - page = kvirt_to_pa(pos); - if (remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED)) { -#endif - up(&ov->lock); - return -EAGAIN; - } - start += PAGE_SIZE; - pos += PAGE_SIZE; - if (size > PAGE_SIZE) - size -= PAGE_SIZE; - else - size = 0; - } - - up(&ov->lock); - return 0; -} - -#ifdef OV511_OLD_V4L -static struct video_device vdev_template = { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 17) - .owner = THIS_MODULE, -#endif - .name = "OV511 USB Camera", - .type = VID_TYPE_CAPTURE, - .hardware = VID_HARDWARE_OV511, - .open = ov51x_v4l1_open, - .close = ov51x_v4l1_close, - .read = ov51x_v4l1_read, - .ioctl = ov51x_v4l1_ioctl, - .mmap = ov51x_v4l1_mmap, -}; - -#else /* New V4L API */ - -static struct file_operations ov511_fops = { - .owner = THIS_MODULE, - .open = ov51x_v4l1_open, - .release = ov51x_v4l1_close, - .read = ov51x_v4l1_read, - .mmap = ov51x_v4l1_mmap, - .ioctl = ov51x_v4l1_ioctl, - .llseek = no_llseek, -}; - -static struct video_device vdev_template = { - .owner = THIS_MODULE, - .name = "OV51x USB Camera", - .type = VID_TYPE_CAPTURE, - .hardware = VID_HARDWARE_OV511, - .fops = &ov511_fops, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - .release = video_device_release, -#endif - .minor = -1, -}; -#endif /* OV511_OLD_V4L */ - -#if defined(CONFIG_VIDEO_PROC_FS) -static int -ov51x_control_ioctl(struct inode *inode, struct file *file, unsigned int cmd, - unsigned long ularg) -{ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 5) - struct proc_dir_entry *pde = PDE(inode); -#else - struct proc_dir_entry *pde = inode->u.generic_ip; -#endif - struct usb_ov511 *ov; - void *arg = (void *) ularg; - int rc; - - if (!pde) - return -ENOENT; - - ov = pde->data; - if (!ov) - return -ENODEV; - - if (!ov->dev) - return -EIO; - - /* Should we pass through standard V4L IOCTLs? */ - - switch (cmd) { - case OV511IOC_GINTVER: - { - return OV511_INTERFACE_VER; - } - case OV511IOC_GUSHORT: - { - struct ov511_ushort_opt opt; - - if (copy_from_user(&opt, arg, sizeof(opt))) - return -EFAULT; - - switch (opt.optnum) { - case OV511_USOPT_BRIGHT: - rc = sensor_get_brightness(ov, &(opt.val)); - if (rc) return rc; - break; - case OV511_USOPT_SAT: - rc = sensor_get_saturation(ov, &(opt.val)); - if (rc) return rc; - break; - case OV511_USOPT_HUE: - rc = sensor_get_hue(ov, &(opt.val)); - if (rc) return rc; - break; - case OV511_USOPT_CONTRAST: - rc = sensor_get_contrast(ov, &(opt.val)); - if (rc) return rc; - break; - default: - err("Invalid get short option number"); - return -EINVAL; - } - - if (copy_to_user(arg, &opt, sizeof(opt))) - return -EFAULT; - - return 0; - } - case OV511IOC_SUSHORT: - { - struct ov511_ushort_opt opt; - - if (copy_from_user(&opt, arg, sizeof(opt))) - return -EFAULT; - - switch (opt.optnum) { - case OV511_USOPT_BRIGHT: - rc = sensor_set_brightness(ov, opt.val); - if (rc) return rc; - break; - case OV511_USOPT_SAT: - rc = sensor_set_saturation(ov, opt.val); - if (rc) return rc; - break; - case OV511_USOPT_HUE: - rc = sensor_set_hue(ov, opt.val); - if (rc) return rc; - break; - case OV511_USOPT_CONTRAST: - rc = sensor_set_contrast(ov, opt.val); - if (rc) return rc; - break; - default: - err("Invalid set short option number"); - return -EINVAL; - } - - return 0; - } - case OV511IOC_GUINT: - { - struct ov511_uint_opt opt; - - if (copy_from_user(&opt, arg, sizeof(opt))) - return -EFAULT; - - switch (opt.optnum) { - case OV511_UIOPT_POWER_FREQ: - opt.val = ov->lightfreq; - break; - case OV511_UIOPT_BFILTER: - opt.val = ov->bandfilt; - break; - case OV511_UIOPT_LED: - opt.val = ov->led_policy; - break; - case OV511_UIOPT_LED2: - opt.val = ov->led2_policy; - break; - case OV511_UIOPT_DEBUG: - opt.val = debug; - break; - case OV511_UIOPT_COMPRESS: - opt.val = ov->compress; - break; - default: - err("Invalid get int option number"); - return -EINVAL; - } - - if (copy_to_user(arg, &opt, sizeof(opt))) - return -EFAULT; - - return 0; - } - case OV511IOC_SUINT: - { - struct ov511_uint_opt opt; - - if (copy_from_user(&opt, arg, sizeof(opt))) - return -EFAULT; - - switch (opt.optnum) { - case OV511_UIOPT_POWER_FREQ: - rc = sensor_set_light_freq(ov, opt.val); - if (rc) return rc; - break; - case OV511_UIOPT_BFILTER: - rc = sensor_set_banding_filter(ov, opt.val); - if (rc) return rc; - break; - case OV511_UIOPT_LED: - if (opt.val <= 2) { - ov->led_policy = opt.val; - if (ov->led_policy == LED_OFF) - ov51x_led_control(ov, 0); - else if (ov->led_policy == LED_ON) - ov51x_led_control(ov, 1); - } else { - return -EINVAL; - } - break; - case OV511_UIOPT_LED2: - if (opt.val <= 2) { - ov->led2_policy = opt.val; - if (ov->led2_policy == LED_OFF) - ov51x_led_control(ov, 0); - else if (ov->led2_policy == LED_ON) - ov51x_led_control(ov, 1); - } else { - return -EINVAL; - } - break; - case OV511_UIOPT_DEBUG: - if (opt.val <= 5) - debug = opt.val; - else - return -EINVAL; - break; - case OV511_UIOPT_COMPRESS: - ov->compress = opt.val; - if (ov->compress) { - if (ov->bclass == BCL_OV511) - ov511_init_compression(ov); - else if (ov->bclass == BCL_OV518) - ov518_init_compression(ov); - else if (ov->bclass == BCL_OV519) - ov519_init_compression(ov); - } - break; - default: - err("Invalid get int option number"); - return -EINVAL; - } - - return 0; - } - case OV511IOC_WI2C: - { - struct ov511_i2c_struct w; - - if (copy_from_user(&w, arg, sizeof(w))) - return -EFAULT; - - return i2c_w_slave(ov, w.slave, w.reg, w.value, w.mask); - } - case OV511IOC_RI2C: - { - struct ov511_i2c_struct r; - - if (copy_from_user(&r, arg, sizeof(r))) - return -EFAULT; - - rc = i2c_r_slave(ov, r.slave, r.reg); - if (rc < 0) - return rc; - - r.value = rc; - - if (copy_to_user(arg, &r, sizeof(r))) - return -EFAULT; - - return 0; - } - default: - return -EINVAL; - } - - return 0; -} -#endif - -/**************************************************************************** - * - * OV511 and sensor configuration - * - ***************************************************************************/ - -/* This initializes the OV8110, OV8610 sensor. The OV8110 uses - * the same register settings as the OV8610, since they are very similar. - */ -static int -ov8xx0_configure(struct usb_ov511 *ov) -{ - int rc; - - static struct ov511_regvals regvals_norm_8610[] = { - { OV511_I2C_BUS, 0x12, 0x80 }, - { OV511_I2C_BUS, 0x00, 0x00 }, - { OV511_I2C_BUS, 0x01, 0x80 }, - { OV511_I2C_BUS, 0x02, 0x80 }, - { OV511_I2C_BUS, 0x03, 0xc0 }, - { OV511_I2C_BUS, 0x04, 0x30 }, - { OV511_I2C_BUS, 0x05, 0x30 }, /* was 0x10, new from windrv 090403 */ - { OV511_I2C_BUS, 0x06, 0x70 }, /* was 0x80, new from windrv 090403 */ - { OV511_I2C_BUS, 0x0a, 0x86 }, - { OV511_I2C_BUS, 0x0b, 0xb0 }, - { OV511_I2C_BUS, 0x0c, 0x20 }, - { OV511_I2C_BUS, 0x0d, 0x20 }, - { OV511_I2C_BUS, 0x11, 0x01 }, - { OV511_I2C_BUS, 0x12, 0x25 }, - { OV511_I2C_BUS, 0x13, 0x01 }, - { OV511_I2C_BUS, 0x14, 0x04 }, - { OV511_I2C_BUS, 0x15, 0x01 }, /* Lin and Win think different about UV order */ - { OV511_I2C_BUS, 0x16, 0x03 }, - { OV511_I2C_BUS, 0x17, 0x38 }, /* was 0x2f, new from windrv 090403 */ - { OV511_I2C_BUS, 0x18, 0xea }, /* was 0xcf, new from windrv 090403 */ - { OV511_I2C_BUS, 0x19, 0x02 }, /* was 0x06, new from windrv 090403 */ - { OV511_I2C_BUS, 0x1a, 0xf5 }, - { OV511_I2C_BUS, 0x1b, 0x00 }, - { OV511_I2C_BUS, 0x20, 0xd0 }, /* was 0x90, new from windrv 090403 */ - { OV511_I2C_BUS, 0x23, 0xc0 }, /* was 0x00, new from windrv 090403 */ - { OV511_I2C_BUS, 0x24, 0x30 }, /* was 0x1d, new from windrv 090403 */ - { OV511_I2C_BUS, 0x25, 0x50 }, /* was 0x57, new from windrv 090403 */ - { OV511_I2C_BUS, 0x26, 0xa2 }, - { OV511_I2C_BUS, 0x27, 0xea }, - { OV511_I2C_BUS, 0x28, 0x00 }, - { OV511_I2C_BUS, 0x29, 0x00 }, - { OV511_I2C_BUS, 0x2a, 0x80 }, - { OV511_I2C_BUS, 0x2b, 0xc8 }, /* was 0xcc, new from windrv 090403 */ - { OV511_I2C_BUS, 0x2c, 0xac }, - { OV511_I2C_BUS, 0x2d, 0x45 }, /* was 0xd5, new from windrv 090403 */ - { OV511_I2C_BUS, 0x2e, 0x80 }, - { OV511_I2C_BUS, 0x2f, 0x14 }, /* was 0x01, new from windrv 090403 */ - { OV511_I2C_BUS, 0x4c, 0x00 }, - { OV511_I2C_BUS, 0x4d, 0x30 }, /* was 0x10, new from windrv 090403 */ - { OV511_I2C_BUS, 0x60, 0x02 }, /* was 0x01, new from windrv 090403 */ - { OV511_I2C_BUS, 0x61, 0x00 }, /* was 0x09, new from windrv 090403 */ - { OV511_I2C_BUS, 0x62, 0x5f }, /* was 0xd7, new from windrv 090403 */ - { OV511_I2C_BUS, 0x63, 0xff }, - { OV511_I2C_BUS, 0x64, 0x53 }, /* new windrv 090403 says 0x57, maybe thats wrong */ - { OV511_I2C_BUS, 0x65, 0x00 }, - { OV511_I2C_BUS, 0x66, 0x55 }, - { OV511_I2C_BUS, 0x67, 0xb0 }, - { OV511_I2C_BUS, 0x68, 0xc0 }, /* was 0xaf, new from windrv 090403 */ - { OV511_I2C_BUS, 0x69, 0x02 }, - { OV511_I2C_BUS, 0x6a, 0x22 }, - { OV511_I2C_BUS, 0x6b, 0x00 }, - { OV511_I2C_BUS, 0x6c, 0x99 }, /* was 0x80, old windrv says 0x00, but deleting bit7 colors the first images red */ - { OV511_I2C_BUS, 0x6d, 0x11 }, /* was 0x00, new from windrv 090403 */ - { OV511_I2C_BUS, 0x6e, 0x11 }, /* was 0x00, new from windrv 090403 */ - { OV511_I2C_BUS, 0x6f, 0x01 }, - { OV511_I2C_BUS, 0x70, 0x8b }, - { OV511_I2C_BUS, 0x71, 0x00 }, - { OV511_I2C_BUS, 0x72, 0x14 }, - { OV511_I2C_BUS, 0x73, 0x54 }, - { OV511_I2C_BUS, 0x74, 0x00 },//0x60? /* was 0x00, new from windrv 090403 */ - { OV511_I2C_BUS, 0x75, 0x0e }, - { OV511_I2C_BUS, 0x76, 0x02 }, /* was 0x02, new from windrv 090403 */ - { OV511_I2C_BUS, 0x77, 0xff }, - { OV511_I2C_BUS, 0x78, 0x80 }, - { OV511_I2C_BUS, 0x79, 0x80 }, - { OV511_I2C_BUS, 0x7a, 0x80 }, - { OV511_I2C_BUS, 0x7b, 0x10 }, /* was 0x13, new from windrv 090403 */ - { OV511_I2C_BUS, 0x7c, 0x00 }, - { OV511_I2C_BUS, 0x7d, 0x08 }, /* was 0x09, new from windrv 090403 */ - { OV511_I2C_BUS, 0x7e, 0x08 }, /* was 0xc0, new from windrv 090403 */ - { OV511_I2C_BUS, 0x7f, 0xfb }, - { OV511_I2C_BUS, 0x80, 0x28 }, - { OV511_I2C_BUS, 0x81, 0x00 }, - { OV511_I2C_BUS, 0x82, 0x23 }, - { OV511_I2C_BUS, 0x83, 0x0b }, - { OV511_I2C_BUS, 0x84, 0x00 }, - { OV511_I2C_BUS, 0x85, 0x62 }, /* was 0x61, new from windrv 090403 */ - { OV511_I2C_BUS, 0x86, 0xc9 }, - { OV511_I2C_BUS, 0x87, 0x00 }, - { OV511_I2C_BUS, 0x88, 0x00 }, - { OV511_I2C_BUS, 0x89, 0x01 }, - { OV511_I2C_BUS, 0x12, 0x20 }, - { OV511_I2C_BUS, 0x12, 0x25 }, /* was 0x24, new from windrv 090403 */ - { OV511_DONE_BUS, 0x0, 0x00 }, - }; - - PDEBUG(4, "starting configuration"); - - if (init_ov_sensor(ov) < 0) { - err("Failed to read sensor ID. You might not have an"); - err("OV8600/10, or it might not be responding. Report"); - err("this to sensor = SEN_OV8610; - } else { - err("Unknown image sensor version: %d", rc & 3); - return -1; - } - - PDEBUG(4, "Writing 8610 registers"); - if (write_regvals(ov, regvals_norm_8610)) - return -1; - - /* Set sensor-specific vars */ - ov->maxwidth = 800; - ov->maxheight = 600; - ov->minwidth = 64; - ov->minheight = 48; - - // FIXME: These do not match the actual settings yet - ov->brightness = 0x80 << 8; - ov->contrast = 0x80 << 8; - ov->colour = 0x80 << 8; - ov->hue = 0x80 << 8; - - return 0; -} - -/* This initializes the OV7610, OV7620, or OV76BE sensor. The OV76BE uses - * the same register settings as the OV7610, since they are very similar. - */ -static int -ov7xx0_configure(struct usb_ov511 *ov) -{ - int rc, high, low; - - /* Lawrence Glaister reports: - * - * Register 0x0f in the 7610 has the following effects: - * - * 0x85 (AEC method 1): Best overall, good contrast range - * 0x45 (AEC method 2): Very overexposed - * 0xa5 (spec sheet default): Ok, but the black level is - * shifted resulting in loss of contrast - * 0x05 (old driver setting): very overexposed, too much - * contrast - */ - static struct ov511_regvals regvals_norm_7610[] = { - { OV511_I2C_BUS, 0x10, 0xff }, - { OV511_I2C_BUS, 0x16, 0x06 }, - { OV511_I2C_BUS, 0x28, 0x24 }, - { OV511_I2C_BUS, 0x2b, 0xac }, - { OV511_I2C_BUS, 0x12, 0x00 }, - { OV511_I2C_BUS, 0x38, 0x81 }, - { OV511_I2C_BUS, 0x28, 0x24 }, /* 0c */ - { OV511_I2C_BUS, 0x0f, 0x85 }, /* lg's setting */ - { OV511_I2C_BUS, 0x15, 0x01 }, - { OV511_I2C_BUS, 0x20, 0x1c }, - { OV511_I2C_BUS, 0x23, 0x2a }, - { OV511_I2C_BUS, 0x24, 0x10 }, - { OV511_I2C_BUS, 0x25, 0x8a }, - { OV511_I2C_BUS, 0x26, 0xa2 }, - { OV511_I2C_BUS, 0x27, 0xc2 }, - { OV511_I2C_BUS, 0x2a, 0x04 }, - { OV511_I2C_BUS, 0x2c, 0xfe }, - { OV511_I2C_BUS, 0x2d, 0x93 }, - { OV511_I2C_BUS, 0x30, 0x71 }, - { OV511_I2C_BUS, 0x31, 0x60 }, - { OV511_I2C_BUS, 0x32, 0x26 }, - { OV511_I2C_BUS, 0x33, 0x20 }, - { OV511_I2C_BUS, 0x34, 0x48 }, - { OV511_I2C_BUS, 0x12, 0x24 }, - { OV511_I2C_BUS, 0x11, 0x01 }, - { OV511_I2C_BUS, 0x0c, 0x24 }, - { OV511_I2C_BUS, 0x0d, 0x24 }, - { OV511_DONE_BUS, 0x0, 0x00 }, - }; - - static struct ov511_regvals regvals_norm_7620[] = { - { OV511_I2C_BUS, 0x00, 0x00 }, - { OV511_I2C_BUS, 0x01, 0x80 }, - { OV511_I2C_BUS, 0x02, 0x80 }, - { OV511_I2C_BUS, 0x03, 0xc0 }, - { OV511_I2C_BUS, 0x06, 0x60 }, - { OV511_I2C_BUS, 0x07, 0x00 }, - { OV511_I2C_BUS, 0x0c, 0x24 }, - { OV511_I2C_BUS, 0x0c, 0x24 }, - { OV511_I2C_BUS, 0x0d, 0x24 }, - { OV511_I2C_BUS, 0x11, 0x01 }, - { OV511_I2C_BUS, 0x12, 0x24 }, - { OV511_I2C_BUS, 0x13, 0x01 }, - { OV511_I2C_BUS, 0x14, 0x84 }, - { OV511_I2C_BUS, 0x15, 0x01 }, - { OV511_I2C_BUS, 0x16, 0x03 }, - { OV511_I2C_BUS, 0x17, 0x2f }, - { OV511_I2C_BUS, 0x18, 0xcf }, - { OV511_I2C_BUS, 0x19, 0x06 }, - { OV511_I2C_BUS, 0x1a, 0xf5 }, - { OV511_I2C_BUS, 0x1b, 0x00 }, - { OV511_I2C_BUS, 0x20, 0x18 }, - { OV511_I2C_BUS, 0x21, 0x80 }, - { OV511_I2C_BUS, 0x22, 0x80 }, - { OV511_I2C_BUS, 0x23, 0x00 }, - { OV511_I2C_BUS, 0x26, 0xa2 }, - { OV511_I2C_BUS, 0x27, 0xea }, - { OV511_I2C_BUS, 0x28, 0x20 }, - { OV511_I2C_BUS, 0x29, 0x00 }, - { OV511_I2C_BUS, 0x2a, 0x10 }, - { OV511_I2C_BUS, 0x2b, 0x00 }, - { OV511_I2C_BUS, 0x2c, 0x88 }, - { OV511_I2C_BUS, 0x2d, 0x91 }, - { OV511_I2C_BUS, 0x2e, 0x80 }, - { OV511_I2C_BUS, 0x2f, 0x44 }, - { OV511_I2C_BUS, 0x60, 0x27 }, - { OV511_I2C_BUS, 0x61, 0x02 }, - { OV511_I2C_BUS, 0x62, 0x5f }, - { OV511_I2C_BUS, 0x63, 0xd5 }, - { OV511_I2C_BUS, 0x64, 0x57 }, - { OV511_I2C_BUS, 0x65, 0x83 }, - { OV511_I2C_BUS, 0x66, 0x55 }, - { OV511_I2C_BUS, 0x67, 0x92 }, - { OV511_I2C_BUS, 0x68, 0xcf }, - { OV511_I2C_BUS, 0x69, 0x76 }, - { OV511_I2C_BUS, 0x6a, 0x22 }, - { OV511_I2C_BUS, 0x6b, 0x00 }, - { OV511_I2C_BUS, 0x6c, 0x02 }, - { OV511_I2C_BUS, 0x6d, 0x44 }, - { OV511_I2C_BUS, 0x6e, 0x80 }, - { OV511_I2C_BUS, 0x6f, 0x1d }, - { OV511_I2C_BUS, 0x70, 0x8b }, - { OV511_I2C_BUS, 0x71, 0x00 }, - { OV511_I2C_BUS, 0x72, 0x14 }, - { OV511_I2C_BUS, 0x73, 0x54 }, - { OV511_I2C_BUS, 0x74, 0x00 }, - { OV511_I2C_BUS, 0x75, 0x8e }, - { OV511_I2C_BUS, 0x76, 0x00 }, - { OV511_I2C_BUS, 0x77, 0xff }, - { OV511_I2C_BUS, 0x78, 0x80 }, - { OV511_I2C_BUS, 0x79, 0x80 }, - { OV511_I2C_BUS, 0x7a, 0x80 }, - { OV511_I2C_BUS, 0x7b, 0xe2 }, - { OV511_I2C_BUS, 0x7c, 0x00 }, - { OV511_DONE_BUS, 0x0, 0x00 }, - }; - - /* 7640 and 7648. The defaults should be OK for most registers. */ - static struct ov511_regvals regvals_norm_7640[] = { - { OV511_I2C_BUS, 0x12, 0x80 }, - { OV511_I2C_BUS, 0x12, 0x14 }, - { OV511_DONE_BUS, 0x0, 0x00 }, - }; - - PDEBUG(4, "starting configuration"); - - if (init_ov_sensor(ov) < 0) { - err("Failed to read sensor ID. You might not have an"); - err("OV76xx, or it might not be responding. Report"); - err("this to " EMAIL); - err("This is only a warning. You can attempt to use"); - err("your camera anyway"); - } else { - PDEBUG(1, "OV7xx0 initialized"); - } - - /* Detect sensor (sub)type */ - rc = i2c_r(ov, OV7610_REG_COM_I); - - if (rc < 0) { - err("Error detecting sensor type"); - return -1; - } else if ((rc & 3) == 3) { - info("Sensor is an OV7610"); - ov->sensor = SEN_OV7610; - } else if ((rc & 3) == 1) { - /* I don't know what's different about the 76BE yet. */ - if (i2c_r(ov, 0x15) & 1) - info("Sensor is an OV7620AE"); - else - info("Sensor is an OV76BE"); - - /* OV511+ will return all zero isoc data unless we - * configure the sensor as a 7620. Someone needs to - * find the exact reg. setting that causes this. */ - if (ov->bridge == BRG_OV511PLUS) - ov->sensor = SEN_OV7620; - else - ov->sensor = SEN_OV76BE; - } else if ((rc & 3) == 0) { - /* try to read product id registers */ - high = i2c_r(ov, 0x0a); - if (high < 0) { - err("Error detecting camera chip PID"); - return high; - } - low = i2c_r(ov, 0x0b); - if (low < 0) { - err("Error detecting camera chip VER"); - return low; - } - if (high == 0x76) { - if (low == 0x30) { - info("Sensor is an OV7630/OV7635"); - ov->sensor = SEN_OV7630; - } - else if (low == 0x40) { - info("Sensor is an OV7645"); - ov->sensor = SEN_OV7640; // FIXME - } - else if (low == 0x45) { - info("Sensor is an OV7645B"); - ov->sensor = SEN_OV7640; // FIXME - } - else if (low == 0x48) { - info("Sensor is an OV7648"); - ov->sensor = SEN_OV7640; // FIXME - } - else { - err("Unknown sensor: 0x76%X", low); - return -1; - } - } else { - info("Sensor is an OV7620"); - ov->sensor = SEN_OV7620; - } - } else { - err("Unknown image sensor version: %d", rc & 3); - return -1; - } - - if (ov->sensor == SEN_OV7620) { - PDEBUG(4, "Writing 7620 registers"); - if (write_regvals(ov, regvals_norm_7620)) - return -1; - } else if (ov->sensor == SEN_OV7630) { - PDEBUG(4, "7630 is not supported by this driver version"); - return -1; - } else if (ov->sensor == SEN_OV7640) { - PDEBUG(4, "Writing 7640 registers"); - if (write_regvals(ov, regvals_norm_7640)) - return -1; - } else { - PDEBUG(4, "Writing 7610 registers"); - if (write_regvals(ov, regvals_norm_7610)) - return -1; - } - - /* Set sensor-specific vars */ - ov->maxwidth = 640; - ov->maxheight = 480; - ov->minwidth = 64; - ov->minheight = 48; - - // FIXME: These do not match the actual settings yet - ov->brightness = 0x80 << 8; - ov->contrast = 0x80 << 8; - ov->colour = 0x80 << 8; - ov->hue = 0x80 << 8; - - return 0; -} - -/* This initializes the OV6620, OV6630, OV6630AE, or OV6630AF sensor. */ -static int -ov6xx0_configure(struct usb_ov511 *ov) -{ - int rc; - - static struct ov511_regvals regvals_norm_6x20[] = { - { OV511_I2C_BUS, 0x12, 0x80 }, /* reset */ - { OV511_I2C_BUS, 0x11, 0x01 }, - { OV511_I2C_BUS, 0x03, 0x60 }, - { OV511_I2C_BUS, 0x05, 0x7f }, /* For when autoadjust is off */ - { OV511_I2C_BUS, 0x07, 0xa8 }, - /* The ratio of 0x0c and 0x0d controls the white point */ - { OV511_I2C_BUS, 0x0c, 0x24 }, - { OV511_I2C_BUS, 0x0d, 0x24 }, - { OV511_I2C_BUS, 0x0f, 0x15 }, /* COMS */ - { OV511_I2C_BUS, 0x10, 0x75 }, /* AEC Exposure time */ - { OV511_I2C_BUS, 0x12, 0x24 }, /* Enable AGC */ - { OV511_I2C_BUS, 0x14, 0x04 }, - /* 0x16: 0x06 helps frame stability with moving objects */ - { OV511_I2C_BUS, 0x16, 0x06 }, -// { OV511_I2C_BUS, 0x20, 0x30 }, /* Aperture correction enable */ - { OV511_I2C_BUS, 0x26, 0xb2 }, /* BLC enable */ - /* 0x28: 0x05 Selects RGB format if RGB on */ - { OV511_I2C_BUS, 0x28, 0x05 }, - { OV511_I2C_BUS, 0x2a, 0x04 }, /* Disable framerate adjust */ -// { OV511_I2C_BUS, 0x2b, 0xac }, /* Framerate; Set 2a[7] first */ - { OV511_I2C_BUS, 0x2d, 0x99 }, - { OV511_I2C_BUS, 0x33, 0xa0 }, /* Color Processing Parameter */ - { OV511_I2C_BUS, 0x34, 0xd2 }, /* Max A/D range */ - { OV511_I2C_BUS, 0x38, 0x8b }, - { OV511_I2C_BUS, 0x39, 0x40 }, - - { OV511_I2C_BUS, 0x3c, 0x39 }, /* Enable AEC mode changing */ - { OV511_I2C_BUS, 0x3c, 0x3c }, /* Change AEC mode */ - { OV511_I2C_BUS, 0x3c, 0x24 }, /* Disable AEC mode changing */ - - { OV511_I2C_BUS, 0x3d, 0x80 }, - /* These next two registers (0x4a, 0x4b) are undocumented. They - * control the color balance */ - { OV511_I2C_BUS, 0x4a, 0x80 }, - { OV511_I2C_BUS, 0x4b, 0x80 }, - { OV511_I2C_BUS, 0x4d, 0xd2 }, /* This reduces noise a bit */ - { OV511_I2C_BUS, 0x4e, 0xc1 }, - { OV511_I2C_BUS, 0x4f, 0x04 }, -// Do 50-53 have any effect? -// Toggle 0x12[2] off and on here? - { OV511_DONE_BUS, 0x0, 0x00 }, /* END MARKER */ - }; - - static struct ov511_regvals regvals_norm_6x30[] = { - { OV511_I2C_BUS, 0x12, 0x80 }, /* Reset */ - { OV511_I2C_BUS, 0x00, 0x1f }, /* Gain */ - { OV511_I2C_BUS, 0x01, 0x99 }, /* Blue gain */ - { OV511_I2C_BUS, 0x02, 0x7c }, /* Red gain */ - { OV511_I2C_BUS, 0x03, 0xc0 }, /* Saturation */ - { OV511_I2C_BUS, 0x05, 0x0a }, /* Contrast */ - { OV511_I2C_BUS, 0x06, 0x95 }, /* Brightness */ - { OV511_I2C_BUS, 0x07, 0x2d }, /* Sharpness */ - { OV511_I2C_BUS, 0x0c, 0x20 }, - { OV511_I2C_BUS, 0x0d, 0x20 }, - { OV511_I2C_BUS, 0x0e, 0x20 }, - { OV511_I2C_BUS, 0x0f, 0x05 }, - { OV511_I2C_BUS, 0x10, 0x9a }, - { OV511_I2C_BUS, 0x11, 0x00 }, /* Pixel clock = fastest */ - { OV511_I2C_BUS, 0x12, 0x24 }, /* Enable AGC and AWB */ - { OV511_I2C_BUS, 0x13, 0x21 }, - { OV511_I2C_BUS, 0x14, 0x80 }, - { OV511_I2C_BUS, 0x15, 0x01 }, - { OV511_I2C_BUS, 0x16, 0x03 }, - { OV511_I2C_BUS, 0x17, 0x38 }, - { OV511_I2C_BUS, 0x18, 0xea }, - { OV511_I2C_BUS, 0x19, 0x04 }, - { OV511_I2C_BUS, 0x1a, 0x93 }, - { OV511_I2C_BUS, 0x1b, 0x00 }, - { OV511_I2C_BUS, 0x1e, 0xc4 }, - { OV511_I2C_BUS, 0x1f, 0x04 }, - { OV511_I2C_BUS, 0x20, 0x20 }, - { OV511_I2C_BUS, 0x21, 0x10 }, - { OV511_I2C_BUS, 0x22, 0x88 }, - { OV511_I2C_BUS, 0x23, 0xc0 }, /* Crystal circuit power level */ - { OV511_I2C_BUS, 0x25, 0x9a }, /* Increase AEC black ratio */ - { OV511_I2C_BUS, 0x26, 0xb2 }, /* BLC enable */ - { OV511_I2C_BUS, 0x27, 0xa2 }, - { OV511_I2C_BUS, 0x28, 0x00 }, - { OV511_I2C_BUS, 0x29, 0x00 }, - { OV511_I2C_BUS, 0x2a, 0x84 }, /* 60 Hz power */ - { OV511_I2C_BUS, 0x2b, 0xa8 }, /* 60 Hz power */ - { OV511_I2C_BUS, 0x2c, 0xa0 }, - { OV511_I2C_BUS, 0x2d, 0x95 }, /* Enable auto-brightness */ - { OV511_I2C_BUS, 0x2e, 0x88 }, - { OV511_I2C_BUS, 0x33, 0x26 }, - { OV511_I2C_BUS, 0x34, 0x03 }, - { OV511_I2C_BUS, 0x36, 0x8f }, - { OV511_I2C_BUS, 0x37, 0x80 }, - { OV511_I2C_BUS, 0x38, 0x83 }, - { OV511_I2C_BUS, 0x39, 0x80 }, - { OV511_I2C_BUS, 0x3a, 0x0f }, - { OV511_I2C_BUS, 0x3b, 0x3c }, - { OV511_I2C_BUS, 0x3c, 0x1a }, - { OV511_I2C_BUS, 0x3d, 0x80 }, - { OV511_I2C_BUS, 0x3e, 0x80 }, - { OV511_I2C_BUS, 0x3f, 0x0e }, - { OV511_I2C_BUS, 0x40, 0x00 }, /* White bal */ - { OV511_I2C_BUS, 0x41, 0x00 }, /* White bal */ - { OV511_I2C_BUS, 0x42, 0x80 }, - { OV511_I2C_BUS, 0x43, 0x3f }, /* White bal */ - { OV511_I2C_BUS, 0x44, 0x80 }, - { OV511_I2C_BUS, 0x45, 0x20 }, - { OV511_I2C_BUS, 0x46, 0x20 }, - { OV511_I2C_BUS, 0x47, 0x80 }, - { OV511_I2C_BUS, 0x48, 0x7f }, - { OV511_I2C_BUS, 0x49, 0x00 }, - { OV511_I2C_BUS, 0x4a, 0x00 }, - { OV511_I2C_BUS, 0x4b, 0x80 }, - { OV511_I2C_BUS, 0x4c, 0xd0 }, - { OV511_I2C_BUS, 0x4d, 0x10 }, /* U = 0.563u, V = 0.714v */ - { OV511_I2C_BUS, 0x4e, 0x40 }, - { OV511_I2C_BUS, 0x4f, 0x07 }, /* UV avg., col. killer: max */ - { OV511_I2C_BUS, 0x50, 0xff }, - { OV511_I2C_BUS, 0x54, 0x23 }, /* Max AGC gain: 18dB */ - { OV511_I2C_BUS, 0x55, 0xff }, - { OV511_I2C_BUS, 0x56, 0x12 }, - { OV511_I2C_BUS, 0x57, 0x81 }, - { OV511_I2C_BUS, 0x58, 0x75 }, - { OV511_I2C_BUS, 0x59, 0x01 }, /* AGC dark current comp.: +1 */ - { OV511_I2C_BUS, 0x5a, 0x2c }, - { OV511_I2C_BUS, 0x5b, 0x0f }, /* AWB chrominance levels */ - { OV511_I2C_BUS, 0x5c, 0x10 }, - { OV511_I2C_BUS, 0x3d, 0x80 }, - { OV511_I2C_BUS, 0x27, 0xa6 }, - { OV511_I2C_BUS, 0x12, 0x20 }, /* Toggle AWB */ - { OV511_I2C_BUS, 0x12, 0x24 }, - { OV511_DONE_BUS, 0x0, 0x00 }, /* END MARKER */ - }; - - PDEBUG(4, "starting sensor configuration"); - - if (init_ov_sensor(ov) < 0) { - err("Failed to read sensor ID. You might not have an OV6xx0,"); - err("or it may be not responding. Report this to " EMAIL); - return -1; - } else { - PDEBUG(1, "OV6xx0 sensor detected"); - } - - /* Detect sensor (sub)type */ - rc = i2c_r(ov, OV7610_REG_COM_I); - - if (rc < 0) { - err("Error detecting sensor type"); - return -1; - } - - /* Ugh. The first two bits are the version bits, but the entire register - * value must be used. I guess OVT underestimated how many variants - * they would make. */ - if (rc == 0x00) { - ov->sensor = SEN_OV6630; - info("WARNING: Sensor is an OV66308. Your camera may have"); - info("been misdetected in previous driver versions. Please"); - info("report this to Mark."); - } else if (rc == 0x01) { - ov->sensor = SEN_OV6620; - info("Sensor is an OV6620"); - } else if (rc == 0x02) { - ov->sensor = SEN_OV6630; - info("Sensor is an OV66308AE"); - } else if (rc == 0x03) { - ov->sensor = SEN_OV6630; - info("Sensor is an OV66308AF"); - } else if (rc == 0x90) { - ov->sensor = SEN_OV6630; - info("WARNING: Sensor is an OV66307. Your camera may have"); - info("been misdetected in previous driver versions. Please"); - info("report this to Mark."); - } else { - err("FATAL: Unknown sensor version: 0x%02x", rc); - return -1; - } - - /* Set sensor-specific vars */ - ov->maxwidth = 352; - ov->maxheight = 288; - ov->minwidth = 64; - ov->minheight = 48; - - // FIXME: These do not match the actual settings yet - ov->brightness = 0x80 << 8; - ov->contrast = 0x80 << 8; - ov->colour = 0x80 << 8; - ov->hue = 0x80 << 8; - - if (ov->sensor == SEN_OV6620) { - PDEBUG(4, "Writing 6x20 registers"); - if (write_regvals(ov, regvals_norm_6x20)) - return -1; - } else { - PDEBUG(4, "Writing 6x30 registers"); - if (write_regvals(ov, regvals_norm_6x30)) - return -1; - } - - return 0; -} - -/* This initializes the KS0127 and KS0127B video decoders. */ -static int -ks0127_configure(struct usb_ov511 *ov) -{ - int rc; - - /* Detect decoder subtype */ - rc = i2c_r(ov, 0x00); - if (rc < 0) { - err("Error detecting sensor type"); - return -1; - } else if (rc & 0x08) { - rc = i2c_r(ov, 0x3d); - if (rc < 0) { - err("Error detecting sensor type"); - return -1; - } else if ((rc & 0x0f) == 0) { - info("Sensor is a KS0127"); - } else if ((rc & 0x0f) == 9) { - info("Sensor is a KS0127B Rev. A"); - } - } else { - info("Sensor is a KS0122"); - } - - /* This device is not supported yet. Bail out now... */ - err("This sensor is not supported yet."); - return -1; -} - -/* This initializes the SAA7111A video decoder. */ -static int -saa7111a_configure(struct usb_ov511 *ov) -{ - int rc; - - /* Since there is no register reset command, all registers must be - * written, otherwise gives erratic results */ - static struct ov511_regvals regvals_norm_SAA7111A[] = { - { OV511_I2C_BUS, 0x06, 0xce }, - { OV511_I2C_BUS, 0x07, 0x00 }, - { OV511_I2C_BUS, 0x10, 0x44 }, /* YUV422, 240/286 lines */ - { OV511_I2C_BUS, 0x0e, 0x01 }, /* NTSC M or PAL BGHI */ - { OV511_I2C_BUS, 0x00, 0x00 }, - { OV511_I2C_BUS, 0x01, 0x00 }, - { OV511_I2C_BUS, 0x03, 0x23 }, - { OV511_I2C_BUS, 0x04, 0x00 }, - { OV511_I2C_BUS, 0x05, 0x00 }, - { OV511_I2C_BUS, 0x08, 0xc8 }, /* Auto field freq */ - { OV511_I2C_BUS, 0x09, 0x01 }, /* Chrom. trap off, APER=0.25 */ - { OV511_I2C_BUS, 0x0a, 0x80 }, /* BRIG=128 */ - { OV511_I2C_BUS, 0x0b, 0x40 }, /* CONT=1.0 */ - { OV511_I2C_BUS, 0x0c, 0x40 }, /* SATN=1.0 */ - { OV511_I2C_BUS, 0x0d, 0x00 }, /* HUE=0 */ - { OV511_I2C_BUS, 0x0f, 0x00 }, - { OV511_I2C_BUS, 0x11, 0x0c }, - { OV511_I2C_BUS, 0x12, 0x00 }, - { OV511_I2C_BUS, 0x13, 0x00 }, - { OV511_I2C_BUS, 0x14, 0x00 }, - { OV511_I2C_BUS, 0x15, 0x00 }, - { OV511_I2C_BUS, 0x16, 0x00 }, - { OV511_I2C_BUS, 0x17, 0x00 }, - { OV511_I2C_BUS, 0x02, 0xc0 }, /* Composite input 0 */ - { OV511_DONE_BUS, 0x0, 0x00 }, - }; - - /* 640x480 not supported with PAL */ - if (ov->pal) { - ov->maxwidth = 320; - ov->maxheight = 240; /* Even field only */ - } else { - ov->maxwidth = 640; - ov->maxheight = 480; /* Even/Odd fields */ - } - - ov->minwidth = 320; - ov->minheight = 240; /* Even field only */ - - ov->has_decoder = 1; - ov->num_inputs = 8; - ov->norm = VIDEO_MODE_AUTO; - ov->stop_during_set = 0; /* Decoder guarantees stable image */ - - /* Decoder doesn't change these values, so we use these instead of - * acutally reading the registers (which doesn't work) */ - ov->brightness = 0x80 << 8; - ov->contrast = 0x40 << 9; - ov->colour = 0x40 << 9; - ov->hue = 32768; - - PDEBUG(4, "Writing SAA7111A registers"); - if (write_regvals(ov, regvals_norm_SAA7111A)) - return -1; - - /* Detect version of decoder. This must be done after writing the - * initial regs or the decoder will lock up. */ - rc = i2c_r(ov, 0x00); - - if (rc < 0) { - err("Error detecting sensor version"); - return -1; - } else { - info("Sensor is an SAA7111A (version 0x%x)", rc); - ov->sensor = SEN_SAA7111A; - } - - /* Latch to negative edge of clock. Otherwise, we get incorrect - * colors and jitter in the digital signal. */ - if (ov->bclass == BCL_OV511) - reg_w(ov, 0x11, 0x00); - else - warn("SAA7111A not yet supported with OV518/OV518+"); - - return 0; -} - -/* This initializes the OV511/OV511+ and the sensor */ -static int -ov511_configure(struct usb_ov511 *ov) -{ - static struct ov511_regvals regvals_init_511[] = { - { OV511_REG_BUS, R51x_SYS_RESET, 0x7f }, - { OV511_REG_BUS, R51x_SYS_INIT, 0x01 }, - { OV511_REG_BUS, R51x_SYS_RESET, 0x7f }, - { OV511_REG_BUS, R51x_SYS_INIT, 0x01 }, - { OV511_REG_BUS, R51x_SYS_RESET, 0x3f }, - { OV511_REG_BUS, R51x_SYS_INIT, 0x01 }, - { OV511_REG_BUS, R51x_SYS_RESET, 0x3d }, - { OV511_DONE_BUS, 0x0, 0x00}, - }; - - static struct ov511_regvals regvals_norm_511[] = { - { OV511_REG_BUS, R511_DRAM_FLOW_CTL, 0x01 }, - { OV511_REG_BUS, R51x_SYS_SNAP, 0x00 }, - { OV511_REG_BUS, R51x_SYS_SNAP, 0x02 }, - { OV511_REG_BUS, R51x_SYS_SNAP, 0x00 }, - { OV511_REG_BUS, R511_FIFO_OPTS, 0x1f }, - { OV511_REG_BUS, R511_COMP_EN, 0x00 }, - { OV511_REG_BUS, R511_COMP_LUT_EN, 0x03 }, - { OV511_DONE_BUS, 0x0, 0x00 }, - }; - - static struct ov511_regvals regvals_norm_511_plus[] = { - { OV511_REG_BUS, R511_DRAM_FLOW_CTL, 0xff }, - { OV511_REG_BUS, R51x_SYS_SNAP, 0x00 }, - { OV511_REG_BUS, R51x_SYS_SNAP, 0x02 }, - { OV511_REG_BUS, R51x_SYS_SNAP, 0x00 }, - { OV511_REG_BUS, R511_FIFO_OPTS, 0xff }, - { OV511_REG_BUS, R511_COMP_EN, 0x00 }, - { OV511_REG_BUS, R511_COMP_LUT_EN, 0x03 }, - { OV511_DONE_BUS, 0x0, 0x00 }, - }; - - PDEBUG(4, ""); - - ov->customid = reg_r(ov, R511_SYS_CUST_ID); - if (ov->customid < 0) { - err("Unable to read camera bridge registers"); - goto error; - } - - PDEBUG (1, "CustomID = %d", ov->customid); - ov->desc = symbolic(camlist, ov->customid); - info("model: %s", ov->desc); - - if (0 == strcmp(ov->desc, NOT_DEFINED_STR)) { - err("Camera type (%d) not recognized", ov->customid); - err("Please notify " EMAIL " of the name,"); - err("manufacturer, model, and this number of your camera."); - err("Also include the output of the detection process."); - } - - if (ov->customid == 70) /* USB Life TV (PAL/SECAM) */ - ov->pal = 1; - - if (write_regvals(ov, regvals_init_511)) goto error; - - if (ov->led_policy == LED_OFF || ov->led_policy == LED_AUTO) - ov51x_led_control(ov, 0); - - /* The OV511+ has undocumented bits in the flow control register. - * Setting it to 0xff fixes the corruption with moving objects. */ - if (ov->bridge == BRG_OV511) { - if (write_regvals(ov, regvals_norm_511)) goto error; - } else if (ov->bridge == BRG_OV511PLUS) { - if (write_regvals(ov, regvals_norm_511_plus)) goto error; - } else { - err("Invalid bridge"); - } - - if (ov511_init_compression(ov)) goto error; - - ov->packet_numbering = 1; - ov511_set_packet_size(ov, 0); - - ov->snap_enabled = snapshot; - - /* Test for 7xx0 */ - PDEBUG(3, "Testing for 0V7xx0"); - ov->primary_i2c_slave = OV7xx0_SID; - if (ov51x_set_slave_ids(ov, OV7xx0_SID) < 0) - goto error; - - if (i2c_w(ov, 0x12, 0x80) < 0) { - /* Test for 6xx0 */ - PDEBUG(3, "Testing for 0V6xx0"); - ov->primary_i2c_slave = OV6xx0_SID; - if (ov51x_set_slave_ids(ov, OV6xx0_SID) < 0) - goto error; - - if (i2c_w(ov, 0x12, 0x80) < 0) { - /* Test for 8xx0 */ - PDEBUG(3, "Testing for 0V8xx0"); - ov->primary_i2c_slave = OV8xx0_SID; - if (ov51x_set_slave_ids(ov, OV8xx0_SID) < 0) - goto error; - - if (i2c_w(ov, 0x12, 0x80) < 0) { - /* Test for SAA7111A */ - PDEBUG(3, "Testing for SAA7111A"); - ov->primary_i2c_slave = SAA7111A_SID; - if (ov51x_set_slave_ids(ov, SAA7111A_SID) < 0) - goto error; - - if (i2c_w(ov, 0x0d, 0x00) < 0) { - /* Test for KS0127 */ - PDEBUG(3, "Testing for KS0127"); - ov->primary_i2c_slave = KS0127_SID; - if (ov51x_set_slave_ids(ov, KS0127_SID) < 0) - goto error; - - if (i2c_w(ov, 0x10, 0x00) < 0) { - err("Can't determine sensor slave IDs"); - goto error; - } else { - if (ks0127_configure(ov) < 0) { - err("Failed to configure KS0127"); - goto error; - } - } - } else { - if (saa7111a_configure(ov) < 0) { - err("Failed to configure SAA7111A"); - goto error; - } - } - } else { - if (ov8xx0_configure(ov) < 0) { - err("Failed to configure OV8xx0 sensor"); - goto error; - } - } - } else { - if (ov6xx0_configure(ov) < 0) { - err("Failed to configure OV6xx0"); - goto error; - } - } - } else { - if (ov7xx0_configure(ov) < 0) { - err("Failed to configure OV7xx0"); - goto error; - } - } - - return 0; - -error: - err("OV511 Config failed"); - - return -EBUSY; -} - -/* This initializes the OV518/OV518+ and the sensor */ -static int -ov518_configure(struct usb_ov511 *ov) -{ - /* For 518 and 518+ */ - static struct ov511_regvals regvals_init_518[] = { - { OV511_REG_BUS, R51x_SYS_RESET, 0x40 }, - { OV511_REG_BUS, R51x_SYS_INIT, 0xe1 }, - { OV511_REG_BUS, R51x_SYS_RESET, 0x3e }, - { OV511_REG_BUS, R51x_SYS_INIT, 0xe1 }, - { OV511_REG_BUS, R51x_SYS_RESET, 0x00 }, - { OV511_REG_BUS, R51x_SYS_INIT, 0xe1 }, - { OV511_REG_BUS, 0x46, 0x00 }, - { OV511_REG_BUS, 0x5d, 0x03 }, - { OV511_DONE_BUS, 0x0, 0x00}, - }; - - static struct ov511_regvals regvals_norm_518[] = { - { OV511_REG_BUS, R51x_SYS_SNAP, 0x02 }, /* Reset */ - { OV511_REG_BUS, R51x_SYS_SNAP, 0x01 }, /* Enable */ - { OV511_REG_BUS, 0x31, 0x0f }, - { OV511_REG_BUS, 0x5d, 0x03 }, - { OV511_REG_BUS, 0x24, 0x9f }, - { OV511_REG_BUS, 0x25, 0x90 }, - { OV511_REG_BUS, 0x20, 0x00 }, - { OV511_REG_BUS, 0x51, 0x04 }, - { OV511_REG_BUS, 0x71, 0x19 }, - { OV511_REG_BUS, 0x2f, 0x80 }, - { OV511_DONE_BUS, 0x0, 0x00 }, - }; - - static struct ov511_regvals regvals_norm_518_plus[] = { - { OV511_REG_BUS, R51x_SYS_SNAP, 0x02 }, /* Reset */ - { OV511_REG_BUS, R51x_SYS_SNAP, 0x01 }, /* Enable */ - { OV511_REG_BUS, 0x31, 0x0f }, - { OV511_REG_BUS, 0x5d, 0x03 }, - { OV511_REG_BUS, 0x24, 0x9f }, - { OV511_REG_BUS, 0x25, 0x90 }, - { OV511_REG_BUS, 0x20, 0x60 }, - { OV511_REG_BUS, 0x51, 0x02 }, - { OV511_REG_BUS, 0x71, 0x19 }, - { OV511_REG_BUS, 0x40, 0xff }, - { OV511_REG_BUS, 0x41, 0x42 }, - { OV511_REG_BUS, 0x46, 0x00 }, - { OV511_REG_BUS, 0x33, 0x04 }, - { OV511_REG_BUS, 0x21, 0x19 }, - { OV511_REG_BUS, 0x3f, 0x10 }, - { OV511_REG_BUS, 0x2f, 0x80 }, - { OV511_DONE_BUS, 0x0, 0x00 }, - }; - - PDEBUG(4, ""); - - /* First 5 bits of custom ID reg are a revision ID on OV518 */ - info("Device revision %d", 0x1F & reg_r(ov, R511_SYS_CUST_ID)); - - /* Give it the default description */ - ov->desc = symbolic(camlist, 0); - - if (write_regvals(ov, regvals_init_518)) goto error; - - /* Set LED GPIO pin to output mode */ - if (reg_w_mask(ov, 0x57, 0x00, 0x02) < 0) goto error; - - /* LED is off by default with OV518; have to explicitly turn it on */ - if (ov->led_policy == LED_OFF || ov->led_policy == LED_AUTO) - ov51x_led_control(ov, 0); - else - ov51x_led_control(ov, 1); - - /* Don't require compression if dumppix is enabled; otherwise it's - * required. OV518 has no uncompressed mode, to save RAM. */ - if (!dumppix && !ov->compress) { - ov->compress = 1; - warn("Compression required with OV518...enabling"); - } - - if (ov->bridge == BRG_OV518) { - if (write_regvals(ov, regvals_norm_518)) goto error; - } else if (ov->bridge == BRG_OV518PLUS) { - if (write_regvals(ov, regvals_norm_518_plus)) goto error; - } else { - err("Invalid bridge"); - } - - if (ov518_init_compression(ov)) goto error; - - if (ov->bridge == BRG_OV518) - { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 7) - struct usb_interface *ifp; - struct usb_host_interface *alt; - __u16 mxps = 0; - - ifp = usb_ifnum_to_if(ov->dev, 0); - if (ifp) { - alt = usb_altnum_to_altsetting(ifp, 7); - if (alt) -# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) - mxps = le16_to_cpu(alt->endpoint[0].desc.wMaxPacketSize); -# else - mxps = alt->endpoint[0].desc.wMaxPacketSize; -# endif - } -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - struct usb_interface *ifp = ov->dev->config[0].interface[0]; - __u16 mxps = ifp->altsetting[7].endpoint[0].desc.wMaxPacketSize; -#else - struct usb_interface *ifp = &ov->dev->config[0].interface[0]; - __u16 mxps = ifp->altsetting[7].endpoint[0].wMaxPacketSize; -#endif - /* Some OV518s have packet numbering by default, some don't */ - if (mxps == 897) - ov->packet_numbering = 1; - else - ov->packet_numbering = 0; - } else { - /* OV518+ has packet numbering turned on by default */ - ov->packet_numbering = 1; - } - - ov518_set_packet_size(ov, 0); - - ov->snap_enabled = snapshot; - - /* Test for 76xx */ - ov->primary_i2c_slave = OV7xx0_SID; - if (ov51x_set_slave_ids(ov, OV7xx0_SID) < 0) - goto error; - - /* The OV518 must be more aggressive about sensor detection since - * I2C write will never fail if the sensor is not present. We have - * to try to initialize the sensor to detect its presence */ - - if (init_ov_sensor(ov) < 0) { - /* Test for 6xx0 */ - ov->primary_i2c_slave = OV6xx0_SID; - if (ov51x_set_slave_ids(ov, OV6xx0_SID) < 0) - goto error; - - if (init_ov_sensor(ov) < 0) { - /* Test for 8xx0 */ - ov->primary_i2c_slave = OV8xx0_SID; - if (ov51x_set_slave_ids(ov, OV8xx0_SID) < 0) - goto error; - - if (init_ov_sensor(ov) < 0) { - err("Can't determine sensor slave IDs"); - goto error; - } else { - if (ov8xx0_configure(ov) < 0) { - err("Failed to configure OV8xx0 sensor"); - goto error; - } - } - } else { - if (ov6xx0_configure(ov) < 0) { - err("Failed to configure OV6xx0"); - goto error; - } - } - } else { - if (ov7xx0_configure(ov) < 0) { - err("Failed to configure OV7xx0"); - goto error; - } - } - - ov->maxwidth = 352; - ov->maxheight = 288; - - // The OV518 cannot go as low as the sensor can - ov->minwidth = 160; - ov->minheight = 120; - - return 0; - -error: - err("OV518 Config failed"); - - return -EBUSY; -} - -/* This initializes the OV518/OV518+ and the sensor */ -static int -ov519_configure(struct usb_ov511 *ov) -{ - - static struct ov511_regvals regvals_init_519[] = { - { OV511_REG_BUS, 0x5a, 0x6d }, /* EnableSystem */ - /* windows reads 0x53 at this point*/ - { OV511_REG_BUS, 0x53, 0x9b }, - { OV511_REG_BUS, 0x54, 0x0f }, // set bit2 to enable jpeg - { OV511_REG_BUS, 0x5d, 0x03 }, - { OV511_REG_BUS, 0x49, 0x01 }, - { OV511_REG_BUS, 0x48, 0x00 }, - - /* Set LED pin to output mode. Bit 4 must be cleared or sensor - * detection will fail. This deserves further investigation. */ - { OV511_REG_BUS, OV519_GPIO_IO_CTRL0, 0xee }, - - { OV511_REG_BUS, 0x51, 0x0f }, /* SetUsbInit */ - { OV511_REG_BUS, 0x51, 0x00 }, - { OV511_REG_BUS, 0x22, 0x00 }, - /* windows reads 0x55 at this point*/ - { OV511_DONE_BUS, 0x0, 0x00}, - }; - - PDEBUG(4, ""); - - /* Give it the default description */ - ov->desc = symbolic(camlist, 0); - - if (write_regvals(ov, regvals_init_519)) - goto error; - - if (ov519_init_compression(ov)) - goto error; - - if (ov->imp == IMP_EYETOY) { - /* LED is annoyingly bright. Only turn it on if requested to. */ - if (ov->led2_policy == LED_ON) - ov51x_led_control(ov, 1); - else - ov51x_led_control(ov, 0); - } else { - /* LED might be off by default */ - if (ov->led_policy == LED_ON) - ov51x_led_control(ov, 1); - else - ov51x_led_control(ov, 0); - } - - /* Don't require compression if dumppix is enabled; otherwise it's - * required. OV519 probably has no uncompressed mode, to save RAM. */ - if (!dumppix && !ov->compress) - ov->compress = 1; - - ov->packet_numbering = 0; - - ov519_set_packet_size(ov, 0); - - ov->snap_enabled = snapshot; - - /* Test for 76xx */ - ov->primary_i2c_slave = OV7xx0_SID; - if (ov51x_set_slave_ids(ov, OV7xx0_SID) < 0) - goto error; - - /* The OV519 must be more aggressive about sensor detection since - * I2C write will never fail if the sensor is not present. We have - * to try to initialize the sensor to detect its presence */ - - if (init_ov_sensor(ov) < 0) { - /* Test for 6xx0 */ - ov->primary_i2c_slave = OV6xx0_SID; - if (ov51x_set_slave_ids(ov, OV6xx0_SID) < 0) - goto error; - - if (init_ov_sensor(ov) < 0) { - /* Test for 8xx0 */ - ov->primary_i2c_slave = OV8xx0_SID; - if (ov51x_set_slave_ids(ov, OV8xx0_SID) < 0) - goto error; - - if (init_ov_sensor(ov) < 0) { - err("Can't determine sensor slave IDs"); - goto error; - } else { - if (ov8xx0_configure(ov) < 0) { - err("Failed to configure OV8xx0 sensor"); - goto error; - } - } - } else { - if (ov6xx0_configure(ov) < 0) { - err("Failed to configure OV6xx0"); - goto error; - } - } - } else { - if (ov7xx0_configure(ov) < 0) { - err("Failed to configure OV7xx0"); - goto error; - } - } - - return 0; - -error: - err("OV519 Config failed"); - - return -EBUSY; -} - -/**************************************************************************** - * - * USB routines - * - ***************************************************************************/ - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 36) -static int -ov51x_probe(struct usb_interface *intf, const struct usb_device_id *id) -{ - struct usb_device *dev = interface_to_usbdev(intf); -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -static void * -ov51x_probe(struct usb_device *dev, unsigned int ifnum, - const struct usb_device_id *id) -{ -#else -static void * -ov51x_probe(struct usb_device *dev, unsigned int ifnum) -{ -#endif - struct usb_interface_descriptor *idesc; - struct usb_ov511 *ov; - int i; - u16 vendor, product; - - PDEBUG(1, "probing for device..."); - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 36) - /* We don't handle multi-config cameras */ - if (dev->descriptor.bNumConfigurations != 1) - return -ENODEV; -#else - /* We don't handle multi-config cameras */ - if (dev->descriptor.bNumConfigurations != 1) - return NULL; -#endif - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 7) - idesc = &intf->cur_altsetting->desc; -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 36) - idesc = &intf->altsetting[0].desc; -#else - idesc = &dev->actconfig->interface[ifnum].altsetting[0]; -#endif - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) - vendor = le16_to_cpu(dev->descriptor.idVendor); - product = le16_to_cpu(dev->descriptor.idProduct); -#else - vendor = dev->descriptor.idVendor; - product = dev->descriptor.idProduct; -#endif - -/* 2.2.x compatibility */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0) - /* Is it an OV511/OV511+? */ - if (vendor != VEND_OMNIVISION - && vendor != VEND_MATTEL - && vendor != VEND_SONY) - return NULL; - - if (vendor == VEND_OMNIVISION - && product != PROD_OV511 - && product != PROD_OV518 - && product != PROD_OV511PLUS - && product != PROD_OV518PLUS - && product != PROD_OV519 - && product != PROD_OV1519 - && product != PROD_OV2519 - && product != PROD_OV3519 - && product != PROD_OV4519 - && product != PROD_OV5519 - && product != PROD_OV6519 - && product != PROD_OV7519 - && product != PROD_OV8519 - && product != PROD_OV9519 - && product != PROD_OVA519 - && product != PROD_OVB519 - && product != PROD_OVC519 - && product != PROD_OVD519 - && product != PROD_OVE519 - && product != PROD_OVF519 - && product != PROD_OV530) - return NULL; - - if (vendor == VEND_MATTEL - && product != PROD_ME2CAM) - return NULL; - - if (vendor == VEND_SONY - && product != PROD_EYETOY4 - && product != PROD_EYETOY5) - return NULL; - - if (vendor == VEND_MICROSOFT - && product != PROD_XBOX_CAM) - return NULL; -#endif - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 36) - if (idesc->bInterfaceClass != 0xFF) - return -ENODEV; - if (idesc->bInterfaceSubClass != 0x00) - return -ENODEV; -#else - if (idesc->bInterfaceClass != 0xFF) - return NULL; - if (idesc->bInterfaceSubClass != 0x00) - return NULL; -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 20) - /* Since code below may sleep, we use this as a lock */ - MOD_INC_USE_COUNT; -#endif - - if ((ov = kmalloc(sizeof(*ov), GFP_KERNEL)) == NULL) { - err("couldn't kmalloc ov struct"); - goto error_out; - } - - memset(ov, 0, sizeof(*ov)); - - ov->dev = dev; - ov->iface = idesc->bInterfaceNumber; - ov->led_policy = led; - ov->led2_policy = led2; - ov->compress = compress; - ov->lightfreq = lightfreq; - ov->num_inputs = 1; /* Video decoder init functs. change this */ - ov->stop_during_set = !fastset; - ov->backlight = backlight; - ov->mirror = mirror; - ov->auto_brt = autobright; - ov->auto_gain = autogain; - ov->auto_exp = autoexp; - ov->imp = IMP_GENERIC; - - switch (product) { - case PROD_OV511: - ov->bridge = BRG_OV511; - ov->bclass = BCL_OV511; - break; - case PROD_OV511PLUS: - ov->bridge = BRG_OV511PLUS; - ov->bclass = BCL_OV511; - break; - case PROD_OV518: - ov->bridge = BRG_OV518; - ov->bclass = BCL_OV518; - break; - case PROD_OV518PLUS: - ov->bridge = BRG_OV518PLUS; - ov->bclass = BCL_OV518; - break; - case PROD_OV519: - case PROD_OV4519: - case PROD_OV8519: - case PROD_OV530: - case PROD_XBOX_CAM: - ov->bridge = BRG_OV519; - ov->bclass = BCL_OV519; - break; - case PROD_OV1519: - case PROD_OV2519: - case PROD_OV3519: - case PROD_OV5519: - case PROD_OV6519: - case PROD_OV7519: - case PROD_OV9519: - case PROD_OVA519: - case PROD_OVB519: - case PROD_OVC519: - case PROD_OVD519: - case PROD_OVE519: - case PROD_OVF519: - info("Device has Product ID that hasn't been seen yet. It"); - info("will probably work anyway, but please send"); - info("/proc/bus/usb/devices, your dmesg log, and any info you"); - info("have about this device to mark@alpha.dyndns.org"); - ov->bridge = BRG_OV519; - ov->bclass = BCL_OV519; - break; - case PROD_EYETOY4: - case PROD_EYETOY5: - /* These two should work, but they are untested */ -// case PROD_EYETOY6: -// case PROD_EYETOY7: - ov->bridge = BRG_OV519; - ov->bclass = BCL_OV519; - ov->imp = IMP_EYETOY; - break; - case PROD_ME2CAM: - if (vendor != VEND_MATTEL) - goto error; - ov->bridge = BRG_OV511PLUS; - ov->bclass = BCL_OV511; - break; - default: - err("Unknown product ID 0x%04x", product); - goto error; - } - - info("USB %s video device found", symbolic(brglist, ov->bridge)); - -#ifdef OV511_ALLOW_CONVERSION - /* Workaround for some applications that want data in RGB - * instead of BGR. */ - if (force_rgb) - info("data format set to RGB"); -#endif - - init_waitqueue_head(&ov->wq); - - init_MUTEX(&ov->lock); /* to 1 == available */ - init_MUTEX(&ov->buf_lock); - init_MUTEX(&ov->param_lock); - init_MUTEX(&ov->i2c_lock); - init_MUTEX(&ov->cbuf_lock); - - ov->buf_state = BUF_NOT_ALLOCATED; - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 20) - if (usb_make_path(dev, ov->usb_path, OV511_USB_PATH_LEN) < 0) { - err("usb_make_path error"); - goto error; - } -#endif - - /* Allocate control transfer buffer. */ - /* Must be kmalloc()'ed, for DMA compatibility */ - ov->cbuf = kmalloc(OV511_CBUF_SIZE, GFP_KERNEL); - if (!ov->cbuf) - goto error; - - switch (ov->bclass) { - case BCL_OV511: - if (ov511_configure(ov) < 0) - goto error; - break; - case BCL_OV518: - if (ov518_configure(ov) < 0) - goto error; - break; - case BCL_OV519: - if (ov519_configure(ov) < 0) - goto error; - break; - default: - goto error; - } - - for (i = 0; i < OV511_NUMFRAMES; i++) { - ov->frame[i].framenum = i; - init_waitqueue_head(&ov->frame[i].wq); - } - - for (i = 0; i < OV511_NUMSBUF; i++) { - ov->sbuf[i].ov = ov; - spin_lock_init(&ov->sbuf[i].lock); - ov->sbuf[i].n = i; - } - - /* Unnecessary? (This is done on open(). Need to make sure variables - * are properly initialized without this before removing it, though). */ - if (ov51x_set_default_params(ov) < 0) - goto error; - -#ifdef OV511_DEBUG - if (dump_bridge) { - if (ov->bclass == BCL_OV511) - ov511_dump_regs(ov); - else - ov518_dump_regs(ov); - } -#endif - - ov->vdev = video_device_alloc(); - if (!ov->vdev) - goto error; - - memcpy(ov->vdev, &vdev_template, sizeof(*ov->vdev)); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - ov->vdev->dev = &dev->dev; -#endif - video_set_drvdata(ov->vdev, ov); - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 5) - for (i = 0; i < OV511_MAX_UNIT_VIDEO; i++) { - /* Minor 0 cannot be specified; assume user wants autodetect */ - if (unit_video[i] == 0) - break; - - if (video_register_device(ov->vdev, VFL_TYPE_GRABBER, - unit_video[i]) >= 0) { - break; - } - } - - /* Use the next available one */ - if ((ov->vdev->minor == -1) && - video_register_device(ov->vdev, VFL_TYPE_GRABBER, -1) < 0) { -#else - if (video_register_device(ov->vdev, VFL_TYPE_GRABBER) < 0) { -#endif - err("video_register_device failed"); - goto error; - } - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 20) - info("Device at %s registered to minor %d", ov->usb_path, - ov->vdev->minor); -#else - info("Device %d on bus %d registered to minor %d", dev->devnum, - dev->bus->busnum, ov->vdev->minor); -#endif - - create_proc_ov511_cam(ov); - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 20) - MOD_DEC_USE_COUNT; -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 36) - usb_set_intfdata(intf, ov); - return 0; -#else - return ov; -#endif - -error: - destroy_proc_ov511_cam(ov); - - if (ov->vdev) { - if (-1 == ov->vdev->minor) - video_device_release(ov->vdev); - else - video_unregister_device(ov->vdev); - ov->vdev = NULL; - } - - if (ov->cbuf) { - down(&ov->cbuf_lock); - kfree(ov->cbuf); - ov->cbuf = NULL; - up(&ov->cbuf_lock); - } - - kfree(ov); - ov = NULL; - -error_out: -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 20) - MOD_DEC_USE_COUNT; -#endif - err("Camera initialization failed"); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 36) - return -EIO; -#else - return NULL; -#endif -} - -static void -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -ov51x_disconnect(struct usb_interface *intf) -{ - struct usb_ov511 *ov = usb_get_intfdata(intf); -#else -ov51x_disconnect(struct usb_device *dev, void *ptr) -{ - struct usb_ov511 *ov = (struct usb_ov511 *) ptr; -#endif - int n; - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 20) - MOD_INC_USE_COUNT; -#endif - - PDEBUG(3, ""); - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - usb_set_intfdata(intf, NULL); -#endif - if (!ov) - return; - -#ifdef OV511_OLD_V4L - /* We don't want people trying to open up the device */ - if (!ov->user) - video_unregister_device(ov->vdev); - else - PDEBUG(3, "Device open...deferring video_unregister_device"); -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - if (ov->vdev) - video_unregister_device(ov->vdev); -#else - video_unregister_device(ov->vdev); - if (ov->user) - PDEBUG(3, "Device open...deferring video_unregister_device"); -#endif - - for (n = 0; n < OV511_NUMFRAMES; n++) - ov->frame[n].grabstate = FRAME_ERROR; - - ov->curframe = -1; - - /* This will cause the process to request another frame */ - for (n = 0; n < OV511_NUMFRAMES; n++) - wake_up_interruptible(&ov->frame[n].wq); - - wake_up_interruptible(&ov->wq); - - ov->streaming = 0; - ov51x_unlink_isoc(ov); - - destroy_proc_ov511_cam(ov); - - ov->dev = NULL; - - /* Free the memory */ - if (ov && !ov->user) { - down(&ov->cbuf_lock); - kfree(ov->cbuf); - ov->cbuf = NULL; - up(&ov->cbuf_lock); - - ov51x_dealloc(ov); -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) - if (ov->vdev) - video_device_release(ov->vdev); -#endif - kfree(ov); - ov = NULL; - } - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 20) - MOD_DEC_USE_COUNT; -#endif - PDEBUG(3, "Disconnect complete"); -} - -static struct usb_driver ov511_driver = { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 20) - .owner = THIS_MODULE, -#endif - .name = "ov51x", -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) - .id_table = device_table, -#endif - .probe = ov51x_probe, - .disconnect = ov51x_disconnect -}; - - - -module_init(usb_ov511_init); -module_exit(usb_ov511_exit); -#endif -#endif +/* + * QEMU USB HUB emulation + * + * Copyright (c) 2005 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +//#define DEBUG + +#define MAX_PORTS 8 + +#include "../qemu-usb/vl.h" + +/* HID interface requests */ +#define GET_REPORT 0xa101 +#define GET_IDLE 0xa102 +#define GET_PROTOCOL 0xa103 +#define SET_IDLE 0x210a +#define SET_PROTOCOL 0x210b + +typedef struct EYETOYState { + USBDevice dev; + //nothing yet +} EYETOYState; + +/* same as Linux kernel root hubs */ + +/* mostly the same values as the Bochs USB Mouse device */ +static const uint8_t eyetoy_dev_descriptor[] = { + 0x12, /* bLength */ + 0x01, /* bDescriptorType */ + 0x10, 0x01, /* bcdUSB */ + 0x00, /* bDeviceClass */ + 0x00, /* bDeviceSubClass */ + 0x00, /* bDeviceProtocol */ + 0x08, /* bMaxPacketSize0 */ + 0x4c, 0x05, /* idVendor */ + 0x55, 0x01, /* idProduct */ + 0x00, 0x01, /* bcdDevice */ + 0x01, /* iManufacturer */ + 0x02, /* iProduct */ + 0x00, /* iSerialNumber */ + 0x01, /* bNumConfigurations */ +}; + +/* XXX: patch interrupt size */ +static const uint8_t eyetoy_config_descriptor[] = { + + /* one configuration */ + 0x09, /* u8 bLength; */ + 0x02, /* u8 bDescriptorType; Configuration */ + 0xb4, 0x00, /* u16 wTotalLength; */ + 0x03, /* u8 bNumInterfaces; (3) */ + 0x01, /* u8 bConfigurationValue; */ + 0x00, /* u8 iConfiguration; */ + 0x90, /* u8 bmAttributes; + Bit 7: must be set, + 6: Self-powered, + 5: Remote wakeup, + 4..0: resvd */ + 0xfa, /* u8 MaxPower; */ + + /* interface #0 alternate setting #0 */ + 0x09, /* u8 if_bLength; */ + 0x04, /* u8 if_bDescriptorType; Interface */ + 0x00, /* u8 if_bInterfaceNumber; */ + 0x00, /* u8 if_bAlternateSetting; */ + 0x01, /* u8 if_bNumEndpoints; */ + 0xff, /* u8 if_bInterfaceClass; Vendor Specific */ + 0x00, /* u8 if_bInterfaceSubClass; */ + 0x00, /* u8 if_bInterfaceProtocol; [usb1.1 or single tt] */ + 0x00, /* u8 if_iInterface; */ + + /* interface #0 alternate setting #0 endpoint */ + 0x07, /* u8 ep_bLength; */ + 0x05, /* u8 ep_bDescriptorType; Endpoint */ + 0x81, /* u8 ep_bEndpointAddress; IN Endpoint 1 */ + 0x01, /* u8 ep_bmAttributes; */ + 0x00, 0x00, /* u16 ep_wMaxPacketSize; 1 + (MAX_ROOT_PORTS / 8) */ + 0x01, /* u8 ep_bInterval; */ + + /* interface #0 alternate setting #1 */ + 0x09, 0x04, 0x00, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, + 0x07, 0x05, 0x81, 0x01, 0x80, 0x01, 0x01, + + /* interface #0 alternate setting #2*/ + 0x09, 0x04, 0x00, 0x02, 0x01, 0xff, 0x00, 0x00, 0x00, + 0x07, 0x05, 0x81, 0x01, 0x00, 0x02, 0x01, + + /* interface #0 alternate setting #3 */ + 0x09, 0x04, 0x00, 0x03, 0x01, 0xff, 0x00, 0x00, 0x00, + 0x07, 0x05, 0x81, 0x01, 0x00, 0x03, 0x01, + + /* interface #0 alternate setting #4 */ + 0x09, 0x04, 0x00, 0x04, 0x01, 0xff, 0x00, 0x00, 0x00, + 0x07, 0x05, 0x81, 0x01, 0x80, 0x03, 0x01, + + /* interface #1 alternate setting #0 */ + 0x09, /* u8 if_bLength; */ + 0x04, /* u8 if_bDescriptorType; Interface */ + 0x01, /* u8 if_bInterfaceNumber; */ + 0x00, /* u8 if_bAlternateSetting; */ + 0x00, /* u8 if_bNumEndpoints; */ + 0x01, /* u8 if_bInterfaceClass; AUDIO */ + 0x01, /* u8 if_bInterfaceSubClass; AUDIOCONTROL*/ + 0x00, /* u8 if_bInterfaceProtocol; [usb1.1 or single tt] */ + 0x00, /* u8 if_iInterface; */ + + /* interface #1 alternate setting #0 classes */ + 0x09, 0x24, 0x01, 0x00, 0x01, 0x1e, 0x00, 0x01, 0x02, + 0x0c, 0x24, 0x02, 0x01, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x24, 0x03, 0x02, 0x01, 0x01, 0x00, 0x01, 0x00, + + /* interface #2 alternate setting #0 (AUDIO class, AUDIOSTREAMING subclass) */ + 0x09, 0x04, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, + + /* interface #2 alternate setting #1 (AUDIO class, AUDIOSTREAMING subclass) */ + 0x09, 0x04, 0x02, 0x01, 0x01, 0x01, 0x02, 0x00, 0x00, + + /* interface #1 class-specific interface (HEADER) */ + 0x07, 0x24, 0x01, 0x02, 0x01, 0x01, 0x00, + + /* interface #1 class-specific interface (INPUT TERMINAL) */ + 0x0b, 0x24, 0x02, 0x01, 0x01, 0x02, 0x10, 0x01, 0x80, 0x3e, 0x00, + + /* interface #1 alternate setting #1 endpoint */ + 0x09, 0x05, 0x82, 0x05, 0x28, 0x00, 0x01, 0x00, 0x00, + + /* interface #1 class-specific endpoint */ + 0x07, 0x25, 0x01, 0x00, 0x00, 0x00, 0x00 +}; + +static void eyetoy_handle_reset(USBDevice *dev) +{ + /* XXX: do it */ + return; +} + +static int eyetoy_handle_control(USBDevice *dev, int request, int value, + int index, int length, uint8_t *data) +{ + EYETOYState *s = (EYETOYState *)dev; + int ret = 0; + + switch(request) { + case DeviceRequest | USB_REQ_GET_STATUS: + data[0] = (dev->remote_wakeup << USB_DEVICE_REMOTE_WAKEUP); + data[1] = 0x00; + ret = 2; + break; + case DeviceOutRequest | USB_REQ_CLEAR_FEATURE: + if (value == USB_DEVICE_REMOTE_WAKEUP) { + dev->remote_wakeup = 0; + } else { + goto fail; + } + ret = 0; + break; + case DeviceOutRequest | USB_REQ_SET_FEATURE: + if (value == USB_DEVICE_REMOTE_WAKEUP) { + dev->remote_wakeup = 1; + } else { + goto fail; + } + ret = 0; + break; + case DeviceOutRequest | USB_REQ_SET_ADDRESS: + dev->addr = value; + ret = 0; + break; + case DeviceRequest | USB_REQ_GET_DESCRIPTOR: + switch(value >> 8) { + case USB_DT_DEVICE: + memcpy(data, eyetoy_dev_descriptor, + sizeof(eyetoy_dev_descriptor)); + ret = sizeof(eyetoy_dev_descriptor); + break; + case USB_DT_CONFIG: + memcpy(data, eyetoy_config_descriptor, + sizeof(eyetoy_config_descriptor)); + ret = sizeof(eyetoy_config_descriptor); + break; + case USB_DT_STRING: + switch(value & 0xff) { + case 0: + /* language ids */ + data[0] = 4; + data[1] = 3; + data[2] = 0x09; + data[3] = 0x04; + ret = 4; + break; + case 1: + /* serial number */ + ret = set_usb_string(data, "3X0420811"); + break; + case 2: + /* product description */ + ret = set_usb_string(data, "EyeToy USB camera Namtai"); + break; + case 3: + /* vendor description */ + ret = set_usb_string(data, "PCSX2/QEMU"); + break; + default: + goto fail; + } + break; + default: + goto fail; + } + break; + case DeviceRequest | USB_REQ_GET_CONFIGURATION: + data[0] = 1; + ret = 1; + break; + case DeviceOutRequest | USB_REQ_SET_CONFIGURATION: + ret = 0; + break; + case DeviceRequest | USB_REQ_GET_INTERFACE: + data[0] = 0; + ret = 1; + break; + case DeviceOutRequest | USB_REQ_SET_INTERFACE: + ret = 0; + break; + /* hid specific requests */ + case InterfaceRequest | USB_REQ_GET_DESCRIPTOR: + //switch(value >> 8) { + //((case 0x22: + // memcpy(data, qemu_mouse_hid_report_descriptor, + // sizeof(qemu_mouse_hid_report_descriptor)); + // ret = sizeof(qemu_mouse_hid_report_descriptor); + // break; + //default: + goto fail; + //} + break; + case GET_REPORT: + ret = 0; + break; + case SET_IDLE: + ret = 0; + break; + default: + fail: + ret = USB_RET_STALL; + break; + } + return ret; +} + +static int eyetoy_handle_data(USBDevice *dev, int pid, + uint8_t devep, uint8_t *data, int len) +{ + EYETOYState *s = (EYETOYState *)dev; + int ret = 0; + + switch(pid) { + case USB_TOKEN_IN: + if (devep == 1) { + goto fail; + } + break; + case USB_TOKEN_OUT: + default: + fail: + ret = USB_RET_STALL; + break; + } + return ret; +} + + +static void eyetoy_handle_destroy(USBDevice *dev) +{ + EYETOYState *s = (EYETOYState *)dev; + + free(s); +} + +int eyetoy_handle_packet(USBDevice *s, int pid, + uint8_t devaddr, uint8_t devep, + uint8_t *data, int len) +{ + fprintf(stderr,"usb-eyetoy: packet received with pid=%x, devaddr=%x, devep=%x and len=%x\n",pid,devaddr,devep,len); + usb_generic_handle_packet(s,pid,devaddr,devep,data,len); +} + +USBDevice *eyetoy_init() +{ + EYETOYState *s; + + s = qemu_mallocz(sizeof(EYETOYState)); + if (!s) + return NULL; + s->dev.speed = USB_SPEED_FULL; + s->dev.handle_packet = eyetoy_handle_packet; + + s->dev.handle_reset = eyetoy_handle_reset; + s->dev.handle_control = eyetoy_handle_control; + s->dev.handle_data = eyetoy_handle_data; + s->dev.handle_destroy = eyetoy_handle_destroy; + + strncpy(s->dev.devname, "EyeToy USB camera Namtai", sizeof(s->dev.devname)); + + return (USBDevice *)s; + +} + +#ifdef X_DRIVER +//////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// + +/* Video-to-USB Bridge Driver for OmniVision OV511/OV511+/OV518/OV518+/OV519 + * + * Copyright (c) 1999-2005 Mark W. McClelland + * Support for OV519, OV8610 Copyright (c) 2003 Joerg Heckenbach + * + * Original decompression code Copyright 1998-2000 OmniVision Technologies + * Many improvements by Bret Wallach + * Color fixes by by Orion Sky Lawlor (2/26/2000) + * Snapshot code by Kevin Moore + * OV7620 fixes by Charl P. Botha + * Changes by Claudio Matsuoka + * Original SAA7111A code by Dave Perks + * URB error messages from pwc driver by Nemosoft + * generic_ioctl() code from videodev.c by Gerd Knorr and Alan Cox + * Memory management (rvmalloc) code from bttv driver, by Gerd Knorr and others + * OV7x3x/7x4x detection by Franz Reinhardt + * 2004/01/25: Added OV7640 and EyeToy support (Mark McClelland) + * + * Based on the Linux CPiA driver written by Peter Pregler, + * Scott J. Bertin and Johannes Erdfelt. + * + * Please see the file: doc/ov51x.txt + * and the website at: http://alpha.dyndns.org/ov511 + * for more info. + * For Questions on OV519 or OV8610 please contact + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA USA. + */ + +#ifdef OV511_ALLOW_CONVERSION + /* Pixel count * 3 bytes for RGB */ + #define MAX_FRAME_SIZE(w, h) ((w) * (h) * 3) +#else + /* Pixel count * bytes per YUV420 pixel (1.5) */ + #define MAX_FRAME_SIZE(w, h) ((w) * (h) * 3 / 2) +#endif + +#define MAX_DATA_SIZE(w, h) (MAX_FRAME_SIZE(w, h) + sizeof(struct timeval)) + +/* Max size * bytes per YUV420 pixel (1.5) + one extra isoc frame for safety */ +#define MAX_RAW_DATA_SIZE(w, h) ((w) * (h) * 3 / 2 + 1024) + +#define FATAL_ERROR(rc) ((rc) < 0 && (rc) != -EPERM) + +/* URB error codes: */ +static struct symbolic_list urb_errlist[] = { + { -ENOSR, "Buffer error (overrun)" }, + { -EPIPE, "Stalled (device not responding)" }, + { -EOVERFLOW, "Babble (bad cable?)" }, + { -EPROTO, "Bit-stuff error (bad cable?)" }, + { -EILSEQ, "CRC/Timeout" }, + { -ETIMEDOUT, "NAK (device does not respond)" }, + { -1, NULL } +}; + + +/********************************************************************** + * /proc interface + * Based on the CPiA driver version 0.7.4 -claudio + **********************************************************************/ + +#if defined(CONFIG_VIDEO_PROC_FS) + +static struct proc_dir_entry *ov511_proc_entry = NULL; +extern struct proc_dir_entry *video_proc_entry; + +/* Prototypes */ +static void ov51x_clear_snapshot(struct usb_ov511 *); +static int sensor_get_picture(struct usb_ov511 *, struct video_picture *); +static int sensor_get_exposure(struct usb_ov511 *, unsigned char *); +static int ov51x_check_snapshot(struct usb_ov511 *); +static int ov51x_control_ioctl(struct inode *, struct file *, unsigned int, + unsigned long); + +static struct file_operations ov511_control_fops = { + .ioctl = ov51x_control_ioctl, +}; + +#define YES_NO(x) ((x) ? "yes" : "no") + + +/********************************************************************** + * + * Register I/O + * + **********************************************************************/ + +/* Write an OV51x register + + +ov->cbuf[0] = value; + +usb_control_msg: +pipe: ((PIPE_CONTROL << 30) | (dev->devnum << 8) | (0 << 15)), +request: 1, +requesttype: USB_TYPE_VENDOR | USB_RECIP_DEVICE, +value: 0, +index: (__u16)reg, +bytes: &ov->cbuf[0], +size: 1, +timeout: 1000 + +*/ + +/* Read from an OV51x register + +usb_control_msg: +pipe: ((PIPE_CONTROL << 30) | (dev->devnum << 8) | (0 << 15)), +request: 1, +requesttype: USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, +value: 0, +index: (__u16)reg, +bytes: &ov->cbuf[0], +size: 1, +timeout: 1000 + +if result<0 then error +else value = ov->cbuf[0]; + +*/ + +/* + * Writes a multbyte value to a single register. Only valid with certain + * registers (0x30 and 0xc4 - 0xce). + + ov->cbuf = value (in le order) + + rc = usb_control_msg(ov->dev, + usb_sndctrlpipe(ov->dev, 0) + 1 // REG_IO + USB_TYPE_VENDOR | USB_RECIP_DEVICE + 0 + (__u16)reg + ov->cbuf + n + 1000 + + */ + +static int +ov511_upload_quan_tables(struct usb_ov511 *ov) +{ + unsigned char *pYTable = yQuanTable511; + unsigned char *pUVTable = uvQuanTable511; + unsigned char val0, val1; + int i, rc, reg = R511_COMP_LUT_BEGIN; + + PDEBUG(4, "Uploading quantization tables"); + + for (i = 0; i < OV511_QUANTABLESIZE / 2; i++) { + if (ENABLE_Y_QUANTABLE) { + val0 = *pYTable++; + val1 = *pYTable++; + val0 &= 0x0f; + val1 &= 0x0f; + val0 |= val1 << 4; + rc = reg_w(ov, reg, val0); + if (rc < 0) + return rc; + } + + if (ENABLE_UV_QUANTABLE) { + val0 = *pUVTable++; + val1 = *pUVTable++; + val0 &= 0x0f; + val1 &= 0x0f; + val0 |= val1 << 4; + rc = reg_w(ov, reg + OV511_QUANTABLESIZE/2, val0); + if (rc < 0) + return rc; + } + + reg++; + } + + return 0; +} + +/* OV518 quantization tables are 8x4 (instead of 8x8) */ +static int +ov518_upload_quan_tables(struct usb_ov511 *ov) +{ + unsigned char *pYTable = yQuanTable518; + unsigned char *pUVTable = uvQuanTable518; + unsigned char val0, val1; + int i, rc, reg = R511_COMP_LUT_BEGIN; + + PDEBUG(4, "Uploading quantization tables"); + + for (i = 0; i < OV518_QUANTABLESIZE / 2; i++) { + if (ENABLE_Y_QUANTABLE) { + val0 = *pYTable++; + val1 = *pYTable++; + val0 &= 0x0f; + val1 &= 0x0f; + val0 |= val1 << 4; + rc = reg_w(ov, reg, val0); + if (rc < 0) + return rc; + } + + if (ENABLE_UV_QUANTABLE) { + val0 = *pUVTable++; + val1 = *pUVTable++; + val0 &= 0x0f; + val1 &= 0x0f; + val0 |= val1 << 4; + rc = reg_w(ov, reg + OV518_QUANTABLESIZE/2, val0); + if (rc < 0) + return rc; + } + + reg++; + } + + return 0; +} + +static int +ov51x_reset(struct usb_ov511 *ov, unsigned char reset_type) +{ + int rc = -1; + + if (ov->bclass == BCL_OV519) { + //~~~ + PDEBUG(1, "Reset: type=0x0f"); + switch (reset_type) { + case OV511_RESET_NOREGS: + rc = reg_w(ov, OV519_SYS_RESET1, 0x0f); +// rc = reg_w(ov, OV519_SYS_RESET0, 0xdc); +// rc = reg_w(ov, OV519_SYS_RESET0, 0); + rc = reg_w(ov, OV519_SYS_RESET1, 0); + break; + } + } else { + /* Setting bit 0 not allowed on 518/518Plus */ + if (ov->bclass == BCL_OV518) + reset_type &= 0xfe; + + PDEBUG(4, "Reset: type=0x%02X", reset_type); + + rc = reg_w(ov, R51x_SYS_RESET, reset_type); + rc = reg_w(ov, R51x_SYS_RESET, 0); + } + if (rc < 0) + err("reset: command failed"); + + return rc; +} + +/********************************************************************** + * + * Low-level I2C I/O functions + * + **********************************************************************/ + +/* NOTE: Do not call this function directly! + * The OV518 I2C I/O procedure is different, hence, this function. + * This is normally only called from i2c_w(). Note that this function + * always succeeds regardless of whether the sensor is present and working. + */ +static int +ov518_i2c_write_internal(struct usb_ov511 *ov, + unsigned char reg, + unsigned char value) +{ + int rc; + + PDEBUG(5, "0x%02X:0x%02X", reg, value); + + /* Select camera register */ + rc = reg_w(ov, R51x_I2C_SADDR_3, reg); + if (rc < 0) return rc; + + /* Write "value" to I2C data port of OV511 */ + rc = reg_w(ov, R51x_I2C_DATA, value); + if (rc < 0) return rc; + + /* Initiate 3-byte write cycle */ + rc = reg_w(ov, R518_I2C_CTL, 0x01); + if (rc < 0) return rc; + + return 0; +} + +/* NOTE: Do not call this function directly! */ +static int +ov511_i2c_write_internal(struct usb_ov511 *ov, + unsigned char reg, + unsigned char value) +{ + int rc, retries; + + PDEBUG(5, "0x%02X:0x%02X", reg, value); + + /* Three byte write cycle */ + for (retries = OV511_I2C_RETRIES; ; ) { + /* Select camera register */ + rc = reg_w(ov, R51x_I2C_SADDR_3, reg); + if (rc < 0) return rc; + + /* Write "value" to I2C data port of OV511 */ + rc = reg_w(ov, R51x_I2C_DATA, value); + if (rc < 0) return rc; + + /* Initiate 3-byte write cycle */ + rc = reg_w(ov, R511_I2C_CTL, 0x01); + if (rc < 0) return rc; + + do rc = reg_r(ov, R511_I2C_CTL); + while (rc > 0 && ((rc&1) == 0)); /* Retry until idle */ + if (rc < 0) return rc; + + if ((rc&2) == 0) /* Ack? */ + break; +#if 0 + /* I2C abort */ + reg_w(ov, R511_I2C_CTL, 0x10); +#endif + if (--retries < 0) { + PDEBUG(5, "i2c write retries exhausted"); + return -1; + } + } + + return 0; +} + +/* NOTE: Do not call this function directly! + * The OV518 I2C I/O procedure is different, hence, this function. + * This is normally only called from i2c_r(). Note that this function + * always succeeds regardless of whether the sensor is present and working. + */ +static int +ov518_i2c_read_internal(struct usb_ov511 *ov, unsigned char reg) +{ + int rc, value; + + /* Select camera register */ + rc = reg_w(ov, R51x_I2C_SADDR_2, reg); + if (rc < 0) return rc; + + /* Initiate 2-byte write cycle */ + rc = reg_w(ov, R518_I2C_CTL, 0x03); + if (rc < 0) return rc; + + /* Initiate 2-byte read cycle */ + rc = reg_w(ov, R518_I2C_CTL, 0x05); + if (rc < 0) return rc; + + value = reg_r(ov, R51x_I2C_DATA); + + PDEBUG(5, "0x%02X:0x%02X", reg, value); + + return value; +} + +/* NOTE: Do not call this function directly! + * returns: negative is error, pos or zero is data */ +static int +ov511_i2c_read_internal(struct usb_ov511 *ov, unsigned char reg) +{ + int rc, value, retries; + + /* Two byte write cycle */ + for (retries = OV511_I2C_RETRIES; ; ) { + /* Select camera register */ + rc = reg_w(ov, R51x_I2C_SADDR_2, reg); + if (rc < 0) return rc; + + /* Initiate 2-byte write cycle */ + rc = reg_w(ov, R511_I2C_CTL, 0x03); + if (rc < 0) return rc; + + do rc = reg_r(ov, R511_I2C_CTL); + while (rc > 0 && ((rc&1) == 0)); /* Retry until idle */ + if (rc < 0) return rc; + + if ((rc&2) == 0) /* Ack? */ + break; + + /* I2C abort */ + reg_w(ov, R511_I2C_CTL, 0x10); + + if (--retries < 0) { + PDEBUG(5, "i2c write retries exhausted"); + return -1; + } + } + + /* Two byte read cycle */ + for (retries = OV511_I2C_RETRIES; ; ) { + /* Initiate 2-byte read cycle */ + rc = reg_w(ov, R511_I2C_CTL, 0x05); + if (rc < 0) return rc; + + do rc = reg_r(ov, R511_I2C_CTL); + while (rc > 0 && ((rc&1) == 0)); /* Retry until idle */ + if (rc < 0) return rc; + + if ((rc&2) == 0) /* Ack? */ + break; + + /* I2C abort */ + rc = reg_w(ov, R511_I2C_CTL, 0x10); + if (rc < 0) return rc; + + if (--retries < 0) { + PDEBUG(5, "i2c read retries exhausted"); + return -1; + } + } + + value = reg_r(ov, R51x_I2C_DATA); + + PDEBUG(5, "0x%02X:0x%02X", reg, value); + + /* This is needed to make i2c_w() work */ + rc = reg_w(ov, R511_I2C_CTL, 0x05); + if (rc < 0) + return rc; + + return value; +} + +/* returns: negative is error, pos or zero is data */ +static int +i2c_r(struct usb_ov511 *ov, unsigned char reg) +{ + int rc; + + down(&ov->i2c_lock); + + switch (ov->bclass) { + case BCL_OV511: + rc = ov511_i2c_read_internal(ov, reg); + break; + case BCL_OV518: + case BCL_OV519: + rc = ov518_i2c_read_internal(ov, reg); + break; + default: + err("i2c_r: Invalid bridge class"); + rc = -EINVAL; + } + up(&ov->i2c_lock); + + return rc; +} + +static int +i2c_w(struct usb_ov511 *ov, unsigned char reg, unsigned char value) +{ + int rc; + + down(&ov->i2c_lock); + + switch (ov->bclass) { + case BCL_OV511: + rc = ov511_i2c_write_internal(ov, reg, value); + break; + case BCL_OV518: + case BCL_OV519: + rc = ov518_i2c_write_internal(ov, reg, value); + break; + default: + err("ic2_w: Invalid bridge class"); + rc = -EINVAL; + } + + up(&ov->i2c_lock); + + return rc; +} + +/* Do not call this function directly! */ +static int +ov51x_i2c_write_mask_internal(struct usb_ov511 *ov, + unsigned char reg, + unsigned char value, + unsigned char mask) +{ + int rc; + unsigned char oldval, newval; + + if (mask == 0xff) { + newval = value; + } else { + switch (ov->bclass) { + case BCL_OV511: + rc = ov511_i2c_read_internal(ov, reg); + break; + case BCL_OV518: + case BCL_OV519: + rc = ov518_i2c_read_internal(ov, reg); + break; + default: + err("ov51x_i2c_write_mask_internal: Invalid bridge class"); + rc = -EINVAL; + } + if (rc < 0) + return rc; + + oldval = (unsigned char) rc; + oldval &= (~mask); /* Clear the masked bits */ + value &= mask; /* Enforce mask on value */ + newval = oldval | value; /* Set the desired bits */ + } + + switch (ov->bclass) { + case BCL_OV511: + return (ov511_i2c_write_internal(ov, reg, newval)); + break; + case BCL_OV518: + case BCL_OV519: + return (ov518_i2c_write_internal(ov, reg, newval)); + break; + default: + return -EINVAL; + } +} + +/* Writes bits at positions specified by mask to an I2C reg. Bits that are in + * the same position as 1's in "mask" are cleared and set to "value". Bits + * that are in the same position as 0's in "mask" are preserved, regardless + * of their respective state in "value". + */ +static int +i2c_w_mask(struct usb_ov511 *ov, + unsigned char reg, + unsigned char value, + unsigned char mask) +{ + int rc; + + down(&ov->i2c_lock); + rc = ov51x_i2c_write_mask_internal(ov, reg, value, mask); + up(&ov->i2c_lock); + + return rc; +} + +/* Do not call this function directly! */ +static int +ov51x_i2c_setbit_internal(struct usb_ov511 *ov, + unsigned char reg, + unsigned char value, + unsigned char bitaddr) +{ + int rc; + unsigned char newval; + + switch (ov->bclass) { + case BCL_OV511: + rc = ov511_i2c_read_internal(ov, reg); + break; + case BCL_OV518: + case BCL_OV519: + rc = ov518_i2c_read_internal(ov, reg); + break; + default: + err("ov51x_i2c_setbit_internal: Invalid bridge class"); + rc = -EINVAL; + } + if (rc < 0) + return rc; + + newval = ((unsigned char)rc & ~(1 << bitaddr)) | (value ? (1 << bitaddr) : 0); /* Set the desired bit */ + + switch (ov->bclass) { + case BCL_OV511: + return (ov511_i2c_write_internal(ov, reg, newval)); + break; + case BCL_OV518: + case BCL_OV519: + return (ov518_i2c_write_internal(ov, reg, newval)); + break; + default: + return -EINVAL; + } +} + +/* Writes bits at positions specified by bitaddr to an I2C reg. Bits are cleared + * if value = 0 and set if value = 1. + */ +static int +i2c_setbit(struct usb_ov511 *ov, + unsigned char reg, + unsigned char value, + unsigned char bitaddr) +{ + int rc; + + down(&ov->i2c_lock); + rc = ov51x_i2c_setbit_internal(ov, reg, value, bitaddr); + up(&ov->i2c_lock); + + return rc; +} + +/* Set the read and write slave IDs. The "slave" argument is the write slave, + * and the read slave will be set to (slave + 1). ov->i2c_lock should be held + * when calling this. This should not be called from outside the i2c I/O + * functions. + */ +static int +i2c_set_slave_internal(struct usb_ov511 *ov, unsigned char slave) +{ + int rc; + + rc = reg_w(ov, R51x_I2C_W_SID, slave); + if (rc < 0) return rc; + + rc = reg_w(ov, R51x_I2C_R_SID, slave + 1); + if (rc < 0) return rc; + + return 0; +} + +/* Write to a specific I2C slave ID and register, using the specified mask */ +static int +i2c_w_slave(struct usb_ov511 *ov, + unsigned char slave, + unsigned char reg, + unsigned char value, + unsigned char mask) +{ + int rc = 0; + + down(&ov->i2c_lock); + + /* Set new slave IDs */ + rc = i2c_set_slave_internal(ov, slave); + if (rc < 0) goto out; + + rc = ov51x_i2c_write_mask_internal(ov, reg, value, mask); + +out: + /* Restore primary IDs */ + if (i2c_set_slave_internal(ov, ov->primary_i2c_slave) < 0) + err("Couldn't restore primary I2C slave"); + + up(&ov->i2c_lock); + return rc; +} + +/* Read from a specific I2C slave ID and register */ +static int +i2c_r_slave(struct usb_ov511 *ov, + unsigned char slave, + unsigned char reg) +{ + int rc; + + down(&ov->i2c_lock); + + /* Set new slave IDs */ + rc = i2c_set_slave_internal(ov, slave); + if (rc < 0) goto out; + + switch (ov->bclass) { + case BCL_OV511: + rc = ov511_i2c_read_internal(ov, reg); + break; + case BCL_OV518: + case BCL_OV519: + rc = ov518_i2c_read_internal(ov, reg); + break; + default: + err("i2c_r_slave: Invalid bridge class"); + rc = -EINVAL; + } +out: + /* Restore primary IDs */ + if (i2c_set_slave_internal(ov, ov->primary_i2c_slave) < 0) + err("Couldn't restore primary I2C slave"); + + up(&ov->i2c_lock); + return rc; +} + +/* Sets I2C read and write slave IDs. Returns <0 for error */ +static int +ov51x_set_slave_ids(struct usb_ov511 *ov, unsigned char sid) +{ + int rc; + + down(&ov->i2c_lock); + + rc = i2c_set_slave_internal(ov, sid); + if (rc < 0) goto out; + + // FIXME: Is this actually necessary? + if (ov->bclass != BCL_OV519) + rc = ov51x_reset(ov, OV511_RESET_NOREGS); + if (rc < 0) goto out; + +out: + up(&ov->i2c_lock); + return rc; +} + +static int +write_regvals(struct usb_ov511 *ov, struct ov511_regvals * pRegvals) +{ + int rc; + + while (pRegvals->bus != OV511_DONE_BUS) { + if (pRegvals->bus == OV511_REG_BUS) { + if ((rc = reg_w(ov, pRegvals->reg, pRegvals->val)) < 0) + return rc; + } else if (pRegvals->bus == OV511_I2C_BUS) { + if ((rc = i2c_w(ov, pRegvals->reg, pRegvals->val)) < 0) + return rc; + } else { + err("Bad regval array"); + return -1; + } + pRegvals++; + } + return 0; +} + +#ifdef OV511_DEBUG +static void +dump_i2c_range(struct usb_ov511 *ov, int reg1, int regn) +{ + int i, rc; + + for (i = reg1; i <= regn; i++) { + rc = i2c_r(ov, i); + info("Sensor[0x%02X] = 0x%02X", i, rc); + } +} + +static void +dump_i2c_regs(struct usb_ov511 *ov) +{ + info("I2C REGS"); + dump_i2c_range(ov, 0x00, 0x7C); +} + +static void +dump_reg_range(struct usb_ov511 *ov, int reg1, int regn) +{ + int i, rc; + + for (i = reg1; i <= regn; i++) { + rc = reg_r(ov, i); + info("OV511[0x%02X] = 0x%02X", i, rc); + } +} + +static void +ov511_dump_regs(struct usb_ov511 *ov) +{ + info("CAMERA INTERFACE REGS"); + dump_reg_range(ov, 0x10, 0x1f); + info("DRAM INTERFACE REGS"); + dump_reg_range(ov, 0x20, 0x23); + info("ISO FIFO REGS"); + dump_reg_range(ov, 0x30, 0x31); + info("PIO REGS"); + dump_reg_range(ov, 0x38, 0x39); + dump_reg_range(ov, 0x3e, 0x3e); + info("I2C REGS"); + dump_reg_range(ov, 0x40, 0x49); + info("SYSTEM CONTROL REGS"); + dump_reg_range(ov, 0x50, 0x55); + dump_reg_range(ov, 0x5e, 0x5f); + info("OmniCE REGS"); + dump_reg_range(ov, 0x70, 0x79); + /* NOTE: Quantization tables are not readable. You will get the value + * in reg. 0x79 for every table register */ + dump_reg_range(ov, 0x80, 0x9f); + dump_reg_range(ov, 0xa0, 0xbf); + +} + +static void +ov518_dump_regs(struct usb_ov511 *ov) +{ + info("VIDEO MODE REGS"); + dump_reg_range(ov, 0x20, 0x2f); + info("DATA PUMP AND SNAPSHOT REGS"); + dump_reg_range(ov, 0x30, 0x3f); + info("I2C REGS"); + dump_reg_range(ov, 0x40, 0x4f); + info("SYSTEM CONTROL AND VENDOR REGS"); + dump_reg_range(ov, 0x50, 0x5f); + info("60 - 6F"); + dump_reg_range(ov, 0x60, 0x6f); + info("70 - 7F"); + dump_reg_range(ov, 0x70, 0x7f); + info("Y QUANTIZATION TABLE"); + dump_reg_range(ov, 0x80, 0x8f); + info("UV QUANTIZATION TABLE"); + dump_reg_range(ov, 0x90, 0x9f); + info("A0 - BF"); + dump_reg_range(ov, 0xa0, 0xbf); + info("CBR"); + dump_reg_range(ov, 0xc0, 0xcf); +} +#endif + +/*****************************************************************************/ + +/* Temporarily stops OV511 from functioning. Must do this before changing + * registers while the camera is streaming */ +static inline int +ov51x_stop(struct usb_ov511 *ov) +{ + PDEBUG(4, "stopping"); + ov->stopped = 1; + switch (ov->bclass) { + case BCL_OV511: + return (reg_w(ov, R51x_SYS_RESET, 0x3d)); + break; + case BCL_OV518: + return (reg_w_mask(ov, R51x_SYS_RESET, 0x3a, 0x3a)); + break; + case BCL_OV519: + return (reg_w(ov, OV519_SYS_RESET1, 0x0f)); + break; + default: + err("ov51x_stop: invalid bridge type"); + } + return -1; +} + +/* Restarts OV511 after ov511_stop() is called. Has no effect if it is not + * actually stopped (for performance). */ +static inline int +ov51x_restart(struct usb_ov511 *ov) +{ + int rc = 0; + + if (ov->stopped) { + PDEBUG(4, "restarting"); + ov->stopped = 0; + + /* Reinitialize the stream */ + switch (ov->bclass) { + case BCL_OV511: + rc = reg_w(ov, R51x_SYS_RESET, 0x00); + break; + case BCL_OV518: + rc = reg_w(ov, 0x2f, 0x80); + rc = reg_w(ov, R51x_SYS_RESET, 0x00); + break; + case BCL_OV519: + rc = reg_w(ov, OV519_SYS_RESET1, 0x00); + break; + default: + err("ov51x_restart: invalid bridge type"); + rc = -EINVAL; + } + } + + return rc; +} + +/* Sleeps until no frames are active. Returns !0 if got signal */ +static int +ov51x_wait_frames_inactive(struct usb_ov511 *ov) +{ + return wait_event_interruptible(ov->wq, ov->curframe < 0); +} + +/* Resets the hardware snapshot button */ +static void +ov51x_clear_snapshot(struct usb_ov511 *ov) +{ + if (ov->bclass == BCL_OV511) { + reg_w(ov, R51x_SYS_SNAP, 0x00); + reg_w(ov, R51x_SYS_SNAP, 0x02); + reg_w(ov, R51x_SYS_SNAP, 0x00); + } else if (ov->bclass == BCL_OV518) { + warn("snapshot reset not supported yet on OV518(+)"); + } else { + err("clear snap: invalid bridge type"); + } +} + +#if defined(CONFIG_VIDEO_PROC_FS) +/* Checks the status of the snapshot button. Returns 1 if it was pressed since + * it was last cleared, and zero in all other cases (including errors) */ +static int +ov51x_check_snapshot(struct usb_ov511 *ov) +{ + int ret, status = 0; + + if (ov->bclass == BCL_OV511) { + ret = reg_r(ov, R51x_SYS_SNAP); + if (ret < 0) { + err("Error checking snspshot status (%d)", ret); + } else if (ret & 0x08) { + status = 1; + } + } else if (ov->bclass == BCL_OV518) { + warn("snapshot check not supported yet on OV518(+)"); + } else { + err("check snap: invalid bridge type"); + } + + return status; +} +#endif + +/* This does an initial reset of an OmniVision sensor and ensures that I2C + * is synchronized. Returns <0 for failure. + */ +static int +init_ov_sensor(struct usb_ov511 *ov) +{ + int i, success; + + /* Reset the sensor */ + if (i2c_w(ov, 0x12, 0x80) < 0) return -EIO; + + /* Wait for it to initialize */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 9) + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(1 + 150 * HZ / 1000); +#else + msleep(150); +#endif + + for (i = 0, success = 0; i < i2c_detect_tries && !success; i++) { + if ((i2c_r(ov, OV7610_REG_ID_HIGH) == 0x7F) && + (i2c_r(ov, OV7610_REG_ID_LOW) == 0xA2)) { + success = 1; + continue; + } + + /* Reset the sensor */ + if (i2c_w(ov, 0x12, 0x80) < 0) return -EIO; + /* Wait for it to initialize */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 9) + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(1 + 150 * HZ / 1000); +#else + msleep(150); +#endif + /* Dummy read to sync I2C */ + if (i2c_r(ov, 0x00) < 0) return -EIO; + } + + if (!success) + return -EIO; + + PDEBUG(1, "I2C synced in %d attempt(s)", i); + + return 0; +} + +static int +ov511_set_packet_size(struct usb_ov511 *ov, int size) +{ + int alt, mult; + + if (ov51x_stop(ov) < 0) + return -EIO; + + mult = size >> 5; + + if (ov->bridge == BRG_OV511) { + if (size == 0) alt = OV511_ALT_SIZE_0; + else if (size == 257) alt = OV511_ALT_SIZE_257; + else if (size == 513) alt = OV511_ALT_SIZE_513; + else if (size == 769) alt = OV511_ALT_SIZE_769; + else if (size == 993) alt = OV511_ALT_SIZE_993; + else { + err("Set packet size: invalid size (%d)", size); + return -EINVAL; + } + } else if (ov->bridge == BRG_OV511PLUS) { + if (size == 0) alt = OV511PLUS_ALT_SIZE_0; + else if (size == 33) alt = OV511PLUS_ALT_SIZE_33; + else if (size == 129) alt = OV511PLUS_ALT_SIZE_129; + else if (size == 257) alt = OV511PLUS_ALT_SIZE_257; + else if (size == 385) alt = OV511PLUS_ALT_SIZE_385; + else if (size == 513) alt = OV511PLUS_ALT_SIZE_513; + else if (size == 769) alt = OV511PLUS_ALT_SIZE_769; + else if (size == 961) alt = OV511PLUS_ALT_SIZE_961; + else { + err("Set packet size: invalid size (%d)", size); + return -EINVAL; + } + } else { + err("Set packet size: Invalid bridge type"); + return -EINVAL; + } + + PDEBUG(3, "%d, mult=%d, alt=%d", size, mult, alt); + + if (reg_w(ov, R51x_FIFO_PSIZE, mult) < 0) + return -EIO; + + if (usb_set_interface(ov->dev, ov->iface, alt) < 0) { + err("Set packet size: set interface error"); + return -EBUSY; + } + + if (ov51x_reset(ov, OV511_RESET_NOREGS) < 0) + return -EIO; + + ov->packet_size = size; + + if (ov51x_restart(ov) < 0) + return -EIO; + + return 0; +} + +/* Note: Unlike the OV511/OV511+, the size argument does NOT include the + * optional packet number byte. The actual size *is* stored in ov->packet_size, + * though. */ +static int +ov518_set_packet_size(struct usb_ov511 *ov, int size) +{ + int alt; + + if (ov51x_stop(ov) < 0) + return -EIO; + + if (ov->bclass == BCL_OV518) { + if (size == 0) alt = OV518_ALT_SIZE_0; + else if (size == 128) alt = OV518_ALT_SIZE_128; + else if (size == 256) alt = OV518_ALT_SIZE_256; + else if (size == 384) alt = OV518_ALT_SIZE_384; + else if (size == 512) alt = OV518_ALT_SIZE_512; + else if (size == 640) alt = OV518_ALT_SIZE_640; + else if (size == 768) alt = OV518_ALT_SIZE_768; + else if (size == 896) alt = OV518_ALT_SIZE_896; + else { + err("Set packet size: invalid size (%d)", size); + return -EINVAL; + } + } else { + err("Set packet size: Invalid bridge type"); + return -EINVAL; + } + + PDEBUG(3, "%d, alt=%d", size, alt); + + ov->packet_size = size; + if (size > 0) { + /* Program ISO FIFO size reg (packet number isn't included) */ + ov518_reg_w32(ov, 0x30, size, 2); + + if (ov->packet_numbering) + ++ov->packet_size; + } + + if (usb_set_interface(ov->dev, ov->iface, alt) < 0) { + err("Set packet size: set interface error"); + return -EBUSY; + } + + /* Initialize the stream */ + if (reg_w(ov, 0x2f, 0x80) < 0) + return -EIO; + + if (ov51x_restart(ov) < 0) + return -EIO; + + if (ov51x_reset(ov, OV511_RESET_NOREGS) < 0) + return -EIO; + + return 0; +} + +/* Note: Unlike the OV511/OV511+, the size argument does NOT include the + * optional packet number byte. The actual size *is* stored in ov->packet_size, + * though. */ +static int +ov519_set_packet_size(struct usb_ov511 *ov, int size) +{ + int alt; + + if (ov51x_stop(ov) < 0) + return -EIO; + + if (ov->bclass == BCL_OV519) { + if (size == 0) alt = OV519_ALT_SIZE_0; + else if (size == 384) alt = OV519_ALT_SIZE_384; + else if (size == 512) alt = OV519_ALT_SIZE_512; + else if (size == 768) alt = OV519_ALT_SIZE_768; + else if (size == 896) alt = OV519_ALT_SIZE_896; + else { + err("Set packet size: invalid size (%d)", size); + return -EINVAL; + } + } else { + err("Set packet size: Invalid bridge class"); + return -EINVAL; + } + + PDEBUG(3, "%d, alt=%d", size, alt); + + ov->packet_size = size; + if (size > 0) { + /* Program ISO FIFO size reg (packet number isn't included) */ + //~~~ is this nessecary? ov518_reg_w32(ov, 0x30, size, 2); + + if (ov->packet_numbering) + ++ov->packet_size; + } + + if (usb_set_interface(ov->dev, ov->iface, alt) < 0) { + err("Set packet size: set interface error"); + return -EBUSY; + } + + /* Initialize the stream */ + + if (size > 0) { + if (ov51x_restart(ov) < 0) + return -EIO; + } + +// if (ov51x_reset(ov, OV511_RESET_NOREGS) < 0) +// return -EIO; + + return 0; +} + +/* Upload compression params and quantization tables. Returns 0 for success. */ +static int +ov511_init_compression(struct usb_ov511 *ov) +{ + int rc = 0; + + if (!ov->compress_inited) { + reg_w(ov, 0x70, phy); + reg_w(ov, 0x71, phuv); + reg_w(ov, 0x72, pvy); + reg_w(ov, 0x73, pvuv); + reg_w(ov, 0x74, qhy); + reg_w(ov, 0x75, qhuv); + reg_w(ov, 0x76, qvy); + reg_w(ov, 0x77, qvuv); + + if (ov511_upload_quan_tables(ov) < 0) { + err("Error uploading quantization tables"); + rc = -EIO; + goto out; + } + } + + ov->compress_inited = 1; +out: + return rc; +} + +/* Upload compression params and quantization tables. Returns 0 for success. */ +static int +ov518_init_compression(struct usb_ov511 *ov) +{ + int rc = 0; + + if (!ov->compress_inited) { + if (ov518_upload_quan_tables(ov) < 0) { + err("Error uploading quantization tables"); + rc = -EIO; + goto out; + } + } + + ov->compress_inited = 1; +out: + return rc; +} + +/* Switch on standard JPEG compression. Returns 0 for success. */ +static int +ov519_init_compression(struct usb_ov511 *ov) +{ + int rc = 0; + + if (!ov->compress_inited) { + if (reg_setbit(ov, OV519_SYS_EN_CLK1, 1, 2 ) < 0) { + err("Error switching to compressed mode"); + rc = -EIO; + goto out; + } + } + + ov->compress_inited = 1; +out: + return rc; +} + +/* -------------------------------------------------------------------------- */ + +/* Sets sensor's contrast setting to "val" */ +static int +sensor_set_contrast(struct usb_ov511 *ov, unsigned short val) +{ + int rc; + + PDEBUG(3, "%d", val); + + if (ov->stop_during_set) + if (ov51x_stop(ov) < 0) + return -EIO; + + switch (ov->sensor) { + case SEN_OV7610: + case SEN_OV6620: + { + rc = i2c_w(ov, OV7610_REG_CNT, val >> 8); + if (rc < 0) + goto out; + break; + } + case SEN_OV6630: + { + rc = i2c_w_mask(ov, OV7610_REG_CNT, val >> 12, 0x0f); + if (rc < 0) + goto out; + break; + } + case SEN_OV8610: + { + static unsigned char ctab[] = { + 0x03, 0x09, 0x0b, 0x0f, 0x53, 0x6f, 0x35, 0x7f + }; + + /* Use Y gamma control instead. Bit 0 enables it. */ + rc = i2c_w(ov, 0x64, ctab[val>>13]); + if (rc < 0) + goto out; + break; + } + case SEN_OV7620: + { + static unsigned char ctab[] = { + 0x01, 0x05, 0x09, 0x11, 0x15, 0x35, 0x37, 0x57, + 0x5b, 0xa5, 0xa7, 0xc7, 0xc9, 0xcf, 0xef, 0xff + }; + + /* Use Y gamma control instead. Bit 0 enables it. */ + rc = i2c_w(ov, 0x64, ctab[val>>12]); + if (rc < 0) + goto out; + break; + } + case SEN_OV7640: + { + /* Use gain control instead. */ + rc = i2c_w(ov, OV7610_REG_GAIN, val>>10); + if (rc < 0) + goto out; + break; + } + case SEN_SAA7111A: + { + rc = i2c_w(ov, 0x0b, val >> 9); + if (rc < 0) + goto out; + break; + } + default: + { + PDEBUG(3, "Unsupported with this sensor"); + rc = -EPERM; + goto out; + } + } + + rc = 0; /* Success */ + ov->contrast = val; +out: + if (ov51x_restart(ov) < 0) + return -EIO; + + return rc; +} + +/* Gets sensor's contrast setting */ +static int +sensor_get_contrast(struct usb_ov511 *ov, unsigned short *val) +{ + int rc; + + switch (ov->sensor) { + case SEN_OV7610: + case SEN_OV6620: + rc = i2c_r(ov, OV7610_REG_CNT); + if (rc < 0) + return rc; + else + *val = rc << 8; + break; + case SEN_OV6630: + rc = i2c_r(ov, OV7610_REG_CNT); + if (rc < 0) + return rc; + else + *val = rc << 12; + break; + case SEN_OV8610: + { + static unsigned char ctab[] = { + 0x03, 0x09, 0x0b, 0x0f, 0x53, 0x6f, 0x35, 0x7f + }; + static int cidx = 0; + + /* Use Y gamma control instead. Bit 0 enables it. */ + rc = i2c_r(ov, 0x64); + if (rc < 0) { + return rc; + } else { + for (cidx = 0; cidx < 8; cidx++) { + if (ctab[cidx] == rc) { + *val = cidx << 13; + break; + } + } + if (cidx == 8) // could not find value in table + return -EINVAL; + } + break; + } + case SEN_OV7620: + /* Use Y gamma reg instead. Bit 0 is the enable bit. */ + rc = i2c_r(ov, 0x64); + if (rc < 0) + return rc; + else + *val = (rc & 0xfe) << 8; + break; + case SEN_OV7640: + /* Use gain control instead. */ + rc = i2c_r(ov, OV7610_REG_GAIN); + if (rc < 0) + return rc; + else + *val = rc << 10; + break; + + case SEN_SAA7111A: + *val = ov->contrast; + break; + default: + PDEBUG(3, "Unsupported with this sensor"); + return -EPERM; + } + + PDEBUG(3, "%d", *val); + ov->contrast = *val; + + return 0; +} + +/* -------------------------------------------------------------------------- */ + +/* Sets sensor's brightness setting to "val" */ +static int +sensor_set_brightness(struct usb_ov511 *ov, unsigned short val) +{ + int rc; + + PDEBUG(4, "%d", val); + + if (ov->stop_during_set) + if (ov51x_stop(ov) < 0) + return -EIO; + + switch (ov->sensor) { + case SEN_OV8610: + case SEN_OV7610: + case SEN_OV76BE: + case SEN_OV6620: + case SEN_OV6630: + case SEN_OV7640: + rc = i2c_w(ov, OV7610_REG_BRT, val >> 8); + if (rc < 0) + goto out; + break; + case SEN_OV7620: + /* 7620 doesn't like manual changes when in auto mode */ + if (!ov->auto_brt) { + rc = i2c_w(ov, OV7610_REG_BRT, val >> 8); + if (rc < 0) + goto out; + } + break; + case SEN_SAA7111A: + rc = i2c_w(ov, 0x0a, val >> 8); + if (rc < 0) + goto out; + break; + default: + PDEBUG(3, "Unsupported with this sensor"); + rc = -EPERM; + goto out; + } + + rc = 0; /* Success */ + ov->brightness = val; +out: + if (ov51x_restart(ov) < 0) + return -EIO; + + return rc; +} + +/* Gets sensor's brightness setting */ +static int +sensor_get_brightness(struct usb_ov511 *ov, unsigned short *val) +{ + int rc; + + switch (ov->sensor) { + case SEN_OV8610: + case SEN_OV7610: + case SEN_OV76BE: + case SEN_OV7620: + case SEN_OV6620: + case SEN_OV6630: + case SEN_OV7640: + rc = i2c_r(ov, OV7610_REG_BRT); + if (rc < 0) + return rc; + else + *val = rc << 8; + break; + case SEN_SAA7111A: + *val = ov->brightness; + break; + default: + PDEBUG(3, "Unsupported with this sensor"); + return -EPERM; + } + + PDEBUG(3, "%d", *val); + ov->brightness = *val; + + return 0; +} + +/* -------------------------------------------------------------------------- */ + +/* Sets sensor's saturation (color intensity) setting to "val" */ +static int +sensor_set_saturation(struct usb_ov511 *ov, unsigned short val) +{ + int rc; + + PDEBUG(3, "%d", val); + + if (ov->stop_during_set) + if (ov51x_stop(ov) < 0) + return -EIO; + + switch (ov->sensor) { + case SEN_OV8610: + case SEN_OV7610: + case SEN_OV76BE: + case SEN_OV6620: + case SEN_OV6630: + rc = i2c_w(ov, OV7610_REG_SAT, val >> 8); + if (rc < 0) + goto out; + break; + case SEN_OV7620: +// /* Use UV gamma control instead. Bits 0 & 7 are reserved. */ +// rc = ov_i2c_write(ov->dev, 0x62, (val >> 9) & 0x7e); +// if (rc < 0) +// goto out; + rc = i2c_w(ov, OV7610_REG_SAT, val >> 8); + if (rc < 0) + goto out; + break; + case SEN_OV7640: + rc = i2c_w(ov, OV7610_REG_SAT, (val >> 8) & 0xf0); + if (rc < 0) + goto out; + case SEN_SAA7111A: + rc = i2c_w(ov, 0x0c, val >> 9); + if (rc < 0) + goto out; + break; + default: + PDEBUG(3, "Unsupported with this sensor"); + rc = -EPERM; + goto out; + } + + rc = 0; /* Success */ + ov->colour = val; +out: + if (ov51x_restart(ov) < 0) + return -EIO; + + return rc; +} + +/* Gets sensor's saturation (color intensity) setting */ +static int +sensor_get_saturation(struct usb_ov511 *ov, unsigned short *val) +{ + int rc; + + switch (ov->sensor) { + case SEN_OV8610: + case SEN_OV7610: + case SEN_OV76BE: + case SEN_OV6620: + case SEN_OV6630: + case SEN_OV7640: + rc = i2c_r(ov, OV7610_REG_SAT); + if (rc < 0) + return rc; + else + *val = rc << 8; + break; + case SEN_OV7620: +// /* Use UV gamma reg instead. Bits 0 & 7 are reserved. */ +// rc = i2c_r(ov, 0x62); +// if (rc < 0) +// return rc; +// else +// *val = (rc & 0x7e) << 9; + rc = i2c_r(ov, OV7610_REG_SAT); + if (rc < 0) + return rc; + else + *val = rc << 8; + break; + case SEN_SAA7111A: + *val = ov->colour; + break; + default: + PDEBUG(3, "Unsupported with this sensor"); + return -EPERM; + } + + PDEBUG(3, "%d", *val); + ov->colour = *val; + + return 0; +} + +/* -------------------------------------------------------------------------- */ + +/* Sets sensor's hue (red/blue balance) setting to "val" */ +static int +sensor_set_hue(struct usb_ov511 *ov, unsigned short val) +{ + int rc; + + PDEBUG(3, "%d", val); + + if (ov->stop_during_set) + if (ov51x_stop(ov) < 0) + return -EIO; + + switch (ov->sensor) { + case SEN_OV7610: + case SEN_OV6620: + case SEN_OV6630: + rc = i2c_w(ov, OV7610_REG_RED, 0xFF - (val >> 8)); + if (rc < 0) + goto out; + + rc = i2c_w(ov, OV7610_REG_BLUE, val >> 8); + if (rc < 0) + goto out; + break; + case SEN_OV8610: + case SEN_OV7640: + rc = i2c_w(ov, OV8610_REG_HUE, (val >> 11) | 0x20); + if (rc < 0) + goto out; + break; + case SEN_OV7620: +// Hue control is causing problems. I will enable it once it's fixed. +#if 0 + rc = i2c_w(ov, 0x7a, (unsigned char)(val >> 8) + 0xb); + if (rc < 0) + goto out; + + rc = i2c_w(ov, 0x79, (unsigned char)(val >> 8) + 0xb); + if (rc < 0) + goto out; +#endif + break; + case SEN_SAA7111A: + rc = i2c_w(ov, 0x0d, (val + 32768) >> 8); + if (rc < 0) + goto out; + break; + default: + PDEBUG(3, "Unsupported with this sensor"); + rc = -EPERM; + goto out; + } + + rc = 0; /* Success */ + ov->hue = val; +out: + if (ov51x_restart(ov) < 0) + return -EIO; + + return rc; +} + +/* Gets sensor's hue (red/blue balance) setting */ +static int +sensor_get_hue(struct usb_ov511 *ov, unsigned short *val) +{ + int rc; + + switch (ov->sensor) { + case SEN_OV7610: + case SEN_OV6620: + case SEN_OV6630: + rc = i2c_r(ov, OV7610_REG_BLUE); + if (rc < 0) + return rc; + else + *val = rc << 8; + break; + case SEN_OV8610: + case SEN_OV7640: + rc = i2c_r(ov, OV8610_REG_HUE); + if (rc < 0) + return rc; + else + *val = (rc & 0x1f) << 11; + break; + case SEN_OV7620: + rc = i2c_r(ov, 0x7a); + if (rc < 0) + return rc; + else + *val = rc << 8; + break; + case SEN_SAA7111A: + *val = ov->hue; + break; + default: + PDEBUG(3, "Unsupported with this sensor"); + return -EPERM; + } + + PDEBUG(3, "%d", *val); + ov->hue = *val; + + return 0; +} + +/* -------------------------------------------------------------------------- */ + +static int +sensor_set_picture(struct usb_ov511 *ov, struct video_picture *p) +{ + int rc; + + PDEBUG(4, "sensor_set_picture"); + + ov->whiteness = p->whiteness; + + /* Don't return error if a setting is unsupported, or rest of settings + * will not be performed */ + + rc = sensor_set_contrast(ov, p->contrast); + if (FATAL_ERROR(rc)) + return rc; + + rc = sensor_set_brightness(ov, p->brightness); + if (FATAL_ERROR(rc)) + return rc; + + rc = sensor_set_saturation(ov, p->colour); + if (FATAL_ERROR(rc)) + return rc; + + rc = sensor_set_hue(ov, p->hue); + if (FATAL_ERROR(rc)) + return rc; + + return 0; +} + +static int +sensor_get_picture(struct usb_ov511 *ov, struct video_picture *p) +{ + int rc; + + PDEBUG(4, "sensor_get_picture"); + + /* Don't return error if a setting is unsupported, or rest of settings + * will not be performed */ + + rc = sensor_get_contrast(ov, &(p->contrast)); + if (FATAL_ERROR(rc)) + return rc; + + rc = sensor_get_brightness(ov, &(p->brightness)); + if (FATAL_ERROR(rc)) + return rc; + + rc = sensor_get_saturation(ov, &(p->colour)); + if (FATAL_ERROR(rc)) + return rc; + + rc = sensor_get_hue(ov, &(p->hue)); + if (FATAL_ERROR(rc)) + return rc; + + p->whiteness = 105 << 8; + + return 0; +} + +#if defined(CONFIG_VIDEO_PROC_FS) +// FIXME: Exposure range is only 0x00-0x7f in interlace mode +/* Sets current exposure for sensor. This only has an effect if auto-exposure + * is off */ +static inline int +sensor_set_exposure(struct usb_ov511 *ov, unsigned char val) +{ + int rc; + + PDEBUG(3, "%d", val); + + if (ov->stop_during_set) + if (ov51x_stop(ov) < 0) + return -EIO; + + switch (ov->sensor) { + case SEN_OV6620: + case SEN_OV6630: + case SEN_OV7610: + case SEN_OV7620: + case SEN_OV7640: + case SEN_OV76BE: + case SEN_OV8600: + case SEN_OV8610: + rc = i2c_w(ov, 0x10, val); + if (rc < 0) + goto out; + + break; + case SEN_SAA7111A: + PDEBUG(3, "Unsupported with this sensor"); + return -EPERM; + default: + err("Sensor not supported for set_exposure"); + return -EINVAL; + } + + rc = 0; /* Success */ + ov->exposure = val; +out: + if (ov51x_restart(ov) < 0) + return -EIO; + + return rc; +} + +/* Gets current exposure level from sensor, regardless of whether it is under + * manual control. */ +static int +sensor_get_exposure(struct usb_ov511 *ov, unsigned char *val) +{ + int rc; + + switch (ov->sensor) { + case SEN_OV7610: + case SEN_OV6620: + case SEN_OV6630: + case SEN_OV7620: + case SEN_OV7640: + case SEN_OV76BE: + case SEN_OV8600: + case SEN_OV8610: + rc = i2c_r(ov, 0x10); + if (rc < 0) + return rc; + else + *val = rc; + break; + case SEN_SAA7111A: + val = 0; + PDEBUG(3, "Unsupported with this sensor"); + return -EPERM; + default: + err("Sensor not supported for get_exposure"); + return -EINVAL; + } + + PDEBUG(3, "%d", *val); + ov->exposure = *val; + + return 0; +} +#endif /* CONFIG_VIDEO_PROC_FS */ + +/* Turns on or off the LED. Only has an effect with OV511+/OV518(+)/OV519 */ +static void +ov51x_led_control(struct usb_ov511 *ov, int on) +{ + PDEBUG(4, " (%s)", on ? "turn on" : "turn off"); + + if (ov->bridge == BRG_OV511PLUS) + reg_w(ov, R511_SYS_LED_CTL, on ? 1 : 0); + else if (ov->bridge == BRG_OV519) + reg_w_mask(ov, OV519_GPIO_DATA_OUT0, on ? 0x01 : 0x00, 0x01); + else if (ov->bclass == BCL_OV518) + reg_w_mask(ov, R518_GPIO_OUT, on ? 0x02 : 0x00, 0x02); + + return; +} + +/* Matches the sensor's internal frame rate to the lighting frequency. + * Valid frequencies are: + * 50 - 50Hz, for European and Asian lighting + * 60 - 60Hz, for American lighting + * + * Tested with: OV7610, OV7620, OV76BE, OV6620 + * Unsupported: KS0127, KS0127B, SAA7111A + * Returns: 0 for success + */ +static int +sensor_set_light_freq(struct usb_ov511 *ov, int freq) +{ + int sixty; + + PDEBUG(4, "%d Hz", freq); + + if (freq == 60) + sixty = 1; + else if (freq == 50) + sixty = 0; + else { + err("Invalid light freq (%d Hz)", freq); + return -EINVAL; + } + + switch (ov->sensor) { + case SEN_OV8610: + i2c_w(ov, 0x2b, sixty?0xcc:0xc0); + i2c_w(ov, 0x2a, sixty?0x80:0xa0); + break; + case SEN_OV7610: + i2c_w_mask(ov, 0x2a, sixty?0x00:0x80, 0x80); + i2c_w(ov, 0x2b, sixty?0x00:0xac); + i2c_w_mask(ov, 0x13, 0x10, 0x10); + i2c_w_mask(ov, 0x13, 0x00, 0x10); + break; + case SEN_OV7620: + case SEN_OV76BE: + case SEN_OV8600: + i2c_w_mask(ov, 0x2a, sixty?0x00:0x80, 0x80); + i2c_w(ov, 0x2b, sixty?0x00:0xac); + i2c_w_mask(ov, 0x76, 0x01, 0x01); + break; + case SEN_OV7640: + i2c_w_mask(ov, 0x2a, sixty?0x00:0x80, 0x80); + i2c_w(ov, 0x2b, sixty?0x00:0xac); + case SEN_OV6620: + case SEN_OV6630: + i2c_w(ov, 0x2b, sixty?0xa8:0x28); + i2c_w(ov, 0x2a, sixty?0x84:0xa4); + break; + case SEN_SAA7111A: + PDEBUG(5, "Unsupported with this sensor"); + return -EPERM; + default: + err("Sensor not supported for set_light_freq"); + return -EINVAL; + } + + ov->lightfreq = freq; + + return 0; +} + +/* If enable is true, turn on the sensor's banding filter, otherwise turn it + * off. This filter tries to reduce the pattern of horizontal light/dark bands + * caused by some (usually fluorescent) lighting. The light frequency must be + * set either before or after enabling it with ov51x_set_light_freq(). + * + * Tested with: OV7610, OV7620, OV76BE, OV6620. + * Unsupported: KS0127, KS0127B, SAA7111A + * Returns: 0 for success + */ +static int +sensor_set_banding_filter(struct usb_ov511 *ov, int enable) +{ + int rc; + + PDEBUG(4, " (%s)", enable ? "turn on" : "turn off"); + + if (ov->sensor == SEN_KS0127 || ov->sensor == SEN_KS0127B + || ov->sensor == SEN_SAA7111A) { + PDEBUG(5, "Unsupported with this sensor"); + return -EPERM; + } + + rc = i2c_w_mask(ov, 0x2d, enable?0x04:0x00, 0x04); + if (rc < 0) + return rc; + + ov->bandfilt = enable; + + return 0; +} + +/* If enable is true, turn on the sensor's auto brightness control, otherwise + * turn it off. + * + * Unsupported: KS0127, KS0127B, SAA7111A, OV7640 + * Returns: 0 for success + */ +static int +sensor_set_auto_brightness(struct usb_ov511 *ov, int enable) +{ + int rc; + + PDEBUG(4, " (%s)", enable ? "turn on" : "turn off"); + + if (ov->sensor == SEN_KS0127 || ov->sensor == SEN_KS0127B + || ov->sensor == SEN_SAA7111A || ov->sensor == SEN_OV7640) { + PDEBUG(5, "Unsupported with this sensor"); + return -EPERM; + } + + rc = i2c_w_mask(ov, 0x2d, enable?0x10:0x00, 0x10); + if (rc < 0) + return rc; + + ov->auto_brt = enable; + + return 0; +} + +/* If enable is true, turn on the sensor's auto exposure control, otherwise + * turn it off. + * + * Unsupported: KS0127, KS0127B, SAA7111A + * Returns: 0 for success + */ +static int +sensor_set_auto_exposure(struct usb_ov511 *ov, int enable) +{ + PDEBUG(4, " (%s)", enable ? "turn on" : "turn off"); + + switch (ov->sensor) { + case SEN_OV7610: + i2c_w_mask(ov, 0x29, enable?0x00:0x80, 0x80); + break; + case SEN_OV6620: + case SEN_OV7620: + case SEN_OV7640: + case SEN_OV76BE: + case SEN_OV8600: + i2c_w_mask(ov, 0x13, enable?0x01:0x00, 0x01); + break; + case SEN_OV6630: + case SEN_OV8610: + i2c_w_mask(ov, 0x28, enable?0x00:0x10, 0x10); + break; + case SEN_SAA7111A: + PDEBUG(5, "Unsupported with this sensor"); + return -EPERM; + default: + err("Sensor not supported for set_auto_exposure"); + return -EINVAL; + } + + ov->auto_exp = enable; + + return 0; +} + +/* If enable is true, turn on the sensor's auto gain control, otherwise + * turn it off. + * + * Returns: 0 for success + */ +static int +sensor_set_auto_gain(struct usb_ov511 *ov, int enable) +{ + PDEBUG(4, " (%s)", enable ? "turn on" : "turn off"); + + switch (ov->sensor) { + case SEN_OV7640: + i2c_w_mask(ov, 0x13, enable?0x02:0x00, 0x02); + break; + default: + PDEBUG(5, "Unsupported with this sensor"); + return -EPERM; +// default: +// err("Sensor not supported for set_auto_gain"); +// return -EINVAL; + } + + ov->auto_gain = enable; + + return 0; +} + +/* Modifies the sensor's exposure algorithm to allow proper exposure of objects + * that are illuminated from behind. + * + * Tested with: OV6620, OV7620 + * Unsupported: OV7610, OV7640, OV76BE, KS0127, KS0127B, SAA7111A + * Returns: 0 for success + */ +static int +sensor_set_backlight(struct usb_ov511 *ov, int enable) +{ + PDEBUG(4, " (%s)", enable ? "turn on" : "turn off"); + + switch (ov->sensor) { + case SEN_OV8610: + // change AEC/AGC Reference level + i2c_w_mask(ov, 0x68, enable?0xef:0xcf, 0xff); + // select central 1/4 image to calculate AEC/AGC + i2c_w_mask(ov, 0x29, enable?0x08:0x00, 0x08); + // increase gain 3dB + i2c_w_mask(ov, 0x28, enable?0x02:0x00, 0x02); + break; + case SEN_OV7620: + case SEN_OV8600: + // change AEC/AGC Reference level + i2c_w_mask(ov, 0x68, enable?0xe0:0xc0, 0xe0); + // select central 1/4 image to calculate AEC/AGC + i2c_w_mask(ov, 0x29, enable?0x08:0x00, 0x08); + // increase gain 3dB + i2c_w_mask(ov, 0x28, enable?0x02:0x00, 0x02); + break; + case SEN_OV6620: + i2c_w_mask(ov, 0x4e, enable?0xe0:0xc0, 0xe0); + i2c_w_mask(ov, 0x29, enable?0x08:0x00, 0x08); + i2c_w_mask(ov, 0x0e, enable?0x80:0x00, 0x80); + break; + case SEN_OV6630: + i2c_w_mask(ov, 0x4e, enable?0x80:0x60, 0xe0); + i2c_w_mask(ov, 0x29, enable?0x08:0x00, 0x08); + i2c_w_mask(ov, 0x28, enable?0x02:0x00, 0x02); + break; + case SEN_OV7610: + case SEN_OV7640: + case SEN_OV76BE: + case SEN_SAA7111A: + PDEBUG(5, "Unsupported with this sensor"); + return -EPERM; + default: + err("Sensor not supported for set_backlight"); + return -EINVAL; + } + + ov->backlight = enable; + + return 0; +} + +static int +sensor_set_mirror(struct usb_ov511 *ov, int enable) +{ + PDEBUG(4, " (%s)", enable ? "turn on" : "turn off"); + + switch (ov->sensor) { + case SEN_OV6620: + case SEN_OV6630: + case SEN_OV7610: + case SEN_OV7620: + case SEN_OV76BE: + case SEN_OV7640: + case SEN_OV8600: + case SEN_OV8610: + i2c_w_mask(ov, 0x12, enable?0x40:0x00, 0x40); + break; + case SEN_SAA7111A: + PDEBUG(5, "Unsupported with this sensor"); + return -EPERM; + default: + err("Sensor not supported for set_mirror"); + return -EINVAL; + } + + ov->mirror = enable; + + return 0; +} + +/* Returns number of bits per pixel (regardless of where they are located; + * planar or not), or zero for unsupported format. + */ +static inline int +get_depth(int palette) +{ + switch (palette) { + case VIDEO_PALETTE_GREY: return 8; + case VIDEO_PALETTE_YUV420: return 12; + case VIDEO_PALETTE_YUV420P: return 12; /* Planar */ +#ifdef OV511_ALLOW_CONVERSION + case VIDEO_PALETTE_RGB565: return 16; + case VIDEO_PALETTE_RGB24: return 24; + case VIDEO_PALETTE_YUV422: return 16; + case VIDEO_PALETTE_YUYV: return 16; + case VIDEO_PALETTE_YUV422P: return 16; /* Planar */ +#endif + default: return 0; /* Invalid format */ + } +} + +/* Bytes per frame. Used by read(). Return of 0 indicates error */ +static inline long int +get_frame_length(struct usb_ov511 *ov, struct ov511_frame *frame) +{ + if (!frame) { + return 0; + } else { + if (ov->bclass == BCL_OV519) { + return (frame->bytes_recvd); + } else { + return ((frame->width * frame->height + * get_depth(frame->format)) >> 3); + } + } +} + +static int +mode_init_ov_sensor_regs(struct usb_ov511 *ov, struct ovsensor_window *win) +{ + int qvga = win->quarter; + + /******** Mode (VGA/QVGA) and sensor specific regs ********/ + + switch (ov->sensor) { + case SEN_OV8610: + // For OV8610 qvga means qsvga + i2c_setbit(ov, OV7610_REG_COM_C, qvga?1:0, 5); + // FIXME: Does this improve the image quality or frame rate? +#if 0 + i2c_w_mask(ov, 0x28, qvga?0x00:0x20, 0x20); + i2c_w(ov, 0x24, 0x10); + i2c_w(ov, 0x25, qvga?0x40:0x8a); + i2c_w(ov, 0x2f, qvga?0x30:0xb0); + i2c_w(ov, 0x35, qvga?0x1c:0x9c); +#endif + break; + case SEN_OV7610: + i2c_w_mask(ov, 0x14, qvga?0x20:0x00, 0x20); +// FIXME: Does this improve the image quality or frame rate? +#if 0 + i2c_w_mask(ov, 0x28, qvga?0x00:0x20, 0x20); + i2c_w(ov, 0x24, 0x10); + i2c_w(ov, 0x25, qvga?0x40:0x8a); + i2c_w(ov, 0x2f, qvga?0x30:0xb0); + i2c_w(ov, 0x35, qvga?0x1c:0x9c); +#endif + break; + case SEN_OV7620: +// i2c_w(ov, 0x2b, 0x00); + i2c_w_mask(ov, 0x14, qvga?0x20:0x00, 0x20); + i2c_w_mask(ov, 0x28, qvga?0x00:0x20, 0x20); + i2c_w(ov, 0x24, qvga?0x20:0x3a); + i2c_w(ov, 0x25, qvga?0x30:0x60); + i2c_w_mask(ov, 0x2d, qvga?0x40:0x00, 0x40); + i2c_w_mask(ov, 0x67, qvga?0xf0:0x90, 0xf0); + i2c_w_mask(ov, 0x74, qvga?0x20:0x00, 0x20); + break; + case SEN_OV76BE: +// i2c_w(ov, 0x2b, 0x00); + i2c_w_mask(ov, 0x14, qvga?0x20:0x00, 0x20); +// FIXME: Enable this once 7620AE uses 7620 initial settings +#if 0 + i2c_w_mask(ov, 0x28, qvga?0x00:0x20, 0x20); + i2c_w(ov, 0x24, qvga?0x20:0x3a); + i2c_w(ov, 0x25, qvga?0x30:0x60); + i2c_w_mask(ov, 0x2d, qvga?0x40:0x00, 0x40); + i2c_w_mask(ov, 0x67, qvga?0xb0:0x90, 0xf0); + i2c_w_mask(ov, 0x74, qvga?0x20:0x00, 0x20); +#endif + break; + case SEN_OV7640: +// i2c_w(ov, 0x2b, 0x00); + i2c_w_mask(ov, 0x14, qvga?0x20:0x00, 0x20); + i2c_w_mask(ov, 0x28, qvga?0x00:0x20, 0x20); +// i2c_w(ov, 0x24, qvga?0x20:0x3a); +// i2c_w(ov, 0x25, qvga?0x30:0x60); +// i2c_w_mask(ov, 0x2d, qvga?0x40:0x00, 0x40); +// i2c_w_mask(ov, 0x67, qvga?0xf0:0x90, 0xf0); +// i2c_w_mask(ov, 0x74, qvga?0x20:0x00, 0x20); + break; + case SEN_OV6620: + i2c_w_mask(ov, 0x14, qvga?0x20:0x00, 0x20); + break; + case SEN_OV6630: + i2c_w_mask(ov, 0x14, qvga?0x20:0x00, 0x20); + break; + default: + return -EINVAL; + } + + /******** Palette-specific regs ********/ + + if (win->format == VIDEO_PALETTE_GREY) { + if (ov->sensor == SEN_OV7610 || ov->sensor == SEN_OV76BE) { + /* these aren't valid on the OV6620/OV7620/6630? */ + i2c_w_mask(ov, 0x0e, 0x40, 0x40); + } + + /* OV6630 default reg 0x13 value is always right */ + /* OV7640 is 8-bit only */ + if (ov->sensor != SEN_OV6630 && ov->sensor != SEN_OV7640) + i2c_w_mask(ov, 0x13, 0x20, 0x20); + else + return -EINVAL; /* No OV6630 greyscale support yet */ + } else { + if (ov->sensor == SEN_OV7610 || ov->sensor == SEN_OV76BE) { + /* not valid on the OV6620/OV7620/6630? */ + i2c_w_mask(ov, 0x0e, 0x00, 0x40); + } + + /* The OV518 needs special treatment. Although both the OV518 + * and the OV6630 support a 16-bit video bus, only the 8 bit Y + * bus is actually used. The UV bus is tied to ground. + * Therefore, the OV6630 needs to be in 8-bit multiplexed + * output mode */ + + /* OV7640 is 8-bit only */ + + if (ov->sensor != SEN_OV6630 && ov->sensor != SEN_OV7640) + i2c_w_mask(ov, 0x13, 0x00, 0x20); + } + + /******** Clock programming ********/ + + /* The OV6620 needs special handling. This prevents the + * severe banding that normally occurs */ + if (ov->sensor == SEN_OV6620) { + /* Clock down */ + + i2c_w(ov, 0x2a, 0x04); + i2c_w(ov, 0x11, win->clockdiv); + i2c_w(ov, 0x2a, 0x84); + /* This next setting is critical. It seems to improve + * the gain or the contrast. The "reserved" bits seem + * to have some effect in this case. */ + i2c_w(ov, 0x2d, 0x85); + } else if (win->clockdiv >= 0) { + i2c_w(ov, 0x11, win->clockdiv); + } + + /******** Special Features ********/ + + if (framedrop >= 0 && ov->sensor != SEN_OV7640) + i2c_w(ov, 0x16, framedrop); + + /* Test Pattern */ + if (ov->sensor != SEN_OV7640) + i2c_w_mask(ov, 0x12, (testpat?0x02:0x00), 0x02); + + /* Enable auto white balance */ + i2c_w_mask(ov, 0x12, 0x04, 0x04); + + // This will go away as soon as ov51x_mode_init_sensor_regs() + // is fully tested. + /* 7620/6620/6630? don't have register 0x35, so play it safe */ + if (ov->sensor == SEN_OV7610 || ov->sensor == SEN_OV76BE) { + if (win->width == 640 && win->height == 480) + i2c_w(ov, 0x35, 0x9e); + else + i2c_w(ov, 0x35, 0x1e); + } + + return 0; +} + +static int +set_ov_sensor_window(struct usb_ov511 *ov, struct ovsensor_window *win) +{ + int hwsbase, hwebase, vwsbase, vwebase, hwscale, vwscale, ret; + + /* The different sensor ICs handle setting up of window differently. + * IF YOU SET IT WRONG, YOU WILL GET ALL ZERO ISOC DATA FROM OV51x!!! */ + switch (ov->sensor) { + case SEN_OV8610: + hwsbase = 0x1e; + hwebase = 0x1e; + vwsbase = 0x02; + vwebase = 0x02; + break; + case SEN_OV7610: + case SEN_OV76BE: + hwsbase = 0x38; + hwebase = 0x3a; + vwsbase = vwebase = 0x05; + break; + case SEN_OV6620: + case SEN_OV6630: + hwsbase = 0x38; + hwebase = 0x3a; + vwsbase = 0x05; + vwebase = 0x06; + break; + case SEN_OV7620: + hwsbase = 0x2f; /* From 7620.SET (spec is wrong) */ + hwebase = 0x2f; + vwsbase = vwebase = 0x05; + break; + case SEN_OV7640: + hwsbase = 0x1a; + hwebase = 0x1a; + vwsbase = vwebase = 0x03; + break; + default: + return -EINVAL; + } + + switch (ov->sensor) { + case SEN_OV6620: + case SEN_OV6630: + if (win->quarter) { /* QCIF */ + hwscale = 0; + vwscale = 0; + } else { /* CIF */ + hwscale = 1; + vwscale = 1; /* The datasheet says 0; it's wrong */ + } + break; + case SEN_OV8610: + if (win->quarter) { /* QSVGA */ + hwscale = 1; + vwscale = 1; + } else { /* SVGA */ + hwscale = 2; + vwscale = 2; + } + break; + default: //SEN_OV7xx0 + if (win->quarter) { /* QVGA */ + hwscale = 1; + vwscale = 0; + } else { /* VGA */ + hwscale = 2; + vwscale = 1; + } + } + + ret = mode_init_ov_sensor_regs(ov, win); + if (ret < 0) + return ret; + + if (ov->sensor == SEN_OV8610) { + i2c_w_mask(ov, 0x2d, 0x05, 0x40); /* old 0x95, new 0x05 from windrv 090403 *//* bits 5-7: reserved */ + i2c_w_mask(ov, 0x28, 0x20, 0x20); /* bit 5: progressive mode on */ + } + + i2c_w(ov, 0x17, hwsbase + (win->x >> hwscale)); + i2c_w(ov, 0x18, hwebase + ((win->x + win->width) >> hwscale)); + i2c_w(ov, 0x19, vwsbase + (win->y >> vwscale)); + i2c_w(ov, 0x1a, vwebase + ((win->y + win->height) >> vwscale)); + +#ifdef OV511_DEBUG + if (dump_sensor) + dump_i2c_regs(ov); +#endif + + return 0; +} + +static int +ov_sensor_mode_setup(struct usb_ov511 *ov, + int width, int height, int mode, int sub_flag) +{ + struct ovsensor_window win; + int half_w = ov->maxwidth / 2; + int half_h = ov->maxheight / 2; + + win.format = mode; + + /* Unless subcapture is enabled, center the image window and downsample + * if possible to increase the field of view */ + if (sub_flag) { + win.x = ov->subx; + win.y = ov->suby; + win.width = ov->subw; + win.height = ov->subh; + win.quarter = 0; + } else { + /* NOTE: OV518(+) and OV519 does downsampling on its own */ + if ((width > half_w && height > half_h) + || (ov->bclass == BCL_OV518) + || (ov->bclass == BCL_OV519)) { + win.width = ov->maxwidth; + win.height = ov->maxheight; + win.quarter = 0; + } else if (width > half_w || height > half_h) { + err("Illegal dimensions"); + return -EINVAL; + } else { + win.width = half_w; + win.height = half_h; + win.quarter = 1; + } + + /* Center it */ + win.x = (win.width - width) / 2; + win.y = (win.height - height) / 2; + } + + if (clockdiv >= 0) { + /* Manual override */ + win.clockdiv = clockdiv; + } else if (ov->bridge == BRG_OV518) { + /* OV518 controls the clock externally */ + win.clockdiv = 0; + } else if (ov->bridge == BRG_OV518PLUS) { + /* OV518+ controls the clock externally */ + win.clockdiv = 1; + } else if (ov->bridge == BRG_OV519) { + /* Clock is determined by OV519 frame rate code */ + win.clockdiv = ov->clockdiv; + } else if (ov->compress) { + /* Use the highest possible rate, to maximize FPS */ + switch (ov->sensor) { + case SEN_OV6620: + /* ...except with this sensor, which doesn't like + * higher rates yet */ + win.clockdiv = 3; + break; + case SEN_OV6630: + win.clockdiv = 0; + break; + case SEN_OV76BE: + case SEN_OV7610: + case SEN_OV7620: + win.clockdiv = 1; + break; + case SEN_OV8610: + win.clockdiv = 0; + break; + default: + err("Invalid sensor"); + return -EINVAL; + } + } else { + switch (ov->sensor) { + case SEN_OV6620: + case SEN_OV6630: + win.clockdiv = 3; + break; + case SEN_OV76BE: + case SEN_OV7610: + case SEN_OV7620: + /* Use slowest possible clock without sacrificing + * frame rate */ + win.clockdiv = ((sub_flag ? ov->subw * ov->subh + : width * height) + * (win.format == VIDEO_PALETTE_GREY ? 2 : 3) / 2) + / 66000; + break; + default: + err("Invalid sensor"); + return -EINVAL; + } + } + + PDEBUG(4, "Setting clock divider to %d", win.clockdiv); + + return set_ov_sensor_window(ov, &win); +} + +/* Set up the OV511/OV511+ with the given image parameters. + * + * Do not put any sensor-specific code in here (including I2C I/O functions) + */ +static int +ov511_mode_init_regs(struct usb_ov511 *ov, + int width, int height, int mode, int sub_flag) +{ + int hsegs, vsegs; + + if (sub_flag) { + width = ov->subw; + height = ov->subh; + } + + PDEBUG(3, "width:%d, height:%d, mode:%d, sub:%d", + width, height, mode, sub_flag); + + // FIXME: This should be moved to a 7111a-specific function once + // subcapture is dealt with properly + if (ov->sensor == SEN_SAA7111A) { + if (width == 320 && height == 240) { + /* No need to do anything special */ + } else if (width == 640 && height == 480) { + /* Set the OV511 up as 320x480, but keep the + * V4L resolution as 640x480 */ + width = 320; + } else { + err("SAA7111A only allows 320x240 or 640x480"); + return -EINVAL; + } + } + + /* Make sure width and height are a multiple of 8 */ + if (width % 8 || height % 8) { + err("Invalid size (%d, %d) (mode = %d)", width, height, mode); + return -EINVAL; + } + + if (width < ov->minwidth || height < ov->minheight) { + err("Requested dimensions are too small"); + return -EINVAL; + } + + if (ov51x_stop(ov) < 0) + return -EIO; + + if (mode == VIDEO_PALETTE_GREY) { + reg_w(ov, R511_CAM_UV_EN, 0x00); + reg_w(ov, R511_SNAP_UV_EN, 0x00); + reg_w(ov, R511_SNAP_OPTS, 0x01); + } else { + reg_w(ov, R511_CAM_UV_EN, 0x01); + reg_w(ov, R511_SNAP_UV_EN, 0x01); + reg_w(ov, R511_SNAP_OPTS, 0x03); + } + + /* Here I'm assuming that snapshot size == image size. + * I hope that's always true. --claudio + */ + hsegs = (width >> 3) - 1; + vsegs = (height >> 3) - 1; + + reg_w(ov, R511_CAM_PXCNT, hsegs); + reg_w(ov, R511_CAM_LNCNT, vsegs); + reg_w(ov, R511_CAM_PXDIV, 0x00); + reg_w(ov, R511_CAM_LNDIV, 0x00); + + /* YUV420, low pass filter on */ + reg_w(ov, R511_CAM_OPTS, 0x03); + + /* Snapshot additions */ + reg_w(ov, R511_SNAP_PXCNT, hsegs); + reg_w(ov, R511_SNAP_LNCNT, vsegs); + reg_w(ov, R511_SNAP_PXDIV, 0x00); + reg_w(ov, R511_SNAP_LNDIV, 0x00); + + if (ov->compress) { + /* Enable Y and UV quantization and compression */ + reg_w(ov, R511_COMP_EN, 0x07); + reg_w(ov, R511_COMP_LUT_EN, 0x03); + ov51x_reset(ov, OV511_RESET_OMNICE); + } + + if (ov51x_restart(ov) < 0) + return -EIO; + + return 0; +} + +/* Sets up the OV518/OV518+ with the given image parameters + * + * OV518 needs a completely different approach, until we can figure out what + * the individual registers do. Also, only 15 FPS is supported now. + * + * Do not put any sensor-specific code in here (including I2C I/O functions) + */ +static int +ov518_mode_init_regs(struct usb_ov511 *ov, + int width, int height, int mode, int sub_flag) +{ + int hsegs, vsegs, hi_res; + + if (sub_flag) { + width = ov->subw; + height = ov->subh; + } + + PDEBUG(3, "width:%d, height:%d, mode:%d, sub:%d", + width, height, mode, sub_flag); + + if (width % 16 || height % 8) { + err("Invalid size (%d, %d)", width, height); + return -EINVAL; + } + + if (width < ov->minwidth || height < ov->minheight) { + err("Requested dimensions are too small"); + return -EINVAL; + } + + if (width >= 320 && height >= 240) { + hi_res = 1; + } else if (width >= 320 || height >= 240) { + err("Invalid width/height combination (%d, %d)", width, height); + return -EINVAL; + } else { + hi_res = 0; + } + + if (ov51x_stop(ov) < 0) + return -EIO; + + /******** Set the mode ********/ + + reg_w(ov, 0x2b, 0); + reg_w(ov, 0x2c, 0); + reg_w(ov, 0x2d, 0); + reg_w(ov, 0x2e, 0); + reg_w(ov, 0x3b, 0); + reg_w(ov, 0x3c, 0); + reg_w(ov, 0x3d, 0); + reg_w(ov, 0x3e, 0); + + if (ov->bridge == BRG_OV518 && ov518_color) { + if (mode == VIDEO_PALETTE_GREY) { + /* Set 16-bit input format (UV data are ignored) */ + reg_w_mask(ov, 0x20, 0x00, 0x08); + + /* Set 8-bit (4:0:0) output format */ + reg_w_mask(ov, 0x28, 0x00, 0xf0); + reg_w_mask(ov, 0x38, 0x00, 0xf0); + } else { + /* Set 8-bit (YVYU) input format */ + reg_w_mask(ov, 0x20, 0x08, 0x08); + + /* Set 12-bit (4:2:0) output format */ + reg_w_mask(ov, 0x28, 0x80, 0xf0); + reg_w_mask(ov, 0x38, 0x80, 0xf0); + } + } else { + reg_w(ov, 0x28, (mode == VIDEO_PALETTE_GREY) ? 0x00:0x80); + reg_w(ov, 0x38, (mode == VIDEO_PALETTE_GREY) ? 0x00:0x80); + } + + hsegs = width / 16; + vsegs = height / 4; + + reg_w(ov, 0x29, hsegs); + reg_w(ov, 0x2a, vsegs); + + reg_w(ov, 0x39, hsegs); + reg_w(ov, 0x3a, vsegs); + + /* Windows driver does this here; who knows why */ + reg_w(ov, 0x2f, 0x80); + + /******** Set the framerate (to 30 FPS) ********/ + + /* Mode independent, but framerate dependent, regs */ + reg_w(ov, 0x51, 0x04); /* Clock divider; lower==faster */ + reg_w(ov, 0x22, 0x18); + reg_w(ov, 0x23, 0xff); + + if (ov->bridge == BRG_OV518PLUS) + reg_w(ov, 0x21, 0x19); + else + reg_w(ov, 0x71, 0x17); /* Compression-related? */ + + // FIXME: Sensor-specific + /* Bit 5 is what matters here. Of course, it is "reserved" */ + i2c_w(ov, 0x54, 0x23); + + reg_w(ov, 0x2f, 0x80); + + if (ov->bridge == BRG_OV518PLUS) { + reg_w(ov, 0x24, 0x94); + reg_w(ov, 0x25, 0x90); + ov518_reg_w32(ov, 0xc4, 400, 2); /* 190h */ + ov518_reg_w32(ov, 0xc6, 540, 2); /* 21ch */ + ov518_reg_w32(ov, 0xc7, 540, 2); /* 21ch */ + ov518_reg_w32(ov, 0xc8, 108, 2); /* 6ch */ + ov518_reg_w32(ov, 0xca, 131098, 3); /* 2001ah */ + ov518_reg_w32(ov, 0xcb, 532, 2); /* 214h */ + ov518_reg_w32(ov, 0xcc, 2400, 2); /* 960h */ + ov518_reg_w32(ov, 0xcd, 32, 2); /* 20h */ + ov518_reg_w32(ov, 0xce, 608, 2); /* 260h */ + } else { + reg_w(ov, 0x24, 0x9f); + reg_w(ov, 0x25, 0x90); + ov518_reg_w32(ov, 0xc4, 400, 2); /* 190h */ + ov518_reg_w32(ov, 0xc6, 381, 2); /* 17dh */ + ov518_reg_w32(ov, 0xc7, 381, 2); /* 17dh */ + ov518_reg_w32(ov, 0xc8, 128, 2); /* 80h */ + ov518_reg_w32(ov, 0xca, 183331, 3); /* 2cc23h */ + ov518_reg_w32(ov, 0xcb, 746, 2); /* 2eah */ + ov518_reg_w32(ov, 0xcc, 1750, 2); /* 6d6h */ + ov518_reg_w32(ov, 0xcd, 45, 2); /* 2dh */ + ov518_reg_w32(ov, 0xce, 851, 2); /* 353h */ + } + + reg_w(ov, 0x2f, 0x80); + + if (ov51x_restart(ov) < 0) + return -EIO; + + /* Reset it just for good measure */ + if (ov51x_reset(ov, OV511_RESET_NOREGS) < 0) + return -EIO; + + return 0; +} + +/* Sets up the OV519 with the given image parameters + * + * OV519 needs a completely different approach, until we can figure out what + * the individual registers do. + * + * Do not put any sensor-specific code in here (including I2C I/O functions) + */ +static int +ov519_mode_init_regs(struct usb_ov511 *ov, + int width, int height, int mode, int sub_flag) +{ + static struct ov511_regvals regvals_mode_init_519[] = { + { OV511_REG_BUS, 0x5d, 0x03 }, /* Turn off suspend mode */ + { OV511_REG_BUS, 0x53, 0x9f }, /* was 9b in 1.65-1.08 */ + { OV511_REG_BUS, 0x54, 0x0f }, /* bit2 (jpeg enable) */ + { OV511_REG_BUS, 0xa2, 0x20 }, /* a2-a5 are undocumented */ + { OV511_REG_BUS, 0xa3, 0x18 }, + { OV511_REG_BUS, 0xa4, 0x04 }, + { OV511_REG_BUS, 0xa5, 0x28 }, + { OV511_REG_BUS, 0x37, 0x00 }, /* SetUsbInit */ + { OV511_REG_BUS, 0x55, 0x02 }, /* 4.096 Mhz audio clock */ + /* Enable both fields, YUV Input, disable defect comp (why?) */ + { OV511_REG_BUS, 0x22, 0x1d }, + { OV511_REG_BUS, 0x17, 0x50 }, /* undocumented */ + { OV511_REG_BUS, 0x37, 0x00 }, /* undocumented */ + { OV511_REG_BUS, 0x40, 0xff }, /* I2C timeout counter */ + { OV511_REG_BUS, 0x46, 0x00 }, /* I2C clock prescaler */ + { OV511_REG_BUS, 0x59, 0x04 }, /* new from windrv 090403 */ + { OV511_REG_BUS, 0xff, 0x00 }, /* undocumented */ + /* windows reads 0x55 at this point, why? */ + { OV511_DONE_BUS, 0x0, 0x00}, + }; + +// int hi_res; + + if (sub_flag) { + width = ov->subw; + height = ov->subh; + } + + PDEBUG(3, "width:%d, height:%d, mode:%d, sub:%d", + width, height, mode, sub_flag); + + if ((width % 16) || (height % 8)) { + err("Invalid size (%d, %d)", width, height); + return -EINVAL; + } + + if (width < ov->minwidth || height < ov->minheight) { + err("Requested dimensions are too small %dx%d", width, height); + return -EINVAL; + } + +// if (width >= 800 && height >= 600) { +// hi_res = 1; +// } else + if (width > ov->maxwidth || height > ov->maxheight) { + err("Requested dimensions are too big %dx%d", width, height); + return -EINVAL; + } +// else { +// hi_res = 0; +// } + + if (ov51x_stop(ov) < 0) + return -EIO; + + /******** Set the mode ********/ + + if (write_regvals(ov, regvals_mode_init_519)) + return -EIO; + + if (ov->sensor == SEN_OV7640) { + /* Select 8-bit input mode */ + reg_w_mask(ov, OV519_CAM_DFR, 0x10, 0x10); + } + + reg_w(ov, OV519_CAM_H_SIZE, width>>4); + reg_w(ov, OV519_CAM_V_SIZE, height>>3); + reg_w(ov, OV519_CAM_X_OFFSETL, 0x00); + reg_w(ov, OV519_CAM_X_OFFSETH, 0x00); + reg_w(ov, OV519_CAM_Y_OFFSETL, 0x00); + reg_w(ov, OV519_CAM_Y_OFFSETH, 0x00); + reg_w(ov, OV519_CAM_DIVIDER, 0x00); + reg_w(ov, OV519_CAM_FORMAT, 0x03); /* YUV422 */ + reg_w(ov, 0x26, 0x00); /* Undocumented */ + + + /******** Set the framerate ********/ + if (framerate > 0) { + ov->framerate = framerate; + } + +// FIXME: These are only valid at the max resolution. + if (ov->sensor == SEN_OV7640) { + switch (ov->framerate) { + case 30: + reg_w(ov, 0xa4, 0x0c); + reg_w(ov, 0x23, 0xff); + ov->clockdiv = 0; + break; + case 25: + reg_w(ov, 0xa4, 0x0c); + reg_w(ov, 0x23, 0x1f); + ov->clockdiv = 0; + break; + case 20: + reg_w(ov, 0xa4, 0x0c); + reg_w(ov, 0x23, 0x1b); + ov->clockdiv = 0; + break; + case 15: + reg_w(ov, 0xa4, 0x04); + reg_w(ov, 0x23, 0xff); + ov->clockdiv = 1; + break; + case 10: + reg_w(ov, 0xa4, 0x04); + reg_w(ov, 0x23, 0x1f); + ov->clockdiv = 1; + break; + case 5: + reg_w(ov, 0xa4, 0x04); + reg_w(ov, 0x23, 0x1b); + ov->clockdiv = 1; + break; + default: // 30 fps + reg_w(ov, 0xa4, 0x0c); + reg_w(ov, 0x23, 0xff); + ov->clockdiv = 0; + } + } else if (ov->sensor == SEN_OV8610) { + switch (ov->framerate) { + case 15: + reg_w(ov, 0xa4, 0x06); + reg_w(ov, 0x23, 0xff); + break; + case 10: + reg_w(ov, 0xa4, 0x06); + reg_w(ov, 0x23, 0x1f); + break; + case 5: + reg_w(ov, 0xa4, 0x06); + reg_w(ov, 0x23, 0x1b); + break; + default: // 15 fps + reg_w(ov, 0xa4, 0x06); + reg_w(ov, 0x23, 0xff); + } + + ov->clockdiv = 0; + } else { + err("Sensor not supported for OV519!"); + return -EINVAL; + } + + if (ov51x_restart(ov) < 0) + return -EIO; + + /* Reset it just for good measure */ + if (ov51x_reset(ov, OV511_RESET_NOREGS) < 0) + return -EIO; + + return 0; +} + +/* This is a wrapper around the OV511, OV518, and sensor specific functions */ +static int +mode_init_regs(struct usb_ov511 *ov, + int width, int height, int mode, int sub_flag) +{ + int rc = 0; + + if (!ov || !ov->dev) + return -EFAULT; + + switch (ov->bclass) { + case BCL_OV511: + rc = ov511_mode_init_regs(ov, width, height, mode, sub_flag); + break; + case BCL_OV518: + rc = ov518_mode_init_regs(ov, width, height, mode, sub_flag); + break; + case BCL_OV519: + rc = ov519_mode_init_regs(ov, width, height, mode, sub_flag); + break; + default: + err("mode_init_regs: Invalid bridge class"); + rc = -EINVAL; + } + + if (FATAL_ERROR(rc)) + return rc; + + switch (ov->sensor) { + case SEN_OV8610: + case SEN_OV7610: + case SEN_OV7620: + case SEN_OV76BE: + case SEN_OV7640: + case SEN_OV8600: + case SEN_OV6620: + case SEN_OV6630: + rc = ov_sensor_mode_setup(ov, width, height, mode, sub_flag); + break; + + case SEN_SAA7111A: +// rc = mode_init_saa_sensor_regs(ov, width, height, mode, +// sub_flag); + + PDEBUG(1, "SAA status = 0x%02X", i2c_r(ov, 0x1f)); + break; + default: + rc = -EINVAL; + } + + if (FATAL_ERROR(rc)) + return rc; + + /* Sensor-independent settings */ + rc = sensor_set_auto_brightness(ov, ov->auto_brt); + if (FATAL_ERROR(rc)) + return rc; + + rc = sensor_set_auto_exposure(ov, ov->auto_exp); + if (FATAL_ERROR(rc)) + return rc; + + rc = sensor_set_auto_gain(ov, ov->auto_gain); + if (FATAL_ERROR(rc)) + return rc; + + rc = sensor_set_banding_filter(ov, bandingfilter); + if (FATAL_ERROR(rc)) + return rc; + + if (ov->lightfreq) { + rc = sensor_set_light_freq(ov, lightfreq); + if (FATAL_ERROR(rc)) + return rc; + } + + rc = sensor_set_backlight(ov, ov->backlight); + if (FATAL_ERROR(rc)) + return rc; + + rc = sensor_set_mirror(ov, ov->mirror); + if (FATAL_ERROR(rc)) + return rc; + + return 0; +} + +/* This sets the default image parameters. This is useful for apps that use + * read() and do not set these. + */ +static int +ov51x_set_default_params(struct usb_ov511 *ov) +{ + int i; + + /* Set default sizes in case IOCTL (VIDIOCMCAPTURE) is not used + * (using read() instead). */ + for (i = 0; i < OV511_NUMFRAMES; i++) { + ov->frame[i].width = ov->maxwidth; + ov->frame[i].height = ov->maxheight; + ov->frame[i].bytes_read = 0; + if (force_palette) + ov->frame[i].format = force_palette; + else +#ifdef OV511_ALLOW_CONVERSION + ov->frame[i].format = VIDEO_PALETTE_RGB24; +#else + ov->frame[i].format = VIDEO_PALETTE_YUV420; +#endif + ov->frame[i].depth = get_depth(ov->frame[i].format); + } + + PDEBUG(3, "%dx%d, %s", ov->maxwidth, ov->maxheight, + symbolic(v4l1_plist, ov->frame[0].format)); + + /* Initialize to max width/height, YUV420 or RGB24 (if supported) */ + if (mode_init_regs(ov, ov->maxwidth, ov->maxheight, + ov->frame[0].format, 0) < 0) + return -EINVAL; + + return 0; +} + +/********************************************************************** + * + * Video decoder stuff + * + **********************************************************************/ + +/* Set analog input port of decoder */ +static int +decoder_set_input(struct usb_ov511 *ov, int input) +{ + PDEBUG(4, "port %d", input); + + switch (ov->sensor) { + case SEN_SAA7111A: + { + /* Select mode */ + i2c_w_mask(ov, 0x02, input, 0x07); + /* Bypass chrominance trap for modes 4..7 */ + i2c_w_mask(ov, 0x09, (input > 3) ? 0x80:0x00, 0x80); + break; + } + default: + return -EINVAL; + } + + return 0; +} + +/* Get ASCII name of video input */ +static int +decoder_get_input_name(struct usb_ov511 *ov, int input, char *name) +{ + switch (ov->sensor) { + case SEN_SAA7111A: + { + if (input < 0 || input > 7) + return -EINVAL; + else if (input < 4) + sprintf(name, "CVBS-%d", input); + else // if (input < 8) + sprintf(name, "S-Video-%d", input - 4); + break; + } + default: + sprintf(name, "%s", "Camera"); + } + + return 0; +} + +/* Set norm (NTSC, PAL, SECAM, AUTO) */ +static int +decoder_set_norm(struct usb_ov511 *ov, int norm) +{ + PDEBUG(4, "%d", norm); + + switch (ov->sensor) { + case SEN_SAA7111A: + { + int reg_8, reg_e; + + if (norm == VIDEO_MODE_NTSC) { + reg_8 = 0x40; /* 60 Hz */ + reg_e = 0x00; /* NTSC M / PAL BGHI */ + } else if (norm == VIDEO_MODE_PAL) { + reg_8 = 0x00; /* 50 Hz */ + reg_e = 0x00; /* NTSC M / PAL BGHI */ + } else if (norm == VIDEO_MODE_AUTO) { + reg_8 = 0x80; /* Auto field detect */ + reg_e = 0x00; /* NTSC M / PAL BGHI */ + } else if (norm == VIDEO_MODE_SECAM) { + reg_8 = 0x00; /* 50 Hz */ + reg_e = 0x50; /* SECAM / PAL 4.43 */ + } else { + return -EINVAL; + } + + i2c_w_mask(ov, 0x08, reg_8, 0xc0); + i2c_w_mask(ov, 0x0e, reg_e, 0x70); + break; + } + default: + return -EINVAL; + } + + return 0; +} + +#ifdef OV511_ALLOW_CONVERSION +/********************************************************************** + * + * Color correction functions + * + **********************************************************************/ + +/* + * Turn a YUV4:2:0 block into an RGB block + * + * Video4Linux seems to use the blue, green, red channel + * order convention-- rgb[0] is blue, rgb[1] is green, rgb[2] is red. + * + * Color space conversion coefficients taken from the excellent + * http://www.inforamp.net/~poynton/ColorFAQ.html + * In his terminology, this is a CCIR 601.1 YCbCr -> RGB. + * Y values are given for all 4 pixels, but the U (Pb) + * and V (Pr) are assumed constant over the 2x2 block. + * + * To avoid floating point arithmetic, the color conversion + * coefficients are scaled into 16.16 fixed-point integers. + * They were determined as follows: + * + * double brightness = 1.0; (0->black; 1->full scale) + * double saturation = 1.0; (0->greyscale; 1->full color) + * double fixScale = brightness * 256 * 256; + * int rvScale = (int)(1.402 * saturation * fixScale); + * int guScale = (int)(-0.344136 * saturation * fixScale); + * int gvScale = (int)(-0.714136 * saturation * fixScale); + * int buScale = (int)(1.772 * saturation * fixScale); + * int yScale = (int)(fixScale); + */ + +/* LIMIT: convert a 16.16 fixed-point value to a byte, with clipping. */ +#define LIMIT(x) ((x)>0xffffff?0xff: ((x)<=0xffff?0:((x)>>16))) + +static inline void +move_420_block(int yTL, int yTR, int yBL, int yBR, int u, int v, + int rowPixels, unsigned char * rgb, int bits) +{ + const int rvScale = 91881; + const int guScale = -22553; + const int gvScale = -46801; + const int buScale = 116129; + const int yScale = 65536; + int r, g, b; + + g = guScale * u + gvScale * v; + if (force_rgb) { + r = buScale * u; + b = rvScale * v; + } else { + r = rvScale * v; + b = buScale * u; + } + + yTL *= yScale; yTR *= yScale; + yBL *= yScale; yBR *= yScale; + + if (bits == 24) { + /* Write out top two pixels */ + rgb[0] = LIMIT(b+yTL); rgb[1] = LIMIT(g+yTL); + rgb[2] = LIMIT(r+yTL); + + rgb[3] = LIMIT(b+yTR); rgb[4] = LIMIT(g+yTR); + rgb[5] = LIMIT(r+yTR); + + /* Skip down to next line to write out bottom two pixels */ + rgb += 3 * rowPixels; + rgb[0] = LIMIT(b+yBL); rgb[1] = LIMIT(g+yBL); + rgb[2] = LIMIT(r+yBL); + + rgb[3] = LIMIT(b+yBR); rgb[4] = LIMIT(g+yBR); + rgb[5] = LIMIT(r+yBR); + } else if (bits == 16) { + /* Write out top two pixels */ + rgb[0] = ((LIMIT(b+yTL) >> 3) & 0x1F) + | ((LIMIT(g+yTL) << 3) & 0xE0); + rgb[1] = ((LIMIT(g+yTL) >> 5) & 0x07) + | (LIMIT(r+yTL) & 0xF8); + + rgb[2] = ((LIMIT(b+yTR) >> 3) & 0x1F) + | ((LIMIT(g+yTR) << 3) & 0xE0); + rgb[3] = ((LIMIT(g+yTR) >> 5) & 0x07) + | (LIMIT(r+yTR) & 0xF8); + + /* Skip down to next line to write out bottom two pixels */ + rgb += 2 * rowPixels; + + rgb[0] = ((LIMIT(b+yBL) >> 3) & 0x1F) + | ((LIMIT(g+yBL) << 3) & 0xE0); + rgb[1] = ((LIMIT(g+yBL) >> 5) & 0x07) + | (LIMIT(r+yBL) & 0xF8); + + rgb[2] = ((LIMIT(b+yBR) >> 3) & 0x1F) + | ((LIMIT(g+yBR) << 3) & 0xE0); + rgb[3] = ((LIMIT(g+yBR) >> 5) & 0x07) + | (LIMIT(r+yBR) & 0xF8); + } +} + +#endif /* OV511_ALLOW_CONVERSION */ + +/********************************************************************** + * + * Raw data parsing + * + **********************************************************************/ + +/* Copies a 64-byte segment at pIn to an 8x8 block at pOut. The width of the + * image at pOut is specified by w. + */ +static inline void +make_8x8(unsigned char *pIn, unsigned char *pOut, int w) +{ + unsigned char *pOut1 = pOut; + int x, y; + + for (y = 0; y < 8; y++) { + pOut1 = pOut; + for (x = 0; x < 8; x++) { + *pOut1++ = *pIn++; + } + pOut += w; + } +} + +/* + * For RAW BW (YUV 4:0:0) images, data show up in 256 byte segments. + * The segments represent 4 squares of 8x8 pixels as follows: + * + * 0 1 ... 7 64 65 ... 71 ... 192 193 ... 199 + * 8 9 ... 15 72 73 ... 79 200 201 ... 207 + * ... ... ... + * 56 57 ... 63 120 121 ... 127 248 249 ... 255 + * + */ +static void +yuv400raw_to_yuv400p(struct ov511_frame *frame, + unsigned char *pIn0, unsigned char *pOut0) +{ + int x, y; + unsigned char *pIn, *pOut, *pOutLine; + + /* Copy Y */ + pIn = pIn0; + pOutLine = pOut0; + for (y = 0; y < frame->rawheight - 1; y += 8) { + pOut = pOutLine; + for (x = 0; x < frame->rawwidth - 1; x += 8) { + make_8x8(pIn, pOut, frame->rawwidth); + pIn += 64; + pOut += 8; + } + pOutLine += 8 * frame->rawwidth; + } +} + +/* + * For YUV 4:2:0 images, the data show up in 384 byte segments. + * The first 64 bytes of each segment are U, the next 64 are V. The U and + * V are arranged as follows: + * + * 0 1 ... 7 + * 8 9 ... 15 + * ... + * 56 57 ... 63 + * + * U and V are shipped at half resolution (1 U,V sample -> one 2x2 block). + * + * The next 256 bytes are full resolution Y data and represent 4 squares + * of 8x8 pixels as follows: + * + * 0 1 ... 7 64 65 ... 71 ... 192 193 ... 199 + * 8 9 ... 15 72 73 ... 79 200 201 ... 207 + * ... ... ... + * 56 57 ... 63 120 121 ... 127 ... 248 249 ... 255 + * + * Note that the U and V data in one segment represent a 16 x 16 pixel + * area, but the Y data represent a 32 x 8 pixel area. If the width is not an + * even multiple of 32, the extra 8x8 blocks within a 32x8 block belong to the + * next horizontal stripe. + * + * If dumppix module param is set, _parse_data just dumps the incoming segments, + * verbatim, in order, into the frame. When used with vidcat -f ppm -s 640x480 + * this puts the data on the standard output and can be analyzed with the + * parseppm.c utility I wrote. That's a much faster way for figuring out how + * these data are scrambled. + */ + +/* Converts from raw, uncompressed segments at pIn0 to a YUV420P frame at pOut0. + * + * FIXME: Currently only handles width and height that are multiples of 16 + */ +static void +yuv420raw_to_yuv420p(struct ov511_frame *frame, + unsigned char *pIn0, unsigned char *pOut0) +{ + int k, x, y; + unsigned char *pIn, *pOut, *pOutLine; + const unsigned int a = frame->rawwidth * frame->rawheight; + const unsigned int w = frame->rawwidth / 2; + + /* Copy U and V */ + pIn = pIn0; + pOutLine = pOut0 + a; + for (y = 0; y < frame->rawheight - 1; y += 16) { + pOut = pOutLine; + for (x = 0; x < frame->rawwidth - 1; x += 16) { + make_8x8(pIn, pOut, w); + make_8x8(pIn + 64, pOut + a/4, w); + pIn += 384; + pOut += 8; + } + pOutLine += 8 * w; + } + + /* Copy Y */ + pIn = pIn0 + 128; + pOutLine = pOut0; + k = 0; + for (y = 0; y < frame->rawheight - 1; y += 8) { + pOut = pOutLine; + for (x = 0; x < frame->rawwidth - 1; x += 8) { + make_8x8(pIn, pOut, frame->rawwidth); + pIn += 64; + pOut += 8; + if ((++k) > 3) { + k = 0; + pIn += 128; + } + } + pOutLine += 8 * frame->rawwidth; + } +} + +#ifdef OV511_ALLOW_CONVERSION +/* + * fixFrameRGBoffset-- + * My camera seems to return the red channel about 1 pixel + * low, and the blue channel about 1 pixel high. After YUV->RGB + * conversion, we can correct this easily. OSL 2/24/2000. + */ +static void +fixFrameRGBoffset(struct ov511_frame *frame) +{ + int x, y; + int rowBytes = frame->width*3, w = frame->width; + unsigned char *rgb = frame->data; + const int shift = 1; /* Distance to shift pixels by, vertically */ + + /* Don't bother with little images */ + if (frame->width < 400) + return; + + /* This only works with RGB24 */ + if (frame->format != VIDEO_PALETTE_RGB24) + return; + + /* Shift red channel up */ + for (y = shift; y < frame->height; y++) { + int lp = (y-shift)*rowBytes; /* Previous line offset */ + int lc = y*rowBytes; /* Current line offset */ + for (x = 0; x < w; x++) + rgb[lp+x*3+2] = rgb[lc+x*3+2]; /* Shift red up */ + } + + /* Shift blue channel down */ + for (y = frame->height-shift-1; y >= 0; y--) { + int ln = (y + shift) * rowBytes; /* Next line offset */ + int lc = y * rowBytes; /* Current line offset */ + for (x = 0; x < w; x++) + rgb[ln+x*3+0] = rgb[lc+x*3+0]; /* Shift blue down */ + } +} +#endif + +/********************************************************************** + * + * Decompression + * + **********************************************************************/ + +/* Chooses a decompression module, locks it, and sets ov->decomp_ops + * accordingly. Returns -ENXIO if decompressor is not available, otherwise + * returns 0 if no other error. + */ +static int +request_decompressor(struct usb_ov511 *ov) +{ + if (!ov) + return -ENODEV; + + if (ov->decomp_ops) { + err("ERROR: Decompressor already requested!"); + return -EINVAL; + } + + lock_kernel(); + + /* Try to get MMX, and fall back on no-MMX if necessary */ + if (ov->bclass == BCL_OV511) { + if (ov511_mmx_decomp_ops) { + PDEBUG(3, "Using OV511 MMX decompressor"); + ov->decomp_ops = ov511_mmx_decomp_ops; + } else if (ov511_decomp_ops) { + PDEBUG(3, "Using OV511 decompressor"); + ov->decomp_ops = ov511_decomp_ops; + } else { + err("No decompressor available"); + } + } else if (ov->bclass == BCL_OV518) { + if (ov518_mmx_decomp_ops) { + PDEBUG(3, "Using OV518 MMX decompressor"); + ov->decomp_ops = ov518_mmx_decomp_ops; + } else if (ov518_decomp_ops) { + PDEBUG(3, "Using OV518 decompressor"); + ov->decomp_ops = ov518_decomp_ops; + } else { + err("No decompressor available"); + } + } else if (ov->bclass == BCL_OV519) { + info("OV519 doesn't need proprietary decompressor. It uses standard JPEG"); + } else { + err("Decompressor: Unknown bridge"); + } + + if (ov->decomp_ops) { + if (!ov->decomp_ops->owner) { + ov->decomp_ops = NULL; + unlock_kernel(); + return -ENOSYS; + } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + if (! try_module_get (ov->decomp_ops->owner)) { + ov->decomp_ops = NULL; + unlock_kernel(); + return -ENOSYS; + } +#else + __MOD_INC_USE_COUNT(ov->decomp_ops->owner); +#endif + unlock_kernel(); + return 0; + } else { + unlock_kernel(); + if (ov->bclass == BCL_OV519) + return 0; + else + return -ENOSYS; + } +} + +/* Unlocks decompression module and nulls ov->decomp_ops. Safe to call even + * if ov->decomp_ops is NULL. + */ +static void +release_decompressor(struct usb_ov511 *ov) +{ + int released = 0; /* Did we actually do anything? */ + + if (!ov) + return; + + if (ov->bclass == BCL_OV519) { + ov->compress_inited = 0; + return; + } + + lock_kernel(); + + if (ov->decomp_ops && ov->decomp_ops->owner) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + module_put(ov->decomp_ops->owner); +#else + __MOD_DEC_USE_COUNT(ov->decomp_ops->owner); +#endif + released = 1; + } + + ov->decomp_ops = NULL; + + unlock_kernel(); + + if (released) + PDEBUG(3, "Decompressor released"); +} + +static void +decompress(struct usb_ov511 *ov, struct ov511_frame *frame, + unsigned char *pIn0, unsigned char *pOut0) +{ + if (!ov->decomp_ops) + if (request_decompressor(ov)) + return; + + PDEBUG(4, "Decompressing %d bytes", frame->bytes_recvd); + + if (frame->format == VIDEO_PALETTE_GREY + && ov->decomp_ops->decomp_400) { + int ret = ov->decomp_ops->decomp_400( + pIn0, + pOut0, + frame->compbuf, + frame->rawwidth, + frame->rawheight, + frame->bytes_recvd); + PDEBUG(4, "DEBUG: decomp_400 returned %d", ret); + } else if (frame->format != VIDEO_PALETTE_GREY + && ov->decomp_ops->decomp_420) { + int ret = ov->decomp_ops->decomp_420( + pIn0, + pOut0, + frame->compbuf, + frame->rawwidth, + frame->rawheight, + frame->bytes_recvd); + PDEBUG(4, "DEBUG: decomp_420 returned %d", ret); + } else { + err("Decompressor does not support this format"); + } +} + +/********************************************************************** + * + * Format conversion + * + **********************************************************************/ + +#ifdef OV511_ALLOW_CONVERSION + +/* Converts from planar YUV420 to RGB24. */ +static void +yuv420p_to_rgb(struct ov511_frame *frame, + unsigned char *pIn0, unsigned char *pOut0, int bits) +{ + const int numpix = frame->width * frame->height; + const int bytes = bits >> 3; + int i, j, y00, y01, y10, y11, u, v; + unsigned char *pY = pIn0; + unsigned char *pU = pY + numpix; + unsigned char *pV = pU + numpix / 4; + unsigned char *pOut = pOut0; + + for (j = 0; j <= frame->height - 2; j += 2) { + for (i = 0; i <= frame->width - 2; i += 2) { + y00 = *pY; + y01 = *(pY + 1); + y10 = *(pY + frame->width); + y11 = *(pY + frame->width + 1); + u = (*pU++) - 128; + v = (*pV++) - 128; + + move_420_block(y00, y01, y10, y11, u, v, + frame->width, pOut, bits); + + pY += 2; + pOut += 2 * bytes; + } + pY += frame->width; + pOut += frame->width * bytes; + } +} + +/* Converts from planar YUV420 to YUV422 (YUYV). */ +static void +yuv420p_to_yuv422(struct ov511_frame *frame, + unsigned char *pIn0, unsigned char *pOut0) +{ + const int numpix = frame->width * frame->height; + int i, j; + unsigned char *pY = pIn0; + unsigned char *pU = pY + numpix; + unsigned char *pV = pU + numpix / 4; + unsigned char *pOut = pOut0; + + for (i = 0; i < numpix; i++) { + *pOut = *(pY + i); + pOut += 2; + } + + pOut = pOut0 + 1; + for (j = 0; j <= frame->height - 2 ; j += 2) { + for (i = 0; i <= frame->width - 2; i += 2) { + int u = *pU++; + int v = *pV++; + + *pOut = u; + *(pOut+2) = v; + *(pOut+frame->width*2) = u; + *(pOut+frame->width*2+2) = v; + pOut += 4; + } + pOut += (frame->width * 2); + } +} + +/* Converts pData from planar YUV420 to planar YUV422 **in place**. */ +static void +yuv420p_to_yuv422p(struct ov511_frame *frame, unsigned char *pData) +{ + const int numpix = frame->width * frame->height; + const int w = frame->width; + int j; + unsigned char *pIn, *pOut; + + /* Clear U and V */ + memset(pData + numpix + numpix / 2, 127, numpix / 2); + + /* Convert V starting from beginning and working forward */ + pIn = pData + numpix + numpix / 4; + pOut = pData + numpix +numpix / 2; + for (j = 0; j <= frame->height - 2; j += 2) { + memmove(pOut, pIn, w/2); + memmove(pOut + w/2, pIn, w/2); + pIn += w/2; + pOut += w; + } + + /* Convert U, starting from end and working backward */ + pIn = pData + numpix + numpix / 4; + pOut = pData + numpix + numpix / 2; + for (j = 0; j <= frame->height - 2; j += 2) { + pIn -= w/2; + pOut -= w; + memmove(pOut, pIn, w/2); + memmove(pOut + w/2, pIn, w/2); + } +} + +#endif /* OV511_ALLOW_CONVERSION */ + +/* Fuses even and odd fields together, and doubles width. + * INPUT: an odd field followed by an even field at pIn0, in YUV planar format + * OUTPUT: a normal YUV planar image, with correct aspect ratio + */ +static void +deinterlace(struct ov511_frame *frame, int rawformat, + unsigned char *pIn0, unsigned char *pOut0) +{ + const int fieldheight = frame->rawheight / 2; + const int fieldpix = fieldheight * frame->rawwidth; + const int w = frame->width; + int x, y; + unsigned char *pInEven, *pInOdd, *pOut; + + PDEBUG(5, "fieldheight=%d", fieldheight); + + if (frame->rawheight != frame->height) { + err("invalid height"); + return; + } + + if ((frame->rawwidth * 2) != frame->width) { + err("invalid width"); + return; + } + + /* Y */ + pInOdd = pIn0; + pInEven = pInOdd + fieldpix; + pOut = pOut0; + for (y = 0; y < fieldheight; y++) { + for (x = 0; x < frame->rawwidth; x++) { + *pOut = *pInEven; + *(pOut+1) = *pInEven++; + *(pOut+w) = *pInOdd; + *(pOut+w+1) = *pInOdd++; + pOut += 2; + } + pOut += w; + } + + if (rawformat == RAWFMT_YUV420) { + /* U */ + pInOdd = pIn0 + fieldpix * 2; + pInEven = pInOdd + fieldpix / 4; + for (y = 0; y < fieldheight / 2; y++) { + for (x = 0; x < frame->rawwidth / 2; x++) { + *pOut = *pInEven; + *(pOut+1) = *pInEven++; + *(pOut+w/2) = *pInOdd; + *(pOut+w/2+1) = *pInOdd++; + pOut += 2; + } + pOut += w/2; + } + /* V */ + pInOdd = pIn0 + fieldpix * 2 + fieldpix / 2; + pInEven = pInOdd + fieldpix / 4; + for (y = 0; y < fieldheight / 2; y++) { + for (x = 0; x < frame->rawwidth / 2; x++) { + *pOut = *pInEven; + *(pOut+1) = *pInEven++; + *(pOut+w/2) = *pInOdd; + *(pOut+w/2+1) = *pInOdd++; + pOut += 2; + } + pOut += w/2; + } + } +} + +static void +ov51x_postprocess_grey(struct usb_ov511 *ov, struct ov511_frame *frame) +{ + /* Deinterlace frame, if necessary */ + if (ov->sensor == SEN_SAA7111A && frame->rawheight >= 480) { + if (frame->compressed) + decompress(ov, frame, frame->rawdata, + frame->tempdata); + else + yuv400raw_to_yuv400p(frame, frame->rawdata, + frame->tempdata); + + deinterlace(frame, RAWFMT_YUV400, frame->tempdata, + frame->data); + } else { + if (frame->compressed) + decompress(ov, frame, frame->rawdata, + frame->data); + else + yuv400raw_to_yuv400p(frame, frame->rawdata, + frame->data); + } +} + +#ifdef OV511_ALLOW_CONVERSION +/* Process raw YUV420 data into the format requested by the app. Conversion + * between V4L formats is allowed. + */ +static void +ov51x_postprocess_yuv420(struct usb_ov511 *ov, struct ov511_frame *frame) +{ + /* Process frame->rawdata to frame->tempdata */ + if (frame->compressed) + decompress(ov, frame, frame->rawdata, frame->tempdata); + else + yuv420raw_to_yuv420p(frame, frame->rawdata, frame->tempdata); + + /* Deinterlace frame, if necessary */ + if (ov->sensor == SEN_SAA7111A && frame->rawheight >= 480) { + memcpy(frame->rawdata, frame->tempdata, + MAX_RAW_DATA_SIZE(frame->width, frame->height)); + deinterlace(frame, RAWFMT_YUV420, frame->rawdata, + frame->tempdata); + } + + /* Frame should be (width x height) and not (rawwidth x rawheight) at + * this point. */ + + /* Process frame->tempdata to frame->data */ + switch (frame->format) { + case VIDEO_PALETTE_RGB565: + yuv420p_to_rgb(frame, frame->tempdata, frame->data, 16); + break; + case VIDEO_PALETTE_RGB24: + yuv420p_to_rgb(frame, frame->tempdata, frame->data, 24); + break; + case VIDEO_PALETTE_YUV422: + case VIDEO_PALETTE_YUYV: + yuv420p_to_yuv422(frame, frame->tempdata, frame->data); + break; + case VIDEO_PALETTE_YUV420: + case VIDEO_PALETTE_YUV420P: + memcpy(frame->data, frame->tempdata, + MAX_RAW_DATA_SIZE(frame->width, frame->height)); + break; + case VIDEO_PALETTE_YUV422P: + /* Data is converted in place, so copy it in advance */ + memcpy(frame->data, frame->tempdata, + MAX_RAW_DATA_SIZE(frame->width, frame->height)); + + yuv420p_to_yuv422p(frame, frame->data); + break; + default: + err("Cannot convert YUV420 to %s", + symbolic(v4l1_plist, frame->format)); + } + + if (fix_rgb_offset) + fixFrameRGBoffset(frame); +} + +#else /* if conversion not allowed */ + +/* Process raw YUV420 data into standard YUV420P */ +static void +ov51x_postprocess_yuv420(struct usb_ov511 *ov, struct ov511_frame *frame) +{ + /* Deinterlace frame, if necessary */ + if (ov->sensor == SEN_SAA7111A && frame->rawheight >= 480) { + if (frame->compressed) + decompress(ov, frame, frame->rawdata, frame->tempdata); + else + yuv420raw_to_yuv420p(frame, frame->rawdata, + frame->tempdata); + + deinterlace(frame, RAWFMT_YUV420, frame->tempdata, + frame->data); + } else { + if (frame->compressed) + decompress(ov, frame, frame->rawdata, frame->data); + else + yuv420raw_to_yuv420p(frame, frame->rawdata, + frame->data); + } +} +#endif /* OV511_ALLOW_CONVERSION */ + +/* Post-processes the specified frame. This consists of: + * 1. Decompress frame, if necessary + * 2. Deinterlace frame and scale to proper size, if necessary + * 3. Convert from YUV planar to destination format, if necessary + * 4. Fix the RGB offset, if necessary + */ +static void +ov51x_postprocess(struct usb_ov511 *ov, struct ov511_frame *frame) +{ + if (dumppix) { + memset(frame->data, 0, + MAX_DATA_SIZE(ov->maxwidth, ov->maxheight)); + PDEBUG(4, "Dumping %d bytes", frame->bytes_recvd); + memcpy(frame->data, frame->rawdata, frame->bytes_recvd); + } else { + switch (frame->format) { + case VIDEO_PALETTE_GREY: + ov51x_postprocess_grey(ov, frame); + break; + case VIDEO_PALETTE_YUV420: + case VIDEO_PALETTE_YUV420P: +#ifdef OV511_ALLOW_CONVERSION + case VIDEO_PALETTE_RGB565: + case VIDEO_PALETTE_RGB24: + case VIDEO_PALETTE_YUV422: + case VIDEO_PALETTE_YUYV: + case VIDEO_PALETTE_YUV422P: +#endif + ov51x_postprocess_yuv420(ov, frame); + break; + default: + err("Cannot convert data to %s", + symbolic(v4l1_plist, frame->format)); + } + } +} + +/********************************************************************** + * + * OV51x data transfer, IRQ handler + * + **********************************************************************/ + +static inline void +ov511_move_data(struct usb_ov511 *ov, unsigned char *in, int n) +{ + int num, offset; + int pnum = in[ov->packet_size - 1]; /* Get packet number */ + int max_raw = MAX_RAW_DATA_SIZE(ov->maxwidth, ov->maxheight); + struct ov511_frame *frame = &ov->frame[ov->curframe]; + struct timeval *ts; + + /* SOF/EOF packets have 1st to 8th bytes zeroed and the 9th + * byte non-zero. The EOF packet has image width/height in the + * 10th and 11th bytes. The 9th byte is given as follows: + * + * bit 7: EOF + * 6: compression enabled + * 5: 422/420/400 modes + * 4: 422/420/400 modes + * 3: 1 + * 2: snapshot button on + * 1: snapshot frame + * 0: even/odd field + */ + + if (printph) { + info("ph(%3d): %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x", + pnum, in[0], in[1], in[2], in[3], in[4], in[5], in[6], + in[7], in[8], in[9], in[10], in[11]); + } + + /* Check for SOF/EOF packet */ + if ((in[0] | in[1] | in[2] | in[3] | in[4] | in[5] | in[6] | in[7]) || + (~in[8] & 0x08)) + goto check_middle; + + /* Frame end */ + if (in[8] & 0x80) { + ts = (struct timeval *)(frame->data + + MAX_FRAME_SIZE(ov->maxwidth, ov->maxheight)); + do_gettimeofday(ts); + + /* Get the actual frame size from the EOF header */ + frame->rawwidth = ((int)(in[9]) + 1) * 8; + frame->rawheight = ((int)(in[10]) + 1) * 8; + + PDEBUG(4, "Frame end, frame=%d, pnum=%d, w=%d, h=%d, recvd=%d", + ov->curframe, pnum, frame->rawwidth, frame->rawheight, + frame->bytes_recvd); + + /* Validate the header data */ + RESTRICT_TO_RANGE(frame->rawwidth, ov->minwidth, ov->maxwidth); + RESTRICT_TO_RANGE(frame->rawheight, ov->minheight, + ov->maxheight); + + /* Don't allow byte count to exceed buffer size */ + RESTRICT_TO_RANGE(frame->bytes_recvd, 8, max_raw); + + if (frame->scanstate == STATE_LINES) { + int nextf; + + frame->grabstate = FRAME_DONE; + wake_up_interruptible(&frame->wq); + + /* If next frame is ready or grabbing, + * point to it */ + nextf = (ov->curframe + 1) % OV511_NUMFRAMES; + if (ov->frame[nextf].grabstate == FRAME_READY + || ov->frame[nextf].grabstate == FRAME_GRABBING) { + ov->curframe = nextf; + ov->frame[nextf].scanstate = STATE_SCANNING; + } else { + if (ov->frame[nextf].grabstate == FRAME_DONE) { + PDEBUG(4, "No empty frames left"); + } else { + PDEBUG(4, "Frame not ready? state = %d", + ov->frame[nextf].grabstate); + } + + ov->curframe = -1; + } + } else { + PDEBUG(5, "Frame done, but not scanning"); + } + /* Image corruption caused by misplaced frame->segment = 0 + * fixed by carlosf@conectiva.com.br + */ + } else { + /* Frame start */ + PDEBUG(4, "Frame start, framenum = %d", ov->curframe); + + /* Check to see if it's a snapshot frame */ + /* FIXME?? Should the snapshot reset go here? Performance? */ + if (in[8] & 0x02) { + frame->snapshot = 1; + PDEBUG(3, "snapshot detected"); + } + + frame->scanstate = STATE_LINES; + frame->bytes_recvd = 0; + frame->compressed = in[8] & 0x40; + } + +check_middle: + /* Are we in a frame? */ + if (frame->scanstate != STATE_LINES) { + PDEBUG(5, "Not in a frame; packet skipped"); + return; + } + + /* If frame start, skip header */ + if (frame->bytes_recvd == 0) + offset = 9; + else + offset = 0; + + num = n - offset - 1; + + /* Dump all data exactly as received */ + if (dumppix == 2) { + frame->bytes_recvd += n - 1; + if (frame->bytes_recvd <= max_raw) + memcpy(frame->rawdata + frame->bytes_recvd - (n - 1), + in, n - 1); + else + PDEBUG(3, "Raw data buffer overrun!! (%d)", + frame->bytes_recvd - max_raw); + } else if (!frame->compressed && !remove_zeros) { + frame->bytes_recvd += num; + if (frame->bytes_recvd <= max_raw) + memcpy(frame->rawdata + frame->bytes_recvd - num, + in + offset, num); + else + PDEBUG(3, "Raw data buffer overrun!! (%d)", + frame->bytes_recvd - max_raw); + } else { /* Remove all-zero FIFO lines (aligned 32-byte blocks) */ + int b, read = 0, allzero, copied = 0; + if (offset) { + frame->bytes_recvd += 32 - offset; // Bytes out + memcpy(frame->rawdata, in + offset, 32 - offset); + read += 32; + } + + while (read < n - 1) { + allzero = 1; + for (b = 0; b < 32; b++) { + if (in[read + b]) { + allzero = 0; + break; + } + } + + if (allzero) { + /* Don't copy it */ + } else { + if (frame->bytes_recvd + copied + 32 <= max_raw) + { + memcpy(frame->rawdata + + frame->bytes_recvd + copied, + in + read, 32); + copied += 32; + } else { + PDEBUG(3, "Raw data buffer overrun!!"); + } + } + read += 32; + } + + frame->bytes_recvd += copied; + } +} + +static inline void +ov518_move_data(struct usb_ov511 *ov, unsigned char *in, int n) +{ + int max_raw = MAX_RAW_DATA_SIZE(ov->maxwidth, ov->maxheight); + struct ov511_frame *frame = &ov->frame[ov->curframe]; + struct timeval *ts; + + /* Don't copy the packet number byte */ + if (ov->packet_numbering) + --n; + + /* A false positive here is likely, until OVT gives me + * the definitive SOF/EOF format */ + if ((!(in[0] | in[1] | in[2] | in[3] | in[5])) && in[6]) { + if (printph) { + info("ph: %2x %2x %2x %2x %2x %2x %2x %2x", in[0], + in[1], in[2], in[3], in[4], in[5], in[6], in[7]); + } + + if (frame->scanstate == STATE_LINES) { + PDEBUG(4, "Detected frame end/start"); + goto eof; + } else { //scanstate == STATE_SCANNING + /* Frame start */ + PDEBUG(4, "Frame start, framenum = %d", ov->curframe); + goto sof; + } + } else { + goto check_middle; + } + +eof: + ts = (struct timeval *)(frame->data + + MAX_FRAME_SIZE(ov->maxwidth, ov->maxheight)); + do_gettimeofday(ts); + + PDEBUG(4, "Frame end, curframe = %d, hw=%d, vw=%d, recvd=%d", + ov->curframe, + (int)(in[9]), (int)(in[10]), frame->bytes_recvd); + + // FIXME: Since we don't know the header formats yet, + // there is no way to know what the actual image size is + frame->rawwidth = frame->width; + frame->rawheight = frame->height; + + /* Validate the header data */ + RESTRICT_TO_RANGE(frame->rawwidth, ov->minwidth, ov->maxwidth); + RESTRICT_TO_RANGE(frame->rawheight, ov->minheight, ov->maxheight); + + /* Don't allow byte count to exceed buffer size */ + RESTRICT_TO_RANGE(frame->bytes_recvd, 8, max_raw); + + if (frame->scanstate == STATE_LINES) { + int nextf; + + frame->grabstate = FRAME_DONE; + wake_up_interruptible(&frame->wq); + + /* If next frame is ready or grabbing, + * point to it */ + nextf = (ov->curframe + 1) % OV511_NUMFRAMES; + if (ov->frame[nextf].grabstate == FRAME_READY + || ov->frame[nextf].grabstate == FRAME_GRABBING) { + ov->curframe = nextf; + ov->frame[nextf].scanstate = STATE_SCANNING; + frame = &ov->frame[nextf]; + } else { + if (ov->frame[nextf].grabstate == FRAME_DONE) { + PDEBUG(4, "No empty frames left"); + } else { + PDEBUG(4, "Frame not ready? state = %d", + ov->frame[nextf].grabstate); + } + + ov->curframe = -1; + PDEBUG(4, "SOF dropped (no active frame)"); + return; /* Nowhere to store this frame */ + } + } +sof: + PDEBUG(4, "Starting capture on frame %d", frame->framenum); + +// Snapshot not reverse-engineered yet. +#if 0 + /* Check to see if it's a snapshot frame */ + /* FIXME?? Should the snapshot reset go here? Performance? */ + if (in[8] & 0x02) { + frame->snapshot = 1; + PDEBUG(3, "snapshot detected"); + } +#endif + frame->scanstate = STATE_LINES; + frame->bytes_recvd = 0; + frame->compressed = 1; + +check_middle: + /* Are we in a frame? */ + if (frame->scanstate != STATE_LINES) { + PDEBUG(4, "scanstate: no SOF yet"); + return; + } + + /* Dump all data exactly as received */ + if (dumppix == 2) { + frame->bytes_recvd += n; + if (frame->bytes_recvd <= max_raw) + memcpy(frame->rawdata + frame->bytes_recvd - n, in, n); + else + PDEBUG(3, "Raw data buffer overrun!! (%d)", + frame->bytes_recvd - max_raw); + } else { + /* All incoming data are divided into 8-byte segments. If the + * segment contains all zero bytes, it must be skipped. These + * zero-segments allow the OV518 to mainain a constant data rate + * regardless of the effectiveness of the compression. Segments + * are aligned relative to the beginning of each isochronous + * packet. The first segment in each image is a header (the + * decompressor skips it later). + */ + + int b, read = 0, allzero, copied = 0; + + while (read < n) { + allzero = 1; + for (b = 0; b < 8; b++) { + if (in[read + b]) { + allzero = 0; + break; + } + } + + if (allzero) { + /* Don't copy it */ + } else { + if (frame->bytes_recvd + copied + 8 <= max_raw) + { + memcpy(frame->rawdata + + frame->bytes_recvd + copied, + in + read, 8); + copied += 8; + } else { + PDEBUG(3, "Raw data buffer overrun!!"); + } + } + read += 8; + } + frame->bytes_recvd += copied; + } +} + +static inline void +ov519_move_data(struct usb_ov511 *ov, unsigned char *in, int n) +{ + int max_raw = MAX_RAW_DATA_SIZE(ov->maxwidth, ov->maxheight); + struct ov511_frame *frame = &ov->frame[ov->curframe]; + struct timeval *ts; + + /* Don't copy the packet number byte */ +// if (ov->packet_numbering) +// --n; +/* Header of ov519 is 16 bytes: + * Byte Value Description + * 0 0xff magic + * 1 0xff magic + * 2 0xff magic + * 3 0xXX 0x50 = SOF, 0x51 = EOF + * 9 0xXX 0x01 initial frame without data, 0x00 standard frame with image + * 14 Lo in EOF: length of image data / 8 + * 15 Hi + */ + + // Start Of Frame + if ((in[0]==0xff) && (in[1]==0xff) && (in[2]==0xff)) { + + if (printph) { + info("ph: %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x", + in[0], in[1], in[2], in[3], in[4], in[5], in[6], in[7], + in[8], in[9], in[10], in[11], in[12], in[13], in[14], in[15]); + } + + if (in[3]==0x50) { + PDEBUG(4, "Start Of Frame, framenum = %d", ov->curframe); + goto sof; + } else if (in[3]==0x51) { + PDEBUG(4, "End Of Frame"); + goto eof; + } else { + goto check_middle; + } + } else { + goto check_middle; + } + +eof: + ts = (struct timeval *)(frame->data + + MAX_FRAME_SIZE(ov->maxwidth, ov->maxheight)); + do_gettimeofday(ts); + PDEBUG(4, "Frame end, curframe=%d, length=%d, recvd=%d", + ov->curframe, (int)((in[14]) + ((int)(in[15])<<8))<<3, frame->bytes_recvd - (jpeginfo?2:0)); + + + if (in[9]) { + PDEBUG(1, "initial frame"); + frame->scanstate = STATE_SCANNING; + return; + } + + // FIXME: Since we don't know the header formats yet, + // there is no way to know what the actual image size is + frame->rawwidth = frame->width; + frame->rawheight = frame->height; + + /* Validate the header data */ + RESTRICT_TO_RANGE(frame->rawwidth, ov->minwidth, ov->maxwidth); + RESTRICT_TO_RANGE(frame->rawheight, ov->minheight, ov->maxheight); + + /* Don't allow byte count to exceed buffer size */ + //RESTRICT_TO_RANGE(frame->bytes_recvd, 8, max_raw); + + if (frame->scanstate == STATE_LINES) { + int nextf; + + if (((int)((in[14]) + ((int)(in[15])<<8))<<3) != (frame->bytes_recvd - (jpeginfo?2:0))) { + info("Data length in header and number of received bytes differ"); + frame->scanstate = STATE_SCANNING; + return; + } + + if (jpeginfo) { + frame->data[0] = in[14]; + frame->data[1] = in[15]; + } + frame->grabstate = FRAME_DONE; + wake_up_interruptible(&frame->wq); + + /* If next frame is ready or grabbing, + * point to it */ + nextf = (ov->curframe + 1) % OV511_NUMFRAMES; + if (ov->frame[nextf].grabstate == FRAME_READY + || ov->frame[nextf].grabstate == FRAME_GRABBING) { + ov->curframe = nextf; + ov->frame[nextf].scanstate = STATE_SCANNING; + } else { + ov->curframe = -1; + } + } else { + info("EOF without SOF"); // This happens if there was no active frame when SOF arrived + } + return; + +sof: + PDEBUG(4, "Starting capture on frame %d", frame->framenum); + + // Skip SOF Header: + in += 16; + n -= 16; + + frame->scanstate = STATE_LINES; + if (jpeginfo) { + frame->bytes_recvd = 2; // Space for length bytes. Will be written at EOF + frame->data[0] = 0; + frame->data[1] = 0; + } else { + frame->bytes_recvd = 0; + } + frame->compressed = 1; + +check_middle: + /* Are we in a frame? */ + if (frame->scanstate != STATE_LINES) { + PDEBUG(4, "scanstate: no SOF yet"); + return; + } + + /* Dump all data exactly as received. It is standard JPEG */ + frame->bytes_recvd += n; + if (frame->bytes_recvd <= max_raw) { + memcpy(frame->data + frame->bytes_recvd - n, in, n); + } else { + PDEBUG(3, "Raw data buffer overrun!! (%d)", frame->bytes_recvd - max_raw); + } +} + +static void +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 51) +ov51x_isoc_irq(struct urb *urb, struct pt_regs *regs) +#else +ov51x_isoc_irq(struct urb *urb) +#endif +{ + int i; + struct usb_ov511 *ov; + struct ov511_sbuf *sbuf; + + if (!urb->context) { + PDEBUG(4, "no context"); + return; + } + + sbuf = urb->context; + ov = sbuf->ov; + + if (!ov || !ov->dev || !ov->user) { + PDEBUG(4, "no device, or not open"); + return; + } + + if (!ov->streaming) { + PDEBUG(4, "hmmm... not streaming, but got interrupt"); + return; + } + + if (urb->status == -ENOENT || urb->status == -ECONNRESET) { + PDEBUG(4, "URB unlinked"); + return; + } + + if (urb->status != -EINPROGRESS && urb->status != 0) { + err("ERROR: urb->status=%d: %s", urb->status, + symbolic(urb_errlist, urb->status)); + } + + /* Copy the data received into our frame buffer */ + PDEBUG(5, "sbuf[%d]: Moving %d packets", sbuf->n, + urb->number_of_packets); + for (i = 0; i < urb->number_of_packets; i++) { + /* Warning: Don't call *_move_data() if no frame active! */ + if (ov->curframe >= 0) { + int n = urb->iso_frame_desc[i].actual_length; + int st = urb->iso_frame_desc[i].status; + unsigned char *cdata; + + urb->iso_frame_desc[i].actual_length = 0; + urb->iso_frame_desc[i].status = 0; + + cdata = urb->transfer_buffer + + urb->iso_frame_desc[i].offset; + + if (!n) { + PDEBUG(4, "Zero-length packet"); + continue; + } + + if (st) + PDEBUG(2, "data error: [%d] len=%d, status=%d", + i, n, st); + + switch (ov->bclass) { + case BCL_OV511: + ov511_move_data(ov, cdata, n); + break; + case BCL_OV518: + ov518_move_data(ov, cdata, n); + break; + case BCL_OV519: + ov519_move_data(ov, cdata, n); + break; + default: + err("Unknown bridge device (%d)", ov->bridge); + } + } else if (waitqueue_active(&ov->wq)) { + wake_up_interruptible(&ov->wq); + } + } + + /* Resubmit this URB */ + urb->dev = ov->dev; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 4) + if ((i = usb_submit_urb(urb, GFP_ATOMIC)) != 0) +#else + if ((i = usb_submit_urb(urb)) != 0) +#endif + err("usb_submit_urb() ret %d", i); + + return; +} + +/**************************************************************************** + * + * Stream initialization and termination + * + ***************************************************************************/ + +static int +ov51x_init_isoc(struct usb_ov511 *ov) +{ + struct urb *urb; + int fx, err, n, size; + + PDEBUG(3, "*** Initializing capture ***"); + + ov->curframe = -1; + + switch (ov->bridge) { + case BRG_OV511: + if (cams == 1) size = 993; + else if (cams == 2) size = 513; + else if (cams == 3 || cams == 4) size = 257; + else { + err("\"cams\" parameter too high!"); + return -1; + } + break; + case BRG_OV511PLUS: + if (cams == 1) size = 961; + else if (cams == 2) size = 513; + else if (cams == 3 || cams == 4) size = 257; + else if (cams >= 5 && cams <= 8) size = 129; + else if (cams >= 9 && cams <= 31) size = 33; + else { + err("\"cams\" parameter too high!"); + return -1; + } + break; + case BRG_OV518: + case BRG_OV518PLUS: + if (cams == 1) size = 896; + else if (cams == 2) size = 512; + else if (cams == 3 || cams == 4) size = 256; + else if (cams >= 5 && cams <= 8) size = 128; + else { + err("\"cams\" parameter too high!"); + return -1; + } + break; + case BRG_OV519: + if (cams == 1) size = 896; + else if (cams == 2) size = 512; + else { + err("\"cams\" parameter too high!"); + return -1; + } + break; + default: + err("invalid bridge type"); + return -1; + } + + // FIXME: OV518+ is hardcoded to 15 FPS (alternate 5) for now + if (ov->bridge == BRG_OV518PLUS) { + if (packetsize == -1) { + ov518_set_packet_size(ov, 640); + } else { + info("Forcing packet size to %d", packetsize); + ov518_set_packet_size(ov, packetsize); + } + } else if (ov->bridge == BRG_OV518) { + if (packetsize == -1) { + ov518_set_packet_size(ov, 896); + } else { + info("Forcing packet size to %d", packetsize); + ov518_set_packet_size(ov, packetsize); + } + } else if (ov->bridge == BRG_OV519) { + if (packetsize == -1) { + ov519_set_packet_size(ov, size); + } else { + info("Forcing packet size to %d", packetsize); + ov519_set_packet_size(ov, packetsize); + } + } else { + if (packetsize == -1) { + ov511_set_packet_size(ov, size); + } else { + info("Forcing packet size to %d", packetsize); + ov511_set_packet_size(ov, packetsize); + } + } + + for (n = 0; n < OV511_NUMSBUF; n++) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 5) + urb = usb_alloc_urb(FRAMES_PER_DESC, GFP_KERNEL); +#else + urb = usb_alloc_urb(FRAMES_PER_DESC); +#endif + if (!urb) { + err("init isoc: usb_alloc_urb ret. NULL"); + return -ENOMEM; + } + ov->sbuf[n].urb = urb; + urb->dev = ov->dev; + urb->context = &ov->sbuf[n]; + urb->pipe = usb_rcvisocpipe(ov->dev, OV511_ENDPOINT_ADDRESS); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 45) + urb->transfer_flags = URB_ISO_ASAP; +#else + urb->transfer_flags = USB_ISO_ASAP; +#endif + urb->transfer_buffer = ov->sbuf[n].data; + urb->complete = ov51x_isoc_irq; + urb->number_of_packets = FRAMES_PER_DESC; + urb->transfer_buffer_length = ov->packet_size * FRAMES_PER_DESC; + urb->interval = 1; + for (fx = 0; fx < FRAMES_PER_DESC; fx++) { + urb->iso_frame_desc[fx].offset = ov->packet_size * fx; + urb->iso_frame_desc[fx].length = ov->packet_size; + } + } + + ov->streaming = 1; + + for (n = 0; n < OV511_NUMSBUF; n++) { + ov->sbuf[n].urb->dev = ov->dev; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 4) + err = usb_submit_urb(ov->sbuf[n].urb, GFP_KERNEL); +#else + err = usb_submit_urb(ov->sbuf[n].urb); +#endif + if (err) { + err("init isoc: usb_submit_urb(%d) ret %d", n, err); + return err; + } + } + + return 0; +} + +static void +ov51x_unlink_isoc(struct usb_ov511 *ov) +{ + int n; + + /* Unschedule all of the iso td's */ + for (n = OV511_NUMSBUF - 1; n >= 0; n--) { + if (ov->sbuf[n].urb) { +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 10) + usb_unlink_urb(ov->sbuf[n].urb); +#else + usb_kill_urb(ov->sbuf[n].urb); +#endif + usb_free_urb(ov->sbuf[n].urb); + ov->sbuf[n].urb = NULL; + } + } +} + +static void +ov51x_stop_isoc(struct usb_ov511 *ov) +{ + if (!ov->streaming || !ov->dev) + return; + + PDEBUG(3, "*** Stopping capture ***"); + + switch (ov->bclass) { + case BCL_OV511: + ov511_set_packet_size(ov, 0); + break; + case BCL_OV518: + ov518_set_packet_size(ov, 0); + break; + case BCL_OV519: + ov519_set_packet_size(ov, 0); + break; + } + ov->streaming = 0; + + ov51x_unlink_isoc(ov); +} + +static int +ov51x_new_frame(struct usb_ov511 *ov, int framenum) +{ + struct ov511_frame *frame; + int newnum; + + PDEBUG(4, "ov->curframe = %d, framenum = %d", ov->curframe, framenum); + + if (!ov->dev) + return -1; + + /* If we're not grabbing a frame right now and the other frame is */ + /* ready to be grabbed into, then use it instead */ + if (ov->curframe == -1) { + newnum = (framenum - 1 + OV511_NUMFRAMES) % OV511_NUMFRAMES; + if (ov->frame[newnum].grabstate == FRAME_READY) + framenum = newnum; + } else + return 0; + + frame = &ov->frame[framenum]; + + PDEBUG(4, "framenum = %d, width = %d, height = %d", framenum, + frame->width, frame->height); + + frame->grabstate = FRAME_GRABBING; + frame->scanstate = STATE_SCANNING; + frame->snapshot = 0; + + ov->curframe = framenum; + + /* Make sure it's not too big */ + if (frame->width > ov->maxwidth) + frame->width = ov->maxwidth; + + frame->width &= ~7L; /* Multiple of 8 */ + + if (frame->height > ov->maxheight) + frame->height = ov->maxheight; + + frame->height &= ~3L; /* Multiple of 4 */ + + return 0; +} + +/**************************************************************************** + * + * Buffer management + * + ***************************************************************************/ + +/* + * - You must acquire buf_lock before entering this function. + * - Because this code will free any non-null pointer, you must be sure to null + * them if you explicitly free them somewhere else! + */ +static void +ov51x_do_dealloc(struct usb_ov511 *ov) +{ + int i; + PDEBUG(4, "entered"); + + if (ov->fbuf) { + rvfree(ov->fbuf, OV511_NUMFRAMES + * MAX_DATA_SIZE(ov->maxwidth, ov->maxheight)); + ov->fbuf = NULL; + } + + vfree(ov->rawfbuf); + ov->rawfbuf = NULL; + + vfree(ov->tempfbuf); + ov->tempfbuf = NULL; + + for (i = 0; i < OV511_NUMSBUF; i++) { + kfree(ov->sbuf[i].data); + ov->sbuf[i].data = NULL; + } + + for (i = 0; i < OV511_NUMFRAMES; i++) { + ov->frame[i].data = NULL; + ov->frame[i].rawdata = NULL; + ov->frame[i].tempdata = NULL; + if (ov->frame[i].compbuf) { + free_page((unsigned long) ov->frame[i].compbuf); + ov->frame[i].compbuf = NULL; + } + } + + PDEBUG(4, "buffer memory deallocated"); + ov->buf_state = BUF_NOT_ALLOCATED; + PDEBUG(4, "leaving"); +} + +static int +ov51x_alloc(struct usb_ov511 *ov) +{ + int i; + const int w = ov->maxwidth; + const int h = ov->maxheight; + const int data_bufsize = OV511_NUMFRAMES * MAX_DATA_SIZE(w, h); + const int raw_bufsize = OV511_NUMFRAMES * MAX_RAW_DATA_SIZE(w, h); + + PDEBUG(4, "entered"); + down(&ov->buf_lock); + + if (ov->buf_state == BUF_ALLOCATED) + goto out; + + ov->fbuf = rvmalloc(data_bufsize); + if (!ov->fbuf) + goto error; + + ov->rawfbuf = vmalloc(raw_bufsize); + if (!ov->rawfbuf) + goto error; + + memset(ov->rawfbuf, 0, raw_bufsize); + + ov->tempfbuf = vmalloc(raw_bufsize); + if (!ov->tempfbuf) + goto error; + + memset(ov->tempfbuf, 0, raw_bufsize); + + for (i = 0; i < OV511_NUMSBUF; i++) { + ov->sbuf[i].data = kmalloc(FRAMES_PER_DESC * + MAX_FRAME_SIZE_PER_DESC, GFP_KERNEL); + if (!ov->sbuf[i].data) + goto error; + + PDEBUG(4, "sbuf[%d] @ %p", i, ov->sbuf[i].data); + } + + for (i = 0; i < OV511_NUMFRAMES; i++) { + ov->frame[i].data = ov->fbuf + i * MAX_DATA_SIZE(w, h); + ov->frame[i].rawdata = ov->rawfbuf + + i * MAX_RAW_DATA_SIZE(w, h); + ov->frame[i].tempdata = ov->tempfbuf + + i * MAX_RAW_DATA_SIZE(w, h); + + ov->frame[i].compbuf = + (unsigned char *) __get_free_page(GFP_KERNEL); + if (!ov->frame[i].compbuf) + goto error; + + PDEBUG(4, "frame[%d] @ %p", i, ov->frame[i].data); + } + + ov->buf_state = BUF_ALLOCATED; +out: + up(&ov->buf_lock); + PDEBUG(4, "leaving"); + return 0; +error: + ov51x_do_dealloc(ov); + up(&ov->buf_lock); + PDEBUG(4, "errored"); + return -ENOMEM; +} + +static void +ov51x_dealloc(struct usb_ov511 *ov) +{ + PDEBUG(4, "entered"); + down(&ov->buf_lock); + ov51x_do_dealloc(ov); + up(&ov->buf_lock); + PDEBUG(4, "leaving"); +} + +/**************************************************************************** + * + * V4L 1 API + * + ***************************************************************************/ + +#ifdef OV511_OLD_V4L +static int +ov51x_v4l1_open(struct video_device *vdev, int flags) +{ +#else +static int +ov51x_v4l1_open(struct inode *inode, struct file *file) +{ + struct video_device *vdev = video_devdata(file); +#endif + struct usb_ov511 *ov = video_get_drvdata(vdev); + int err, i; + +/* 2.2.x needs explicit module-locking */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 17) + MOD_INC_USE_COUNT; +#endif + + PDEBUG(4, "opening"); + + down(&ov->lock); + + err = -EBUSY; + if (ov->user) + goto out; + + ov->sub_flag = 0; + + /* In case app doesn't set them... */ + err = ov51x_set_default_params(ov); + if (err < 0) + goto out; + + /* Make sure frames are reset */ + for (i = 0; i < OV511_NUMFRAMES; i++) { + ov->frame[i].grabstate = FRAME_UNUSED; + ov->frame[i].bytes_read = 0; + } + + /* If compression is on, make sure now that a + * decompressor can be loaded */ + if (ov->compress && !ov->decomp_ops) { + err = request_decompressor(ov); + if (err && !dumppix) + goto out; + } + + err = ov51x_alloc(ov); + if (err < 0) + goto out; + + err = ov51x_init_isoc(ov); + if (err) { + ov51x_dealloc(ov); + goto out; + } + + ov->user++; +// If using _NEW_ V4L... +#if !defined(OV511_OLD_V4L) + file->private_data = vdev; +#endif + + if (ov->led_policy == LED_AUTO) + ov51x_led_control(ov, 1); + +out: + up(&ov->lock); + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 17) + if (err) + MOD_DEC_USE_COUNT; +#endif + + return err; +} + +#ifdef OV511_OLD_V4L +static void +ov51x_v4l1_close(struct video_device *vdev) +{ +#else +static int +ov51x_v4l1_close(struct inode *inode, struct file *file) +{ + struct video_device *vdev = file->private_data; +#endif + struct usb_ov511 *ov = video_get_drvdata(vdev); + + PDEBUG(4, "ov511_close"); + + down(&ov->lock); + + ov->user--; + ov51x_stop_isoc(ov); + + release_decompressor(ov); + + if (ov->led_policy == LED_AUTO) + ov51x_led_control(ov, 0); + + if (ov->dev) + ov51x_dealloc(ov); + + up(&ov->lock); + + /* Device unplugged while open. Only a minimum of unregistration is done + * here; the disconnect callback already did the rest. */ + if (!ov->dev) { + down(&ov->cbuf_lock); + kfree(ov->cbuf); + ov->cbuf = NULL; + up(&ov->cbuf_lock); + + ov51x_dealloc(ov); +#ifdef OV511_OLD_V4L + video_unregister_device(&ov->vdev); +#endif + kfree(ov); + ov = NULL; + } + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 17) + MOD_DEC_USE_COUNT; +#endif + +#ifdef OV511_OLD_V4L + return; +#else + file->private_data = NULL; + return 0; +#endif +} + +/* Do not call this function directly! */ +static int +#ifdef OV511_OLD_V4L +ov51x_v4l1_ioctl_internal(struct usb_ov511 *ov, unsigned int cmd, + void *arg) +{ +#else +ov51x_v4l1_ioctl_internal(struct inode *inode, struct file *file, + unsigned int cmd, void *arg) +{ + struct video_device *vdev = file->private_data; + struct usb_ov511 *ov = video_get_drvdata(vdev); +#endif + PDEBUG(5, "IOCtl: 0x%X", cmd); + + if (!ov->dev) + return -EIO; + + switch (cmd) { + case VIDIOCGCAP: + { + struct video_capability *b = arg; + + PDEBUG(4, "VIDIOCGCAP"); + + memset(b, 0, sizeof(struct video_capability)); + sprintf(b->name, "%s USB Camera", + symbolic(brglist, ov->bridge)); + b->type = VID_TYPE_CAPTURE | VID_TYPE_SUBCAPTURE; + b->channels = ov->num_inputs; + b->audios = 0; + b->maxwidth = ov->maxwidth; + b->maxheight = ov->maxheight; + b->minwidth = ov->minwidth; + b->minheight = ov->minheight; + + return 0; + } + case VIDIOCGCHAN: + { + struct video_channel *v = arg; + + PDEBUG(4, "VIDIOCGCHAN"); + + if ((unsigned)(v->channel) >= ov->num_inputs) { + err("Invalid channel (%d)", v->channel); + return -EINVAL; + } + + v->norm = ov->norm; + v->type = VIDEO_TYPE_CAMERA; + v->flags = 0; +// v->flags |= (ov->has_decoder) ? VIDEO_VC_NORM : 0; + v->tuners = 0; + decoder_get_input_name(ov, v->channel, v->name); + + return 0; + } + case VIDIOCSCHAN: + { + struct video_channel *v = arg; + int err; + + PDEBUG(4, "VIDIOCSCHAN"); + + /* Make sure it's not a camera */ + if (!ov->has_decoder) { + if (v->channel == 0) + return 0; + else + return -EINVAL; + } + + if (v->norm != VIDEO_MODE_PAL && + v->norm != VIDEO_MODE_NTSC && + v->norm != VIDEO_MODE_SECAM && + v->norm != VIDEO_MODE_AUTO) { + err("Invalid norm (%d)", v->norm); + return -EINVAL; + } + + if ((unsigned)(v->channel) >= ov->num_inputs) { + err("Invalid channel (%d)", v->channel); + return -EINVAL; + } + + err = decoder_set_input(ov, v->channel); + if (err) + return err; + + err = decoder_set_norm(ov, v->norm); + if (err) + return err; + + return 0; + } + case VIDIOCGPICT: + { + struct video_picture *p = arg; + + PDEBUG(4, "VIDIOCGPICT"); + + memset(p, 0, sizeof(struct video_picture)); + if (sensor_get_picture(ov, p)) + return -EIO; + + /* Can we get these from frame[0]? -claudio? */ + p->depth = ov->frame[0].depth; + p->palette = ov->frame[0].format; + + return 0; + } + case VIDIOCSPICT: + { + struct video_picture *p = arg; + int i, rc; + + PDEBUG(4, "VIDIOCSPICT"); + + if (!get_depth(p->palette)) + return -EINVAL; + + if (sensor_set_picture(ov, p)) + return -EIO; + + if (force_palette && p->palette != force_palette) { + info("Palette rejected (%s)", + symbolic(v4l1_plist, p->palette)); + return -EINVAL; + } + + // FIXME: Format should be independent of frames + if (p->palette != ov->frame[0].format) { + PDEBUG(4, "Detected format change"); + + rc = ov51x_wait_frames_inactive(ov); + if (rc) + return rc; + + mode_init_regs(ov, ov->frame[0].width, + ov->frame[0].height, p->palette, ov->sub_flag); + } + + PDEBUG(4, "Setting depth=%d, palette=%s", + p->depth, symbolic(v4l1_plist, p->palette)); + + for (i = 0; i < OV511_NUMFRAMES; i++) { + ov->frame[i].depth = p->depth; + ov->frame[i].format = p->palette; + } + + return 0; + } + case VIDIOCGCAPTURE: + { + int *vf = arg; + + PDEBUG(4, "VIDIOCGCAPTURE"); + + ov->sub_flag = *vf; + return 0; + } + case VIDIOCSCAPTURE: + { + struct video_capture *vc = arg; + + PDEBUG(4, "VIDIOCSCAPTURE"); + + if (vc->flags) + return -EINVAL; + if (vc->decimation) + return -EINVAL; + + vc->x &= ~3L; + vc->y &= ~1L; + vc->y &= ~31L; + + if (vc->width == 0) + vc->width = 32; + + vc->height /= 16; + vc->height *= 16; + if (vc->height == 0) + vc->height = 16; + + ov->subx = vc->x; + ov->suby = vc->y; + ov->subw = vc->width; + ov->subh = vc->height; + + return 0; + } + case VIDIOCSWIN: + { + struct video_window *vw = arg; + int i, rc; + + PDEBUG(4, "VIDIOCSWIN: %dx%d", vw->width, vw->height); + +#if 0 + if (vw->flags) + return -EINVAL; + if (vw->clipcount) + return -EINVAL; + if (vw->height != ov->maxheight) + return -EINVAL; + if (vw->width != ov->maxwidth) + return -EINVAL; +#endif + + rc = ov51x_wait_frames_inactive(ov); + if (rc) + return rc; + + rc = mode_init_regs(ov, vw->width, vw->height, + ov->frame[0].format, ov->sub_flag); + if (rc < 0) + return rc; + + for (i = 0; i < OV511_NUMFRAMES; i++) { + ov->frame[i].width = vw->width; + ov->frame[i].height = vw->height; + } + + return 0; + } + case VIDIOCGWIN: + { + struct video_window *vw = arg; + + memset(vw, 0, sizeof(struct video_window)); + vw->x = 0; /* FIXME */ + vw->y = 0; + vw->width = ov->frame[0].width; + vw->height = ov->frame[0].height; + vw->flags = 30; + + PDEBUG(4, "VIDIOCGWIN: %dx%d", vw->width, vw->height); + + return 0; + } + case VIDIOCGMBUF: + { + struct video_mbuf *vm = arg; + int i; + + PDEBUG(4, "VIDIOCGMBUF"); + + memset(vm, 0, sizeof(struct video_mbuf)); + vm->size = OV511_NUMFRAMES + * MAX_DATA_SIZE(ov->maxwidth, ov->maxheight); + vm->frames = OV511_NUMFRAMES; + + vm->offsets[0] = 0; + for (i = 1; i < OV511_NUMFRAMES; i++) { + vm->offsets[i] = vm->offsets[i-1] + + MAX_DATA_SIZE(ov->maxwidth, ov->maxheight); + } + + return 0; + } + case VIDIOCMCAPTURE: + { + struct video_mmap *vm = arg; + int rc, depth; + unsigned int f = vm->frame; + + PDEBUG(4, "VIDIOCMCAPTURE: frame: %d, %dx%d, %s", f, vm->width, + vm->height, symbolic(v4l1_plist, vm->format)); + + depth = get_depth(vm->format); + if (!depth) { + PDEBUG(2, "VIDIOCMCAPTURE: invalid format (%s)", + symbolic(v4l1_plist, vm->format)); + return -EINVAL; + } + + if (f >= OV511_NUMFRAMES) { + err("VIDIOCMCAPTURE: invalid frame (%d)", f); + return -EINVAL; + } + + if (vm->width > ov->maxwidth + || vm->height > ov->maxheight) { + err("VIDIOCMCAPTURE: requested dimensions too big"); + return -EINVAL; + } + + if (ov->frame[f].grabstate == FRAME_GRABBING) { + PDEBUG(4, "VIDIOCMCAPTURE: already grabbing"); + return -EBUSY; + } + + if (force_palette && (vm->format != force_palette)) { + PDEBUG(2, "palette rejected (%s)", + symbolic(v4l1_plist, vm->format)); + return -EINVAL; + } + + if ((ov->frame[f].width != vm->width) || + (ov->frame[f].height != vm->height) || + (ov->frame[f].format != vm->format) || + (ov->frame[f].sub_flag != ov->sub_flag) || + (ov->frame[f].depth != depth)) { + PDEBUG(4, "VIDIOCMCAPTURE: change in image parameters"); + + rc = ov51x_wait_frames_inactive(ov); + if (rc) + return rc; + + rc = mode_init_regs(ov, vm->width, vm->height, + vm->format, ov->sub_flag); +#if 0 + if (rc < 0) { + PDEBUG(1, "Got error while initializing regs "); + return ret; + } +#endif + ov->frame[f].width = vm->width; + ov->frame[f].height = vm->height; + ov->frame[f].format = vm->format; + ov->frame[f].sub_flag = ov->sub_flag; + ov->frame[f].depth = depth; + } + + /* Mark it as ready */ + ov->frame[f].grabstate = FRAME_READY; + + PDEBUG(4, "VIDIOCMCAPTURE: renewing frame %d", f); + + return ov51x_new_frame(ov, f); + } + case VIDIOCSYNC: + { + unsigned int fnum = *((unsigned int *) arg); + struct ov511_frame *frame; + int rc; + + if (fnum >= OV511_NUMFRAMES) { + err("VIDIOCSYNC: invalid frame (%d)", fnum); + return -EINVAL; + } + + frame = &ov->frame[fnum]; + + PDEBUG(4, "syncing to frame %d, grabstate = %d", fnum, + frame->grabstate); + + switch (frame->grabstate) { + case FRAME_UNUSED: + return -EINVAL; + case FRAME_READY: + case FRAME_GRABBING: + case FRAME_ERROR: +redo: + if (!ov->dev) + return -EIO; + + rc = wait_event_interruptible(frame->wq, + (frame->grabstate == FRAME_DONE) + || (frame->grabstate == FRAME_ERROR)); + + if (rc) + return rc; + + if (frame->grabstate == FRAME_ERROR) { + if ((rc = ov51x_new_frame(ov, fnum)) < 0) + return rc; + goto redo; + } + /* Fall through */ + case FRAME_DONE: + if (ov->snap_enabled && !frame->snapshot) { + if ((rc = ov51x_new_frame(ov, fnum)) < 0) + return rc; + goto redo; + } + + frame->grabstate = FRAME_UNUSED; + + /* Reset the hardware snapshot button */ + /* FIXME - Is this the best place for this? */ + if ((ov->snap_enabled) && (frame->snapshot)) { + frame->snapshot = 0; + ov51x_clear_snapshot(ov); + } + + /* Decompression, format conversion, etc... */ + if (ov->bclass != BCL_OV519) { + ov51x_postprocess(ov, frame); + } + + break; + } /* end switch */ + + return 0; + } + case VIDIOCGFBUF: + { + struct video_buffer *vb = arg; + + PDEBUG(4, "VIDIOCGFBUF"); + + memset(vb, 0, sizeof(struct video_buffer)); + + return 0; + } + case VIDIOCGUNIT: + { + struct video_unit *vu = arg; + + PDEBUG(4, "VIDIOCGUNIT"); + + memset(vu, 0, sizeof(struct video_unit)); + + vu->video = ov->vdev->minor; + vu->vbi = VIDEO_NO_UNIT; + vu->radio = VIDEO_NO_UNIT; + vu->audio = VIDEO_NO_UNIT; + vu->teletext = VIDEO_NO_UNIT; + + return 0; + } + case OV511IOC_WI2C: + { + struct ov511_i2c_struct *w = arg; + + return i2c_w_slave(ov, w->slave, w->reg, w->value, w->mask); + } + case OV511IOC_RI2C: + { + struct ov511_i2c_struct *r = arg; + int rc; + + rc = i2c_r_slave(ov, r->slave, r->reg); + if (rc < 0) + return rc; + + r->value = rc; + return 0; + } + default: + PDEBUG(3, "Unsupported IOCtl: 0x%X", cmd); + return -ENOIOCTLCMD; + } /* end switch */ + + return 0; +} + +#ifdef OV511_OLD_V4L +/* This is implemented as video_generic_ioctl() in the new V4L's videodev.c */ +static int +ov51x_v4l1_generic_ioctl(struct video_device *vdev, unsigned int cmd, void *arg) +{ + char sbuf[128]; + void *mbuf = NULL; + void *parg = NULL; + int err = -EINVAL; + + /* Copy arguments into temp kernel buffer */ + switch (_IOC_DIR(cmd)) { + case _IOC_NONE: + parg = arg; + break; + case _IOC_READ: /* some v4l ioctls are marked wrong ... */ + case _IOC_WRITE: + case (_IOC_WRITE | _IOC_READ): + if (_IOC_SIZE(cmd) <= sizeof(sbuf)) { + parg = sbuf; + } else { + /* too big to allocate from stack */ + mbuf = kmalloc(_IOC_SIZE(cmd), GFP_KERNEL); + if (NULL == mbuf) + return -ENOMEM; + parg = mbuf; + } + + err = -EFAULT; + if (copy_from_user(parg, arg, _IOC_SIZE(cmd))) + goto out; + break; + } + + err = ov51x_v4l1_ioctl_internal(vdev->priv, cmd, parg); + if (err == -ENOIOCTLCMD) + err = -EINVAL; + if (err < 0) + goto out; + + /* Copy results into user buffer */ + switch (_IOC_DIR(cmd)) + { + case _IOC_READ: + case (_IOC_WRITE | _IOC_READ): + if (copy_to_user(arg, parg, _IOC_SIZE(cmd))) + err = -EFAULT; + break; + } + +out: + if (mbuf) + kfree(mbuf); + return err; +} + +static int +ov51x_v4l1_ioctl(struct video_device *vdev, unsigned int cmd, void *arg) +{ + struct usb_ov511 *ov = vdev->priv; + int rc; + + if (down_interruptible(&ov->lock)) + return -EINTR; + + rc = ov51x_v4l1_generic_ioctl(vdev, cmd, arg); + + up(&ov->lock); + return rc; +} + +#else /* If new V4L API */ + +static int +ov51x_v4l1_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg) +{ + struct video_device *vdev = file->private_data; + struct usb_ov511 *ov = video_get_drvdata(vdev); + int rc; + + if (down_interruptible(&ov->lock)) + return -EINTR; + + rc = video_usercopy(inode, file, cmd, arg, ov51x_v4l1_ioctl_internal); + + up(&ov->lock); + return rc; +} +#endif /* OV511_OLD_V4L */ + +#ifdef OV511_OLD_V4L +static long +ov51x_v4l1_read(struct video_device *vdev, char *buf, unsigned long count, + int noblock) +{ +#else +static ssize_t +ov51x_v4l1_read(struct file *file, char *buf, size_t cnt, loff_t *ppos) +{ + struct video_device *vdev = file->private_data; + int noblock = file->f_flags&O_NONBLOCK; + unsigned long count = cnt; +#endif + struct usb_ov511 *ov = video_get_drvdata(vdev); + int i, rc = 0, frmx = -1; + struct ov511_frame *frame; + + if (down_interruptible(&ov->lock)) + return -EINTR; + + PDEBUG(4, "%ld bytes, noblock=%d", count, noblock); + + if (!vdev || !buf) { + rc = -EFAULT; + goto error; + } + + if (!ov->dev) { + rc = -EIO; + goto error; + } + +// FIXME: Only supports two frames + /* See if a frame is completed, then use it. */ + if (ov->frame[0].grabstate >= FRAME_DONE) /* _DONE or _ERROR */ + frmx = 0; + else if (ov->frame[1].grabstate >= FRAME_DONE)/* _DONE or _ERROR */ + frmx = 1; + + /* If nonblocking we return immediately */ + if (noblock && (frmx == -1)) { + rc = -EAGAIN; + goto error; + } + + /* If no FRAME_DONE, look for a FRAME_GRABBING state. */ + /* See if a frame is in process (grabbing), then use it. */ + if (frmx == -1) { + if (ov->frame[0].grabstate == FRAME_GRABBING) + frmx = 0; + else if (ov->frame[1].grabstate == FRAME_GRABBING) + frmx = 1; + } + + /* If no frame is active, start one. */ + if (frmx == -1) { + if ((rc = ov51x_new_frame(ov, frmx = 0))) { + err("read: ov51x_new_frame error"); + goto error; + } + } + + frame = &ov->frame[frmx]; + +restart: + if (!ov->dev) { + rc = -EIO; + goto error; + } + + /* Wait while we're grabbing the image */ + PDEBUG(4, "Waiting image grabbing"); + rc = wait_event_interruptible(frame->wq, + (frame->grabstate == FRAME_DONE) + || (frame->grabstate == FRAME_ERROR)); + + if (rc) + goto error; + + PDEBUG(4, "Got image, frame->grabstate = %d", frame->grabstate); + PDEBUG(4, "bytes_recvd = %d", frame->bytes_recvd); + + if (frame->grabstate == FRAME_ERROR) { + frame->bytes_read = 0; + err("** ick! ** Errored frame %d", ov->curframe); + if (ov51x_new_frame(ov, frmx)) { + err("read: ov51x_new_frame error"); + goto error; + } + goto restart; + } + + + /* Repeat until we get a snapshot frame */ + if (ov->snap_enabled) + PDEBUG(4, "Waiting snapshot frame"); + if (ov->snap_enabled && !frame->snapshot) { + frame->bytes_read = 0; + if ((rc = ov51x_new_frame(ov, frmx))) { + err("read: ov51x_new_frame error"); + goto error; + } + goto restart; + } + + /* Clear the snapshot */ + if (ov->snap_enabled && frame->snapshot) { + frame->snapshot = 0; + ov51x_clear_snapshot(ov); + } + + /* Decompression, format conversion, etc... */ + if (ov->bclass != BCL_OV519) { + ov51x_postprocess(ov, frame); + } + + PDEBUG(4, "frmx=%d, bytes_read=%ld, length=%ld", frmx, + frame->bytes_read, + get_frame_length(ov, frame)); + + /* copy bytes to user space; we allow for partials reads */ + if ((count + frame->bytes_read) > get_frame_length(ov, (struct ov511_frame *)frame)) { + count = frame->bytes_recvd - frame->bytes_read; + PDEBUG(4, "set count to %d", (int)count); + } + + /* FIXME - count hardwired to be one frame... */ + //count = get_frame_length(ov, frame); + + PDEBUG(4, "Copy to user space: %ld bytes", count); + if ((i = copy_to_user(buf, frame->data + frame->bytes_read, count))) { + PDEBUG(4, "Copy failed! %d bytes not copied", i); + rc = -EFAULT; + goto error; + } + + frame->bytes_read += count; + PDEBUG(4, "{copy} count used=%ld, new bytes_read=%ld", + count, frame->bytes_read); + + /* If all data have been read... */ + if (frame->bytes_read >= get_frame_length(ov, frame)) { + frame->bytes_read = 0; + +// FIXME: Only supports two frames + /* Mark it as available to be used again. */ + ov->frame[frmx].grabstate = FRAME_UNUSED; + if ((rc = ov51x_new_frame(ov, !frmx))) { + err("ov51x_new_frame returned error"); + goto error; + } + } + + PDEBUG(4, "read finished, returning %ld (sweet)", count); + + up(&ov->lock); + return count; + +error: + up(&ov->lock); + return rc; +} + +static int +#ifdef OV511_OLD_V4L + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 3) +ov51x_v4l1_mmap(struct vm_area_struct *vma, struct video_device *vdev, + const char *adr, unsigned long size) + #else +ov51x_v4l1_mmap(struct video_device *vdev, const char *adr, unsigned long size) + #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 3) */ +{ + unsigned long start = (unsigned long)adr; + +#else /* New V4L API */ + +ov51x_v4l1_mmap(struct file *file, struct vm_area_struct *vma) +{ + struct video_device *vdev = file->private_data; + unsigned long start = vma->vm_start; + unsigned long size = vma->vm_end - vma->vm_start; +#endif /* OV511_OLD_V4L */ + + struct usb_ov511 *ov = video_get_drvdata(vdev); + unsigned long page, pos; + + if (ov->dev == NULL) + return -EIO; + + PDEBUG(4, "mmap: %ld (%lX) bytes", size, size); + + if (size > (((OV511_NUMFRAMES + * MAX_DATA_SIZE(ov->maxwidth, ov->maxheight) + + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)))) + return -EINVAL; + + if (down_interruptible(&ov->lock)) + return -EINTR; + + pos = (unsigned long)ov->fbuf; + while (size > 0) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 10) + page = vmalloc_to_pfn((void *)pos); + if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) { +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 3) || defined(RH9_REMAP) + page = kvirt_to_pa(pos); + if (remap_page_range(vma, start, page, PAGE_SIZE, + PAGE_SHARED)) { +#else + page = kvirt_to_pa(pos); + if (remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED)) { +#endif + up(&ov->lock); + return -EAGAIN; + } + start += PAGE_SIZE; + pos += PAGE_SIZE; + if (size > PAGE_SIZE) + size -= PAGE_SIZE; + else + size = 0; + } + + up(&ov->lock); + return 0; +} + +#ifdef OV511_OLD_V4L +static struct video_device vdev_template = { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 17) + .owner = THIS_MODULE, +#endif + .name = "OV511 USB Camera", + .type = VID_TYPE_CAPTURE, + .hardware = VID_HARDWARE_OV511, + .open = ov51x_v4l1_open, + .close = ov51x_v4l1_close, + .read = ov51x_v4l1_read, + .ioctl = ov51x_v4l1_ioctl, + .mmap = ov51x_v4l1_mmap, +}; + +#else /* New V4L API */ + +static struct file_operations ov511_fops = { + .owner = THIS_MODULE, + .open = ov51x_v4l1_open, + .release = ov51x_v4l1_close, + .read = ov51x_v4l1_read, + .mmap = ov51x_v4l1_mmap, + .ioctl = ov51x_v4l1_ioctl, + .llseek = no_llseek, +}; + +static struct video_device vdev_template = { + .owner = THIS_MODULE, + .name = "OV51x USB Camera", + .type = VID_TYPE_CAPTURE, + .hardware = VID_HARDWARE_OV511, + .fops = &ov511_fops, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + .release = video_device_release, +#endif + .minor = -1, +}; +#endif /* OV511_OLD_V4L */ + +#if defined(CONFIG_VIDEO_PROC_FS) +static int +ov51x_control_ioctl(struct inode *inode, struct file *file, unsigned int cmd, + unsigned long ularg) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 5) + struct proc_dir_entry *pde = PDE(inode); +#else + struct proc_dir_entry *pde = inode->u.generic_ip; +#endif + struct usb_ov511 *ov; + void *arg = (void *) ularg; + int rc; + + if (!pde) + return -ENOENT; + + ov = pde->data; + if (!ov) + return -ENODEV; + + if (!ov->dev) + return -EIO; + + /* Should we pass through standard V4L IOCTLs? */ + + switch (cmd) { + case OV511IOC_GINTVER: + { + return OV511_INTERFACE_VER; + } + case OV511IOC_GUSHORT: + { + struct ov511_ushort_opt opt; + + if (copy_from_user(&opt, arg, sizeof(opt))) + return -EFAULT; + + switch (opt.optnum) { + case OV511_USOPT_BRIGHT: + rc = sensor_get_brightness(ov, &(opt.val)); + if (rc) return rc; + break; + case OV511_USOPT_SAT: + rc = sensor_get_saturation(ov, &(opt.val)); + if (rc) return rc; + break; + case OV511_USOPT_HUE: + rc = sensor_get_hue(ov, &(opt.val)); + if (rc) return rc; + break; + case OV511_USOPT_CONTRAST: + rc = sensor_get_contrast(ov, &(opt.val)); + if (rc) return rc; + break; + default: + err("Invalid get short option number"); + return -EINVAL; + } + + if (copy_to_user(arg, &opt, sizeof(opt))) + return -EFAULT; + + return 0; + } + case OV511IOC_SUSHORT: + { + struct ov511_ushort_opt opt; + + if (copy_from_user(&opt, arg, sizeof(opt))) + return -EFAULT; + + switch (opt.optnum) { + case OV511_USOPT_BRIGHT: + rc = sensor_set_brightness(ov, opt.val); + if (rc) return rc; + break; + case OV511_USOPT_SAT: + rc = sensor_set_saturation(ov, opt.val); + if (rc) return rc; + break; + case OV511_USOPT_HUE: + rc = sensor_set_hue(ov, opt.val); + if (rc) return rc; + break; + case OV511_USOPT_CONTRAST: + rc = sensor_set_contrast(ov, opt.val); + if (rc) return rc; + break; + default: + err("Invalid set short option number"); + return -EINVAL; + } + + return 0; + } + case OV511IOC_GUINT: + { + struct ov511_uint_opt opt; + + if (copy_from_user(&opt, arg, sizeof(opt))) + return -EFAULT; + + switch (opt.optnum) { + case OV511_UIOPT_POWER_FREQ: + opt.val = ov->lightfreq; + break; + case OV511_UIOPT_BFILTER: + opt.val = ov->bandfilt; + break; + case OV511_UIOPT_LED: + opt.val = ov->led_policy; + break; + case OV511_UIOPT_LED2: + opt.val = ov->led2_policy; + break; + case OV511_UIOPT_DEBUG: + opt.val = debug; + break; + case OV511_UIOPT_COMPRESS: + opt.val = ov->compress; + break; + default: + err("Invalid get int option number"); + return -EINVAL; + } + + if (copy_to_user(arg, &opt, sizeof(opt))) + return -EFAULT; + + return 0; + } + case OV511IOC_SUINT: + { + struct ov511_uint_opt opt; + + if (copy_from_user(&opt, arg, sizeof(opt))) + return -EFAULT; + + switch (opt.optnum) { + case OV511_UIOPT_POWER_FREQ: + rc = sensor_set_light_freq(ov, opt.val); + if (rc) return rc; + break; + case OV511_UIOPT_BFILTER: + rc = sensor_set_banding_filter(ov, opt.val); + if (rc) return rc; + break; + case OV511_UIOPT_LED: + if (opt.val <= 2) { + ov->led_policy = opt.val; + if (ov->led_policy == LED_OFF) + ov51x_led_control(ov, 0); + else if (ov->led_policy == LED_ON) + ov51x_led_control(ov, 1); + } else { + return -EINVAL; + } + break; + case OV511_UIOPT_LED2: + if (opt.val <= 2) { + ov->led2_policy = opt.val; + if (ov->led2_policy == LED_OFF) + ov51x_led_control(ov, 0); + else if (ov->led2_policy == LED_ON) + ov51x_led_control(ov, 1); + } else { + return -EINVAL; + } + break; + case OV511_UIOPT_DEBUG: + if (opt.val <= 5) + debug = opt.val; + else + return -EINVAL; + break; + case OV511_UIOPT_COMPRESS: + ov->compress = opt.val; + if (ov->compress) { + if (ov->bclass == BCL_OV511) + ov511_init_compression(ov); + else if (ov->bclass == BCL_OV518) + ov518_init_compression(ov); + else if (ov->bclass == BCL_OV519) + ov519_init_compression(ov); + } + break; + default: + err("Invalid get int option number"); + return -EINVAL; + } + + return 0; + } + case OV511IOC_WI2C: + { + struct ov511_i2c_struct w; + + if (copy_from_user(&w, arg, sizeof(w))) + return -EFAULT; + + return i2c_w_slave(ov, w.slave, w.reg, w.value, w.mask); + } + case OV511IOC_RI2C: + { + struct ov511_i2c_struct r; + + if (copy_from_user(&r, arg, sizeof(r))) + return -EFAULT; + + rc = i2c_r_slave(ov, r.slave, r.reg); + if (rc < 0) + return rc; + + r.value = rc; + + if (copy_to_user(arg, &r, sizeof(r))) + return -EFAULT; + + return 0; + } + default: + return -EINVAL; + } + + return 0; +} +#endif + +/**************************************************************************** + * + * OV511 and sensor configuration + * + ***************************************************************************/ + +/* This initializes the OV8110, OV8610 sensor. The OV8110 uses + * the same register settings as the OV8610, since they are very similar. + */ +static int +ov8xx0_configure(struct usb_ov511 *ov) +{ + int rc; + + static struct ov511_regvals regvals_norm_8610[] = { + { OV511_I2C_BUS, 0x12, 0x80 }, + { OV511_I2C_BUS, 0x00, 0x00 }, + { OV511_I2C_BUS, 0x01, 0x80 }, + { OV511_I2C_BUS, 0x02, 0x80 }, + { OV511_I2C_BUS, 0x03, 0xc0 }, + { OV511_I2C_BUS, 0x04, 0x30 }, + { OV511_I2C_BUS, 0x05, 0x30 }, /* was 0x10, new from windrv 090403 */ + { OV511_I2C_BUS, 0x06, 0x70 }, /* was 0x80, new from windrv 090403 */ + { OV511_I2C_BUS, 0x0a, 0x86 }, + { OV511_I2C_BUS, 0x0b, 0xb0 }, + { OV511_I2C_BUS, 0x0c, 0x20 }, + { OV511_I2C_BUS, 0x0d, 0x20 }, + { OV511_I2C_BUS, 0x11, 0x01 }, + { OV511_I2C_BUS, 0x12, 0x25 }, + { OV511_I2C_BUS, 0x13, 0x01 }, + { OV511_I2C_BUS, 0x14, 0x04 }, + { OV511_I2C_BUS, 0x15, 0x01 }, /* Lin and Win think different about UV order */ + { OV511_I2C_BUS, 0x16, 0x03 }, + { OV511_I2C_BUS, 0x17, 0x38 }, /* was 0x2f, new from windrv 090403 */ + { OV511_I2C_BUS, 0x18, 0xea }, /* was 0xcf, new from windrv 090403 */ + { OV511_I2C_BUS, 0x19, 0x02 }, /* was 0x06, new from windrv 090403 */ + { OV511_I2C_BUS, 0x1a, 0xf5 }, + { OV511_I2C_BUS, 0x1b, 0x00 }, + { OV511_I2C_BUS, 0x20, 0xd0 }, /* was 0x90, new from windrv 090403 */ + { OV511_I2C_BUS, 0x23, 0xc0 }, /* was 0x00, new from windrv 090403 */ + { OV511_I2C_BUS, 0x24, 0x30 }, /* was 0x1d, new from windrv 090403 */ + { OV511_I2C_BUS, 0x25, 0x50 }, /* was 0x57, new from windrv 090403 */ + { OV511_I2C_BUS, 0x26, 0xa2 }, + { OV511_I2C_BUS, 0x27, 0xea }, + { OV511_I2C_BUS, 0x28, 0x00 }, + { OV511_I2C_BUS, 0x29, 0x00 }, + { OV511_I2C_BUS, 0x2a, 0x80 }, + { OV511_I2C_BUS, 0x2b, 0xc8 }, /* was 0xcc, new from windrv 090403 */ + { OV511_I2C_BUS, 0x2c, 0xac }, + { OV511_I2C_BUS, 0x2d, 0x45 }, /* was 0xd5, new from windrv 090403 */ + { OV511_I2C_BUS, 0x2e, 0x80 }, + { OV511_I2C_BUS, 0x2f, 0x14 }, /* was 0x01, new from windrv 090403 */ + { OV511_I2C_BUS, 0x4c, 0x00 }, + { OV511_I2C_BUS, 0x4d, 0x30 }, /* was 0x10, new from windrv 090403 */ + { OV511_I2C_BUS, 0x60, 0x02 }, /* was 0x01, new from windrv 090403 */ + { OV511_I2C_BUS, 0x61, 0x00 }, /* was 0x09, new from windrv 090403 */ + { OV511_I2C_BUS, 0x62, 0x5f }, /* was 0xd7, new from windrv 090403 */ + { OV511_I2C_BUS, 0x63, 0xff }, + { OV511_I2C_BUS, 0x64, 0x53 }, /* new windrv 090403 says 0x57, maybe thats wrong */ + { OV511_I2C_BUS, 0x65, 0x00 }, + { OV511_I2C_BUS, 0x66, 0x55 }, + { OV511_I2C_BUS, 0x67, 0xb0 }, + { OV511_I2C_BUS, 0x68, 0xc0 }, /* was 0xaf, new from windrv 090403 */ + { OV511_I2C_BUS, 0x69, 0x02 }, + { OV511_I2C_BUS, 0x6a, 0x22 }, + { OV511_I2C_BUS, 0x6b, 0x00 }, + { OV511_I2C_BUS, 0x6c, 0x99 }, /* was 0x80, old windrv says 0x00, but deleting bit7 colors the first images red */ + { OV511_I2C_BUS, 0x6d, 0x11 }, /* was 0x00, new from windrv 090403 */ + { OV511_I2C_BUS, 0x6e, 0x11 }, /* was 0x00, new from windrv 090403 */ + { OV511_I2C_BUS, 0x6f, 0x01 }, + { OV511_I2C_BUS, 0x70, 0x8b }, + { OV511_I2C_BUS, 0x71, 0x00 }, + { OV511_I2C_BUS, 0x72, 0x14 }, + { OV511_I2C_BUS, 0x73, 0x54 }, + { OV511_I2C_BUS, 0x74, 0x00 },//0x60? /* was 0x00, new from windrv 090403 */ + { OV511_I2C_BUS, 0x75, 0x0e }, + { OV511_I2C_BUS, 0x76, 0x02 }, /* was 0x02, new from windrv 090403 */ + { OV511_I2C_BUS, 0x77, 0xff }, + { OV511_I2C_BUS, 0x78, 0x80 }, + { OV511_I2C_BUS, 0x79, 0x80 }, + { OV511_I2C_BUS, 0x7a, 0x80 }, + { OV511_I2C_BUS, 0x7b, 0x10 }, /* was 0x13, new from windrv 090403 */ + { OV511_I2C_BUS, 0x7c, 0x00 }, + { OV511_I2C_BUS, 0x7d, 0x08 }, /* was 0x09, new from windrv 090403 */ + { OV511_I2C_BUS, 0x7e, 0x08 }, /* was 0xc0, new from windrv 090403 */ + { OV511_I2C_BUS, 0x7f, 0xfb }, + { OV511_I2C_BUS, 0x80, 0x28 }, + { OV511_I2C_BUS, 0x81, 0x00 }, + { OV511_I2C_BUS, 0x82, 0x23 }, + { OV511_I2C_BUS, 0x83, 0x0b }, + { OV511_I2C_BUS, 0x84, 0x00 }, + { OV511_I2C_BUS, 0x85, 0x62 }, /* was 0x61, new from windrv 090403 */ + { OV511_I2C_BUS, 0x86, 0xc9 }, + { OV511_I2C_BUS, 0x87, 0x00 }, + { OV511_I2C_BUS, 0x88, 0x00 }, + { OV511_I2C_BUS, 0x89, 0x01 }, + { OV511_I2C_BUS, 0x12, 0x20 }, + { OV511_I2C_BUS, 0x12, 0x25 }, /* was 0x24, new from windrv 090403 */ + { OV511_DONE_BUS, 0x0, 0x00 }, + }; + + PDEBUG(4, "starting configuration"); + + if (init_ov_sensor(ov) < 0) { + err("Failed to read sensor ID. You might not have an"); + err("OV8600/10, or it might not be responding. Report"); + err("this to sensor = SEN_OV8610; + } else { + err("Unknown image sensor version: %d", rc & 3); + return -1; + } + + PDEBUG(4, "Writing 8610 registers"); + if (write_regvals(ov, regvals_norm_8610)) + return -1; + + /* Set sensor-specific vars */ + ov->maxwidth = 800; + ov->maxheight = 600; + ov->minwidth = 64; + ov->minheight = 48; + + // FIXME: These do not match the actual settings yet + ov->brightness = 0x80 << 8; + ov->contrast = 0x80 << 8; + ov->colour = 0x80 << 8; + ov->hue = 0x80 << 8; + + return 0; +} + +/* This initializes the OV7610, OV7620, or OV76BE sensor. The OV76BE uses + * the same register settings as the OV7610, since they are very similar. + */ +static int +ov7xx0_configure(struct usb_ov511 *ov) +{ + int rc, high, low; + + /* Lawrence Glaister reports: + * + * Register 0x0f in the 7610 has the following effects: + * + * 0x85 (AEC method 1): Best overall, good contrast range + * 0x45 (AEC method 2): Very overexposed + * 0xa5 (spec sheet default): Ok, but the black level is + * shifted resulting in loss of contrast + * 0x05 (old driver setting): very overexposed, too much + * contrast + */ + static struct ov511_regvals regvals_norm_7610[] = { + { OV511_I2C_BUS, 0x10, 0xff }, + { OV511_I2C_BUS, 0x16, 0x06 }, + { OV511_I2C_BUS, 0x28, 0x24 }, + { OV511_I2C_BUS, 0x2b, 0xac }, + { OV511_I2C_BUS, 0x12, 0x00 }, + { OV511_I2C_BUS, 0x38, 0x81 }, + { OV511_I2C_BUS, 0x28, 0x24 }, /* 0c */ + { OV511_I2C_BUS, 0x0f, 0x85 }, /* lg's setting */ + { OV511_I2C_BUS, 0x15, 0x01 }, + { OV511_I2C_BUS, 0x20, 0x1c }, + { OV511_I2C_BUS, 0x23, 0x2a }, + { OV511_I2C_BUS, 0x24, 0x10 }, + { OV511_I2C_BUS, 0x25, 0x8a }, + { OV511_I2C_BUS, 0x26, 0xa2 }, + { OV511_I2C_BUS, 0x27, 0xc2 }, + { OV511_I2C_BUS, 0x2a, 0x04 }, + { OV511_I2C_BUS, 0x2c, 0xfe }, + { OV511_I2C_BUS, 0x2d, 0x93 }, + { OV511_I2C_BUS, 0x30, 0x71 }, + { OV511_I2C_BUS, 0x31, 0x60 }, + { OV511_I2C_BUS, 0x32, 0x26 }, + { OV511_I2C_BUS, 0x33, 0x20 }, + { OV511_I2C_BUS, 0x34, 0x48 }, + { OV511_I2C_BUS, 0x12, 0x24 }, + { OV511_I2C_BUS, 0x11, 0x01 }, + { OV511_I2C_BUS, 0x0c, 0x24 }, + { OV511_I2C_BUS, 0x0d, 0x24 }, + { OV511_DONE_BUS, 0x0, 0x00 }, + }; + + static struct ov511_regvals regvals_norm_7620[] = { + { OV511_I2C_BUS, 0x00, 0x00 }, + { OV511_I2C_BUS, 0x01, 0x80 }, + { OV511_I2C_BUS, 0x02, 0x80 }, + { OV511_I2C_BUS, 0x03, 0xc0 }, + { OV511_I2C_BUS, 0x06, 0x60 }, + { OV511_I2C_BUS, 0x07, 0x00 }, + { OV511_I2C_BUS, 0x0c, 0x24 }, + { OV511_I2C_BUS, 0x0c, 0x24 }, + { OV511_I2C_BUS, 0x0d, 0x24 }, + { OV511_I2C_BUS, 0x11, 0x01 }, + { OV511_I2C_BUS, 0x12, 0x24 }, + { OV511_I2C_BUS, 0x13, 0x01 }, + { OV511_I2C_BUS, 0x14, 0x84 }, + { OV511_I2C_BUS, 0x15, 0x01 }, + { OV511_I2C_BUS, 0x16, 0x03 }, + { OV511_I2C_BUS, 0x17, 0x2f }, + { OV511_I2C_BUS, 0x18, 0xcf }, + { OV511_I2C_BUS, 0x19, 0x06 }, + { OV511_I2C_BUS, 0x1a, 0xf5 }, + { OV511_I2C_BUS, 0x1b, 0x00 }, + { OV511_I2C_BUS, 0x20, 0x18 }, + { OV511_I2C_BUS, 0x21, 0x80 }, + { OV511_I2C_BUS, 0x22, 0x80 }, + { OV511_I2C_BUS, 0x23, 0x00 }, + { OV511_I2C_BUS, 0x26, 0xa2 }, + { OV511_I2C_BUS, 0x27, 0xea }, + { OV511_I2C_BUS, 0x28, 0x20 }, + { OV511_I2C_BUS, 0x29, 0x00 }, + { OV511_I2C_BUS, 0x2a, 0x10 }, + { OV511_I2C_BUS, 0x2b, 0x00 }, + { OV511_I2C_BUS, 0x2c, 0x88 }, + { OV511_I2C_BUS, 0x2d, 0x91 }, + { OV511_I2C_BUS, 0x2e, 0x80 }, + { OV511_I2C_BUS, 0x2f, 0x44 }, + { OV511_I2C_BUS, 0x60, 0x27 }, + { OV511_I2C_BUS, 0x61, 0x02 }, + { OV511_I2C_BUS, 0x62, 0x5f }, + { OV511_I2C_BUS, 0x63, 0xd5 }, + { OV511_I2C_BUS, 0x64, 0x57 }, + { OV511_I2C_BUS, 0x65, 0x83 }, + { OV511_I2C_BUS, 0x66, 0x55 }, + { OV511_I2C_BUS, 0x67, 0x92 }, + { OV511_I2C_BUS, 0x68, 0xcf }, + { OV511_I2C_BUS, 0x69, 0x76 }, + { OV511_I2C_BUS, 0x6a, 0x22 }, + { OV511_I2C_BUS, 0x6b, 0x00 }, + { OV511_I2C_BUS, 0x6c, 0x02 }, + { OV511_I2C_BUS, 0x6d, 0x44 }, + { OV511_I2C_BUS, 0x6e, 0x80 }, + { OV511_I2C_BUS, 0x6f, 0x1d }, + { OV511_I2C_BUS, 0x70, 0x8b }, + { OV511_I2C_BUS, 0x71, 0x00 }, + { OV511_I2C_BUS, 0x72, 0x14 }, + { OV511_I2C_BUS, 0x73, 0x54 }, + { OV511_I2C_BUS, 0x74, 0x00 }, + { OV511_I2C_BUS, 0x75, 0x8e }, + { OV511_I2C_BUS, 0x76, 0x00 }, + { OV511_I2C_BUS, 0x77, 0xff }, + { OV511_I2C_BUS, 0x78, 0x80 }, + { OV511_I2C_BUS, 0x79, 0x80 }, + { OV511_I2C_BUS, 0x7a, 0x80 }, + { OV511_I2C_BUS, 0x7b, 0xe2 }, + { OV511_I2C_BUS, 0x7c, 0x00 }, + { OV511_DONE_BUS, 0x0, 0x00 }, + }; + + /* 7640 and 7648. The defaults should be OK for most registers. */ + static struct ov511_regvals regvals_norm_7640[] = { + { OV511_I2C_BUS, 0x12, 0x80 }, + { OV511_I2C_BUS, 0x12, 0x14 }, + { OV511_DONE_BUS, 0x0, 0x00 }, + }; + + PDEBUG(4, "starting configuration"); + + if (init_ov_sensor(ov) < 0) { + err("Failed to read sensor ID. You might not have an"); + err("OV76xx, or it might not be responding. Report"); + err("this to " EMAIL); + err("This is only a warning. You can attempt to use"); + err("your camera anyway"); + } else { + PDEBUG(1, "OV7xx0 initialized"); + } + + /* Detect sensor (sub)type */ + rc = i2c_r(ov, OV7610_REG_COM_I); + + if (rc < 0) { + err("Error detecting sensor type"); + return -1; + } else if ((rc & 3) == 3) { + info("Sensor is an OV7610"); + ov->sensor = SEN_OV7610; + } else if ((rc & 3) == 1) { + /* I don't know what's different about the 76BE yet. */ + if (i2c_r(ov, 0x15) & 1) + info("Sensor is an OV7620AE"); + else + info("Sensor is an OV76BE"); + + /* OV511+ will return all zero isoc data unless we + * configure the sensor as a 7620. Someone needs to + * find the exact reg. setting that causes this. */ + if (ov->bridge == BRG_OV511PLUS) + ov->sensor = SEN_OV7620; + else + ov->sensor = SEN_OV76BE; + } else if ((rc & 3) == 0) { + /* try to read product id registers */ + high = i2c_r(ov, 0x0a); + if (high < 0) { + err("Error detecting camera chip PID"); + return high; + } + low = i2c_r(ov, 0x0b); + if (low < 0) { + err("Error detecting camera chip VER"); + return low; + } + if (high == 0x76) { + if (low == 0x30) { + info("Sensor is an OV7630/OV7635"); + ov->sensor = SEN_OV7630; + } + else if (low == 0x40) { + info("Sensor is an OV7645"); + ov->sensor = SEN_OV7640; // FIXME + } + else if (low == 0x45) { + info("Sensor is an OV7645B"); + ov->sensor = SEN_OV7640; // FIXME + } + else if (low == 0x48) { + info("Sensor is an OV7648"); + ov->sensor = SEN_OV7640; // FIXME + } + else { + err("Unknown sensor: 0x76%X", low); + return -1; + } + } else { + info("Sensor is an OV7620"); + ov->sensor = SEN_OV7620; + } + } else { + err("Unknown image sensor version: %d", rc & 3); + return -1; + } + + if (ov->sensor == SEN_OV7620) { + PDEBUG(4, "Writing 7620 registers"); + if (write_regvals(ov, regvals_norm_7620)) + return -1; + } else if (ov->sensor == SEN_OV7630) { + PDEBUG(4, "7630 is not supported by this driver version"); + return -1; + } else if (ov->sensor == SEN_OV7640) { + PDEBUG(4, "Writing 7640 registers"); + if (write_regvals(ov, regvals_norm_7640)) + return -1; + } else { + PDEBUG(4, "Writing 7610 registers"); + if (write_regvals(ov, regvals_norm_7610)) + return -1; + } + + /* Set sensor-specific vars */ + ov->maxwidth = 640; + ov->maxheight = 480; + ov->minwidth = 64; + ov->minheight = 48; + + // FIXME: These do not match the actual settings yet + ov->brightness = 0x80 << 8; + ov->contrast = 0x80 << 8; + ov->colour = 0x80 << 8; + ov->hue = 0x80 << 8; + + return 0; +} + +/* This initializes the OV6620, OV6630, OV6630AE, or OV6630AF sensor. */ +static int +ov6xx0_configure(struct usb_ov511 *ov) +{ + int rc; + + static struct ov511_regvals regvals_norm_6x20[] = { + { OV511_I2C_BUS, 0x12, 0x80 }, /* reset */ + { OV511_I2C_BUS, 0x11, 0x01 }, + { OV511_I2C_BUS, 0x03, 0x60 }, + { OV511_I2C_BUS, 0x05, 0x7f }, /* For when autoadjust is off */ + { OV511_I2C_BUS, 0x07, 0xa8 }, + /* The ratio of 0x0c and 0x0d controls the white point */ + { OV511_I2C_BUS, 0x0c, 0x24 }, + { OV511_I2C_BUS, 0x0d, 0x24 }, + { OV511_I2C_BUS, 0x0f, 0x15 }, /* COMS */ + { OV511_I2C_BUS, 0x10, 0x75 }, /* AEC Exposure time */ + { OV511_I2C_BUS, 0x12, 0x24 }, /* Enable AGC */ + { OV511_I2C_BUS, 0x14, 0x04 }, + /* 0x16: 0x06 helps frame stability with moving objects */ + { OV511_I2C_BUS, 0x16, 0x06 }, +// { OV511_I2C_BUS, 0x20, 0x30 }, /* Aperture correction enable */ + { OV511_I2C_BUS, 0x26, 0xb2 }, /* BLC enable */ + /* 0x28: 0x05 Selects RGB format if RGB on */ + { OV511_I2C_BUS, 0x28, 0x05 }, + { OV511_I2C_BUS, 0x2a, 0x04 }, /* Disable framerate adjust */ +// { OV511_I2C_BUS, 0x2b, 0xac }, /* Framerate; Set 2a[7] first */ + { OV511_I2C_BUS, 0x2d, 0x99 }, + { OV511_I2C_BUS, 0x33, 0xa0 }, /* Color Processing Parameter */ + { OV511_I2C_BUS, 0x34, 0xd2 }, /* Max A/D range */ + { OV511_I2C_BUS, 0x38, 0x8b }, + { OV511_I2C_BUS, 0x39, 0x40 }, + + { OV511_I2C_BUS, 0x3c, 0x39 }, /* Enable AEC mode changing */ + { OV511_I2C_BUS, 0x3c, 0x3c }, /* Change AEC mode */ + { OV511_I2C_BUS, 0x3c, 0x24 }, /* Disable AEC mode changing */ + + { OV511_I2C_BUS, 0x3d, 0x80 }, + /* These next two registers (0x4a, 0x4b) are undocumented. They + * control the color balance */ + { OV511_I2C_BUS, 0x4a, 0x80 }, + { OV511_I2C_BUS, 0x4b, 0x80 }, + { OV511_I2C_BUS, 0x4d, 0xd2 }, /* This reduces noise a bit */ + { OV511_I2C_BUS, 0x4e, 0xc1 }, + { OV511_I2C_BUS, 0x4f, 0x04 }, +// Do 50-53 have any effect? +// Toggle 0x12[2] off and on here? + { OV511_DONE_BUS, 0x0, 0x00 }, /* END MARKER */ + }; + + static struct ov511_regvals regvals_norm_6x30[] = { + { OV511_I2C_BUS, 0x12, 0x80 }, /* Reset */ + { OV511_I2C_BUS, 0x00, 0x1f }, /* Gain */ + { OV511_I2C_BUS, 0x01, 0x99 }, /* Blue gain */ + { OV511_I2C_BUS, 0x02, 0x7c }, /* Red gain */ + { OV511_I2C_BUS, 0x03, 0xc0 }, /* Saturation */ + { OV511_I2C_BUS, 0x05, 0x0a }, /* Contrast */ + { OV511_I2C_BUS, 0x06, 0x95 }, /* Brightness */ + { OV511_I2C_BUS, 0x07, 0x2d }, /* Sharpness */ + { OV511_I2C_BUS, 0x0c, 0x20 }, + { OV511_I2C_BUS, 0x0d, 0x20 }, + { OV511_I2C_BUS, 0x0e, 0x20 }, + { OV511_I2C_BUS, 0x0f, 0x05 }, + { OV511_I2C_BUS, 0x10, 0x9a }, + { OV511_I2C_BUS, 0x11, 0x00 }, /* Pixel clock = fastest */ + { OV511_I2C_BUS, 0x12, 0x24 }, /* Enable AGC and AWB */ + { OV511_I2C_BUS, 0x13, 0x21 }, + { OV511_I2C_BUS, 0x14, 0x80 }, + { OV511_I2C_BUS, 0x15, 0x01 }, + { OV511_I2C_BUS, 0x16, 0x03 }, + { OV511_I2C_BUS, 0x17, 0x38 }, + { OV511_I2C_BUS, 0x18, 0xea }, + { OV511_I2C_BUS, 0x19, 0x04 }, + { OV511_I2C_BUS, 0x1a, 0x93 }, + { OV511_I2C_BUS, 0x1b, 0x00 }, + { OV511_I2C_BUS, 0x1e, 0xc4 }, + { OV511_I2C_BUS, 0x1f, 0x04 }, + { OV511_I2C_BUS, 0x20, 0x20 }, + { OV511_I2C_BUS, 0x21, 0x10 }, + { OV511_I2C_BUS, 0x22, 0x88 }, + { OV511_I2C_BUS, 0x23, 0xc0 }, /* Crystal circuit power level */ + { OV511_I2C_BUS, 0x25, 0x9a }, /* Increase AEC black ratio */ + { OV511_I2C_BUS, 0x26, 0xb2 }, /* BLC enable */ + { OV511_I2C_BUS, 0x27, 0xa2 }, + { OV511_I2C_BUS, 0x28, 0x00 }, + { OV511_I2C_BUS, 0x29, 0x00 }, + { OV511_I2C_BUS, 0x2a, 0x84 }, /* 60 Hz power */ + { OV511_I2C_BUS, 0x2b, 0xa8 }, /* 60 Hz power */ + { OV511_I2C_BUS, 0x2c, 0xa0 }, + { OV511_I2C_BUS, 0x2d, 0x95 }, /* Enable auto-brightness */ + { OV511_I2C_BUS, 0x2e, 0x88 }, + { OV511_I2C_BUS, 0x33, 0x26 }, + { OV511_I2C_BUS, 0x34, 0x03 }, + { OV511_I2C_BUS, 0x36, 0x8f }, + { OV511_I2C_BUS, 0x37, 0x80 }, + { OV511_I2C_BUS, 0x38, 0x83 }, + { OV511_I2C_BUS, 0x39, 0x80 }, + { OV511_I2C_BUS, 0x3a, 0x0f }, + { OV511_I2C_BUS, 0x3b, 0x3c }, + { OV511_I2C_BUS, 0x3c, 0x1a }, + { OV511_I2C_BUS, 0x3d, 0x80 }, + { OV511_I2C_BUS, 0x3e, 0x80 }, + { OV511_I2C_BUS, 0x3f, 0x0e }, + { OV511_I2C_BUS, 0x40, 0x00 }, /* White bal */ + { OV511_I2C_BUS, 0x41, 0x00 }, /* White bal */ + { OV511_I2C_BUS, 0x42, 0x80 }, + { OV511_I2C_BUS, 0x43, 0x3f }, /* White bal */ + { OV511_I2C_BUS, 0x44, 0x80 }, + { OV511_I2C_BUS, 0x45, 0x20 }, + { OV511_I2C_BUS, 0x46, 0x20 }, + { OV511_I2C_BUS, 0x47, 0x80 }, + { OV511_I2C_BUS, 0x48, 0x7f }, + { OV511_I2C_BUS, 0x49, 0x00 }, + { OV511_I2C_BUS, 0x4a, 0x00 }, + { OV511_I2C_BUS, 0x4b, 0x80 }, + { OV511_I2C_BUS, 0x4c, 0xd0 }, + { OV511_I2C_BUS, 0x4d, 0x10 }, /* U = 0.563u, V = 0.714v */ + { OV511_I2C_BUS, 0x4e, 0x40 }, + { OV511_I2C_BUS, 0x4f, 0x07 }, /* UV avg., col. killer: max */ + { OV511_I2C_BUS, 0x50, 0xff }, + { OV511_I2C_BUS, 0x54, 0x23 }, /* Max AGC gain: 18dB */ + { OV511_I2C_BUS, 0x55, 0xff }, + { OV511_I2C_BUS, 0x56, 0x12 }, + { OV511_I2C_BUS, 0x57, 0x81 }, + { OV511_I2C_BUS, 0x58, 0x75 }, + { OV511_I2C_BUS, 0x59, 0x01 }, /* AGC dark current comp.: +1 */ + { OV511_I2C_BUS, 0x5a, 0x2c }, + { OV511_I2C_BUS, 0x5b, 0x0f }, /* AWB chrominance levels */ + { OV511_I2C_BUS, 0x5c, 0x10 }, + { OV511_I2C_BUS, 0x3d, 0x80 }, + { OV511_I2C_BUS, 0x27, 0xa6 }, + { OV511_I2C_BUS, 0x12, 0x20 }, /* Toggle AWB */ + { OV511_I2C_BUS, 0x12, 0x24 }, + { OV511_DONE_BUS, 0x0, 0x00 }, /* END MARKER */ + }; + + PDEBUG(4, "starting sensor configuration"); + + if (init_ov_sensor(ov) < 0) { + err("Failed to read sensor ID. You might not have an OV6xx0,"); + err("or it may be not responding. Report this to " EMAIL); + return -1; + } else { + PDEBUG(1, "OV6xx0 sensor detected"); + } + + /* Detect sensor (sub)type */ + rc = i2c_r(ov, OV7610_REG_COM_I); + + if (rc < 0) { + err("Error detecting sensor type"); + return -1; + } + + /* Ugh. The first two bits are the version bits, but the entire register + * value must be used. I guess OVT underestimated how many variants + * they would make. */ + if (rc == 0x00) { + ov->sensor = SEN_OV6630; + info("WARNING: Sensor is an OV66308. Your camera may have"); + info("been misdetected in previous driver versions. Please"); + info("report this to Mark."); + } else if (rc == 0x01) { + ov->sensor = SEN_OV6620; + info("Sensor is an OV6620"); + } else if (rc == 0x02) { + ov->sensor = SEN_OV6630; + info("Sensor is an OV66308AE"); + } else if (rc == 0x03) { + ov->sensor = SEN_OV6630; + info("Sensor is an OV66308AF"); + } else if (rc == 0x90) { + ov->sensor = SEN_OV6630; + info("WARNING: Sensor is an OV66307. Your camera may have"); + info("been misdetected in previous driver versions. Please"); + info("report this to Mark."); + } else { + err("FATAL: Unknown sensor version: 0x%02x", rc); + return -1; + } + + /* Set sensor-specific vars */ + ov->maxwidth = 352; + ov->maxheight = 288; + ov->minwidth = 64; + ov->minheight = 48; + + // FIXME: These do not match the actual settings yet + ov->brightness = 0x80 << 8; + ov->contrast = 0x80 << 8; + ov->colour = 0x80 << 8; + ov->hue = 0x80 << 8; + + if (ov->sensor == SEN_OV6620) { + PDEBUG(4, "Writing 6x20 registers"); + if (write_regvals(ov, regvals_norm_6x20)) + return -1; + } else { + PDEBUG(4, "Writing 6x30 registers"); + if (write_regvals(ov, regvals_norm_6x30)) + return -1; + } + + return 0; +} + +/* This initializes the KS0127 and KS0127B video decoders. */ +static int +ks0127_configure(struct usb_ov511 *ov) +{ + int rc; + + /* Detect decoder subtype */ + rc = i2c_r(ov, 0x00); + if (rc < 0) { + err("Error detecting sensor type"); + return -1; + } else if (rc & 0x08) { + rc = i2c_r(ov, 0x3d); + if (rc < 0) { + err("Error detecting sensor type"); + return -1; + } else if ((rc & 0x0f) == 0) { + info("Sensor is a KS0127"); + } else if ((rc & 0x0f) == 9) { + info("Sensor is a KS0127B Rev. A"); + } + } else { + info("Sensor is a KS0122"); + } + + /* This device is not supported yet. Bail out now... */ + err("This sensor is not supported yet."); + return -1; +} + +/* This initializes the SAA7111A video decoder. */ +static int +saa7111a_configure(struct usb_ov511 *ov) +{ + int rc; + + /* Since there is no register reset command, all registers must be + * written, otherwise gives erratic results */ + static struct ov511_regvals regvals_norm_SAA7111A[] = { + { OV511_I2C_BUS, 0x06, 0xce }, + { OV511_I2C_BUS, 0x07, 0x00 }, + { OV511_I2C_BUS, 0x10, 0x44 }, /* YUV422, 240/286 lines */ + { OV511_I2C_BUS, 0x0e, 0x01 }, /* NTSC M or PAL BGHI */ + { OV511_I2C_BUS, 0x00, 0x00 }, + { OV511_I2C_BUS, 0x01, 0x00 }, + { OV511_I2C_BUS, 0x03, 0x23 }, + { OV511_I2C_BUS, 0x04, 0x00 }, + { OV511_I2C_BUS, 0x05, 0x00 }, + { OV511_I2C_BUS, 0x08, 0xc8 }, /* Auto field freq */ + { OV511_I2C_BUS, 0x09, 0x01 }, /* Chrom. trap off, APER=0.25 */ + { OV511_I2C_BUS, 0x0a, 0x80 }, /* BRIG=128 */ + { OV511_I2C_BUS, 0x0b, 0x40 }, /* CONT=1.0 */ + { OV511_I2C_BUS, 0x0c, 0x40 }, /* SATN=1.0 */ + { OV511_I2C_BUS, 0x0d, 0x00 }, /* HUE=0 */ + { OV511_I2C_BUS, 0x0f, 0x00 }, + { OV511_I2C_BUS, 0x11, 0x0c }, + { OV511_I2C_BUS, 0x12, 0x00 }, + { OV511_I2C_BUS, 0x13, 0x00 }, + { OV511_I2C_BUS, 0x14, 0x00 }, + { OV511_I2C_BUS, 0x15, 0x00 }, + { OV511_I2C_BUS, 0x16, 0x00 }, + { OV511_I2C_BUS, 0x17, 0x00 }, + { OV511_I2C_BUS, 0x02, 0xc0 }, /* Composite input 0 */ + { OV511_DONE_BUS, 0x0, 0x00 }, + }; + + /* 640x480 not supported with PAL */ + if (ov->pal) { + ov->maxwidth = 320; + ov->maxheight = 240; /* Even field only */ + } else { + ov->maxwidth = 640; + ov->maxheight = 480; /* Even/Odd fields */ + } + + ov->minwidth = 320; + ov->minheight = 240; /* Even field only */ + + ov->has_decoder = 1; + ov->num_inputs = 8; + ov->norm = VIDEO_MODE_AUTO; + ov->stop_during_set = 0; /* Decoder guarantees stable image */ + + /* Decoder doesn't change these values, so we use these instead of + * acutally reading the registers (which doesn't work) */ + ov->brightness = 0x80 << 8; + ov->contrast = 0x40 << 9; + ov->colour = 0x40 << 9; + ov->hue = 32768; + + PDEBUG(4, "Writing SAA7111A registers"); + if (write_regvals(ov, regvals_norm_SAA7111A)) + return -1; + + /* Detect version of decoder. This must be done after writing the + * initial regs or the decoder will lock up. */ + rc = i2c_r(ov, 0x00); + + if (rc < 0) { + err("Error detecting sensor version"); + return -1; + } else { + info("Sensor is an SAA7111A (version 0x%x)", rc); + ov->sensor = SEN_SAA7111A; + } + + /* Latch to negative edge of clock. Otherwise, we get incorrect + * colors and jitter in the digital signal. */ + if (ov->bclass == BCL_OV511) + reg_w(ov, 0x11, 0x00); + else + warn("SAA7111A not yet supported with OV518/OV518+"); + + return 0; +} + +/* This initializes the OV511/OV511+ and the sensor */ +static int +ov511_configure(struct usb_ov511 *ov) +{ + static struct ov511_regvals regvals_init_511[] = { + { OV511_REG_BUS, R51x_SYS_RESET, 0x7f }, + { OV511_REG_BUS, R51x_SYS_INIT, 0x01 }, + { OV511_REG_BUS, R51x_SYS_RESET, 0x7f }, + { OV511_REG_BUS, R51x_SYS_INIT, 0x01 }, + { OV511_REG_BUS, R51x_SYS_RESET, 0x3f }, + { OV511_REG_BUS, R51x_SYS_INIT, 0x01 }, + { OV511_REG_BUS, R51x_SYS_RESET, 0x3d }, + { OV511_DONE_BUS, 0x0, 0x00}, + }; + + static struct ov511_regvals regvals_norm_511[] = { + { OV511_REG_BUS, R511_DRAM_FLOW_CTL, 0x01 }, + { OV511_REG_BUS, R51x_SYS_SNAP, 0x00 }, + { OV511_REG_BUS, R51x_SYS_SNAP, 0x02 }, + { OV511_REG_BUS, R51x_SYS_SNAP, 0x00 }, + { OV511_REG_BUS, R511_FIFO_OPTS, 0x1f }, + { OV511_REG_BUS, R511_COMP_EN, 0x00 }, + { OV511_REG_BUS, R511_COMP_LUT_EN, 0x03 }, + { OV511_DONE_BUS, 0x0, 0x00 }, + }; + + static struct ov511_regvals regvals_norm_511_plus[] = { + { OV511_REG_BUS, R511_DRAM_FLOW_CTL, 0xff }, + { OV511_REG_BUS, R51x_SYS_SNAP, 0x00 }, + { OV511_REG_BUS, R51x_SYS_SNAP, 0x02 }, + { OV511_REG_BUS, R51x_SYS_SNAP, 0x00 }, + { OV511_REG_BUS, R511_FIFO_OPTS, 0xff }, + { OV511_REG_BUS, R511_COMP_EN, 0x00 }, + { OV511_REG_BUS, R511_COMP_LUT_EN, 0x03 }, + { OV511_DONE_BUS, 0x0, 0x00 }, + }; + + PDEBUG(4, ""); + + ov->customid = reg_r(ov, R511_SYS_CUST_ID); + if (ov->customid < 0) { + err("Unable to read camera bridge registers"); + goto error; + } + + PDEBUG (1, "CustomID = %d", ov->customid); + ov->desc = symbolic(camlist, ov->customid); + info("model: %s", ov->desc); + + if (0 == strcmp(ov->desc, NOT_DEFINED_STR)) { + err("Camera type (%d) not recognized", ov->customid); + err("Please notify " EMAIL " of the name,"); + err("manufacturer, model, and this number of your camera."); + err("Also include the output of the detection process."); + } + + if (ov->customid == 70) /* USB Life TV (PAL/SECAM) */ + ov->pal = 1; + + if (write_regvals(ov, regvals_init_511)) goto error; + + if (ov->led_policy == LED_OFF || ov->led_policy == LED_AUTO) + ov51x_led_control(ov, 0); + + /* The OV511+ has undocumented bits in the flow control register. + * Setting it to 0xff fixes the corruption with moving objects. */ + if (ov->bridge == BRG_OV511) { + if (write_regvals(ov, regvals_norm_511)) goto error; + } else if (ov->bridge == BRG_OV511PLUS) { + if (write_regvals(ov, regvals_norm_511_plus)) goto error; + } else { + err("Invalid bridge"); + } + + if (ov511_init_compression(ov)) goto error; + + ov->packet_numbering = 1; + ov511_set_packet_size(ov, 0); + + ov->snap_enabled = snapshot; + + /* Test for 7xx0 */ + PDEBUG(3, "Testing for 0V7xx0"); + ov->primary_i2c_slave = OV7xx0_SID; + if (ov51x_set_slave_ids(ov, OV7xx0_SID) < 0) + goto error; + + if (i2c_w(ov, 0x12, 0x80) < 0) { + /* Test for 6xx0 */ + PDEBUG(3, "Testing for 0V6xx0"); + ov->primary_i2c_slave = OV6xx0_SID; + if (ov51x_set_slave_ids(ov, OV6xx0_SID) < 0) + goto error; + + if (i2c_w(ov, 0x12, 0x80) < 0) { + /* Test for 8xx0 */ + PDEBUG(3, "Testing for 0V8xx0"); + ov->primary_i2c_slave = OV8xx0_SID; + if (ov51x_set_slave_ids(ov, OV8xx0_SID) < 0) + goto error; + + if (i2c_w(ov, 0x12, 0x80) < 0) { + /* Test for SAA7111A */ + PDEBUG(3, "Testing for SAA7111A"); + ov->primary_i2c_slave = SAA7111A_SID; + if (ov51x_set_slave_ids(ov, SAA7111A_SID) < 0) + goto error; + + if (i2c_w(ov, 0x0d, 0x00) < 0) { + /* Test for KS0127 */ + PDEBUG(3, "Testing for KS0127"); + ov->primary_i2c_slave = KS0127_SID; + if (ov51x_set_slave_ids(ov, KS0127_SID) < 0) + goto error; + + if (i2c_w(ov, 0x10, 0x00) < 0) { + err("Can't determine sensor slave IDs"); + goto error; + } else { + if (ks0127_configure(ov) < 0) { + err("Failed to configure KS0127"); + goto error; + } + } + } else { + if (saa7111a_configure(ov) < 0) { + err("Failed to configure SAA7111A"); + goto error; + } + } + } else { + if (ov8xx0_configure(ov) < 0) { + err("Failed to configure OV8xx0 sensor"); + goto error; + } + } + } else { + if (ov6xx0_configure(ov) < 0) { + err("Failed to configure OV6xx0"); + goto error; + } + } + } else { + if (ov7xx0_configure(ov) < 0) { + err("Failed to configure OV7xx0"); + goto error; + } + } + + return 0; + +error: + err("OV511 Config failed"); + + return -EBUSY; +} + +/* This initializes the OV518/OV518+ and the sensor */ +static int +ov518_configure(struct usb_ov511 *ov) +{ + /* For 518 and 518+ */ + static struct ov511_regvals regvals_init_518[] = { + { OV511_REG_BUS, R51x_SYS_RESET, 0x40 }, + { OV511_REG_BUS, R51x_SYS_INIT, 0xe1 }, + { OV511_REG_BUS, R51x_SYS_RESET, 0x3e }, + { OV511_REG_BUS, R51x_SYS_INIT, 0xe1 }, + { OV511_REG_BUS, R51x_SYS_RESET, 0x00 }, + { OV511_REG_BUS, R51x_SYS_INIT, 0xe1 }, + { OV511_REG_BUS, 0x46, 0x00 }, + { OV511_REG_BUS, 0x5d, 0x03 }, + { OV511_DONE_BUS, 0x0, 0x00}, + }; + + static struct ov511_regvals regvals_norm_518[] = { + { OV511_REG_BUS, R51x_SYS_SNAP, 0x02 }, /* Reset */ + { OV511_REG_BUS, R51x_SYS_SNAP, 0x01 }, /* Enable */ + { OV511_REG_BUS, 0x31, 0x0f }, + { OV511_REG_BUS, 0x5d, 0x03 }, + { OV511_REG_BUS, 0x24, 0x9f }, + { OV511_REG_BUS, 0x25, 0x90 }, + { OV511_REG_BUS, 0x20, 0x00 }, + { OV511_REG_BUS, 0x51, 0x04 }, + { OV511_REG_BUS, 0x71, 0x19 }, + { OV511_REG_BUS, 0x2f, 0x80 }, + { OV511_DONE_BUS, 0x0, 0x00 }, + }; + + static struct ov511_regvals regvals_norm_518_plus[] = { + { OV511_REG_BUS, R51x_SYS_SNAP, 0x02 }, /* Reset */ + { OV511_REG_BUS, R51x_SYS_SNAP, 0x01 }, /* Enable */ + { OV511_REG_BUS, 0x31, 0x0f }, + { OV511_REG_BUS, 0x5d, 0x03 }, + { OV511_REG_BUS, 0x24, 0x9f }, + { OV511_REG_BUS, 0x25, 0x90 }, + { OV511_REG_BUS, 0x20, 0x60 }, + { OV511_REG_BUS, 0x51, 0x02 }, + { OV511_REG_BUS, 0x71, 0x19 }, + { OV511_REG_BUS, 0x40, 0xff }, + { OV511_REG_BUS, 0x41, 0x42 }, + { OV511_REG_BUS, 0x46, 0x00 }, + { OV511_REG_BUS, 0x33, 0x04 }, + { OV511_REG_BUS, 0x21, 0x19 }, + { OV511_REG_BUS, 0x3f, 0x10 }, + { OV511_REG_BUS, 0x2f, 0x80 }, + { OV511_DONE_BUS, 0x0, 0x00 }, + }; + + PDEBUG(4, ""); + + /* First 5 bits of custom ID reg are a revision ID on OV518 */ + info("Device revision %d", 0x1F & reg_r(ov, R511_SYS_CUST_ID)); + + /* Give it the default description */ + ov->desc = symbolic(camlist, 0); + + if (write_regvals(ov, regvals_init_518)) goto error; + + /* Set LED GPIO pin to output mode */ + if (reg_w_mask(ov, 0x57, 0x00, 0x02) < 0) goto error; + + /* LED is off by default with OV518; have to explicitly turn it on */ + if (ov->led_policy == LED_OFF || ov->led_policy == LED_AUTO) + ov51x_led_control(ov, 0); + else + ov51x_led_control(ov, 1); + + /* Don't require compression if dumppix is enabled; otherwise it's + * required. OV518 has no uncompressed mode, to save RAM. */ + if (!dumppix && !ov->compress) { + ov->compress = 1; + warn("Compression required with OV518...enabling"); + } + + if (ov->bridge == BRG_OV518) { + if (write_regvals(ov, regvals_norm_518)) goto error; + } else if (ov->bridge == BRG_OV518PLUS) { + if (write_regvals(ov, regvals_norm_518_plus)) goto error; + } else { + err("Invalid bridge"); + } + + if (ov518_init_compression(ov)) goto error; + + if (ov->bridge == BRG_OV518) + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 7) + struct usb_interface *ifp; + struct usb_host_interface *alt; + __u16 mxps = 0; + + ifp = usb_ifnum_to_if(ov->dev, 0); + if (ifp) { + alt = usb_altnum_to_altsetting(ifp, 7); + if (alt) +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + mxps = le16_to_cpu(alt->endpoint[0].desc.wMaxPacketSize); +# else + mxps = alt->endpoint[0].desc.wMaxPacketSize; +# endif + } +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + struct usb_interface *ifp = ov->dev->config[0].interface[0]; + __u16 mxps = ifp->altsetting[7].endpoint[0].desc.wMaxPacketSize; +#else + struct usb_interface *ifp = &ov->dev->config[0].interface[0]; + __u16 mxps = ifp->altsetting[7].endpoint[0].wMaxPacketSize; +#endif + /* Some OV518s have packet numbering by default, some don't */ + if (mxps == 897) + ov->packet_numbering = 1; + else + ov->packet_numbering = 0; + } else { + /* OV518+ has packet numbering turned on by default */ + ov->packet_numbering = 1; + } + + ov518_set_packet_size(ov, 0); + + ov->snap_enabled = snapshot; + + /* Test for 76xx */ + ov->primary_i2c_slave = OV7xx0_SID; + if (ov51x_set_slave_ids(ov, OV7xx0_SID) < 0) + goto error; + + /* The OV518 must be more aggressive about sensor detection since + * I2C write will never fail if the sensor is not present. We have + * to try to initialize the sensor to detect its presence */ + + if (init_ov_sensor(ov) < 0) { + /* Test for 6xx0 */ + ov->primary_i2c_slave = OV6xx0_SID; + if (ov51x_set_slave_ids(ov, OV6xx0_SID) < 0) + goto error; + + if (init_ov_sensor(ov) < 0) { + /* Test for 8xx0 */ + ov->primary_i2c_slave = OV8xx0_SID; + if (ov51x_set_slave_ids(ov, OV8xx0_SID) < 0) + goto error; + + if (init_ov_sensor(ov) < 0) { + err("Can't determine sensor slave IDs"); + goto error; + } else { + if (ov8xx0_configure(ov) < 0) { + err("Failed to configure OV8xx0 sensor"); + goto error; + } + } + } else { + if (ov6xx0_configure(ov) < 0) { + err("Failed to configure OV6xx0"); + goto error; + } + } + } else { + if (ov7xx0_configure(ov) < 0) { + err("Failed to configure OV7xx0"); + goto error; + } + } + + ov->maxwidth = 352; + ov->maxheight = 288; + + // The OV518 cannot go as low as the sensor can + ov->minwidth = 160; + ov->minheight = 120; + + return 0; + +error: + err("OV518 Config failed"); + + return -EBUSY; +} + +/* This initializes the OV518/OV518+ and the sensor */ +static int +ov519_configure(struct usb_ov511 *ov) +{ + + static struct ov511_regvals regvals_init_519[] = { + { OV511_REG_BUS, 0x5a, 0x6d }, /* EnableSystem */ + /* windows reads 0x53 at this point*/ + { OV511_REG_BUS, 0x53, 0x9b }, + { OV511_REG_BUS, 0x54, 0x0f }, // set bit2 to enable jpeg + { OV511_REG_BUS, 0x5d, 0x03 }, + { OV511_REG_BUS, 0x49, 0x01 }, + { OV511_REG_BUS, 0x48, 0x00 }, + + /* Set LED pin to output mode. Bit 4 must be cleared or sensor + * detection will fail. This deserves further investigation. */ + { OV511_REG_BUS, OV519_GPIO_IO_CTRL0, 0xee }, + + { OV511_REG_BUS, 0x51, 0x0f }, /* SetUsbInit */ + { OV511_REG_BUS, 0x51, 0x00 }, + { OV511_REG_BUS, 0x22, 0x00 }, + /* windows reads 0x55 at this point*/ + { OV511_DONE_BUS, 0x0, 0x00}, + }; + + PDEBUG(4, ""); + + /* Give it the default description */ + ov->desc = symbolic(camlist, 0); + + if (write_regvals(ov, regvals_init_519)) + goto error; + + if (ov519_init_compression(ov)) + goto error; + + if (ov->imp == IMP_EYETOY) { + /* LED is annoyingly bright. Only turn it on if requested to. */ + if (ov->led2_policy == LED_ON) + ov51x_led_control(ov, 1); + else + ov51x_led_control(ov, 0); + } else { + /* LED might be off by default */ + if (ov->led_policy == LED_ON) + ov51x_led_control(ov, 1); + else + ov51x_led_control(ov, 0); + } + + /* Don't require compression if dumppix is enabled; otherwise it's + * required. OV519 probably has no uncompressed mode, to save RAM. */ + if (!dumppix && !ov->compress) + ov->compress = 1; + + ov->packet_numbering = 0; + + ov519_set_packet_size(ov, 0); + + ov->snap_enabled = snapshot; + + /* Test for 76xx */ + ov->primary_i2c_slave = OV7xx0_SID; + if (ov51x_set_slave_ids(ov, OV7xx0_SID) < 0) + goto error; + + /* The OV519 must be more aggressive about sensor detection since + * I2C write will never fail if the sensor is not present. We have + * to try to initialize the sensor to detect its presence */ + + if (init_ov_sensor(ov) < 0) { + /* Test for 6xx0 */ + ov->primary_i2c_slave = OV6xx0_SID; + if (ov51x_set_slave_ids(ov, OV6xx0_SID) < 0) + goto error; + + if (init_ov_sensor(ov) < 0) { + /* Test for 8xx0 */ + ov->primary_i2c_slave = OV8xx0_SID; + if (ov51x_set_slave_ids(ov, OV8xx0_SID) < 0) + goto error; + + if (init_ov_sensor(ov) < 0) { + err("Can't determine sensor slave IDs"); + goto error; + } else { + if (ov8xx0_configure(ov) < 0) { + err("Failed to configure OV8xx0 sensor"); + goto error; + } + } + } else { + if (ov6xx0_configure(ov) < 0) { + err("Failed to configure OV6xx0"); + goto error; + } + } + } else { + if (ov7xx0_configure(ov) < 0) { + err("Failed to configure OV7xx0"); + goto error; + } + } + + return 0; + +error: + err("OV519 Config failed"); + + return -EBUSY; +} + +/**************************************************************************** + * + * USB routines + * + ***************************************************************************/ + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 36) +static int +ov51x_probe(struct usb_interface *intf, const struct usb_device_id *id) +{ + struct usb_device *dev = interface_to_usbdev(intf); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) +static void * +ov51x_probe(struct usb_device *dev, unsigned int ifnum, + const struct usb_device_id *id) +{ +#else +static void * +ov51x_probe(struct usb_device *dev, unsigned int ifnum) +{ +#endif + struct usb_interface_descriptor *idesc; + struct usb_ov511 *ov; + int i; + u16 vendor, product; + + PDEBUG(1, "probing for device..."); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 36) + /* We don't handle multi-config cameras */ + if (dev->descriptor.bNumConfigurations != 1) + return -ENODEV; +#else + /* We don't handle multi-config cameras */ + if (dev->descriptor.bNumConfigurations != 1) + return NULL; +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 7) + idesc = &intf->cur_altsetting->desc; +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 36) + idesc = &intf->altsetting[0].desc; +#else + idesc = &dev->actconfig->interface[ifnum].altsetting[0]; +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + vendor = le16_to_cpu(dev->descriptor.idVendor); + product = le16_to_cpu(dev->descriptor.idProduct); +#else + vendor = dev->descriptor.idVendor; + product = dev->descriptor.idProduct; +#endif + +/* 2.2.x compatibility */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0) + /* Is it an OV511/OV511+? */ + if (vendor != VEND_OMNIVISION + && vendor != VEND_MATTEL + && vendor != VEND_SONY) + return NULL; + + if (vendor == VEND_OMNIVISION + && product != PROD_OV511 + && product != PROD_OV518 + && product != PROD_OV511PLUS + && product != PROD_OV518PLUS + && product != PROD_OV519 + && product != PROD_OV1519 + && product != PROD_OV2519 + && product != PROD_OV3519 + && product != PROD_OV4519 + && product != PROD_OV5519 + && product != PROD_OV6519 + && product != PROD_OV7519 + && product != PROD_OV8519 + && product != PROD_OV9519 + && product != PROD_OVA519 + && product != PROD_OVB519 + && product != PROD_OVC519 + && product != PROD_OVD519 + && product != PROD_OVE519 + && product != PROD_OVF519 + && product != PROD_OV530) + return NULL; + + if (vendor == VEND_MATTEL + && product != PROD_ME2CAM) + return NULL; + + if (vendor == VEND_SONY + && product != PROD_EYETOY4 + && product != PROD_EYETOY5) + return NULL; + + if (vendor == VEND_MICROSOFT + && product != PROD_XBOX_CAM) + return NULL; +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 36) + if (idesc->bInterfaceClass != 0xFF) + return -ENODEV; + if (idesc->bInterfaceSubClass != 0x00) + return -ENODEV; +#else + if (idesc->bInterfaceClass != 0xFF) + return NULL; + if (idesc->bInterfaceSubClass != 0x00) + return NULL; +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 20) + /* Since code below may sleep, we use this as a lock */ + MOD_INC_USE_COUNT; +#endif + + if ((ov = kmalloc(sizeof(*ov), GFP_KERNEL)) == NULL) { + err("couldn't kmalloc ov struct"); + goto error_out; + } + + memset(ov, 0, sizeof(*ov)); + + ov->dev = dev; + ov->iface = idesc->bInterfaceNumber; + ov->led_policy = led; + ov->led2_policy = led2; + ov->compress = compress; + ov->lightfreq = lightfreq; + ov->num_inputs = 1; /* Video decoder init functs. change this */ + ov->stop_during_set = !fastset; + ov->backlight = backlight; + ov->mirror = mirror; + ov->auto_brt = autobright; + ov->auto_gain = autogain; + ov->auto_exp = autoexp; + ov->imp = IMP_GENERIC; + + switch (product) { + case PROD_OV511: + ov->bridge = BRG_OV511; + ov->bclass = BCL_OV511; + break; + case PROD_OV511PLUS: + ov->bridge = BRG_OV511PLUS; + ov->bclass = BCL_OV511; + break; + case PROD_OV518: + ov->bridge = BRG_OV518; + ov->bclass = BCL_OV518; + break; + case PROD_OV518PLUS: + ov->bridge = BRG_OV518PLUS; + ov->bclass = BCL_OV518; + break; + case PROD_OV519: + case PROD_OV4519: + case PROD_OV8519: + case PROD_OV530: + case PROD_XBOX_CAM: + ov->bridge = BRG_OV519; + ov->bclass = BCL_OV519; + break; + case PROD_OV1519: + case PROD_OV2519: + case PROD_OV3519: + case PROD_OV5519: + case PROD_OV6519: + case PROD_OV7519: + case PROD_OV9519: + case PROD_OVA519: + case PROD_OVB519: + case PROD_OVC519: + case PROD_OVD519: + case PROD_OVE519: + case PROD_OVF519: + info("Device has Product ID that hasn't been seen yet. It"); + info("will probably work anyway, but please send"); + info("/proc/bus/usb/devices, your dmesg log, and any info you"); + info("have about this device to mark@alpha.dyndns.org"); + ov->bridge = BRG_OV519; + ov->bclass = BCL_OV519; + break; + case PROD_EYETOY4: + case PROD_EYETOY5: + /* These two should work, but they are untested */ +// case PROD_EYETOY6: +// case PROD_EYETOY7: + ov->bridge = BRG_OV519; + ov->bclass = BCL_OV519; + ov->imp = IMP_EYETOY; + break; + case PROD_ME2CAM: + if (vendor != VEND_MATTEL) + goto error; + ov->bridge = BRG_OV511PLUS; + ov->bclass = BCL_OV511; + break; + default: + err("Unknown product ID 0x%04x", product); + goto error; + } + + info("USB %s video device found", symbolic(brglist, ov->bridge)); + +#ifdef OV511_ALLOW_CONVERSION + /* Workaround for some applications that want data in RGB + * instead of BGR. */ + if (force_rgb) + info("data format set to RGB"); +#endif + + init_waitqueue_head(&ov->wq); + + init_MUTEX(&ov->lock); /* to 1 == available */ + init_MUTEX(&ov->buf_lock); + init_MUTEX(&ov->param_lock); + init_MUTEX(&ov->i2c_lock); + init_MUTEX(&ov->cbuf_lock); + + ov->buf_state = BUF_NOT_ALLOCATED; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 20) + if (usb_make_path(dev, ov->usb_path, OV511_USB_PATH_LEN) < 0) { + err("usb_make_path error"); + goto error; + } +#endif + + /* Allocate control transfer buffer. */ + /* Must be kmalloc()'ed, for DMA compatibility */ + ov->cbuf = kmalloc(OV511_CBUF_SIZE, GFP_KERNEL); + if (!ov->cbuf) + goto error; + + switch (ov->bclass) { + case BCL_OV511: + if (ov511_configure(ov) < 0) + goto error; + break; + case BCL_OV518: + if (ov518_configure(ov) < 0) + goto error; + break; + case BCL_OV519: + if (ov519_configure(ov) < 0) + goto error; + break; + default: + goto error; + } + + for (i = 0; i < OV511_NUMFRAMES; i++) { + ov->frame[i].framenum = i; + init_waitqueue_head(&ov->frame[i].wq); + } + + for (i = 0; i < OV511_NUMSBUF; i++) { + ov->sbuf[i].ov = ov; + spin_lock_init(&ov->sbuf[i].lock); + ov->sbuf[i].n = i; + } + + /* Unnecessary? (This is done on open(). Need to make sure variables + * are properly initialized without this before removing it, though). */ + if (ov51x_set_default_params(ov) < 0) + goto error; + +#ifdef OV511_DEBUG + if (dump_bridge) { + if (ov->bclass == BCL_OV511) + ov511_dump_regs(ov); + else + ov518_dump_regs(ov); + } +#endif + + ov->vdev = video_device_alloc(); + if (!ov->vdev) + goto error; + + memcpy(ov->vdev, &vdev_template, sizeof(*ov->vdev)); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + ov->vdev->dev = &dev->dev; +#endif + video_set_drvdata(ov->vdev, ov); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 5) + for (i = 0; i < OV511_MAX_UNIT_VIDEO; i++) { + /* Minor 0 cannot be specified; assume user wants autodetect */ + if (unit_video[i] == 0) + break; + + if (video_register_device(ov->vdev, VFL_TYPE_GRABBER, + unit_video[i]) >= 0) { + break; + } + } + + /* Use the next available one */ + if ((ov->vdev->minor == -1) && + video_register_device(ov->vdev, VFL_TYPE_GRABBER, -1) < 0) { +#else + if (video_register_device(ov->vdev, VFL_TYPE_GRABBER) < 0) { +#endif + err("video_register_device failed"); + goto error; + } + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 20) + info("Device at %s registered to minor %d", ov->usb_path, + ov->vdev->minor); +#else + info("Device %d on bus %d registered to minor %d", dev->devnum, + dev->bus->busnum, ov->vdev->minor); +#endif + + create_proc_ov511_cam(ov); + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 20) + MOD_DEC_USE_COUNT; +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 36) + usb_set_intfdata(intf, ov); + return 0; +#else + return ov; +#endif + +error: + destroy_proc_ov511_cam(ov); + + if (ov->vdev) { + if (-1 == ov->vdev->minor) + video_device_release(ov->vdev); + else + video_unregister_device(ov->vdev); + ov->vdev = NULL; + } + + if (ov->cbuf) { + down(&ov->cbuf_lock); + kfree(ov->cbuf); + ov->cbuf = NULL; + up(&ov->cbuf_lock); + } + + kfree(ov); + ov = NULL; + +error_out: +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 20) + MOD_DEC_USE_COUNT; +#endif + err("Camera initialization failed"); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 36) + return -EIO; +#else + return NULL; +#endif +} + +static void +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +ov51x_disconnect(struct usb_interface *intf) +{ + struct usb_ov511 *ov = usb_get_intfdata(intf); +#else +ov51x_disconnect(struct usb_device *dev, void *ptr) +{ + struct usb_ov511 *ov = (struct usb_ov511 *) ptr; +#endif + int n; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 20) + MOD_INC_USE_COUNT; +#endif + + PDEBUG(3, ""); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + usb_set_intfdata(intf, NULL); +#endif + if (!ov) + return; + +#ifdef OV511_OLD_V4L + /* We don't want people trying to open up the device */ + if (!ov->user) + video_unregister_device(ov->vdev); + else + PDEBUG(3, "Device open...deferring video_unregister_device"); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + if (ov->vdev) + video_unregister_device(ov->vdev); +#else + video_unregister_device(ov->vdev); + if (ov->user) + PDEBUG(3, "Device open...deferring video_unregister_device"); +#endif + + for (n = 0; n < OV511_NUMFRAMES; n++) + ov->frame[n].grabstate = FRAME_ERROR; + + ov->curframe = -1; + + /* This will cause the process to request another frame */ + for (n = 0; n < OV511_NUMFRAMES; n++) + wake_up_interruptible(&ov->frame[n].wq); + + wake_up_interruptible(&ov->wq); + + ov->streaming = 0; + ov51x_unlink_isoc(ov); + + destroy_proc_ov511_cam(ov); + + ov->dev = NULL; + + /* Free the memory */ + if (ov && !ov->user) { + down(&ov->cbuf_lock); + kfree(ov->cbuf); + ov->cbuf = NULL; + up(&ov->cbuf_lock); + + ov51x_dealloc(ov); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) + if (ov->vdev) + video_device_release(ov->vdev); +#endif + kfree(ov); + ov = NULL; + } + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 20) + MOD_DEC_USE_COUNT; +#endif + PDEBUG(3, "Disconnect complete"); +} + +static struct usb_driver ov511_driver = { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 20) + .owner = THIS_MODULE, +#endif + .name = "ov51x", +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) + .id_table = device_table, +#endif + .probe = ov51x_probe, + .disconnect = ov51x_disconnect +}; + + + +module_init(usb_ov511_init); +module_exit(usb_ov511_exit); +#endif +#endif diff --git a/plugins/USBqemu/usb-mic/adcuser.h b/plugins/USBqemu/usb-mic/adcuser.h index 6dfb92d440..48f1af8ff1 100644 --- a/plugins/USBqemu/usb-mic/adcuser.h +++ b/plugins/USBqemu/usb-mic/adcuser.h @@ -1,30 +1,30 @@ -/*---------------------------------------------------------------------------- - * U S B - K e r n e l - *---------------------------------------------------------------------------- - * Name: ADCUSER.H - * Purpose: Audio Device Class Custom User Definitions - * Version: V1.10 - *---------------------------------------------------------------------------- - * This software is supplied "AS IS" without any warranties, express, - * implied or statutory, including but not limited to the implied - * warranties of fitness for purpose, satisfactory quality and - * noninfringement. Keil extends you a royalty-free right to reproduce - * and distribute executable files created using this software for use - * on Philips LPC2xxx microcontroller devices only. Nothing else gives - * you the right to use this software. - * - * Copyright (c) 2005-2006 Keil Software. - *---------------------------------------------------------------------------*/ - -#ifndef __ADCUSER_H__ -#define __ADCUSER_H__ - - -/* Audio Device Class Requests Callback Functions */ -extern BOOL ADC_IF_GetRequest (void); -extern BOOL ADC_IF_SetRequest (void); -extern BOOL ADC_EP_GetRequest (void); -extern BOOL ADC_EP_SetRequest (void); - - -#endif /* __ADCUSER_H__ */ +/*---------------------------------------------------------------------------- + * U S B - K e r n e l + *---------------------------------------------------------------------------- + * Name: ADCUSER.H + * Purpose: Audio Device Class Custom User Definitions + * Version: V1.10 + *---------------------------------------------------------------------------- + * This software is supplied "AS IS" without any warranties, express, + * implied or statutory, including but not limited to the implied + * warranties of fitness for purpose, satisfactory quality and + * noninfringement. Keil extends you a royalty-free right to reproduce + * and distribute executable files created using this software for use + * on Philips LPC2xxx microcontroller devices only. Nothing else gives + * you the right to use this software. + * + * Copyright (c) 2005-2006 Keil Software. + *---------------------------------------------------------------------------*/ + +#ifndef __ADCUSER_H__ +#define __ADCUSER_H__ + + +/* Audio Device Class Requests Callback Functions */ +extern BOOL ADC_IF_GetRequest (void); +extern BOOL ADC_IF_SetRequest (void); +extern BOOL ADC_EP_GetRequest (void); +extern BOOL ADC_EP_SetRequest (void); + + +#endif /* __ADCUSER_H__ */ diff --git a/plugins/USBqemu/usb-mic/audio.h b/plugins/USBqemu/usb-mic/audio.h index 69083fe9b8..ccd7fae398 100644 --- a/plugins/USBqemu/usb-mic/audio.h +++ b/plugins/USBqemu/usb-mic/audio.h @@ -1,372 +1,372 @@ -/*---------------------------------------------------------------------------- - * U S B - K e r n e l - *---------------------------------------------------------------------------- - * Name: AUDIO.H - * Purpose: USB Audio Device Class Definitions - * Version: V1.10 - *---------------------------------------------------------------------------- - * This software is supplied "AS IS" without any warranties, express, - * implied or statutory, including but not limited to the implied - * warranties of fitness for purpose, satisfactory quality and - * noninfringement. Keil extends you a royalty-free right to reproduce - * and distribute executable files created using this software for use - * on Philips LPC2xxx microcontroller devices only. Nothing else gives - * you the right to use this software. - * - * Copyright (c) 2005-2006 Keil Software. - *---------------------------------------------------------------------------*/ - -#ifndef __AUDIO_H__ -#define __AUDIO_H__ - - -/* Audio Interface Subclass Codes */ -#define AUDIO_SUBCLASS_UNDEFINED 0x00 -#define AUDIO_SUBCLASS_AUDIOCONTROL 0x01 -#define AUDIO_SUBCLASS_AUDIOSTREAMING 0x02 -#define AUDIO_SUBCLASS_MIDISTREAMING 0x03 - -/* Audio Interface Protocol Codes */ -#define AUDIO_PROTOCOL_UNDEFINED 0x00 - - -/* Audio Descriptor Types */ -#define AUDIO_UNDEFINED_DESCRIPTOR_TYPE 0x20 -#define AUDIO_DEVICE_DESCRIPTOR_TYPE 0x21 -#define AUDIO_CONFIGURATION_DESCRIPTOR_TYPE 0x22 -#define AUDIO_STRING_DESCRIPTOR_TYPE 0x23 -#define AUDIO_INTERFACE_DESCRIPTOR_TYPE 0x24 -#define AUDIO_ENDPOINT_DESCRIPTOR_TYPE 0x25 - - -/* Audio Control Interface Descriptor Subtypes */ -#define AUDIO_CONTROL_UNDEFINED 0x00 -#define AUDIO_CONTROL_HEADER 0x01 -#define AUDIO_CONTROL_INPUT_TERMINAL 0x02 -#define AUDIO_CONTROL_OUTPUT_TERMINAL 0x03 -#define AUDIO_CONTROL_MIXER_UNIT 0x04 -#define AUDIO_CONTROL_SELECTOR_UNIT 0x05 -#define AUDIO_CONTROL_FEATURE_UNIT 0x06 -#define AUDIO_CONTROL_PROCESSING_UNIT 0x07 -#define AUDIO_CONTROL_EXTENSION_UNIT 0x08 - -/* Audio Streaming Interface Descriptor Subtypes */ -#define AUDIO_STREAMING_UNDEFINED 0x00 -#define AUDIO_STREAMING_GENERAL 0x01 -#define AUDIO_STREAMING_FORMAT_TYPE 0x02 -#define AUDIO_STREAMING_FORMAT_SPECIFIC 0x03 - -/* Audio Endpoint Descriptor Subtypes */ -#define AUDIO_ENDPOINT_UNDEFINED 0x00 -#define AUDIO_ENDPOINT_GENERAL 0x01 - - -/* Audio Descriptor Sizes */ -#define AUDIO_CONTROL_INTERFACE_DESC_SZ(n) 0x08+n -#define AUDIO_STREAMING_INTERFACE_DESC_SIZE 0x07 -#define AUDIO_INPUT_TERMINAL_DESC_SIZE 0x0C -#define AUDIO_OUTPUT_TERMINAL_DESC_SIZE 0x09 -#define AUDIO_MIXER_UNIT_DESC_SZ(p,n) 0x0A+p+n -#define AUDIO_SELECTOR_UNIT_DESC_SZ(p) 0x06+p -#define AUDIO_FEATURE_UNIT_DESC_SZ(ch,n) 0x07+(ch+1)*n -#define AUDIO_PROCESSING_UNIT_DESC_SZ(p,n,x) 0x0D+p+n+x -#define AUDIO_EXTENSION_UNIT_DESC_SZ(p,n) 0x0D+p+n -#define AUDIO_STANDARD_ENDPOINT_DESC_SIZE 0x09 -#define AUDIO_STREAMING_ENDPOINT_DESC_SIZE 0x07 - - -/* Audio Processing Unit Process Types */ -#define AUDIO_UNDEFINED_PROCESS 0x00 -#define AUDIO_UP_DOWN_MIX_PROCESS 0x01 -#define AUDIO_DOLBY_PROLOGIC_PROCESS 0x02 -#define AUDIO_3D_STEREO_PROCESS 0x03 -#define AUDIO_REVERBERATION_PROCESS 0x04 -#define AUDIO_CHORUS_PROCESS 0x05 -#define AUDIO_DYN_RANGE_COMP_PROCESS 0x06 - - -/* Audio Request Codes */ -#define AUDIO_REQUEST_UNDEFINED 0x00 -#define AUDIO_REQUEST_SET_CUR 0x01 -#define AUDIO_REQUEST_GET_CUR 0x81 -#define AUDIO_REQUEST_SET_MIN 0x02 -#define AUDIO_REQUEST_GET_MIN 0x82 -#define AUDIO_REQUEST_SET_MAX 0x03 -#define AUDIO_REQUEST_GET_MAX 0x83 -#define AUDIO_REQUEST_SET_RES 0x04 -#define AUDIO_REQUEST_GET_RES 0x84 -#define AUDIO_REQUEST_SET_MEM 0x05 -#define AUDIO_REQUEST_GET_MEM 0x85 -#define AUDIO_REQUEST_GET_STAT 0xFF - - -/* Audio Control Selector Codes */ -#define AUDIO_CONTROL_UNDEFINED 0x00 /* Common Selector */ - -/* Terminal Control Selectors */ -#define AUDIO_COPY_PROTECT_CONTROL 0x01 - -/* Feature Unit Control Selectors */ -#define AUDIO_MUTE_CONTROL 0x01 -#define AUDIO_VOLUME_CONTROL 0x02 -#define AUDIO_BASS_CONTROL 0x03 -#define AUDIO_MID_CONTROL 0x04 -#define AUDIO_TREBLE_CONTROL 0x05 -#define AUDIO_GRAPHIC_EQUALIZER_CONTROL 0x06 -#define AUDIO_AUTOMATIC_GAIN_CONTROL 0x07 -#define AUDIO_DELAY_CONTROL 0x08 -#define AUDIO_BASS_BOOST_CONTROL 0x09 -#define AUDIO_LOUDNESS_CONTROL 0x0A - -/* Processing Unit Control Selectors: */ -#define AUDIO_ENABLE_CONTROL 0x01 /* Common Selector */ -#define AUDIO_MODE_SELECT_CONTROL 0x02 /* Common Selector */ - -/* - Up/Down-mix Control Selectors */ -/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ -/* AUDIO_MODE_SELECT_CONTROL 0x02 Common Selector */ - -/* - Dolby Prologic Control Selectors */ -/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ -/* AUDIO_MODE_SELECT_CONTROL 0x02 Common Selector */ - -/* - 3D Stereo Extender Control Selectors */ -/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ -#define AUDIO_SPACIOUSNESS_CONTROL 0x02 - -/* - Reverberation Control Selectors */ -/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ -#define AUDIO_REVERB_LEVEL_CONTROL 0x02 -#define AUDIO_REVERB_TIME_CONTROL 0x03 -#define AUDIO_REVERB_FEEDBACK_CONTROL 0x04 - -/* - Chorus Control Selectors */ -/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ -#define AUDIO_CHORUS_LEVEL_CONTROL 0x02 -#define AUDIO_SHORUS_RATE_CONTROL 0x03 -#define AUDIO_CHORUS_DEPTH_CONTROL 0x04 - -/* - Dynamic Range Compressor Control Selectors */ -/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ -#define AUDIO_COMPRESSION_RATE_CONTROL 0x02 -#define AUDIO_MAX_AMPL_CONTROL 0x03 -#define AUDIO_THRESHOLD_CONTROL 0x04 -#define AUDIO_ATTACK_TIME_CONTROL 0x05 -#define AUDIO_RELEASE_TIME_CONTROL 0x06 - -/* Extension Unit Control Selectors */ -/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ - -/* Endpoint Control Selectors */ -#define AUDIO_SAMPLING_FREQ_CONTROL 0x01 -#define AUDIO_PITCH_CONTROL 0x02 - - -/* Audio Format Specific Control Selectors */ - -/* MPEG Control Selectors */ -#define AUDIO_MPEG_CONTROL_UNDEFINED 0x00 -#define AUDIO_MPEG_DUAL_CHANNEL_CONTROL 0x01 -#define AUDIO_MPEG_SECOND_STEREO_CONTROL 0x02 -#define AUDIO_MPEG_MULTILINGUAL_CONTROL 0x03 -#define AUDIO_MPEG_DYN_RANGE_CONTROL 0x04 -#define AUDIO_MPEG_SCALING_CONTROL 0x05 -#define AUDIO_MPEG_HILO_SCALING_CONTROL 0x06 - -/* AC-3 Control Selectors */ -#define AUDIO_AC3_CONTROL_UNDEFINED 0x00 -#define AUDIO_AC3_MODE_CONTROL 0x01 -#define AUDIO_AC3_DYN_RANGE_CONTROL 0x02 -#define AUDIO_AC3_SCALING_CONTROL 0x03 -#define AUDIO_AC3_HILO_SCALING_CONTROL 0x04 - - -/* Audio Format Types */ -#define AUDIO_FORMAT_TYPE_UNDEFINED 0x00 -#define AUDIO_FORMAT_TYPE_I 0x01 -#define AUDIO_FORMAT_TYPE_II 0x02 -#define AUDIO_FORMAT_TYPE_III 0x03 - - -/* Audio Format Type Descriptor Sizes */ -#define AUDIO_FORMAT_TYPE_I_DESC_SZ(n) 0x08+(n*3) -#define AUDIO_FORMAT_TYPE_II_DESC_SZ(n) 0x09+(n*3) -#define AUDIO_FORMAT_TYPE_III_DESC_SZ(n) 0x08+(n*3) -#define AUDIO_FORMAT_MPEG_DESC_SIZE 0x09 -#define AUDIO_FORMAT_AC3_DESC_SIZE 0x0A - - -/* Audio Data Format Codes */ - -/* Audio Data Format Type I Codes */ -#define AUDIO_FORMAT_TYPE_I_UNDEFINED 0x0000 -#define AUDIO_FORMAT_PCM 0x0001 -#define AUDIO_FORMAT_PCM8 0x0002 -#define AUDIO_FORMAT_IEEE_FLOAT 0x0003 -#define AUDIO_FORMAT_ALAW 0x0004 -#define AUDIO_FORMAT_MULAW 0x0005 - -/* Audio Data Format Type II Codes */ -#define AUDIO_FORMAT_TYPE_II_UNDEFINED 0x1000 -#define AUDIO_FORMAT_MPEG 0x1001 -#define AUDIO_FORMAT_AC3 0x1002 - -/* Audio Data Format Type III Codes */ -#define AUDIO_FORMAT_TYPE_III_UNDEFINED 0x2000 -#define AUDIO_FORMAT_IEC1937_AC3 0x2001 -#define AUDIO_FORMAT_IEC1937_MPEG1_L1 0x2002 -#define AUDIO_FORMAT_IEC1937_MPEG1_L2_3 0x2003 -#define AUDIO_FORMAT_IEC1937_MPEG2_NOEXT 0x2003 -#define AUDIO_FORMAT_IEC1937_MPEG2_EXT 0x2004 -#define AUDIO_FORMAT_IEC1937_MPEG2_L1_LS 0x2005 -#define AUDIO_FORMAT_IEC1937_MPEG2_L2_3 0x2006 - - -/* Predefined Audio Channel Configuration Bits */ -#define AUDIO_CHANNEL_M 0x0000 /* Mono */ -#define AUDIO_CHANNEL_L 0x0001 /* Left Front */ -#define AUDIO_CHANNEL_R 0x0002 /* Right Front */ -#define AUDIO_CHANNEL_C 0x0004 /* Center Front */ -#define AUDIO_CHANNEL_LFE 0x0008 /* Low Freq. Enhance. */ -#define AUDIO_CHANNEL_LS 0x0010 /* Left Surround */ -#define AUDIO_CHANNEL_RS 0x0020 /* Right Surround */ -#define AUDIO_CHANNEL_LC 0x0040 /* Left of Center */ -#define AUDIO_CHANNEL_RC 0x0080 /* Right of Center */ -#define AUDIO_CHANNEL_S 0x0100 /* Surround */ -#define AUDIO_CHANNEL_SL 0x0200 /* Side Left */ -#define AUDIO_CHANNEL_SR 0x0400 /* Side Right */ -#define AUDIO_CHANNEL_T 0x0800 /* Top */ - - -/* Feature Unit Control Bits */ -#define AUDIO_CONTROL_MUTE 0x0001 -#define AUDIO_CONTROL_VOLUME 0x0002 -#define AUDIO_CONTROL_BASS 0x0004 -#define AUDIO_CONTROL_MID 0x0008 -#define AUDIO_CONTROL_TREBLE 0x0010 -#define AUDIO_CONTROL_GRAPHIC_EQUALIZER 0x0020 -#define AUDIO_CONTROL_AUTOMATIC_GAIN 0x0040 -#define AUDIO_CONTROL_DEALY 0x0080 -#define AUDIO_CONTROL_BASS_BOOST 0x0100 -#define AUDIO_CONTROL_LOUDNESS 0x0200 - -/* Processing Unit Control Bits: */ -#define AUDIO_CONTROL_ENABLE 0x0001 /* Common Bit */ -#define AUDIO_CONTROL_MODE_SELECT 0x0002 /* Common Bit */ - -/* - Up/Down-mix Control Bits */ -/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ -/* AUDIO_CONTROL_MODE_SELECT 0x0002 Common Bit */ - -/* - Dolby Prologic Control Bits */ -/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ -/* AUDIO_CONTROL_MODE_SELECT 0x0002 Common Bit */ - -/* - 3D Stereo Extender Control Bits */ -/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ -#define AUDIO_CONTROL_SPACIOUSNESS 0x0002 - -/* - Reverberation Control Bits */ -/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ -#define AUDIO_CONTROL_REVERB_TYPE 0x0002 -#define AUDIO_CONTROL_REVERB_LEVEL 0x0004 -#define AUDIO_CONTROL_REVERB_TIME 0x0008 -#define AUDIO_CONTROL_REVERB_FEEDBACK 0x0010 - -/* - Chorus Control Bits */ -/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ -#define AUDIO_CONTROL_CHORUS_LEVEL 0x0002 -#define AUDIO_CONTROL_SHORUS_RATE 0x0004 -#define AUDIO_CONTROL_CHORUS_DEPTH 0x0008 - -/* - Dynamic Range Compressor Control Bits */ -/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ -#define AUDIO_CONTROL_COMPRESSION_RATE 0x0002 -#define AUDIO_CONTROL_MAX_AMPL 0x0004 -#define AUDIO_CONTROL_THRESHOLD 0x0008 -#define AUDIO_CONTROL_ATTACK_TIME 0x0010 -#define AUDIO_CONTROL_RELEASE_TIME 0x0020 - -/* Extension Unit Control Bits */ -/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ - -/* Endpoint Control Bits */ -#define AUDIO_CONTROL_SAMPLING_FREQ 0x01 -#define AUDIO_CONTROL_PITCH 0x02 -#define AUDIO_MAX_PACKETS_ONLY 0x80 - - -/* Audio Terminal Types */ - -/* USB Terminal Types */ -#define AUDIO_TERMINAL_USB_UNDEFINED 0x0100 -#define AUDIO_TERMINAL_USB_STREAMING 0x0101 -#define AUDIO_TERMINAL_USB_VENDOR_SPECIFIC 0x01FF - -/* Input Terminal Types */ -#define AUDIO_TERMINAL_INPUT_UNDEFINED 0x0200 -#define AUDIO_TERMINAL_MICROPHONE 0x0201 -#define AUDIO_TERMINAL_DESKTOP_MICROPHONE 0x0202 -#define AUDIO_TERMINAL_PERSONAL_MICROPHONE 0x0203 -#define AUDIO_TERMINAL_OMNI_DIR_MICROPHONE 0x0204 -#define AUDIO_TERMINAL_MICROPHONE_ARRAY 0x0205 -#define AUDIO_TERMINAL_PROCESSING_MIC_ARRAY 0x0206 - -/* Output Terminal Types */ -#define AUDIO_TERMINAL_OUTPUT_UNDEFINED 0x0300 -#define AUDIO_TERMINAL_SPEAKER 0x0301 -#define AUDIO_TERMINAL_HEADPHONES 0x0302 -#define AUDIO_TERMINAL_HEAD_MOUNTED_AUDIO 0x0303 -#define AUDIO_TERMINAL_DESKTOP_SPEAKER 0x0304 -#define AUDIO_TERMINAL_ROOM_SPEAKER 0x0305 -#define AUDIO_TERMINAL_COMMUNICATION_SPEAKER 0x0306 -#define AUDIO_TERMINAL_LOW_FREQ_SPEAKER 0x0307 - -/* Bi-directional Terminal Types */ -#define AUDIO_TERMINAL_BIDIRECTIONAL_UNDEFINED 0x0400 -#define AUDIO_TERMINAL_HANDSET 0x0401 -#define AUDIO_TERMINAL_HEAD_MOUNTED_HANDSET 0x0402 -#define AUDIO_TERMINAL_SPEAKERPHONE 0x0403 -#define AUDIO_TERMINAL_SPEAKERPHONE_ECHOSUPRESS 0x0404 -#define AUDIO_TERMINAL_SPEAKERPHONE_ECHOCANCEL 0x0405 - -/* Telephony Terminal Types */ -#define AUDIO_TERMINAL_TELEPHONY_UNDEFINED 0x0500 -#define AUDIO_TERMINAL_PHONE_LINE 0x0501 -#define AUDIO_TERMINAL_TELEPHONE 0x0502 -#define AUDIO_TERMINAL_DOWN_LINE_PHONE 0x0503 - -/* External Terminal Types */ -#define AUDIO_TERMINAL_EXTERNAL_UNDEFINED 0x0600 -#define AUDIO_TERMINAL_ANALOG_CONNECTOR 0x0601 -#define AUDIO_TERMINAL_DIGITAL_AUDIO_INTERFACE 0x0602 -#define AUDIO_TERMINAL_LINE_CONNECTOR 0x0603 -#define AUDIO_TERMINAL_LEGACY_AUDIO_CONNECTOR 0x0604 -#define AUDIO_TERMINAL_SPDIF_INTERFACE 0x0605 -#define AUDIO_TERMINAL_1394_DA_STREAM 0x0606 -#define AUDIO_TERMINAL_1394_DA_STREAM_TRACK 0x0607 - -/* Embedded Function Terminal Types */ -#define AUDIO_TERMINAL_EMBEDDED_UNDEFINED 0x0700 -#define AUDIO_TERMINAL_CALIBRATION_NOISE 0x0701 -#define AUDIO_TERMINAL_EQUALIZATION_NOISE 0x0702 -#define AUDIO_TERMINAL_CD_PLAYER 0x0703 -#define AUDIO_TERMINAL_DAT 0x0704 -#define AUDIO_TERMINAL_DCC 0x0705 -#define AUDIO_TERMINAL_MINI_DISK 0x0706 -#define AUDIO_TERMINAL_ANALOG_TAPE 0x0707 -#define AUDIO_TERMINAL_PHONOGRAPH 0x0708 -#define AUDIO_TERMINAL_VCR_AUDIO 0x0709 -#define AUDIO_TERMINAL_VIDEO_DISC_AUDIO 0x070A -#define AUDIO_TERMINAL_DVD_AUDIO 0x070B -#define AUDIO_TERMINAL_TV_TUNER_AUDIO 0x070C -#define AUDIO_TERMINAL_SATELLITE_RECEIVER_AUDIO 0x070D -#define AUDIO_TERMINAL_CABLE_TUNER_AUDIO 0x070E -#define AUDIO_TERMINAL_DSS_AUDIO 0x070F -#define AUDIO_TERMINAL_RADIO_RECEIVER 0x0710 -#define AUDIO_TERMINAL_RADIO_TRANSMITTER 0x0711 -#define AUDIO_TERMINAL_MULTI_TRACK_RECORDER 0x0712 -#define AUDIO_TERMINAL_SYNTHESIZER 0x0713 - - -#endif /* __AUDIO_H__ */ +/*---------------------------------------------------------------------------- + * U S B - K e r n e l + *---------------------------------------------------------------------------- + * Name: AUDIO.H + * Purpose: USB Audio Device Class Definitions + * Version: V1.10 + *---------------------------------------------------------------------------- + * This software is supplied "AS IS" without any warranties, express, + * implied or statutory, including but not limited to the implied + * warranties of fitness for purpose, satisfactory quality and + * noninfringement. Keil extends you a royalty-free right to reproduce + * and distribute executable files created using this software for use + * on Philips LPC2xxx microcontroller devices only. Nothing else gives + * you the right to use this software. + * + * Copyright (c) 2005-2006 Keil Software. + *---------------------------------------------------------------------------*/ + +#ifndef __AUDIO_H__ +#define __AUDIO_H__ + + +/* Audio Interface Subclass Codes */ +#define AUDIO_SUBCLASS_UNDEFINED 0x00 +#define AUDIO_SUBCLASS_AUDIOCONTROL 0x01 +#define AUDIO_SUBCLASS_AUDIOSTREAMING 0x02 +#define AUDIO_SUBCLASS_MIDISTREAMING 0x03 + +/* Audio Interface Protocol Codes */ +#define AUDIO_PROTOCOL_UNDEFINED 0x00 + + +/* Audio Descriptor Types */ +#define AUDIO_UNDEFINED_DESCRIPTOR_TYPE 0x20 +#define AUDIO_DEVICE_DESCRIPTOR_TYPE 0x21 +#define AUDIO_CONFIGURATION_DESCRIPTOR_TYPE 0x22 +#define AUDIO_STRING_DESCRIPTOR_TYPE 0x23 +#define AUDIO_INTERFACE_DESCRIPTOR_TYPE 0x24 +#define AUDIO_ENDPOINT_DESCRIPTOR_TYPE 0x25 + + +/* Audio Control Interface Descriptor Subtypes */ +#define AUDIO_CONTROL_UNDEFINED 0x00 +#define AUDIO_CONTROL_HEADER 0x01 +#define AUDIO_CONTROL_INPUT_TERMINAL 0x02 +#define AUDIO_CONTROL_OUTPUT_TERMINAL 0x03 +#define AUDIO_CONTROL_MIXER_UNIT 0x04 +#define AUDIO_CONTROL_SELECTOR_UNIT 0x05 +#define AUDIO_CONTROL_FEATURE_UNIT 0x06 +#define AUDIO_CONTROL_PROCESSING_UNIT 0x07 +#define AUDIO_CONTROL_EXTENSION_UNIT 0x08 + +/* Audio Streaming Interface Descriptor Subtypes */ +#define AUDIO_STREAMING_UNDEFINED 0x00 +#define AUDIO_STREAMING_GENERAL 0x01 +#define AUDIO_STREAMING_FORMAT_TYPE 0x02 +#define AUDIO_STREAMING_FORMAT_SPECIFIC 0x03 + +/* Audio Endpoint Descriptor Subtypes */ +#define AUDIO_ENDPOINT_UNDEFINED 0x00 +#define AUDIO_ENDPOINT_GENERAL 0x01 + + +/* Audio Descriptor Sizes */ +#define AUDIO_CONTROL_INTERFACE_DESC_SZ(n) 0x08+n +#define AUDIO_STREAMING_INTERFACE_DESC_SIZE 0x07 +#define AUDIO_INPUT_TERMINAL_DESC_SIZE 0x0C +#define AUDIO_OUTPUT_TERMINAL_DESC_SIZE 0x09 +#define AUDIO_MIXER_UNIT_DESC_SZ(p,n) 0x0A+p+n +#define AUDIO_SELECTOR_UNIT_DESC_SZ(p) 0x06+p +#define AUDIO_FEATURE_UNIT_DESC_SZ(ch,n) 0x07+(ch+1)*n +#define AUDIO_PROCESSING_UNIT_DESC_SZ(p,n,x) 0x0D+p+n+x +#define AUDIO_EXTENSION_UNIT_DESC_SZ(p,n) 0x0D+p+n +#define AUDIO_STANDARD_ENDPOINT_DESC_SIZE 0x09 +#define AUDIO_STREAMING_ENDPOINT_DESC_SIZE 0x07 + + +/* Audio Processing Unit Process Types */ +#define AUDIO_UNDEFINED_PROCESS 0x00 +#define AUDIO_UP_DOWN_MIX_PROCESS 0x01 +#define AUDIO_DOLBY_PROLOGIC_PROCESS 0x02 +#define AUDIO_3D_STEREO_PROCESS 0x03 +#define AUDIO_REVERBERATION_PROCESS 0x04 +#define AUDIO_CHORUS_PROCESS 0x05 +#define AUDIO_DYN_RANGE_COMP_PROCESS 0x06 + + +/* Audio Request Codes */ +#define AUDIO_REQUEST_UNDEFINED 0x00 +#define AUDIO_REQUEST_SET_CUR 0x01 +#define AUDIO_REQUEST_GET_CUR 0x81 +#define AUDIO_REQUEST_SET_MIN 0x02 +#define AUDIO_REQUEST_GET_MIN 0x82 +#define AUDIO_REQUEST_SET_MAX 0x03 +#define AUDIO_REQUEST_GET_MAX 0x83 +#define AUDIO_REQUEST_SET_RES 0x04 +#define AUDIO_REQUEST_GET_RES 0x84 +#define AUDIO_REQUEST_SET_MEM 0x05 +#define AUDIO_REQUEST_GET_MEM 0x85 +#define AUDIO_REQUEST_GET_STAT 0xFF + + +/* Audio Control Selector Codes */ +#define AUDIO_CONTROL_UNDEFINED 0x00 /* Common Selector */ + +/* Terminal Control Selectors */ +#define AUDIO_COPY_PROTECT_CONTROL 0x01 + +/* Feature Unit Control Selectors */ +#define AUDIO_MUTE_CONTROL 0x01 +#define AUDIO_VOLUME_CONTROL 0x02 +#define AUDIO_BASS_CONTROL 0x03 +#define AUDIO_MID_CONTROL 0x04 +#define AUDIO_TREBLE_CONTROL 0x05 +#define AUDIO_GRAPHIC_EQUALIZER_CONTROL 0x06 +#define AUDIO_AUTOMATIC_GAIN_CONTROL 0x07 +#define AUDIO_DELAY_CONTROL 0x08 +#define AUDIO_BASS_BOOST_CONTROL 0x09 +#define AUDIO_LOUDNESS_CONTROL 0x0A + +/* Processing Unit Control Selectors: */ +#define AUDIO_ENABLE_CONTROL 0x01 /* Common Selector */ +#define AUDIO_MODE_SELECT_CONTROL 0x02 /* Common Selector */ + +/* - Up/Down-mix Control Selectors */ +/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ +/* AUDIO_MODE_SELECT_CONTROL 0x02 Common Selector */ + +/* - Dolby Prologic Control Selectors */ +/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ +/* AUDIO_MODE_SELECT_CONTROL 0x02 Common Selector */ + +/* - 3D Stereo Extender Control Selectors */ +/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ +#define AUDIO_SPACIOUSNESS_CONTROL 0x02 + +/* - Reverberation Control Selectors */ +/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ +#define AUDIO_REVERB_LEVEL_CONTROL 0x02 +#define AUDIO_REVERB_TIME_CONTROL 0x03 +#define AUDIO_REVERB_FEEDBACK_CONTROL 0x04 + +/* - Chorus Control Selectors */ +/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ +#define AUDIO_CHORUS_LEVEL_CONTROL 0x02 +#define AUDIO_SHORUS_RATE_CONTROL 0x03 +#define AUDIO_CHORUS_DEPTH_CONTROL 0x04 + +/* - Dynamic Range Compressor Control Selectors */ +/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ +#define AUDIO_COMPRESSION_RATE_CONTROL 0x02 +#define AUDIO_MAX_AMPL_CONTROL 0x03 +#define AUDIO_THRESHOLD_CONTROL 0x04 +#define AUDIO_ATTACK_TIME_CONTROL 0x05 +#define AUDIO_RELEASE_TIME_CONTROL 0x06 + +/* Extension Unit Control Selectors */ +/* AUDIO_ENABLE_CONTROL 0x01 Common Selector */ + +/* Endpoint Control Selectors */ +#define AUDIO_SAMPLING_FREQ_CONTROL 0x01 +#define AUDIO_PITCH_CONTROL 0x02 + + +/* Audio Format Specific Control Selectors */ + +/* MPEG Control Selectors */ +#define AUDIO_MPEG_CONTROL_UNDEFINED 0x00 +#define AUDIO_MPEG_DUAL_CHANNEL_CONTROL 0x01 +#define AUDIO_MPEG_SECOND_STEREO_CONTROL 0x02 +#define AUDIO_MPEG_MULTILINGUAL_CONTROL 0x03 +#define AUDIO_MPEG_DYN_RANGE_CONTROL 0x04 +#define AUDIO_MPEG_SCALING_CONTROL 0x05 +#define AUDIO_MPEG_HILO_SCALING_CONTROL 0x06 + +/* AC-3 Control Selectors */ +#define AUDIO_AC3_CONTROL_UNDEFINED 0x00 +#define AUDIO_AC3_MODE_CONTROL 0x01 +#define AUDIO_AC3_DYN_RANGE_CONTROL 0x02 +#define AUDIO_AC3_SCALING_CONTROL 0x03 +#define AUDIO_AC3_HILO_SCALING_CONTROL 0x04 + + +/* Audio Format Types */ +#define AUDIO_FORMAT_TYPE_UNDEFINED 0x00 +#define AUDIO_FORMAT_TYPE_I 0x01 +#define AUDIO_FORMAT_TYPE_II 0x02 +#define AUDIO_FORMAT_TYPE_III 0x03 + + +/* Audio Format Type Descriptor Sizes */ +#define AUDIO_FORMAT_TYPE_I_DESC_SZ(n) 0x08+(n*3) +#define AUDIO_FORMAT_TYPE_II_DESC_SZ(n) 0x09+(n*3) +#define AUDIO_FORMAT_TYPE_III_DESC_SZ(n) 0x08+(n*3) +#define AUDIO_FORMAT_MPEG_DESC_SIZE 0x09 +#define AUDIO_FORMAT_AC3_DESC_SIZE 0x0A + + +/* Audio Data Format Codes */ + +/* Audio Data Format Type I Codes */ +#define AUDIO_FORMAT_TYPE_I_UNDEFINED 0x0000 +#define AUDIO_FORMAT_PCM 0x0001 +#define AUDIO_FORMAT_PCM8 0x0002 +#define AUDIO_FORMAT_IEEE_FLOAT 0x0003 +#define AUDIO_FORMAT_ALAW 0x0004 +#define AUDIO_FORMAT_MULAW 0x0005 + +/* Audio Data Format Type II Codes */ +#define AUDIO_FORMAT_TYPE_II_UNDEFINED 0x1000 +#define AUDIO_FORMAT_MPEG 0x1001 +#define AUDIO_FORMAT_AC3 0x1002 + +/* Audio Data Format Type III Codes */ +#define AUDIO_FORMAT_TYPE_III_UNDEFINED 0x2000 +#define AUDIO_FORMAT_IEC1937_AC3 0x2001 +#define AUDIO_FORMAT_IEC1937_MPEG1_L1 0x2002 +#define AUDIO_FORMAT_IEC1937_MPEG1_L2_3 0x2003 +#define AUDIO_FORMAT_IEC1937_MPEG2_NOEXT 0x2003 +#define AUDIO_FORMAT_IEC1937_MPEG2_EXT 0x2004 +#define AUDIO_FORMAT_IEC1937_MPEG2_L1_LS 0x2005 +#define AUDIO_FORMAT_IEC1937_MPEG2_L2_3 0x2006 + + +/* Predefined Audio Channel Configuration Bits */ +#define AUDIO_CHANNEL_M 0x0000 /* Mono */ +#define AUDIO_CHANNEL_L 0x0001 /* Left Front */ +#define AUDIO_CHANNEL_R 0x0002 /* Right Front */ +#define AUDIO_CHANNEL_C 0x0004 /* Center Front */ +#define AUDIO_CHANNEL_LFE 0x0008 /* Low Freq. Enhance. */ +#define AUDIO_CHANNEL_LS 0x0010 /* Left Surround */ +#define AUDIO_CHANNEL_RS 0x0020 /* Right Surround */ +#define AUDIO_CHANNEL_LC 0x0040 /* Left of Center */ +#define AUDIO_CHANNEL_RC 0x0080 /* Right of Center */ +#define AUDIO_CHANNEL_S 0x0100 /* Surround */ +#define AUDIO_CHANNEL_SL 0x0200 /* Side Left */ +#define AUDIO_CHANNEL_SR 0x0400 /* Side Right */ +#define AUDIO_CHANNEL_T 0x0800 /* Top */ + + +/* Feature Unit Control Bits */ +#define AUDIO_CONTROL_MUTE 0x0001 +#define AUDIO_CONTROL_VOLUME 0x0002 +#define AUDIO_CONTROL_BASS 0x0004 +#define AUDIO_CONTROL_MID 0x0008 +#define AUDIO_CONTROL_TREBLE 0x0010 +#define AUDIO_CONTROL_GRAPHIC_EQUALIZER 0x0020 +#define AUDIO_CONTROL_AUTOMATIC_GAIN 0x0040 +#define AUDIO_CONTROL_DEALY 0x0080 +#define AUDIO_CONTROL_BASS_BOOST 0x0100 +#define AUDIO_CONTROL_LOUDNESS 0x0200 + +/* Processing Unit Control Bits: */ +#define AUDIO_CONTROL_ENABLE 0x0001 /* Common Bit */ +#define AUDIO_CONTROL_MODE_SELECT 0x0002 /* Common Bit */ + +/* - Up/Down-mix Control Bits */ +/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ +/* AUDIO_CONTROL_MODE_SELECT 0x0002 Common Bit */ + +/* - Dolby Prologic Control Bits */ +/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ +/* AUDIO_CONTROL_MODE_SELECT 0x0002 Common Bit */ + +/* - 3D Stereo Extender Control Bits */ +/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ +#define AUDIO_CONTROL_SPACIOUSNESS 0x0002 + +/* - Reverberation Control Bits */ +/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ +#define AUDIO_CONTROL_REVERB_TYPE 0x0002 +#define AUDIO_CONTROL_REVERB_LEVEL 0x0004 +#define AUDIO_CONTROL_REVERB_TIME 0x0008 +#define AUDIO_CONTROL_REVERB_FEEDBACK 0x0010 + +/* - Chorus Control Bits */ +/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ +#define AUDIO_CONTROL_CHORUS_LEVEL 0x0002 +#define AUDIO_CONTROL_SHORUS_RATE 0x0004 +#define AUDIO_CONTROL_CHORUS_DEPTH 0x0008 + +/* - Dynamic Range Compressor Control Bits */ +/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ +#define AUDIO_CONTROL_COMPRESSION_RATE 0x0002 +#define AUDIO_CONTROL_MAX_AMPL 0x0004 +#define AUDIO_CONTROL_THRESHOLD 0x0008 +#define AUDIO_CONTROL_ATTACK_TIME 0x0010 +#define AUDIO_CONTROL_RELEASE_TIME 0x0020 + +/* Extension Unit Control Bits */ +/* AUDIO_CONTROL_ENABLE 0x0001 Common Bit */ + +/* Endpoint Control Bits */ +#define AUDIO_CONTROL_SAMPLING_FREQ 0x01 +#define AUDIO_CONTROL_PITCH 0x02 +#define AUDIO_MAX_PACKETS_ONLY 0x80 + + +/* Audio Terminal Types */ + +/* USB Terminal Types */ +#define AUDIO_TERMINAL_USB_UNDEFINED 0x0100 +#define AUDIO_TERMINAL_USB_STREAMING 0x0101 +#define AUDIO_TERMINAL_USB_VENDOR_SPECIFIC 0x01FF + +/* Input Terminal Types */ +#define AUDIO_TERMINAL_INPUT_UNDEFINED 0x0200 +#define AUDIO_TERMINAL_MICROPHONE 0x0201 +#define AUDIO_TERMINAL_DESKTOP_MICROPHONE 0x0202 +#define AUDIO_TERMINAL_PERSONAL_MICROPHONE 0x0203 +#define AUDIO_TERMINAL_OMNI_DIR_MICROPHONE 0x0204 +#define AUDIO_TERMINAL_MICROPHONE_ARRAY 0x0205 +#define AUDIO_TERMINAL_PROCESSING_MIC_ARRAY 0x0206 + +/* Output Terminal Types */ +#define AUDIO_TERMINAL_OUTPUT_UNDEFINED 0x0300 +#define AUDIO_TERMINAL_SPEAKER 0x0301 +#define AUDIO_TERMINAL_HEADPHONES 0x0302 +#define AUDIO_TERMINAL_HEAD_MOUNTED_AUDIO 0x0303 +#define AUDIO_TERMINAL_DESKTOP_SPEAKER 0x0304 +#define AUDIO_TERMINAL_ROOM_SPEAKER 0x0305 +#define AUDIO_TERMINAL_COMMUNICATION_SPEAKER 0x0306 +#define AUDIO_TERMINAL_LOW_FREQ_SPEAKER 0x0307 + +/* Bi-directional Terminal Types */ +#define AUDIO_TERMINAL_BIDIRECTIONAL_UNDEFINED 0x0400 +#define AUDIO_TERMINAL_HANDSET 0x0401 +#define AUDIO_TERMINAL_HEAD_MOUNTED_HANDSET 0x0402 +#define AUDIO_TERMINAL_SPEAKERPHONE 0x0403 +#define AUDIO_TERMINAL_SPEAKERPHONE_ECHOSUPRESS 0x0404 +#define AUDIO_TERMINAL_SPEAKERPHONE_ECHOCANCEL 0x0405 + +/* Telephony Terminal Types */ +#define AUDIO_TERMINAL_TELEPHONY_UNDEFINED 0x0500 +#define AUDIO_TERMINAL_PHONE_LINE 0x0501 +#define AUDIO_TERMINAL_TELEPHONE 0x0502 +#define AUDIO_TERMINAL_DOWN_LINE_PHONE 0x0503 + +/* External Terminal Types */ +#define AUDIO_TERMINAL_EXTERNAL_UNDEFINED 0x0600 +#define AUDIO_TERMINAL_ANALOG_CONNECTOR 0x0601 +#define AUDIO_TERMINAL_DIGITAL_AUDIO_INTERFACE 0x0602 +#define AUDIO_TERMINAL_LINE_CONNECTOR 0x0603 +#define AUDIO_TERMINAL_LEGACY_AUDIO_CONNECTOR 0x0604 +#define AUDIO_TERMINAL_SPDIF_INTERFACE 0x0605 +#define AUDIO_TERMINAL_1394_DA_STREAM 0x0606 +#define AUDIO_TERMINAL_1394_DA_STREAM_TRACK 0x0607 + +/* Embedded Function Terminal Types */ +#define AUDIO_TERMINAL_EMBEDDED_UNDEFINED 0x0700 +#define AUDIO_TERMINAL_CALIBRATION_NOISE 0x0701 +#define AUDIO_TERMINAL_EQUALIZATION_NOISE 0x0702 +#define AUDIO_TERMINAL_CD_PLAYER 0x0703 +#define AUDIO_TERMINAL_DAT 0x0704 +#define AUDIO_TERMINAL_DCC 0x0705 +#define AUDIO_TERMINAL_MINI_DISK 0x0706 +#define AUDIO_TERMINAL_ANALOG_TAPE 0x0707 +#define AUDIO_TERMINAL_PHONOGRAPH 0x0708 +#define AUDIO_TERMINAL_VCR_AUDIO 0x0709 +#define AUDIO_TERMINAL_VIDEO_DISC_AUDIO 0x070A +#define AUDIO_TERMINAL_DVD_AUDIO 0x070B +#define AUDIO_TERMINAL_TV_TUNER_AUDIO 0x070C +#define AUDIO_TERMINAL_SATELLITE_RECEIVER_AUDIO 0x070D +#define AUDIO_TERMINAL_CABLE_TUNER_AUDIO 0x070E +#define AUDIO_TERMINAL_DSS_AUDIO 0x070F +#define AUDIO_TERMINAL_RADIO_RECEIVER 0x0710 +#define AUDIO_TERMINAL_RADIO_TRANSMITTER 0x0711 +#define AUDIO_TERMINAL_MULTI_TRACK_RECORDER 0x0712 +#define AUDIO_TERMINAL_SYNTHESIZER 0x0713 + + +#endif /* __AUDIO_H__ */ diff --git a/plugins/USBqemu/usb-mic/demo.h b/plugins/USBqemu/usb-mic/demo.h index f9293a49b2..ac5ae21b08 100644 --- a/plugins/USBqemu/usb-mic/demo.h +++ b/plugins/USBqemu/usb-mic/demo.h @@ -1,45 +1,45 @@ -/*---------------------------------------------------------------------------- - * Name: DEMO.H - * Purpose: USB Audio Demo Definitions - * Version: V1.10 - *---------------------------------------------------------------------------- - * This software is supplied "AS IS" without any warranties, express, - * implied or statutory, including but not limited to the implied - * warranties of fitness for purpose, satisfactory quality and - * noninfringement. Keil extends you a royalty-free right to reproduce - * and distribute executable files created using this software for use - * on Philips LPC2xxx microcontroller devices only. Nothing else gives - * you the right to use this software. - * - * Copyright (c) 2005-2006 Keil Software. - *---------------------------------------------------------------------------*/ - -/* Clock Definitions */ -#define CPU_CLOCK 60000000 /* CPU Clock */ -#define VPB_CLOCK (CPU_CLOCK/1) /* VPB Clock */ - -/* Audio Definitions */ -#define DATA_FREQ 32000 /* Audio Data Frequency */ -#define P_S 32 /* Packet Size */ -#if USB_DMA -#define P_C 4 /* Packet Count */ -#else -#define P_C 1 /* Packet Count */ -#endif -#define B_S (8*P_C*P_S) /* Buffer Size */ - -/* Push Button Definitions */ -#define PBINT 0x00004000 /* P0.14 */ - -/* LED Definitions */ -#define LEDMSK 0x00FF0000 /* P1.16..23 */ - -/* Audio Demo Variables */ -extern BYTE Mute; /* Mute State */ -extern DWORD Volume; /* Volume Level */ -extern WORD VolCur; /* Volume Current Value */ -extern DWORD InfoBuf[P_C]; /* Packet Info Buffer */ -extern short DataBuf[B_S]; /* Data Buffer */ -extern WORD DataOut; /* Data Out Index */ -extern WORD DataIn; /* Data In Index */ -extern BYTE DataRun; /* Data Stream Run State */ +/*---------------------------------------------------------------------------- + * Name: DEMO.H + * Purpose: USB Audio Demo Definitions + * Version: V1.10 + *---------------------------------------------------------------------------- + * This software is supplied "AS IS" without any warranties, express, + * implied or statutory, including but not limited to the implied + * warranties of fitness for purpose, satisfactory quality and + * noninfringement. Keil extends you a royalty-free right to reproduce + * and distribute executable files created using this software for use + * on Philips LPC2xxx microcontroller devices only. Nothing else gives + * you the right to use this software. + * + * Copyright (c) 2005-2006 Keil Software. + *---------------------------------------------------------------------------*/ + +/* Clock Definitions */ +#define CPU_CLOCK 60000000 /* CPU Clock */ +#define VPB_CLOCK (CPU_CLOCK/1) /* VPB Clock */ + +/* Audio Definitions */ +#define DATA_FREQ 32000 /* Audio Data Frequency */ +#define P_S 32 /* Packet Size */ +#if USB_DMA +#define P_C 4 /* Packet Count */ +#else +#define P_C 1 /* Packet Count */ +#endif +#define B_S (8*P_C*P_S) /* Buffer Size */ + +/* Push Button Definitions */ +#define PBINT 0x00004000 /* P0.14 */ + +/* LED Definitions */ +#define LEDMSK 0x00FF0000 /* P1.16..23 */ + +/* Audio Demo Variables */ +extern BYTE Mute; /* Mute State */ +extern DWORD Volume; /* Volume Level */ +extern WORD VolCur; /* Volume Current Value */ +extern DWORD InfoBuf[P_C]; /* Packet Info Buffer */ +extern short DataBuf[B_S]; /* Data Buffer */ +extern WORD DataOut; /* Data Out Index */ +extern WORD DataIn; /* Data In Index */ +extern BYTE DataRun; /* Data Stream Run State */ diff --git a/plugins/USBqemu/usb-mic/type.h b/plugins/USBqemu/usb-mic/type.h index 4e6e17afcc..b2fe61d77c 100644 --- a/plugins/USBqemu/usb-mic/type.h +++ b/plugins/USBqemu/usb-mic/type.h @@ -1,22 +1,22 @@ - -#ifndef __TYPE_H__ -#define __TYPE_H__ - -#ifndef NULL -#define NULL ((void *)0) -#endif - -#ifndef FALSE -#define FALSE (0) -#endif - -#ifndef TRUE -#define TRUE (1) -#endif - -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef unsigned long DWORD; -//typedef unsigned int BOOL; - -#endif /* __TYPE_H__ */ + +#ifndef __TYPE_H__ +#define __TYPE_H__ + +#ifndef NULL +#define NULL ((void *)0) +#endif + +#ifndef FALSE +#define FALSE (0) +#endif + +#ifndef TRUE +#define TRUE (1) +#endif + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +//typedef unsigned int BOOL; + +#endif /* __TYPE_H__ */ diff --git a/plugins/USBqemu/usb-mic/usb-mic-dummy.cpp b/plugins/USBqemu/usb-mic/usb-mic-dummy.cpp index 5c95ebfdfd..113c819133 100644 --- a/plugins/USBqemu/usb-mic/usb-mic-dummy.cpp +++ b/plugins/USBqemu/usb-mic/usb-mic-dummy.cpp @@ -1,431 +1,431 @@ -/* - * QEMU USB HID devices - * - * Copyright (c) 2005 Fabrice Bellard - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#include "../qemu-usb/vl.h" - -/* HID interface requests */ -#define GET_REPORT 0xa101 -#define GET_IDLE 0xa102 -#define GET_PROTOCOL 0xa103 -#define SET_IDLE 0x210a -#define SET_PROTOCOL 0x210b - -#define USB_MOUSE 1 -#define USB_TABLET 2 - -#include "type.h" - -#include "usb.h" -#include "audio.h" -#include "usbcfg.h" -#include "usbdesc.h" - -typedef struct SINGSTARMICState { - USBDevice dev; - //nothing yet -} SINGSTARMICState; - -/* descriptor dumped from a real singstar MIC adapter */ -static const uint8_t singstar_mic_dev_descriptor[] = { - /* bLength */ 0x12, //(18) - /* bDescriptorType */ 0x01, //(1) - /* bcdUSB */ WBVAL(0x0110), //(272) - /* bDeviceClass */ 0x00, //(0) - /* bDeviceSubClass */ 0x00, //(0) - /* bDeviceProtocol */ 0x00, //(0) - /* bMaxPacketSize0 */ 0x08, //(8) - /* idVendor */ WBVAL(0x1415), //(5141) - /* idProduct */ WBVAL(0x0000), //(0) - /* bcdDevice */ WBVAL(0x0001), //(1) - /* iManufacturer */ 0x01, //(1) - /* iProduct */ 0x02, //(2) - /* iSerialNumber */ 0x00, //(0) - /* bNumConfigurations */ 0x01, //(1) - -}; - -static const uint8_t singstar_mic_config_descriptor[] = { - -/* Configuration 1 */ - 0x09, /* bLength */ - USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */ - WBVAL(0x00b1), /* wTotalLength */ - 0x02, /* bNumInterfaces */ - 0x01, /* bConfigurationValue */ - 0x00, /* iConfiguration */ - USB_CONFIG_BUS_POWERED, /* bmAttributes */ - USB_CONFIG_POWER_MA(90), /* bMaxPower */ - -/* Interface 0, Alternate Setting 0, Audio Control */ - USB_INTERFACE_DESC_SIZE, /* bLength */ - USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - 0x00, /* bInterfaceNumber */ - 0x00, /* bAlternateSetting */ - 0x00, /* bNumEndpoints */ - USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ - AUDIO_SUBCLASS_AUDIOCONTROL, /* bInterfaceSubClass */ - AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ - 0x00, /* iInterface */ - -/* Audio Control Interface */ - AUDIO_CONTROL_INTERFACE_DESC_SZ(1), /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_CONTROL_HEADER, /* bDescriptorSubtype */ - WBVAL(0x0100), /* 1.00 */ /* bcdADC */ - WBVAL(0x0028), /* wTotalLength */ - 0x01, /* bInCollection */ - 0x01, /* baInterfaceNr */ - -/* Audio Input Terminal */ - AUDIO_INPUT_TERMINAL_DESC_SIZE, /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_CONTROL_INPUT_TERMINAL, /* bDescriptorSubtype */ - 0x01, /* bTerminalID */ - WBVAL(AUDIO_TERMINAL_MICROPHONE), /* wTerminalType */ - 0x02, /* bAssocTerminal */ - 0x02, /* bNrChannels */ - WBVAL(AUDIO_CHANNEL_L - |AUDIO_CHANNEL_R), /* wChannelConfig */ - 0x00, /* iChannelNames */ - 0x00, /* iTerminal */ - -/* Audio Output Terminal */ - AUDIO_OUTPUT_TERMINAL_DESC_SIZE, /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_CONTROL_OUTPUT_TERMINAL, /* bDescriptorSubtype */ - 0x02, /* bTerminalID */ - WBVAL(AUDIO_TERMINAL_USB_STREAMING), /* wTerminalType */ - 0x01, /* bAssocTerminal */ - 0x03, /* bSourceID */ - 0x00, /* iTerminal */ - -/* Audio Feature Unit */ - AUDIO_FEATURE_UNIT_DESC_SZ(2,1), /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_CONTROL_FEATURE_UNIT, /* bDescriptorSubtype */ - 0x03, /* bUnitID */ - 0x01, /* bSourceID */ - 0x01, /* bControlSize */ - 0x01, /* bmaControls(0) */ - 0x02, /* bmaControls(1) */ - 0x02, /* bmaControls(2) */ - 0x00, /* iTerminal */ - -/* Interface 1, Alternate Setting 0, Audio Streaming - Zero Bandwith */ - USB_INTERFACE_DESC_SIZE, /* bLength */ - USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - 0x01, /* bInterfaceNumber */ - 0x00, /* bAlternateSetting */ - 0x00, /* bNumEndpoints */ - USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ - AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ - AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ - 0x00, /* iInterface */ - -/* Interface 1, Alternate Setting 1, Audio Streaming - Operational */ - USB_INTERFACE_DESC_SIZE, /* bLength */ - USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - 0x01, /* bInterfaceNumber */ - 0x01, /* bAlternateSetting */ - 0x01, /* bNumEndpoints */ - USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ - AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ - AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ - 0x00, /* iInterface */ - -/* Audio Streaming Interface */ - AUDIO_STREAMING_INTERFACE_DESC_SIZE, /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_STREAMING_GENERAL, /* bDescriptorSubtype */ - 0x02, /* bTerminalLink */ - 0x01, /* bDelay */ - WBVAL(AUDIO_FORMAT_PCM), /* wFormatTag */ - -/* Audio Type I Format */ - AUDIO_FORMAT_TYPE_I_DESC_SZ(5), /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_STREAMING_FORMAT_TYPE, /* bDescriptorSubtype */ - AUDIO_FORMAT_TYPE_I, /* bFormatType */ - 0x01, /* bNrChannels */ - 0x02, /* bSubFrameSize */ - 0x10, /* bBitResolution */ - 0x05, /* bSamFreqType */ - B3VAL(8000), /* tSamFreq 1 */ - B3VAL(11025), /* tSamFreq 2 */ - B3VAL(22050), /* tSamFreq 3 */ - B3VAL(44100), /* tSamFreq 4 */ - B3VAL(48000), /* tSamFreq 5 */ - -/* Endpoint - Standard Descriptor */ - AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */ - USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ - USB_ENDPOINT_OUT(0x81), /* bEndpointAddress */ - USB_ENDPOINT_TYPE_ISOCHRONOUS - | USB_ENDPOINT_SYNC_ASYNCHRONOUS, /* bmAttributes */ - WBVAL(0x0064), /* wMaxPacketSize */ - 0x01, /* bInterval */ - 0x00, /* bRefresh */ - 0x00, /* bSynchAddress */ - -/* Endpoint - Audio Streaming */ - AUDIO_STREAMING_ENDPOINT_DESC_SIZE, /* bLength */ - AUDIO_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_ENDPOINT_GENERAL, /* bDescriptor */ - 0x01, /* bmAttributes */ - 0x00, /* bLockDelayUnits */ - WBVAL(0x0000), /* wLockDelay */ - -/* Interface 1, Alternate Setting 2, Audio Streaming - ? */ - USB_INTERFACE_DESC_SIZE, /* bLength */ - USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - 0x01, /* bInterfaceNumber */ - 0x02, /* bAlternateSetting */ - 0x01, /* bNumEndpoints */ - USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ - AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ - AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ - 0x00, /* iInterface */ - -/* Audio Streaming Interface */ - AUDIO_STREAMING_INTERFACE_DESC_SIZE, /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_STREAMING_GENERAL, /* bDescriptorSubtype */ - 0x02, /* bTerminalLink */ - 0x01, /* bDelay */ - WBVAL(AUDIO_FORMAT_PCM), /* wFormatTag */ - -/* Audio Type I Format */ - AUDIO_FORMAT_TYPE_I_DESC_SZ(5), /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_STREAMING_FORMAT_TYPE, /* bDescriptorSubtype */ - AUDIO_FORMAT_TYPE_I, /* bFormatType */ - 0x02, /* bNrChannels */ - 0x02, /* bSubFrameSize */ - 0x10, /* bBitResolution */ - 0x05, /* bSamFreqType */ - B3VAL(8000), /* tSamFreq 1 */ - B3VAL(11025), /* tSamFreq 2 */ - B3VAL(22050), /* tSamFreq 3 */ - B3VAL(44100), /* tSamFreq 4 */ - B3VAL(48000), /* tSamFreq 5 */ - -/* Endpoint - Standard Descriptor */ - AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */ - USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ - USB_ENDPOINT_OUT(0x81), /* bEndpointAddress */ - USB_ENDPOINT_TYPE_ISOCHRONOUS - | USB_ENDPOINT_SYNC_ASYNCHRONOUS, /* bmAttributes */ - WBVAL(0x00c8), /* wMaxPacketSize */ - 0x01, /* bInterval */ - 0x00, /* bRefresh */ - 0x00, /* bSynchAddress */ - -/* Endpoint - Audio Streaming */ - AUDIO_STREAMING_ENDPOINT_DESC_SIZE, /* bLength */ - AUDIO_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_ENDPOINT_GENERAL, /* bDescriptor */ - 0x01, /* bmAttributes */ - 0x00, /* bLockDelayUnits */ - WBVAL(0x0000), /* wLockDelay */ - -/* Terminator */ - 0 /* bLength */ -}; - - -static void singstar_mic_handle_reset(USBDevice *dev) -{ - /* XXX: do it */ - return; -} - -static int singstar_mic_handle_control(USBDevice *dev, int request, int value, - int index, int length, uint8_t *data) -{ - SINGSTARMICState *s = (SINGSTARMICState *)dev; - int ret = 0; - - switch(request) { - case DeviceRequest | USB_REQ_GET_STATUS: - data[0] = (dev->remote_wakeup << USB_DEVICE_REMOTE_WAKEUP); - data[1] = 0x00; - ret = 2; - break; - case DeviceOutRequest | USB_REQ_CLEAR_FEATURE: - if (value == USB_DEVICE_REMOTE_WAKEUP) { - dev->remote_wakeup = 0; - } else { - goto fail; - } - ret = 0; - break; - case DeviceOutRequest | USB_REQ_SET_FEATURE: - if (value == USB_DEVICE_REMOTE_WAKEUP) { - dev->remote_wakeup = 1; - } else { - goto fail; - } - ret = 0; - break; - case DeviceOutRequest | USB_REQ_SET_ADDRESS: - dev->addr = value; - ret = 0; - break; - case DeviceRequest | USB_REQ_GET_DESCRIPTOR: - switch(value >> 8) { - case USB_DT_DEVICE: - memcpy(data, singstar_mic_dev_descriptor, - sizeof(singstar_mic_dev_descriptor)); - ret = sizeof(singstar_mic_dev_descriptor); - break; - case USB_DT_CONFIG: - memcpy(data, singstar_mic_config_descriptor, - sizeof(singstar_mic_config_descriptor)); - ret = sizeof(singstar_mic_config_descriptor); - break; - case USB_DT_STRING: - switch(value & 0xff) { - case 0: - /* language ids */ - data[0] = 4; - data[1] = 3; - data[2] = 0x09; - data[3] = 0x04; - ret = 4; - break; - case 1: - /* serial number */ - ret = set_usb_string(data, "3X0420811"); - break; - case 2: - /* product description */ - ret = set_usb_string(data, "EyeToy USB camera Namtai"); - break; - case 3: - /* vendor description */ - ret = set_usb_string(data, "PCSX2/QEMU"); - break; - default: - goto fail; - } - break; - default: - goto fail; - } - break; - case DeviceRequest | USB_REQ_GET_CONFIGURATION: - data[0] = 1; - ret = 1; - break; - case DeviceOutRequest | USB_REQ_SET_CONFIGURATION: - ret = 0; - break; - case DeviceRequest | USB_REQ_GET_INTERFACE: - data[0] = 0; - ret = 1; - break; - case DeviceOutRequest | USB_REQ_SET_INTERFACE: - ret = 0; - break; - /* hid specific requests */ - case InterfaceRequest | USB_REQ_GET_DESCRIPTOR: - //switch(value >> 8) { - //((case 0x22: - // memcpy(data, qemu_mouse_hid_report_descriptor, - // sizeof(qemu_mouse_hid_report_descriptor)); - // ret = sizeof(qemu_mouse_hid_report_descriptor); - // break; - //default: - goto fail; - //} - break; - case GET_REPORT: - ret = 0; - break; - case SET_IDLE: - ret = 0; - break; - default: - fail: - ret = USB_RET_STALL; - break; - } - return ret; -} - -static int singstar_mic_handle_data(USBDevice *dev, int pid, - uint8_t devep, uint8_t *data, int len) -{ - SINGSTARMICState *s = (SINGSTARMICState *)dev; - int ret = 0; - - switch(pid) { - case USB_TOKEN_IN: - if (devep == 1) { - goto fail; - } - break; - case USB_TOKEN_OUT: - default: - fail: - ret = USB_RET_STALL; - break; - } - return ret; -} - - -static void singstar_mic_handle_destroy(USBDevice *dev) -{ - SINGSTARMICState *s = (SINGSTARMICState *)dev; - - free(s); -} - -int singstar_mic_handle_packet(USBDevice *s, int pid, - uint8_t devaddr, uint8_t devep, - uint8_t *data, int len) -{ - fprintf(stderr,"usb-singstar_mic: packet received with pid=%x, devaddr=%x, devep=%x and len=%x\n",pid,devaddr,devep,len); - return usb_generic_handle_packet(s,pid,devaddr,devep,data,len); -} - -USBDevice *singstar_mic_init() -{ - SINGSTARMICState *s; - - s = (SINGSTARMICState *)qemu_mallocz(sizeof(SINGSTARMICState)); - if (!s) - return NULL; - s->dev.speed = USB_SPEED_FULL; - s->dev.handle_packet = singstar_mic_handle_packet; - s->dev.handle_reset = singstar_mic_handle_reset; - s->dev.handle_control = singstar_mic_handle_control; - s->dev.handle_data = singstar_mic_handle_data; - s->dev.handle_destroy = singstar_mic_handle_destroy; - - strncpy(s->dev.devname, "EyeToy USB camera Namtai", sizeof(s->dev.devname)); - - return (USBDevice *)s; - -} +/* + * QEMU USB HID devices + * + * Copyright (c) 2005 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include "../qemu-usb/vl.h" + +/* HID interface requests */ +#define GET_REPORT 0xa101 +#define GET_IDLE 0xa102 +#define GET_PROTOCOL 0xa103 +#define SET_IDLE 0x210a +#define SET_PROTOCOL 0x210b + +#define USB_MOUSE 1 +#define USB_TABLET 2 + +#include "type.h" + +#include "usb.h" +#include "audio.h" +#include "usbcfg.h" +#include "usbdesc.h" + +typedef struct SINGSTARMICState { + USBDevice dev; + //nothing yet +} SINGSTARMICState; + +/* descriptor dumped from a real singstar MIC adapter */ +static const uint8_t singstar_mic_dev_descriptor[] = { + /* bLength */ 0x12, //(18) + /* bDescriptorType */ 0x01, //(1) + /* bcdUSB */ WBVAL(0x0110), //(272) + /* bDeviceClass */ 0x00, //(0) + /* bDeviceSubClass */ 0x00, //(0) + /* bDeviceProtocol */ 0x00, //(0) + /* bMaxPacketSize0 */ 0x08, //(8) + /* idVendor */ WBVAL(0x1415), //(5141) + /* idProduct */ WBVAL(0x0000), //(0) + /* bcdDevice */ WBVAL(0x0001), //(1) + /* iManufacturer */ 0x01, //(1) + /* iProduct */ 0x02, //(2) + /* iSerialNumber */ 0x00, //(0) + /* bNumConfigurations */ 0x01, //(1) + +}; + +static const uint8_t singstar_mic_config_descriptor[] = { + +/* Configuration 1 */ + 0x09, /* bLength */ + USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */ + WBVAL(0x00b1), /* wTotalLength */ + 0x02, /* bNumInterfaces */ + 0x01, /* bConfigurationValue */ + 0x00, /* iConfiguration */ + USB_CONFIG_BUS_POWERED, /* bmAttributes */ + USB_CONFIG_POWER_MA(90), /* bMaxPower */ + +/* Interface 0, Alternate Setting 0, Audio Control */ + USB_INTERFACE_DESC_SIZE, /* bLength */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + 0x00, /* bInterfaceNumber */ + 0x00, /* bAlternateSetting */ + 0x00, /* bNumEndpoints */ + USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ + AUDIO_SUBCLASS_AUDIOCONTROL, /* bInterfaceSubClass */ + AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ + 0x00, /* iInterface */ + +/* Audio Control Interface */ + AUDIO_CONTROL_INTERFACE_DESC_SZ(1), /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_CONTROL_HEADER, /* bDescriptorSubtype */ + WBVAL(0x0100), /* 1.00 */ /* bcdADC */ + WBVAL(0x0028), /* wTotalLength */ + 0x01, /* bInCollection */ + 0x01, /* baInterfaceNr */ + +/* Audio Input Terminal */ + AUDIO_INPUT_TERMINAL_DESC_SIZE, /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_CONTROL_INPUT_TERMINAL, /* bDescriptorSubtype */ + 0x01, /* bTerminalID */ + WBVAL(AUDIO_TERMINAL_MICROPHONE), /* wTerminalType */ + 0x02, /* bAssocTerminal */ + 0x02, /* bNrChannels */ + WBVAL(AUDIO_CHANNEL_L + |AUDIO_CHANNEL_R), /* wChannelConfig */ + 0x00, /* iChannelNames */ + 0x00, /* iTerminal */ + +/* Audio Output Terminal */ + AUDIO_OUTPUT_TERMINAL_DESC_SIZE, /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_CONTROL_OUTPUT_TERMINAL, /* bDescriptorSubtype */ + 0x02, /* bTerminalID */ + WBVAL(AUDIO_TERMINAL_USB_STREAMING), /* wTerminalType */ + 0x01, /* bAssocTerminal */ + 0x03, /* bSourceID */ + 0x00, /* iTerminal */ + +/* Audio Feature Unit */ + AUDIO_FEATURE_UNIT_DESC_SZ(2,1), /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_CONTROL_FEATURE_UNIT, /* bDescriptorSubtype */ + 0x03, /* bUnitID */ + 0x01, /* bSourceID */ + 0x01, /* bControlSize */ + 0x01, /* bmaControls(0) */ + 0x02, /* bmaControls(1) */ + 0x02, /* bmaControls(2) */ + 0x00, /* iTerminal */ + +/* Interface 1, Alternate Setting 0, Audio Streaming - Zero Bandwith */ + USB_INTERFACE_DESC_SIZE, /* bLength */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + 0x01, /* bInterfaceNumber */ + 0x00, /* bAlternateSetting */ + 0x00, /* bNumEndpoints */ + USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ + AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ + AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ + 0x00, /* iInterface */ + +/* Interface 1, Alternate Setting 1, Audio Streaming - Operational */ + USB_INTERFACE_DESC_SIZE, /* bLength */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + 0x01, /* bInterfaceNumber */ + 0x01, /* bAlternateSetting */ + 0x01, /* bNumEndpoints */ + USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ + AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ + AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ + 0x00, /* iInterface */ + +/* Audio Streaming Interface */ + AUDIO_STREAMING_INTERFACE_DESC_SIZE, /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_STREAMING_GENERAL, /* bDescriptorSubtype */ + 0x02, /* bTerminalLink */ + 0x01, /* bDelay */ + WBVAL(AUDIO_FORMAT_PCM), /* wFormatTag */ + +/* Audio Type I Format */ + AUDIO_FORMAT_TYPE_I_DESC_SZ(5), /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_STREAMING_FORMAT_TYPE, /* bDescriptorSubtype */ + AUDIO_FORMAT_TYPE_I, /* bFormatType */ + 0x01, /* bNrChannels */ + 0x02, /* bSubFrameSize */ + 0x10, /* bBitResolution */ + 0x05, /* bSamFreqType */ + B3VAL(8000), /* tSamFreq 1 */ + B3VAL(11025), /* tSamFreq 2 */ + B3VAL(22050), /* tSamFreq 3 */ + B3VAL(44100), /* tSamFreq 4 */ + B3VAL(48000), /* tSamFreq 5 */ + +/* Endpoint - Standard Descriptor */ + AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ + USB_ENDPOINT_OUT(0x81), /* bEndpointAddress */ + USB_ENDPOINT_TYPE_ISOCHRONOUS + | USB_ENDPOINT_SYNC_ASYNCHRONOUS, /* bmAttributes */ + WBVAL(0x0064), /* wMaxPacketSize */ + 0x01, /* bInterval */ + 0x00, /* bRefresh */ + 0x00, /* bSynchAddress */ + +/* Endpoint - Audio Streaming */ + AUDIO_STREAMING_ENDPOINT_DESC_SIZE, /* bLength */ + AUDIO_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_ENDPOINT_GENERAL, /* bDescriptor */ + 0x01, /* bmAttributes */ + 0x00, /* bLockDelayUnits */ + WBVAL(0x0000), /* wLockDelay */ + +/* Interface 1, Alternate Setting 2, Audio Streaming - ? */ + USB_INTERFACE_DESC_SIZE, /* bLength */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + 0x01, /* bInterfaceNumber */ + 0x02, /* bAlternateSetting */ + 0x01, /* bNumEndpoints */ + USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ + AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ + AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ + 0x00, /* iInterface */ + +/* Audio Streaming Interface */ + AUDIO_STREAMING_INTERFACE_DESC_SIZE, /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_STREAMING_GENERAL, /* bDescriptorSubtype */ + 0x02, /* bTerminalLink */ + 0x01, /* bDelay */ + WBVAL(AUDIO_FORMAT_PCM), /* wFormatTag */ + +/* Audio Type I Format */ + AUDIO_FORMAT_TYPE_I_DESC_SZ(5), /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_STREAMING_FORMAT_TYPE, /* bDescriptorSubtype */ + AUDIO_FORMAT_TYPE_I, /* bFormatType */ + 0x02, /* bNrChannels */ + 0x02, /* bSubFrameSize */ + 0x10, /* bBitResolution */ + 0x05, /* bSamFreqType */ + B3VAL(8000), /* tSamFreq 1 */ + B3VAL(11025), /* tSamFreq 2 */ + B3VAL(22050), /* tSamFreq 3 */ + B3VAL(44100), /* tSamFreq 4 */ + B3VAL(48000), /* tSamFreq 5 */ + +/* Endpoint - Standard Descriptor */ + AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ + USB_ENDPOINT_OUT(0x81), /* bEndpointAddress */ + USB_ENDPOINT_TYPE_ISOCHRONOUS + | USB_ENDPOINT_SYNC_ASYNCHRONOUS, /* bmAttributes */ + WBVAL(0x00c8), /* wMaxPacketSize */ + 0x01, /* bInterval */ + 0x00, /* bRefresh */ + 0x00, /* bSynchAddress */ + +/* Endpoint - Audio Streaming */ + AUDIO_STREAMING_ENDPOINT_DESC_SIZE, /* bLength */ + AUDIO_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_ENDPOINT_GENERAL, /* bDescriptor */ + 0x01, /* bmAttributes */ + 0x00, /* bLockDelayUnits */ + WBVAL(0x0000), /* wLockDelay */ + +/* Terminator */ + 0 /* bLength */ +}; + + +static void singstar_mic_handle_reset(USBDevice *dev) +{ + /* XXX: do it */ + return; +} + +static int singstar_mic_handle_control(USBDevice *dev, int request, int value, + int index, int length, uint8_t *data) +{ + SINGSTARMICState *s = (SINGSTARMICState *)dev; + int ret = 0; + + switch(request) { + case DeviceRequest | USB_REQ_GET_STATUS: + data[0] = (dev->remote_wakeup << USB_DEVICE_REMOTE_WAKEUP); + data[1] = 0x00; + ret = 2; + break; + case DeviceOutRequest | USB_REQ_CLEAR_FEATURE: + if (value == USB_DEVICE_REMOTE_WAKEUP) { + dev->remote_wakeup = 0; + } else { + goto fail; + } + ret = 0; + break; + case DeviceOutRequest | USB_REQ_SET_FEATURE: + if (value == USB_DEVICE_REMOTE_WAKEUP) { + dev->remote_wakeup = 1; + } else { + goto fail; + } + ret = 0; + break; + case DeviceOutRequest | USB_REQ_SET_ADDRESS: + dev->addr = value; + ret = 0; + break; + case DeviceRequest | USB_REQ_GET_DESCRIPTOR: + switch(value >> 8) { + case USB_DT_DEVICE: + memcpy(data, singstar_mic_dev_descriptor, + sizeof(singstar_mic_dev_descriptor)); + ret = sizeof(singstar_mic_dev_descriptor); + break; + case USB_DT_CONFIG: + memcpy(data, singstar_mic_config_descriptor, + sizeof(singstar_mic_config_descriptor)); + ret = sizeof(singstar_mic_config_descriptor); + break; + case USB_DT_STRING: + switch(value & 0xff) { + case 0: + /* language ids */ + data[0] = 4; + data[1] = 3; + data[2] = 0x09; + data[3] = 0x04; + ret = 4; + break; + case 1: + /* serial number */ + ret = set_usb_string(data, "3X0420811"); + break; + case 2: + /* product description */ + ret = set_usb_string(data, "EyeToy USB camera Namtai"); + break; + case 3: + /* vendor description */ + ret = set_usb_string(data, "PCSX2/QEMU"); + break; + default: + goto fail; + } + break; + default: + goto fail; + } + break; + case DeviceRequest | USB_REQ_GET_CONFIGURATION: + data[0] = 1; + ret = 1; + break; + case DeviceOutRequest | USB_REQ_SET_CONFIGURATION: + ret = 0; + break; + case DeviceRequest | USB_REQ_GET_INTERFACE: + data[0] = 0; + ret = 1; + break; + case DeviceOutRequest | USB_REQ_SET_INTERFACE: + ret = 0; + break; + /* hid specific requests */ + case InterfaceRequest | USB_REQ_GET_DESCRIPTOR: + //switch(value >> 8) { + //((case 0x22: + // memcpy(data, qemu_mouse_hid_report_descriptor, + // sizeof(qemu_mouse_hid_report_descriptor)); + // ret = sizeof(qemu_mouse_hid_report_descriptor); + // break; + //default: + goto fail; + //} + break; + case GET_REPORT: + ret = 0; + break; + case SET_IDLE: + ret = 0; + break; + default: + fail: + ret = USB_RET_STALL; + break; + } + return ret; +} + +static int singstar_mic_handle_data(USBDevice *dev, int pid, + uint8_t devep, uint8_t *data, int len) +{ + SINGSTARMICState *s = (SINGSTARMICState *)dev; + int ret = 0; + + switch(pid) { + case USB_TOKEN_IN: + if (devep == 1) { + goto fail; + } + break; + case USB_TOKEN_OUT: + default: + fail: + ret = USB_RET_STALL; + break; + } + return ret; +} + + +static void singstar_mic_handle_destroy(USBDevice *dev) +{ + SINGSTARMICState *s = (SINGSTARMICState *)dev; + + free(s); +} + +int singstar_mic_handle_packet(USBDevice *s, int pid, + uint8_t devaddr, uint8_t devep, + uint8_t *data, int len) +{ + fprintf(stderr,"usb-singstar_mic: packet received with pid=%x, devaddr=%x, devep=%x and len=%x\n",pid,devaddr,devep,len); + return usb_generic_handle_packet(s,pid,devaddr,devep,data,len); +} + +USBDevice *singstar_mic_init() +{ + SINGSTARMICState *s; + + s = (SINGSTARMICState *)qemu_mallocz(sizeof(SINGSTARMICState)); + if (!s) + return NULL; + s->dev.speed = USB_SPEED_FULL; + s->dev.handle_packet = singstar_mic_handle_packet; + s->dev.handle_reset = singstar_mic_handle_reset; + s->dev.handle_control = singstar_mic_handle_control; + s->dev.handle_data = singstar_mic_handle_data; + s->dev.handle_destroy = singstar_mic_handle_destroy; + + strncpy(s->dev.devname, "EyeToy USB camera Namtai", sizeof(s->dev.devname)); + + return (USBDevice *)s; + +} diff --git a/plugins/USBqemu/usb-mic/usb-mic.c b/plugins/USBqemu/usb-mic/usb-mic.c index 80c69815c0..a93705a5dc 100644 --- a/plugins/USBqemu/usb-mic/usb-mic.c +++ b/plugins/USBqemu/usb-mic/usb-mic.c @@ -33,164 +33,164 @@ #define USB_MOUSE 1 #define USB_TABLET 2 -#include "type.h" - -#include "usb.h" -#include "audio.h" -#include "usbcfg.h" -#include "usbdesc.h" +#include "type.h" + +#include "usb.h" +#include "audio.h" +#include "usbcfg.h" +#include "usbdesc.h" /* mostly the same values as the Bochs USB Mouse device */ static const uint8_t qemu_mic_dev_descriptor[] = { - sizeof(qemu_mic_dev_descriptor), /* bLength */ - 1, /* bDescriptorType */ - WBVAL(0x0110), /* 1.10 */ /* bcdUSB */ - 0x00, /* bDeviceClass */ - 0x00, /* bDeviceSubClass */ - 0x00, /* bDeviceProtocol */ - USB_MAX_PACKET0, /* bMaxPacketSize0 */ - WBVAL(0xC251), /* idVendor */ - WBVAL(0x1304), /* idProduct */ - WBVAL(0x0100), /* 1.00 */ /* bcdDevice */ - 0x04, /* iManufacturer */ - 0x20, /* iProduct */ - 0x4A, /* iSerialNumber */ - 0x01 /* bNumConfigurations */ -}; + sizeof(qemu_mic_dev_descriptor), /* bLength */ + 1, /* bDescriptorType */ + WBVAL(0x0110), /* 1.10 */ /* bcdUSB */ + 0x00, /* bDeviceClass */ + 0x00, /* bDeviceSubClass */ + 0x00, /* bDeviceProtocol */ + USB_MAX_PACKET0, /* bMaxPacketSize0 */ + WBVAL(0xC251), /* idVendor */ + WBVAL(0x1304), /* idProduct */ + WBVAL(0x0100), /* 1.00 */ /* bcdDevice */ + 0x04, /* iManufacturer */ + 0x20, /* iProduct */ + 0x4A, /* iSerialNumber */ + 0x01 /* bNumConfigurations */ +}; static const uint8_t qemu_mic_config_descriptor[] = { -/* Configuration 1 */ - sizeof(qemu_mic_config_descriptor), /* bLength */ - USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */ - WBVAL( /* wTotalLength */ - USB_CONFIGUARTION_DESC_SIZE + - USB_INTERFACE_DESC_SIZE + - AUDIO_CONTROL_INTERFACE_DESC_SZ(1) + - AUDIO_INPUT_TERMINAL_DESC_SIZE + - AUDIO_FEATURE_UNIT_DESC_SZ(1,1) + - AUDIO_OUTPUT_TERMINAL_DESC_SIZE + - USB_INTERFACE_DESC_SIZE + - USB_INTERFACE_DESC_SIZE + - AUDIO_STREAMING_INTERFACE_DESC_SIZE + - AUDIO_FORMAT_TYPE_I_DESC_SZ(1) + - AUDIO_STANDARD_ENDPOINT_DESC_SIZE + - AUDIO_STREAMING_ENDPOINT_DESC_SIZE - ), - 0x02, /* bNumInterfaces */ - 0x01, /* bConfigurationValue */ - 0x00, /* iConfiguration */ - USB_CONFIG_BUS_POWERED, /* bmAttributes */ - USB_CONFIG_POWER_MA(100), /* bMaxPower */ -/* Interface 0, Alternate Setting 0, Audio Control */ - USB_INTERFACE_DESC_SIZE, /* bLength */ - USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - 0x00, /* bInterfaceNumber */ - 0x00, /* bAlternateSetting */ - 0x00, /* bNumEndpoints */ - USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ - AUDIO_SUBCLASS_AUDIOCONTROL, /* bInterfaceSubClass */ - AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ - 0x00, /* iInterface */ -/* Audio Control Interface */ - AUDIO_CONTROL_INTERFACE_DESC_SZ(1), /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_CONTROL_HEADER, /* bDescriptorSubtype */ - WBVAL(0x0100), /* 1.00 */ /* bcdADC */ - WBVAL( /* wTotalLength */ - AUDIO_CONTROL_INTERFACE_DESC_SZ(1) + - AUDIO_INPUT_TERMINAL_DESC_SIZE + - AUDIO_FEATURE_UNIT_DESC_SZ(1,1) + - AUDIO_OUTPUT_TERMINAL_DESC_SIZE - ), - 0x01, /* bInCollection */ - 0x01, /* baInterfaceNr */ -/* Audio Input Terminal */ - AUDIO_INPUT_TERMINAL_DESC_SIZE, /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_CONTROL_INPUT_TERMINAL, /* bDescriptorSubtype */ - 0x01, /* bTerminalID */ - WBVAL(AUDIO_TERMINAL_USB_STREAMING), /* wTerminalType */ - 0x00, /* bAssocTerminal */ - 0x01, /* bNrChannels */ - WBVAL(AUDIO_CHANNEL_M), /* wChannelConfig */ - 0x00, /* iChannelNames */ - 0x00, /* iTerminal */ -/* Audio Feature Unit */ - AUDIO_FEATURE_UNIT_DESC_SZ(1,1), /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_CONTROL_FEATURE_UNIT, /* bDescriptorSubtype */ - 0x02, /* bUnitID */ - 0x01, /* bSourceID */ - 0x01, /* bControlSize */ - AUDIO_CONTROL_MUTE | - AUDIO_CONTROL_VOLUME, /* bmaControls(0) */ - 0x00, /* bmaControls(1) */ - 0x00, /* iTerminal */ -/* Audio Output Terminal */ - AUDIO_OUTPUT_TERMINAL_DESC_SIZE, /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_CONTROL_OUTPUT_TERMINAL, /* bDescriptorSubtype */ - 0x03, /* bTerminalID */ - WBVAL(AUDIO_TERMINAL_SPEAKER), /* wTerminalType */ - 0x00, /* bAssocTerminal */ - 0x02, /* bSourceID */ - 0x00, /* iTerminal */ -/* Interface 1, Alternate Setting 0, Audio Streaming - Zero Bandwith */ - USB_INTERFACE_DESC_SIZE, /* bLength */ - USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - 0x01, /* bInterfaceNumber */ - 0x00, /* bAlternateSetting */ - 0x00, /* bNumEndpoints */ - USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ - AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ - AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ - 0x00, /* iInterface */ -/* Interface 1, Alternate Setting 1, Audio Streaming - Operational */ - USB_INTERFACE_DESC_SIZE, /* bLength */ - USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - 0x01, /* bInterfaceNumber */ - 0x01, /* bAlternateSetting */ - 0x01, /* bNumEndpoints */ - USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ - AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ - AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ - 0x00, /* iInterface */ -/* Audio Streaming Interface */ - AUDIO_STREAMING_INTERFACE_DESC_SIZE, /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_STREAMING_GENERAL, /* bDescriptorSubtype */ - 0x01, /* bTerminalLink */ - 0x01, /* bDelay */ - WBVAL(AUDIO_FORMAT_PCM), /* wFormatTag */ -/* Audio Type I Format */ - AUDIO_FORMAT_TYPE_I_DESC_SZ(1), /* bLength */ - AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_STREAMING_FORMAT_TYPE, /* bDescriptorSubtype */ - AUDIO_FORMAT_TYPE_I, /* bFormatType */ - 0x01, /* bNrChannels */ - 0x02, /* bSubFrameSize */ - 16, /* bBitResolution */ - 0x01, /* bSamFreqType */ - B3VAL(32000), /* tSamFreq */ -/* Endpoint - Standard Descriptor */ - AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */ - USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ - USB_ENDPOINT_OUT(3), /* bEndpointAddress */ - USB_ENDPOINT_TYPE_ISOCHRONOUS, /* bmAttributes */ - WBVAL(64), /* wMaxPacketSize */ - 0x01, /* bInterval */ - 0x00, /* bRefresh */ - 0x00, /* bSynchAddress */ -/* Endpoint - Audio Streaming */ - AUDIO_STREAMING_ENDPOINT_DESC_SIZE, /* bLength */ - AUDIO_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ - AUDIO_ENDPOINT_GENERAL, /* bDescriptor */ - 0x00, /* bmAttributes */ - 0x00, /* bLockDelayUnits */ - WBVAL(0x0000), /* wLockDelay */ -/* Terminator */ - 0 /* bLength */ -}; +/* Configuration 1 */ + sizeof(qemu_mic_config_descriptor), /* bLength */ + USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */ + WBVAL( /* wTotalLength */ + USB_CONFIGUARTION_DESC_SIZE + + USB_INTERFACE_DESC_SIZE + + AUDIO_CONTROL_INTERFACE_DESC_SZ(1) + + AUDIO_INPUT_TERMINAL_DESC_SIZE + + AUDIO_FEATURE_UNIT_DESC_SZ(1,1) + + AUDIO_OUTPUT_TERMINAL_DESC_SIZE + + USB_INTERFACE_DESC_SIZE + + USB_INTERFACE_DESC_SIZE + + AUDIO_STREAMING_INTERFACE_DESC_SIZE + + AUDIO_FORMAT_TYPE_I_DESC_SZ(1) + + AUDIO_STANDARD_ENDPOINT_DESC_SIZE + + AUDIO_STREAMING_ENDPOINT_DESC_SIZE + ), + 0x02, /* bNumInterfaces */ + 0x01, /* bConfigurationValue */ + 0x00, /* iConfiguration */ + USB_CONFIG_BUS_POWERED, /* bmAttributes */ + USB_CONFIG_POWER_MA(100), /* bMaxPower */ +/* Interface 0, Alternate Setting 0, Audio Control */ + USB_INTERFACE_DESC_SIZE, /* bLength */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + 0x00, /* bInterfaceNumber */ + 0x00, /* bAlternateSetting */ + 0x00, /* bNumEndpoints */ + USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ + AUDIO_SUBCLASS_AUDIOCONTROL, /* bInterfaceSubClass */ + AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ + 0x00, /* iInterface */ +/* Audio Control Interface */ + AUDIO_CONTROL_INTERFACE_DESC_SZ(1), /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_CONTROL_HEADER, /* bDescriptorSubtype */ + WBVAL(0x0100), /* 1.00 */ /* bcdADC */ + WBVAL( /* wTotalLength */ + AUDIO_CONTROL_INTERFACE_DESC_SZ(1) + + AUDIO_INPUT_TERMINAL_DESC_SIZE + + AUDIO_FEATURE_UNIT_DESC_SZ(1,1) + + AUDIO_OUTPUT_TERMINAL_DESC_SIZE + ), + 0x01, /* bInCollection */ + 0x01, /* baInterfaceNr */ +/* Audio Input Terminal */ + AUDIO_INPUT_TERMINAL_DESC_SIZE, /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_CONTROL_INPUT_TERMINAL, /* bDescriptorSubtype */ + 0x01, /* bTerminalID */ + WBVAL(AUDIO_TERMINAL_USB_STREAMING), /* wTerminalType */ + 0x00, /* bAssocTerminal */ + 0x01, /* bNrChannels */ + WBVAL(AUDIO_CHANNEL_M), /* wChannelConfig */ + 0x00, /* iChannelNames */ + 0x00, /* iTerminal */ +/* Audio Feature Unit */ + AUDIO_FEATURE_UNIT_DESC_SZ(1,1), /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_CONTROL_FEATURE_UNIT, /* bDescriptorSubtype */ + 0x02, /* bUnitID */ + 0x01, /* bSourceID */ + 0x01, /* bControlSize */ + AUDIO_CONTROL_MUTE | + AUDIO_CONTROL_VOLUME, /* bmaControls(0) */ + 0x00, /* bmaControls(1) */ + 0x00, /* iTerminal */ +/* Audio Output Terminal */ + AUDIO_OUTPUT_TERMINAL_DESC_SIZE, /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_CONTROL_OUTPUT_TERMINAL, /* bDescriptorSubtype */ + 0x03, /* bTerminalID */ + WBVAL(AUDIO_TERMINAL_SPEAKER), /* wTerminalType */ + 0x00, /* bAssocTerminal */ + 0x02, /* bSourceID */ + 0x00, /* iTerminal */ +/* Interface 1, Alternate Setting 0, Audio Streaming - Zero Bandwith */ + USB_INTERFACE_DESC_SIZE, /* bLength */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + 0x01, /* bInterfaceNumber */ + 0x00, /* bAlternateSetting */ + 0x00, /* bNumEndpoints */ + USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ + AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ + AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ + 0x00, /* iInterface */ +/* Interface 1, Alternate Setting 1, Audio Streaming - Operational */ + USB_INTERFACE_DESC_SIZE, /* bLength */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + 0x01, /* bInterfaceNumber */ + 0x01, /* bAlternateSetting */ + 0x01, /* bNumEndpoints */ + USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ + AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ + AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ + 0x00, /* iInterface */ +/* Audio Streaming Interface */ + AUDIO_STREAMING_INTERFACE_DESC_SIZE, /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_STREAMING_GENERAL, /* bDescriptorSubtype */ + 0x01, /* bTerminalLink */ + 0x01, /* bDelay */ + WBVAL(AUDIO_FORMAT_PCM), /* wFormatTag */ +/* Audio Type I Format */ + AUDIO_FORMAT_TYPE_I_DESC_SZ(1), /* bLength */ + AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_STREAMING_FORMAT_TYPE, /* bDescriptorSubtype */ + AUDIO_FORMAT_TYPE_I, /* bFormatType */ + 0x01, /* bNrChannels */ + 0x02, /* bSubFrameSize */ + 16, /* bBitResolution */ + 0x01, /* bSamFreqType */ + B3VAL(32000), /* tSamFreq */ +/* Endpoint - Standard Descriptor */ + AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ + USB_ENDPOINT_OUT(3), /* bEndpointAddress */ + USB_ENDPOINT_TYPE_ISOCHRONOUS, /* bmAttributes */ + WBVAL(64), /* wMaxPacketSize */ + 0x01, /* bInterval */ + 0x00, /* bRefresh */ + 0x00, /* bSynchAddress */ +/* Endpoint - Audio Streaming */ + AUDIO_STREAMING_ENDPOINT_DESC_SIZE, /* bLength */ + AUDIO_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ + AUDIO_ENDPOINT_GENERAL, /* bDescriptor */ + 0x00, /* bmAttributes */ + 0x00, /* bLockDelayUnits */ + WBVAL(0x0000), /* wLockDelay */ +/* Terminator */ + 0 /* bLength */ +}; static const uint8_t qemu_tablet_config_descriptor[] = { /* one configuration */ diff --git a/plugins/USBqemu/usb-mic/usb.h b/plugins/USBqemu/usb-mic/usb.h index 727a14c696..e0a0a0e677 100644 --- a/plugins/USBqemu/usb-mic/usb.h +++ b/plugins/USBqemu/usb-mic/usb.h @@ -1,230 +1,230 @@ -/*---------------------------------------------------------------------------- - * U S B - K e r n e l - *---------------------------------------------------------------------------- - * Name: USB.H - * Purpose: USB Definitions - * Version: V1.10 - *---------------------------------------------------------------------------- - * This software is supplied "AS IS" without any warranties, express, - * implied or statutory, including but not limited to the implied - * warranties of fitness for purpose, satisfactory quality and - * noninfringement. Keil extends you a royalty-free right to reproduce - * and distribute executable files created using this software for use - * on Philips LPC2xxx microcontroller devices only. Nothing else gives - * you the right to use this software. - * - * Copyright (c) 2005-2006 Keil Software. - *---------------------------------------------------------------------------*/ - -#ifndef __USB_H__ -#define __USB_H__ - - -#pragma pack(1) - - -typedef union { - WORD W; - struct { - BYTE L; - BYTE H; - } WB; -} WORD_BYTE; - - -/* bmRequestType.Dir */ -#define REQUEST_HOST_TO_DEVICE 0 -#define REQUEST_DEVICE_TO_HOST 1 - -/* bmRequestType.Type */ -#define REQUEST_STANDARD 0 -#define REQUEST_CLASS 1 -#define REQUEST_VENDOR 2 -#define REQUEST_RESERVED 3 - -/* bmRequestType.Recipient */ -#define REQUEST_TO_DEVICE 0 -#define REQUEST_TO_INTERFACE 1 -#define REQUEST_TO_ENDPOINT 2 -#define REQUEST_TO_OTHER 3 - -/* bmRequestType Definition */ -typedef union _REQUEST_TYPE { - struct _BM { - BYTE Recipient : 5; - BYTE Type : 2; - BYTE Dir : 1; - } BM; - BYTE B; -} REQUEST_TYPE; - -/* USB Standard Request Codes */ -#define USB_REQUEST_GET_STATUS 0 -#define USB_REQUEST_CLEAR_FEATURE 1 -#define USB_REQUEST_SET_FEATURE 3 -#define USB_REQUEST_SET_ADDRESS 5 -#define USB_REQUEST_GET_DESCRIPTOR 6 -#define USB_REQUEST_SET_DESCRIPTOR 7 -#define USB_REQUEST_GET_CONFIGURATION 8 -#define USB_REQUEST_SET_CONFIGURATION 9 -#define USB_REQUEST_GET_INTERFACE 10 -#define USB_REQUEST_SET_INTERFACE 11 -#define USB_REQUEST_SYNC_FRAME 12 - -/* USB GET_STATUS Bit Values */ -#define USB_GETSTATUS_SELF_POWERED 0x01 -#define USB_GETSTATUS_REMOTE_WAKEUP 0x02 -#define USB_GETSTATUS_ENDPOINT_STALL 0x01 - -/* USB Standard Feature selectors */ -#define USB_FEATURE_ENDPOINT_STALL 0 -#define USB_FEATURE_REMOTE_WAKEUP 1 - -/* USB Default Control Pipe Setup Packet */ -typedef struct _USB_SETUP_PACKET { - REQUEST_TYPE bmRequestType; - BYTE bRequest; - WORD_BYTE wValue; - WORD_BYTE wIndex; - WORD wLength; -} USB_SETUP_PACKET; - - -/* USB Descriptor Types */ -#define USB_DEVICE_DESCRIPTOR_TYPE 1 -#define USB_CONFIGURATION_DESCRIPTOR_TYPE 2 -#define USB_STRING_DESCRIPTOR_TYPE 3 -#define USB_INTERFACE_DESCRIPTOR_TYPE 4 -#define USB_ENDPOINT_DESCRIPTOR_TYPE 5 -#define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 6 -#define USB_OTHER_SPEED_CONFIG_DESCRIPTOR_TYPE 7 -#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 8 - -/* USB Device Classes */ -#define USB_DEVICE_CLASS_RESERVED 0x00 -#define USB_DEVICE_CLASS_AUDIO 0x01 -#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02 -#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03 -#define USB_DEVICE_CLASS_MONITOR 0x04 -#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05 -#define USB_DEVICE_CLASS_POWER 0x06 -#define USB_DEVICE_CLASS_PRINTER 0x07 -#define USB_DEVICE_CLASS_STORAGE 0x08 -#define USB_DEVICE_CLASS_HUB 0x09 -#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF - -/* bmAttributes in Configuration Descriptor */ -#define USB_CONFIG_POWERED_MASK 0xC0 -#define USB_CONFIG_BUS_POWERED 0x80 -#define USB_CONFIG_SELF_POWERED 0x40 -#define USB_CONFIG_REMOTE_WAKEUP 0x20 - -/* bMaxPower in Configuration Descriptor */ -#define USB_CONFIG_POWER_MA(mA) ((mA)/2) - -/* bEndpointAddress in Endpoint Descriptor */ -#define USB_ENDPOINT_DIRECTION_MASK 0x80 -#define USB_ENDPOINT_OUT(addr) ((addr) | 0x00) -#define USB_ENDPOINT_IN(addr) ((addr) | 0x80) - -/* bmAttributes in Endpoint Descriptor */ -#define USB_ENDPOINT_TYPE_MASK 0x03 -#define USB_ENDPOINT_TYPE_CONTROL 0x00 -#define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01 -#define USB_ENDPOINT_TYPE_BULK 0x02 -#define USB_ENDPOINT_TYPE_INTERRUPT 0x03 -#define USB_ENDPOINT_SYNC_MASK 0x0C -#define USB_ENDPOINT_SYNC_NO_SYNCHRONIZATION 0x00 -#define USB_ENDPOINT_SYNC_ASYNCHRONOUS 0x04 -#define USB_ENDPOINT_SYNC_ADAPTIVE 0x08 -#define USB_ENDPOINT_SYNC_SYNCHRONOUS 0x0C -#define USB_ENDPOINT_USAGE_MASK 0x30 -#define USB_ENDPOINT_USAGE_DATA 0x00 -#define USB_ENDPOINT_USAGE_FEEDBACK 0x10 -#define USB_ENDPOINT_USAGE_IMPLICIT_FEEDBACK 0x20 -#define USB_ENDPOINT_USAGE_RESERVED 0x30 - -/* USB Standard Device Descriptor */ -typedef struct _USB_DEVICE_DESCRIPTOR { - BYTE bLength; - BYTE bDescriptorType; - WORD bcdUSB; - BYTE bDeviceClass; - BYTE bDeviceSubClass; - BYTE bDeviceProtocol; - BYTE bMaxPacketSize0; - WORD idVendor; - WORD idProduct; - WORD bcdDevice; - BYTE iManufacturer; - BYTE iProduct; - BYTE iSerialNumber; - BYTE bNumConfigurations; -} USB_DEVICE_DESCRIPTOR; - -/* USB 2.0 Device Qualifier Descriptor */ -typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR { - BYTE bLength; - BYTE bDescriptorType; - WORD bcdUSB; - BYTE bDeviceClass; - BYTE bDeviceSubClass; - BYTE bDeviceProtocol; - BYTE bMaxPacketSize0; - BYTE bNumConfigurations; - BYTE bReserved; -} USB_DEVICE_QUALIFIER_DESCRIPTOR; - -/* USB Standard Configuration Descriptor */ -typedef struct _USB_CONFIGURATION_DESCRIPTOR { - BYTE bLength; - BYTE bDescriptorType; - WORD wTotalLength; - BYTE bNumInterfaces; - BYTE bConfigurationValue; - BYTE iConfiguration; - BYTE bmAttributes; - BYTE MaxPower; -} USB_CONFIGURATION_DESCRIPTOR; - -/* USB Standard Interface Descriptor */ -typedef struct _USB_INTERFACE_DESCRIPTOR { - BYTE bLength; - BYTE bDescriptorType; - BYTE bInterfaceNumber; - BYTE bAlternateSetting; - BYTE bNumEndpoints; - BYTE bInterfaceClass; - BYTE bInterfaceSubClass; - BYTE bInterfaceProtocol; - BYTE iInterface; -} USB_INTERFACE_DESCRIPTOR; - -/* USB Standard Endpoint Descriptor */ -typedef struct _USB_ENDPOINT_DESCRIPTOR { - BYTE bLength; - BYTE bDescriptorType; - BYTE bEndpointAddress; - BYTE bmAttributes; - WORD wMaxPacketSize; - BYTE bInterval; -} USB_ENDPOINT_DESCRIPTOR; - -/* USB String Descriptor */ -typedef struct _USB_STRING_DESCRIPTOR { - BYTE bLength; - BYTE bDescriptorType; - WORD bString/*[]*/; -} USB_STRING_DESCRIPTOR; - -/* USB Common Descriptor */ -typedef struct _USB_COMMON_DESCRIPTOR { - BYTE bLength; - BYTE bDescriptorType; -} USB_COMMON_DESCRIPTOR; - - -#pragma pack() - - -#endif /* __USB_H__ */ +/*---------------------------------------------------------------------------- + * U S B - K e r n e l + *---------------------------------------------------------------------------- + * Name: USB.H + * Purpose: USB Definitions + * Version: V1.10 + *---------------------------------------------------------------------------- + * This software is supplied "AS IS" without any warranties, express, + * implied or statutory, including but not limited to the implied + * warranties of fitness for purpose, satisfactory quality and + * noninfringement. Keil extends you a royalty-free right to reproduce + * and distribute executable files created using this software for use + * on Philips LPC2xxx microcontroller devices only. Nothing else gives + * you the right to use this software. + * + * Copyright (c) 2005-2006 Keil Software. + *---------------------------------------------------------------------------*/ + +#ifndef __USB_H__ +#define __USB_H__ + + +#pragma pack(1) + + +typedef union { + WORD W; + struct { + BYTE L; + BYTE H; + } WB; +} WORD_BYTE; + + +/* bmRequestType.Dir */ +#define REQUEST_HOST_TO_DEVICE 0 +#define REQUEST_DEVICE_TO_HOST 1 + +/* bmRequestType.Type */ +#define REQUEST_STANDARD 0 +#define REQUEST_CLASS 1 +#define REQUEST_VENDOR 2 +#define REQUEST_RESERVED 3 + +/* bmRequestType.Recipient */ +#define REQUEST_TO_DEVICE 0 +#define REQUEST_TO_INTERFACE 1 +#define REQUEST_TO_ENDPOINT 2 +#define REQUEST_TO_OTHER 3 + +/* bmRequestType Definition */ +typedef union _REQUEST_TYPE { + struct _BM { + BYTE Recipient : 5; + BYTE Type : 2; + BYTE Dir : 1; + } BM; + BYTE B; +} REQUEST_TYPE; + +/* USB Standard Request Codes */ +#define USB_REQUEST_GET_STATUS 0 +#define USB_REQUEST_CLEAR_FEATURE 1 +#define USB_REQUEST_SET_FEATURE 3 +#define USB_REQUEST_SET_ADDRESS 5 +#define USB_REQUEST_GET_DESCRIPTOR 6 +#define USB_REQUEST_SET_DESCRIPTOR 7 +#define USB_REQUEST_GET_CONFIGURATION 8 +#define USB_REQUEST_SET_CONFIGURATION 9 +#define USB_REQUEST_GET_INTERFACE 10 +#define USB_REQUEST_SET_INTERFACE 11 +#define USB_REQUEST_SYNC_FRAME 12 + +/* USB GET_STATUS Bit Values */ +#define USB_GETSTATUS_SELF_POWERED 0x01 +#define USB_GETSTATUS_REMOTE_WAKEUP 0x02 +#define USB_GETSTATUS_ENDPOINT_STALL 0x01 + +/* USB Standard Feature selectors */ +#define USB_FEATURE_ENDPOINT_STALL 0 +#define USB_FEATURE_REMOTE_WAKEUP 1 + +/* USB Default Control Pipe Setup Packet */ +typedef struct _USB_SETUP_PACKET { + REQUEST_TYPE bmRequestType; + BYTE bRequest; + WORD_BYTE wValue; + WORD_BYTE wIndex; + WORD wLength; +} USB_SETUP_PACKET; + + +/* USB Descriptor Types */ +#define USB_DEVICE_DESCRIPTOR_TYPE 1 +#define USB_CONFIGURATION_DESCRIPTOR_TYPE 2 +#define USB_STRING_DESCRIPTOR_TYPE 3 +#define USB_INTERFACE_DESCRIPTOR_TYPE 4 +#define USB_ENDPOINT_DESCRIPTOR_TYPE 5 +#define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 6 +#define USB_OTHER_SPEED_CONFIG_DESCRIPTOR_TYPE 7 +#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 8 + +/* USB Device Classes */ +#define USB_DEVICE_CLASS_RESERVED 0x00 +#define USB_DEVICE_CLASS_AUDIO 0x01 +#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02 +#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03 +#define USB_DEVICE_CLASS_MONITOR 0x04 +#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05 +#define USB_DEVICE_CLASS_POWER 0x06 +#define USB_DEVICE_CLASS_PRINTER 0x07 +#define USB_DEVICE_CLASS_STORAGE 0x08 +#define USB_DEVICE_CLASS_HUB 0x09 +#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF + +/* bmAttributes in Configuration Descriptor */ +#define USB_CONFIG_POWERED_MASK 0xC0 +#define USB_CONFIG_BUS_POWERED 0x80 +#define USB_CONFIG_SELF_POWERED 0x40 +#define USB_CONFIG_REMOTE_WAKEUP 0x20 + +/* bMaxPower in Configuration Descriptor */ +#define USB_CONFIG_POWER_MA(mA) ((mA)/2) + +/* bEndpointAddress in Endpoint Descriptor */ +#define USB_ENDPOINT_DIRECTION_MASK 0x80 +#define USB_ENDPOINT_OUT(addr) ((addr) | 0x00) +#define USB_ENDPOINT_IN(addr) ((addr) | 0x80) + +/* bmAttributes in Endpoint Descriptor */ +#define USB_ENDPOINT_TYPE_MASK 0x03 +#define USB_ENDPOINT_TYPE_CONTROL 0x00 +#define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01 +#define USB_ENDPOINT_TYPE_BULK 0x02 +#define USB_ENDPOINT_TYPE_INTERRUPT 0x03 +#define USB_ENDPOINT_SYNC_MASK 0x0C +#define USB_ENDPOINT_SYNC_NO_SYNCHRONIZATION 0x00 +#define USB_ENDPOINT_SYNC_ASYNCHRONOUS 0x04 +#define USB_ENDPOINT_SYNC_ADAPTIVE 0x08 +#define USB_ENDPOINT_SYNC_SYNCHRONOUS 0x0C +#define USB_ENDPOINT_USAGE_MASK 0x30 +#define USB_ENDPOINT_USAGE_DATA 0x00 +#define USB_ENDPOINT_USAGE_FEEDBACK 0x10 +#define USB_ENDPOINT_USAGE_IMPLICIT_FEEDBACK 0x20 +#define USB_ENDPOINT_USAGE_RESERVED 0x30 + +/* USB Standard Device Descriptor */ +typedef struct _USB_DEVICE_DESCRIPTOR { + BYTE bLength; + BYTE bDescriptorType; + WORD bcdUSB; + BYTE bDeviceClass; + BYTE bDeviceSubClass; + BYTE bDeviceProtocol; + BYTE bMaxPacketSize0; + WORD idVendor; + WORD idProduct; + WORD bcdDevice; + BYTE iManufacturer; + BYTE iProduct; + BYTE iSerialNumber; + BYTE bNumConfigurations; +} USB_DEVICE_DESCRIPTOR; + +/* USB 2.0 Device Qualifier Descriptor */ +typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR { + BYTE bLength; + BYTE bDescriptorType; + WORD bcdUSB; + BYTE bDeviceClass; + BYTE bDeviceSubClass; + BYTE bDeviceProtocol; + BYTE bMaxPacketSize0; + BYTE bNumConfigurations; + BYTE bReserved; +} USB_DEVICE_QUALIFIER_DESCRIPTOR; + +/* USB Standard Configuration Descriptor */ +typedef struct _USB_CONFIGURATION_DESCRIPTOR { + BYTE bLength; + BYTE bDescriptorType; + WORD wTotalLength; + BYTE bNumInterfaces; + BYTE bConfigurationValue; + BYTE iConfiguration; + BYTE bmAttributes; + BYTE MaxPower; +} USB_CONFIGURATION_DESCRIPTOR; + +/* USB Standard Interface Descriptor */ +typedef struct _USB_INTERFACE_DESCRIPTOR { + BYTE bLength; + BYTE bDescriptorType; + BYTE bInterfaceNumber; + BYTE bAlternateSetting; + BYTE bNumEndpoints; + BYTE bInterfaceClass; + BYTE bInterfaceSubClass; + BYTE bInterfaceProtocol; + BYTE iInterface; +} USB_INTERFACE_DESCRIPTOR; + +/* USB Standard Endpoint Descriptor */ +typedef struct _USB_ENDPOINT_DESCRIPTOR { + BYTE bLength; + BYTE bDescriptorType; + BYTE bEndpointAddress; + BYTE bmAttributes; + WORD wMaxPacketSize; + BYTE bInterval; +} USB_ENDPOINT_DESCRIPTOR; + +/* USB String Descriptor */ +typedef struct _USB_STRING_DESCRIPTOR { + BYTE bLength; + BYTE bDescriptorType; + WORD bString/*[]*/; +} USB_STRING_DESCRIPTOR; + +/* USB Common Descriptor */ +typedef struct _USB_COMMON_DESCRIPTOR { + BYTE bLength; + BYTE bDescriptorType; +} USB_COMMON_DESCRIPTOR; + + +#pragma pack() + + +#endif /* __USB_H__ */ diff --git a/plugins/USBqemu/usb-mic/usbcfg.h b/plugins/USBqemu/usb-mic/usbcfg.h index fb425bcc0d..6275a4a107 100644 --- a/plugins/USBqemu/usb-mic/usbcfg.h +++ b/plugins/USBqemu/usb-mic/usbcfg.h @@ -1,161 +1,161 @@ -/*---------------------------------------------------------------------------- - * U S B - K e r n e l - *---------------------------------------------------------------------------- - * Name: USBCFG.H - * Purpose: USB Custom Configuration - * Version: V1.10 - *---------------------------------------------------------------------------- - * This software is supplied "AS IS" without any warranties, express, - * implied or statutory, including but not limited to the implied - * warranties of fitness for purpose, satisfactory quality and - * noninfringement. Keil extends you a royalty-free right to reproduce - * and distribute executable files created using this software for use - * on Philips LPC2xxx microcontroller devices only. Nothing else gives - * you the right to use this software. - * - * Copyright (c) 2005-2006 Keil Software. - *---------------------------------------------------------------------------*/ - -#ifndef __USBCFG_H__ -#define __USBCFG_H__ - - -/* -//*** <<< Use Configuration Wizard in Context Menu >>> *** -*/ - - -/* -// USB Configuration -// USB Power -// Default Power Setting -// <0=> Bus-powered -// <1=> Self-powered -// Max Number of Interfaces <1-256> -// Max Number of Endpoints <1-32> -// Max Endpoint 0 Packet Size -// <8=> 8 Bytes <16=> 16 Bytes <32=> 32 Bytes <64=> 64 Bytes -// DMA Transfer -// Use DMA for selected Endpoints -// Endpoint 0 Out -// Endpoint 0 In -// Endpoint 1 Out -// Endpoint 1 In -// Endpoint 2 Out -// Endpoint 2 In -// Endpoint 3 Out -// Endpoint 3 In -// Endpoint 4 Out -// Endpoint 4 In -// Endpoint 5 Out -// Endpoint 5 In -// Endpoint 6 Out -// Endpoint 6 In -// Endpoint 7 Out -// Endpoint 7 In -// Endpoint 8 Out -// Endpoint 8 In -// Endpoint 9 Out -// Endpoint 9 In -// Endpoint 10 Out -// Endpoint 10 In -// Endpoint 11 Out -// Endpoint 11 In -// Endpoint 12 Out -// Endpoint 12 In -// Endpoint 13 Out -// Endpoint 13 In -// Endpoint 14 Out -// Endpoint 14 In -// Endpoint 15 Out -// Endpoint 15 In -// -// -*/ - -#define USB_POWER 0 -#define USB_IF_NUM 4 -#define USB_EP_NUM 32 -#define USB_MAX_PACKET0 64 -#define USB_DMA 0 -#define USB_DMA_EP 0x00000040 - - -/* -// USB Event Handlers -// Device Events -// Power Event -// Reset Event -// Suspend Event -// Resume Event -// Remote Wakeup Event -// Start of Frame Event -// Error Event -// -// Endpoint Events -// Endpoint 0 Event -// Endpoint 1 Event -// Endpoint 2 Event -// Endpoint 3 Event -// Endpoint 4 Event -// Endpoint 5 Event -// Endpoint 6 Event -// Endpoint 7 Event -// Endpoint 8 Event -// Endpoint 9 Event -// Endpoint 10 Event -// Endpoint 11 Event -// Endpoint 12 Event -// Endpoint 13 Event -// Endpoint 14 Event -// Endpoint 15 Event -// -// USB Core Events -// Set Configuration Event -// Set Interface Event -// Set/Clear Feature Event -// -// -*/ - -#define USB_POWER_EVENT 0 -#define USB_RESET_EVENT 1 -#define USB_SUSPEND_EVENT 0 -#define USB_RESUME_EVENT 0 -#define USB_WAKEUP_EVENT 0 -#define USB_SOF_EVENT 1 -#define USB_ERROR_EVENT 0 -#define USB_EP_EVENT 0x0009 -#define USB_CONFIGURE_EVENT 0 -#define USB_INTERFACE_EVENT 0 -#define USB_FEATURE_EVENT 0 - - -/* -// USB Class Support -// Human Interface Device (HID) -// Interface Number <0-255> -// -// Mass Storage -// Interface Number <0-255> -// -// Audio Device -// Control Interface Number <0-255> -// Streaming Interface 1 Number <0-255> -// Streaming Interface 2 Number <0-255> -// -// -*/ - -#define USB_CLASS 1 -#define USB_HID 0 -#define USB_HID_IF_NUM 0 -#define USB_MSC 0 -#define USB_MSC_IF_NUM 0 -#define USB_AUDIO 1 -#define USB_ADC_CIF_NUM 0 -#define USB_ADC_SIF1_NUM 1 -#define USB_ADC_SIF2_NUM 2 - - -#endif /* __USBCFG_H__ */ +/*---------------------------------------------------------------------------- + * U S B - K e r n e l + *---------------------------------------------------------------------------- + * Name: USBCFG.H + * Purpose: USB Custom Configuration + * Version: V1.10 + *---------------------------------------------------------------------------- + * This software is supplied "AS IS" without any warranties, express, + * implied or statutory, including but not limited to the implied + * warranties of fitness for purpose, satisfactory quality and + * noninfringement. Keil extends you a royalty-free right to reproduce + * and distribute executable files created using this software for use + * on Philips LPC2xxx microcontroller devices only. Nothing else gives + * you the right to use this software. + * + * Copyright (c) 2005-2006 Keil Software. + *---------------------------------------------------------------------------*/ + +#ifndef __USBCFG_H__ +#define __USBCFG_H__ + + +/* +//*** <<< Use Configuration Wizard in Context Menu >>> *** +*/ + + +/* +// USB Configuration +// USB Power +// Default Power Setting +// <0=> Bus-powered +// <1=> Self-powered +// Max Number of Interfaces <1-256> +// Max Number of Endpoints <1-32> +// Max Endpoint 0 Packet Size +// <8=> 8 Bytes <16=> 16 Bytes <32=> 32 Bytes <64=> 64 Bytes +// DMA Transfer +// Use DMA for selected Endpoints +// Endpoint 0 Out +// Endpoint 0 In +// Endpoint 1 Out +// Endpoint 1 In +// Endpoint 2 Out +// Endpoint 2 In +// Endpoint 3 Out +// Endpoint 3 In +// Endpoint 4 Out +// Endpoint 4 In +// Endpoint 5 Out +// Endpoint 5 In +// Endpoint 6 Out +// Endpoint 6 In +// Endpoint 7 Out +// Endpoint 7 In +// Endpoint 8 Out +// Endpoint 8 In +// Endpoint 9 Out +// Endpoint 9 In +// Endpoint 10 Out +// Endpoint 10 In +// Endpoint 11 Out +// Endpoint 11 In +// Endpoint 12 Out +// Endpoint 12 In +// Endpoint 13 Out +// Endpoint 13 In +// Endpoint 14 Out +// Endpoint 14 In +// Endpoint 15 Out +// Endpoint 15 In +// +// +*/ + +#define USB_POWER 0 +#define USB_IF_NUM 4 +#define USB_EP_NUM 32 +#define USB_MAX_PACKET0 64 +#define USB_DMA 0 +#define USB_DMA_EP 0x00000040 + + +/* +// USB Event Handlers +// Device Events +// Power Event +// Reset Event +// Suspend Event +// Resume Event +// Remote Wakeup Event +// Start of Frame Event +// Error Event +// +// Endpoint Events +// Endpoint 0 Event +// Endpoint 1 Event +// Endpoint 2 Event +// Endpoint 3 Event +// Endpoint 4 Event +// Endpoint 5 Event +// Endpoint 6 Event +// Endpoint 7 Event +// Endpoint 8 Event +// Endpoint 9 Event +// Endpoint 10 Event +// Endpoint 11 Event +// Endpoint 12 Event +// Endpoint 13 Event +// Endpoint 14 Event +// Endpoint 15 Event +// +// USB Core Events +// Set Configuration Event +// Set Interface Event +// Set/Clear Feature Event +// +// +*/ + +#define USB_POWER_EVENT 0 +#define USB_RESET_EVENT 1 +#define USB_SUSPEND_EVENT 0 +#define USB_RESUME_EVENT 0 +#define USB_WAKEUP_EVENT 0 +#define USB_SOF_EVENT 1 +#define USB_ERROR_EVENT 0 +#define USB_EP_EVENT 0x0009 +#define USB_CONFIGURE_EVENT 0 +#define USB_INTERFACE_EVENT 0 +#define USB_FEATURE_EVENT 0 + + +/* +// USB Class Support +// Human Interface Device (HID) +// Interface Number <0-255> +// +// Mass Storage +// Interface Number <0-255> +// +// Audio Device +// Control Interface Number <0-255> +// Streaming Interface 1 Number <0-255> +// Streaming Interface 2 Number <0-255> +// +// +*/ + +#define USB_CLASS 1 +#define USB_HID 0 +#define USB_HID_IF_NUM 0 +#define USB_MSC 0 +#define USB_MSC_IF_NUM 0 +#define USB_AUDIO 1 +#define USB_ADC_CIF_NUM 0 +#define USB_ADC_SIF1_NUM 1 +#define USB_ADC_SIF2_NUM 2 + + +#endif /* __USBCFG_H__ */ diff --git a/plugins/USBqemu/usb-mic/usbcore.h b/plugins/USBqemu/usb-mic/usbcore.h index 980afdfe16..eb27f4a3df 100644 --- a/plugins/USBqemu/usb-mic/usbcore.h +++ b/plugins/USBqemu/usb-mic/usbcore.h @@ -1,50 +1,50 @@ -/*---------------------------------------------------------------------------- - * U S B - K e r n e l - *---------------------------------------------------------------------------- - * Name: USBCORE.H - * Purpose: USB Core Definitions - * Version: V1.10 - *---------------------------------------------------------------------------- - * This software is supplied "AS IS" without any warranties, express, - * implied or statutory, including but not limited to the implied - * warranties of fitness for purpose, satisfactory quality and - * noninfringement. Keil extends you a royalty-free right to reproduce - * and distribute executable files created using this software for use - * on Philips LPC2xxx microcontroller devices only. Nothing else gives - * you the right to use this software. - * - * Copyright (c) 2005-2006 Keil Software. - *---------------------------------------------------------------------------*/ - -#ifndef __USBCORE_H__ -#define __USBCORE_H__ - - -/* USB Endpoint Data Structure */ -typedef struct _USB_EP_DATA { - BYTE *pData; - WORD Count; -} USB_EP_DATA; - -/* USB Core Global Variables */ -extern WORD USB_DeviceStatus; -extern BYTE USB_DeviceAddress; -extern BYTE USB_Configuration; -extern DWORD USB_EndPointMask; -extern DWORD USB_EndPointHalt; -extern BYTE USB_AltSetting[USB_IF_NUM]; - -/* USB Endpoint 0 Buffer */ -extern BYTE EP0Buf[USB_MAX_PACKET0]; - -/* USB Endpoint 0 Data Info */ -extern USB_EP_DATA EP0Data; - -/* USB Setup Packet */ -extern USB_SETUP_PACKET SetupPacket; - -/* USB Core Functions */ -extern void USB_ResetCore (void); - - -#endif /* __USBCORE_H__ */ +/*---------------------------------------------------------------------------- + * U S B - K e r n e l + *---------------------------------------------------------------------------- + * Name: USBCORE.H + * Purpose: USB Core Definitions + * Version: V1.10 + *---------------------------------------------------------------------------- + * This software is supplied "AS IS" without any warranties, express, + * implied or statutory, including but not limited to the implied + * warranties of fitness for purpose, satisfactory quality and + * noninfringement. Keil extends you a royalty-free right to reproduce + * and distribute executable files created using this software for use + * on Philips LPC2xxx microcontroller devices only. Nothing else gives + * you the right to use this software. + * + * Copyright (c) 2005-2006 Keil Software. + *---------------------------------------------------------------------------*/ + +#ifndef __USBCORE_H__ +#define __USBCORE_H__ + + +/* USB Endpoint Data Structure */ +typedef struct _USB_EP_DATA { + BYTE *pData; + WORD Count; +} USB_EP_DATA; + +/* USB Core Global Variables */ +extern WORD USB_DeviceStatus; +extern BYTE USB_DeviceAddress; +extern BYTE USB_Configuration; +extern DWORD USB_EndPointMask; +extern DWORD USB_EndPointHalt; +extern BYTE USB_AltSetting[USB_IF_NUM]; + +/* USB Endpoint 0 Buffer */ +extern BYTE EP0Buf[USB_MAX_PACKET0]; + +/* USB Endpoint 0 Data Info */ +extern USB_EP_DATA EP0Data; + +/* USB Setup Packet */ +extern USB_SETUP_PACKET SetupPacket; + +/* USB Core Functions */ +extern void USB_ResetCore (void); + + +#endif /* __USBCORE_H__ */ diff --git a/plugins/USBqemu/usb-mic/usbdesc.h b/plugins/USBqemu/usb-mic/usbdesc.h index a896e86d2b..e7e22da8e5 100644 --- a/plugins/USBqemu/usb-mic/usbdesc.h +++ b/plugins/USBqemu/usb-mic/usbdesc.h @@ -1,36 +1,36 @@ -/*---------------------------------------------------------------------------- - * U S B - K e r n e l - *---------------------------------------------------------------------------- - * Name: USBDESC.C - * Purpose: USB Descriptors Definitions - * Version: V1.10 - *---------------------------------------------------------------------------- - * This software is supplied "AS IS" without any warranties, express, - * implied or statutory, including but not limited to the implied - * warranties of fitness for purpose, satisfactory quality and - * noninfringement. Keil extends you a royalty-free right to reproduce - * and distribute executable files created using this software for use - * on Philips LPC2xxx microcontroller devices only. Nothing else gives - * you the right to use this software. - * - * Copyright (c) 2005-2006 Keil Software. - *---------------------------------------------------------------------------*/ - -#ifndef __USBDESC_H__ -#define __USBDESC_H__ - - -#define WBVAL(x) (x & 0xFF),((x >> 8) & 0xFF) -#define B3VAL(x) (x & 0xFF),((x >> 8) & 0xFF),((x >> 16) & 0xFF) - -#define USB_DEVICE_DESC_SIZE (sizeof(USB_DEVICE_DESCRIPTOR)) -#define USB_CONFIGUARTION_DESC_SIZE (sizeof(USB_CONFIGURATION_DESCRIPTOR)) -#define USB_INTERFACE_DESC_SIZE (sizeof(USB_INTERFACE_DESCRIPTOR)) -#define USB_ENDPOINT_DESC_SIZE (sizeof(USB_ENDPOINT_DESCRIPTOR)) - -extern const BYTE USB_DeviceDescriptor[]; -extern const BYTE USB_ConfigDescriptor[]; -extern const BYTE USB_StringDescriptor[]; - - -#endif /* __USBDESC_H__ */ +/*---------------------------------------------------------------------------- + * U S B - K e r n e l + *---------------------------------------------------------------------------- + * Name: USBDESC.C + * Purpose: USB Descriptors Definitions + * Version: V1.10 + *---------------------------------------------------------------------------- + * This software is supplied "AS IS" without any warranties, express, + * implied or statutory, including but not limited to the implied + * warranties of fitness for purpose, satisfactory quality and + * noninfringement. Keil extends you a royalty-free right to reproduce + * and distribute executable files created using this software for use + * on Philips LPC2xxx microcontroller devices only. Nothing else gives + * you the right to use this software. + * + * Copyright (c) 2005-2006 Keil Software. + *---------------------------------------------------------------------------*/ + +#ifndef __USBDESC_H__ +#define __USBDESC_H__ + + +#define WBVAL(x) (x & 0xFF),((x >> 8) & 0xFF) +#define B3VAL(x) (x & 0xFF),((x >> 8) & 0xFF),((x >> 16) & 0xFF) + +#define USB_DEVICE_DESC_SIZE (sizeof(USB_DEVICE_DESCRIPTOR)) +#define USB_CONFIGUARTION_DESC_SIZE (sizeof(USB_CONFIGURATION_DESCRIPTOR)) +#define USB_INTERFACE_DESC_SIZE (sizeof(USB_INTERFACE_DESCRIPTOR)) +#define USB_ENDPOINT_DESC_SIZE (sizeof(USB_ENDPOINT_DESCRIPTOR)) + +extern const BYTE USB_DeviceDescriptor[]; +extern const BYTE USB_ConfigDescriptor[]; +extern const BYTE USB_StringDescriptor[]; + + +#endif /* __USBDESC_H__ */ diff --git a/plugins/USBqemu/usb-mic/usbhw.h b/plugins/USBqemu/usb-mic/usbhw.h index e2a3aa9cf4..55953976e7 100644 --- a/plugins/USBqemu/usb-mic/usbhw.h +++ b/plugins/USBqemu/usb-mic/usbhw.h @@ -1,107 +1,107 @@ -/*---------------------------------------------------------------------------- - * U S B - K e r n e l - *---------------------------------------------------------------------------- - * Name: USBHW.H - * Purpose: USB Hardware Layer Definitions - * Version: V1.10 - *---------------------------------------------------------------------------- - * This software is supplied "AS IS" without any warranties, express, - * implied or statutory, including but not limited to the implied - * warranties of fitness for purpose, satisfactory quality and - * noninfringement. Keil extends you a royalty-free right to reproduce - * and distribute executable files created using this software for use - * on Philips LPC2xxx microcontroller devices only. Nothing else gives - * you the right to use this software. - * - * Copyright (c) 2005-2006 Keil Software. - *---------------------------------------------------------------------------*/ - -#ifndef __USBHW_H__ -#define __USBHW_H__ - - -/* USB RAM Definitions */ -#define USB_RAM_ADR 0x7FD00000 /* USB RAM Start Address */ -#define USB_RAM_SZ 0x00002000 /* USB RAM Size (8kB) */ - -/* DMA Endpoint Descriptors */ -#define DD_NISO_CNT 16 /* Non-Iso EP DMA Descr. Count (max. 32) */ -#define DD_ISO_CNT 8 /* Iso EP DMA Descriptor Count (max. 32) */ -#define DD_NISO_SZ (DD_NISO_CNT * 16) /* Non-Iso DMA Descr. Size */ -#define DD_ISO_SZ (DD_ISO_CNT * 20) /* Iso DMA Descriptor Size */ -#define DD_NISO_ADR (USB_RAM_ADR + 128) /* Non-Iso DMA Descr. Address */ -#define DD_ISO_ADR (DD_NISO_ADR + DD_NISO_SZ) /* Iso DMA Descr. Address */ -#define DD_SZ (128 + DD_NISO_SZ + DD_ISO_SZ) /* Descr. Size */ - -/* DMA Buffer Memory Definitions */ -#define DMA_BUF_ADR (USB_RAM_ADR + DD_SZ) /* DMA Buffer Start Address */ -#define DMA_BUF_SZ (USB_RAM_SZ - DD_SZ) /* DMA Buffer Size */ - -/* USB Error Codes */ -#define USB_ERR_PID 0x0001 /* PID Error */ -#define USB_ERR_UEPKT 0x0002 /* Unexpected Packet */ -#define USB_ERR_DCRC 0x0004 /* Data CRC Error */ -#define USB_ERR_TIMOUT 0x0008 /* Bus Time-out Error */ -#define USB_ERR_EOP 0x0010 /* End of Packet Error */ -#define USB_ERR_B_OVRN 0x0020 /* Buffer Overrun */ -#define USB_ERR_BTSTF 0x0040 /* Bit Stuff Error */ -#define USB_ERR_TGL 0x0080 /* Toggle Bit Error */ - -/* USB DMA Status Codes */ -#define USB_DMA_INVALID 0x0000 /* DMA Invalid - Not Configured */ -#define USB_DMA_IDLE 0x0001 /* DMA Idle - Waiting for Trigger */ -#define USB_DMA_BUSY 0x0002 /* DMA Busy - Transfer in progress */ -#define USB_DMA_DONE 0x0003 /* DMA Transfer Done (no Errors)*/ -#define USB_DMA_OVER_RUN 0x0004 /* Data Over Run */ -#define USB_DMA_UNDER_RUN 0x0005 /* Data Under Run (Short Packet) */ -#define USB_DMA_ERROR 0x0006 /* Error */ -#define USB_DMA_UNKNOWN 0xFFFF /* Unknown State */ - -/* USB DMA Descriptor */ -typedef struct _USB_DMA_DESCRIPTOR { - DWORD BufAdr; /* DMA Buffer Address */ - WORD BufLen; /* DMA Buffer Length */ - WORD MaxSize; /* Maximum Packet Size */ - DWORD InfoAdr; /* Packet Info Memory Address */ - union { /* DMA Configuration */ - struct { - DWORD Link : 1; /* Link to existing Descriptors */ - DWORD IsoEP : 1; /* Isonchronous Endpoint */ - DWORD ATLE : 1; /* ATLE (Auto Transfer Length Extract) */ - DWORD Rsrvd : 5; /* Reserved */ - DWORD LenPos : 8; /* Length Position (ATLE) */ - } Type; - DWORD Val; - } Cfg; -} USB_DMA_DESCRIPTOR; - -/* USB Hardware Functions */ -extern void USB_Init (void); -extern void USB_Connect (BOOL con); -extern void USB_Reset (void); -extern void USB_Suspend (void); -extern void USB_Resume (void); -extern void USB_WakeUp (void); -extern void USB_WakeUpCfg (BOOL cfg); -extern void USB_SetAddress (DWORD adr); -extern void USB_Configure (BOOL cfg); -extern void USB_ConfigEP (USB_ENDPOINT_DESCRIPTOR *pEPD); -extern void USB_DirCtrlEP (DWORD dir); -extern void USB_EnableEP (DWORD EPNum); -extern void USB_DisableEP (DWORD EPNum); -extern void USB_ResetEP (DWORD EPNum); -extern void USB_SetStallEP (DWORD EPNum); -extern void USB_ClrStallEP (DWORD EPNum); -extern DWORD USB_ReadEP (DWORD EPNum, BYTE *pData); -extern DWORD USB_WriteEP (DWORD EPNum, BYTE *pData, DWORD cnt); -extern BOOL USB_DMA_Setup (DWORD EPNum, USB_DMA_DESCRIPTOR *pDD); -extern void USB_DMA_Enable (DWORD EPNum); -extern void USB_DMA_Disable(DWORD EPNum); -extern DWORD USB_DMA_Status (DWORD EPNum); -extern DWORD USB_DMA_BufAdr (DWORD EPNum); -extern DWORD USB_DMA_BufCnt (DWORD EPNum); -extern DWORD USB_GetFrame (void); -extern void USB_ISR (void) __irq; - - -#endif /* __USBHW_H__ */ +/*---------------------------------------------------------------------------- + * U S B - K e r n e l + *---------------------------------------------------------------------------- + * Name: USBHW.H + * Purpose: USB Hardware Layer Definitions + * Version: V1.10 + *---------------------------------------------------------------------------- + * This software is supplied "AS IS" without any warranties, express, + * implied or statutory, including but not limited to the implied + * warranties of fitness for purpose, satisfactory quality and + * noninfringement. Keil extends you a royalty-free right to reproduce + * and distribute executable files created using this software for use + * on Philips LPC2xxx microcontroller devices only. Nothing else gives + * you the right to use this software. + * + * Copyright (c) 2005-2006 Keil Software. + *---------------------------------------------------------------------------*/ + +#ifndef __USBHW_H__ +#define __USBHW_H__ + + +/* USB RAM Definitions */ +#define USB_RAM_ADR 0x7FD00000 /* USB RAM Start Address */ +#define USB_RAM_SZ 0x00002000 /* USB RAM Size (8kB) */ + +/* DMA Endpoint Descriptors */ +#define DD_NISO_CNT 16 /* Non-Iso EP DMA Descr. Count (max. 32) */ +#define DD_ISO_CNT 8 /* Iso EP DMA Descriptor Count (max. 32) */ +#define DD_NISO_SZ (DD_NISO_CNT * 16) /* Non-Iso DMA Descr. Size */ +#define DD_ISO_SZ (DD_ISO_CNT * 20) /* Iso DMA Descriptor Size */ +#define DD_NISO_ADR (USB_RAM_ADR + 128) /* Non-Iso DMA Descr. Address */ +#define DD_ISO_ADR (DD_NISO_ADR + DD_NISO_SZ) /* Iso DMA Descr. Address */ +#define DD_SZ (128 + DD_NISO_SZ + DD_ISO_SZ) /* Descr. Size */ + +/* DMA Buffer Memory Definitions */ +#define DMA_BUF_ADR (USB_RAM_ADR + DD_SZ) /* DMA Buffer Start Address */ +#define DMA_BUF_SZ (USB_RAM_SZ - DD_SZ) /* DMA Buffer Size */ + +/* USB Error Codes */ +#define USB_ERR_PID 0x0001 /* PID Error */ +#define USB_ERR_UEPKT 0x0002 /* Unexpected Packet */ +#define USB_ERR_DCRC 0x0004 /* Data CRC Error */ +#define USB_ERR_TIMOUT 0x0008 /* Bus Time-out Error */ +#define USB_ERR_EOP 0x0010 /* End of Packet Error */ +#define USB_ERR_B_OVRN 0x0020 /* Buffer Overrun */ +#define USB_ERR_BTSTF 0x0040 /* Bit Stuff Error */ +#define USB_ERR_TGL 0x0080 /* Toggle Bit Error */ + +/* USB DMA Status Codes */ +#define USB_DMA_INVALID 0x0000 /* DMA Invalid - Not Configured */ +#define USB_DMA_IDLE 0x0001 /* DMA Idle - Waiting for Trigger */ +#define USB_DMA_BUSY 0x0002 /* DMA Busy - Transfer in progress */ +#define USB_DMA_DONE 0x0003 /* DMA Transfer Done (no Errors)*/ +#define USB_DMA_OVER_RUN 0x0004 /* Data Over Run */ +#define USB_DMA_UNDER_RUN 0x0005 /* Data Under Run (Short Packet) */ +#define USB_DMA_ERROR 0x0006 /* Error */ +#define USB_DMA_UNKNOWN 0xFFFF /* Unknown State */ + +/* USB DMA Descriptor */ +typedef struct _USB_DMA_DESCRIPTOR { + DWORD BufAdr; /* DMA Buffer Address */ + WORD BufLen; /* DMA Buffer Length */ + WORD MaxSize; /* Maximum Packet Size */ + DWORD InfoAdr; /* Packet Info Memory Address */ + union { /* DMA Configuration */ + struct { + DWORD Link : 1; /* Link to existing Descriptors */ + DWORD IsoEP : 1; /* Isonchronous Endpoint */ + DWORD ATLE : 1; /* ATLE (Auto Transfer Length Extract) */ + DWORD Rsrvd : 5; /* Reserved */ + DWORD LenPos : 8; /* Length Position (ATLE) */ + } Type; + DWORD Val; + } Cfg; +} USB_DMA_DESCRIPTOR; + +/* USB Hardware Functions */ +extern void USB_Init (void); +extern void USB_Connect (BOOL con); +extern void USB_Reset (void); +extern void USB_Suspend (void); +extern void USB_Resume (void); +extern void USB_WakeUp (void); +extern void USB_WakeUpCfg (BOOL cfg); +extern void USB_SetAddress (DWORD adr); +extern void USB_Configure (BOOL cfg); +extern void USB_ConfigEP (USB_ENDPOINT_DESCRIPTOR *pEPD); +extern void USB_DirCtrlEP (DWORD dir); +extern void USB_EnableEP (DWORD EPNum); +extern void USB_DisableEP (DWORD EPNum); +extern void USB_ResetEP (DWORD EPNum); +extern void USB_SetStallEP (DWORD EPNum); +extern void USB_ClrStallEP (DWORD EPNum); +extern DWORD USB_ReadEP (DWORD EPNum, BYTE *pData); +extern DWORD USB_WriteEP (DWORD EPNum, BYTE *pData, DWORD cnt); +extern BOOL USB_DMA_Setup (DWORD EPNum, USB_DMA_DESCRIPTOR *pDD); +extern void USB_DMA_Enable (DWORD EPNum); +extern void USB_DMA_Disable(DWORD EPNum); +extern DWORD USB_DMA_Status (DWORD EPNum); +extern DWORD USB_DMA_BufAdr (DWORD EPNum); +extern DWORD USB_DMA_BufCnt (DWORD EPNum); +extern DWORD USB_GetFrame (void); +extern void USB_ISR (void) __irq; + + +#endif /* __USBHW_H__ */ diff --git a/plugins/USBqemu/usb-mic/usbreg.h b/plugins/USBqemu/usb-mic/usbreg.h index 6dd2ff8b3c..e075cb96f3 100644 --- a/plugins/USBqemu/usb-mic/usbreg.h +++ b/plugins/USBqemu/usb-mic/usbreg.h @@ -1,195 +1,195 @@ -/***********************************************************************/ -/* This file is part of the uVision/ARM development tools */ -/* Copyright KEIL ELEKTRONIK GmbH 2002-2006 */ -/***********************************************************************/ -/* */ -/* USBREG.H: Header file for Philips LPC214X USB */ -/* */ -/***********************************************************************/ - -#ifndef __USBREG_H -#define __USBREG_H - - -#define SCB_BASE_ADDR 0xE01FC000 /* System Control Block */ - -/* PLL48 Registers */ -#define PLL48CON (*(volatile unsigned int*)(SCB_BASE_ADDR + 0xA0)) -#define PLL48CFG (*(volatile unsigned int*)(SCB_BASE_ADDR + 0xA4)) -#define PLL48STAT (*(volatile unsigned int*)(SCB_BASE_ADDR + 0xA8)) -#define PLL48FEED (*(volatile unsigned int*)(SCB_BASE_ADDR + 0xAC)) - -/* PLL48 Bit Definitions */ -#define PLLCON_PLLE (1<<0) /* PLL Enable */ -#define PLLCON_PLLC (1<<1) /* PLL Connect */ -#define PLLCFG_MSEL (0x1F<<0) /* PLL Multiplier */ -#define PLLCFG_PSEL (0x03<<5) /* PLL Divider */ -#define PLLSTAT_PLOCK (1<<10) /* PLL Lock Status */ - - -#define USB_BASE_ADDR 0xE0090000 /* USB Base Address */ - -/* Device Interrupt Registers */ -#define DEV_INT_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0x00)) -#define DEV_INT_EN (*(volatile unsigned int*)(USB_BASE_ADDR + 0x04)) -#define DEV_INT_CLR (*(volatile unsigned int*)(USB_BASE_ADDR + 0x08)) -#define DEV_INT_SET (*(volatile unsigned int*)(USB_BASE_ADDR + 0x0C)) -#define DEV_INT_PRIO (*(volatile unsigned int*)(USB_BASE_ADDR + 0x2C)) - -/* Endpoint Interrupt Registers */ -#define EP_INT_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0x30)) -#define EP_INT_EN (*(volatile unsigned int*)(USB_BASE_ADDR + 0x34)) -#define EP_INT_CLR (*(volatile unsigned int*)(USB_BASE_ADDR + 0x38)) -#define EP_INT_SET (*(volatile unsigned int*)(USB_BASE_ADDR + 0x3C)) -#define EP_INT_PRIO (*(volatile unsigned int*)(USB_BASE_ADDR + 0x40)) - -/* Endpoint Realization Registers */ -#define REALIZE_EP (*(volatile unsigned int*)(USB_BASE_ADDR + 0x44)) -#define EP_INDEX (*(volatile unsigned int*)(USB_BASE_ADDR + 0x48)) -#define MAXPACKET_SIZE (*(volatile unsigned int*)(USB_BASE_ADDR + 0x4C)) - -/* Command Reagisters */ -#define CMD_CODE (*(volatile unsigned int*)(USB_BASE_ADDR + 0x10)) -#define CMD_DATA (*(volatile unsigned int*)(USB_BASE_ADDR + 0x14)) - -/* Data Transfer Registers */ -#define RX_DATA (*(volatile unsigned int*)(USB_BASE_ADDR + 0x18)) -#define TX_DATA (*(volatile unsigned int*)(USB_BASE_ADDR + 0x1C)) -#define RX_PLENGTH (*(volatile unsigned int*)(USB_BASE_ADDR + 0x20)) -#define TX_PLENGTH (*(volatile unsigned int*)(USB_BASE_ADDR + 0x24)) -#define USB_CTRL (*(volatile unsigned int*)(USB_BASE_ADDR + 0x28)) - -/* System Register */ -#define DC_REVISION (*(volatile unsigned int*)(USB_BASE_ADDR + 0x7C)) - -/* DMA Registers */ -#define DMA_REQ_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0x50)) -#define DMA_REQ_CLR (*(volatile unsigned int*)(USB_BASE_ADDR + 0x54)) -#define DMA_REQ_SET (*(volatile unsigned int*)(USB_BASE_ADDR + 0x58)) -#define UDCA_HEAD (*(volatile unsigned int*)(USB_BASE_ADDR + 0x80)) -#define EP_DMA_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0x84)) -#define EP_DMA_EN (*(volatile unsigned int*)(USB_BASE_ADDR + 0x88)) -#define EP_DMA_DIS (*(volatile unsigned int*)(USB_BASE_ADDR + 0x8C)) -#define DMA_INT_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0x90)) -#define DMA_INT_EN (*(volatile unsigned int*)(USB_BASE_ADDR + 0x94)) -#define EOT_INT_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0xA0)) -#define EOT_INT_CLR (*(volatile unsigned int*)(USB_BASE_ADDR + 0xA4)) -#define EOT_INT_SET (*(volatile unsigned int*)(USB_BASE_ADDR + 0xA8)) -#define NDD_REQ_INT_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0xAC)) -#define NDD_REQ_INT_CLR (*(volatile unsigned int*)(USB_BASE_ADDR + 0xB0)) -#define NDD_REQ_INT_SET (*(volatile unsigned int*)(USB_BASE_ADDR + 0xB4)) -#define SYS_ERR_INT_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0xB8)) -#define SYS_ERR_INT_CLR (*(volatile unsigned int*)(USB_BASE_ADDR + 0xBC)) -#define SYS_ERR_INT_SET (*(volatile unsigned int*)(USB_BASE_ADDR + 0xC0)) -#define MODULE_ID (*(volatile unsigned int*)(USB_BASE_ADDR + 0xFC)) - - -/* Device Interrupt Bit Definitions */ -#define FRAME_INT 0x00000001 -#define EP_FAST_INT 0x00000002 -#define EP_SLOW_INT 0x00000004 -#define DEV_STAT_INT 0x00000008 -#define CCEMTY_INT 0x00000010 -#define CDFULL_INT 0x00000020 -#define RxENDPKT_INT 0x00000040 -#define TxENDPKT_INT 0x00000080 -#define EP_RLZED_INT 0x00000100 -#define ERR_INT 0x00000200 - -/* Rx & Tx Packet Length Definitions */ -#define PKT_LNGTH_MASK 0x000003FF -#define PKT_DV 0x00000400 -#define PKT_RDY 0x00000800 - -/* USB Control Definitions */ -#define CTRL_RD_EN 0x00000001 -#define CTRL_WR_EN 0x00000002 - -/* Command Codes */ -#define CMD_SET_ADDR 0x00D00500 -#define CMD_CFG_DEV 0x00D80500 -#define CMD_SET_MODE 0x00F30500 -#define CMD_RD_FRAME 0x00F50500 -#define DAT_RD_FRAME 0x00F50200 -#define CMD_RD_TEST 0x00FD0500 -#define DAT_RD_TEST 0x00FD0200 -#define CMD_SET_DEV_STAT 0x00FE0500 -#define CMD_GET_DEV_STAT 0x00FE0500 -#define DAT_GET_DEV_STAT 0x00FE0200 -#define CMD_GET_ERR_CODE 0x00FF0500 -#define DAT_GET_ERR_CODE 0x00FF0200 -#define CMD_RD_ERR_STAT 0x00FB0500 -#define DAT_RD_ERR_STAT 0x00FB0200 -#define DAT_WR_BYTE(x) (0x00000100 | ((x) << 16)) -#define CMD_SEL_EP(x) (0x00000500 | ((x) << 16)) -#define DAT_SEL_EP(x) (0x00000200 | ((x) << 16)) -#define CMD_SEL_EP_CLRI(x) (0x00400500 | ((x) << 16)) -#define DAT_SEL_EP_CLRI(x) (0x00400200 | ((x) << 16)) -#define CMD_SET_EP_STAT(x) (0x00400500 | ((x) << 16)) -#define CMD_CLR_BUF 0x00F20500 -#define DAT_CLR_BUF 0x00F20200 -#define CMD_VALID_BUF 0x00FA0500 - -/* Device Address Register Definitions */ -#define DEV_ADDR_MASK 0x7F -#define DEV_EN 0x80 - -/* Device Configure Register Definitions */ -#define CONF_DVICE 0x01 - -/* Device Mode Register Definitions */ -#define AP_CLK 0x01 -#define INAK_CI 0x02 -#define INAK_CO 0x04 -#define INAK_II 0x08 -#define INAK_IO 0x10 -#define INAK_BI 0x20 -#define INAK_BO 0x40 - -/* Device Status Register Definitions */ -#define DEV_CON 0x01 -#define DEV_CON_CH 0x02 -#define DEV_SUS 0x04 -#define DEV_SUS_CH 0x08 -#define DEV_RST 0x10 - -/* Error Code Register Definitions */ -#define ERR_EC_MASK 0x0F -#define ERR_EA 0x10 - -/* Error Status Register Definitions */ -#define ERR_PID 0x01 -#define ERR_UEPKT 0x02 -#define ERR_DCRC 0x04 -#define ERR_TIMOUT 0x08 -#define ERR_EOP 0x10 -#define ERR_B_OVRN 0x20 -#define ERR_BTSTF 0x40 -#define ERR_TGL 0x80 - -/* Endpoint Select Register Definitions */ -#define EP_SEL_F 0x01 -#define EP_SEL_ST 0x02 -#define EP_SEL_STP 0x04 -#define EP_SEL_PO 0x08 -#define EP_SEL_EPN 0x10 -#define EP_SEL_B_1_FULL 0x20 -#define EP_SEL_B_2_FULL 0x40 - -/* Endpoint Status Register Definitions */ -#define EP_STAT_ST 0x01 -#define EP_STAT_DA 0x20 -#define EP_STAT_RF_MO 0x40 -#define EP_STAT_CND_ST 0x80 - -/* Clear Buffer Register Definitions */ -#define CLR_BUF_PO 0x01 - - -/* DMA Interrupt Bit Definitions */ -#define EOT_INT 0x01 -#define NDD_REQ_INT 0x02 -#define SYS_ERR_INT 0x04 - - -#endif /* __USBREG_H */ +/***********************************************************************/ +/* This file is part of the uVision/ARM development tools */ +/* Copyright KEIL ELEKTRONIK GmbH 2002-2006 */ +/***********************************************************************/ +/* */ +/* USBREG.H: Header file for Philips LPC214X USB */ +/* */ +/***********************************************************************/ + +#ifndef __USBREG_H +#define __USBREG_H + + +#define SCB_BASE_ADDR 0xE01FC000 /* System Control Block */ + +/* PLL48 Registers */ +#define PLL48CON (*(volatile unsigned int*)(SCB_BASE_ADDR + 0xA0)) +#define PLL48CFG (*(volatile unsigned int*)(SCB_BASE_ADDR + 0xA4)) +#define PLL48STAT (*(volatile unsigned int*)(SCB_BASE_ADDR + 0xA8)) +#define PLL48FEED (*(volatile unsigned int*)(SCB_BASE_ADDR + 0xAC)) + +/* PLL48 Bit Definitions */ +#define PLLCON_PLLE (1<<0) /* PLL Enable */ +#define PLLCON_PLLC (1<<1) /* PLL Connect */ +#define PLLCFG_MSEL (0x1F<<0) /* PLL Multiplier */ +#define PLLCFG_PSEL (0x03<<5) /* PLL Divider */ +#define PLLSTAT_PLOCK (1<<10) /* PLL Lock Status */ + + +#define USB_BASE_ADDR 0xE0090000 /* USB Base Address */ + +/* Device Interrupt Registers */ +#define DEV_INT_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0x00)) +#define DEV_INT_EN (*(volatile unsigned int*)(USB_BASE_ADDR + 0x04)) +#define DEV_INT_CLR (*(volatile unsigned int*)(USB_BASE_ADDR + 0x08)) +#define DEV_INT_SET (*(volatile unsigned int*)(USB_BASE_ADDR + 0x0C)) +#define DEV_INT_PRIO (*(volatile unsigned int*)(USB_BASE_ADDR + 0x2C)) + +/* Endpoint Interrupt Registers */ +#define EP_INT_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0x30)) +#define EP_INT_EN (*(volatile unsigned int*)(USB_BASE_ADDR + 0x34)) +#define EP_INT_CLR (*(volatile unsigned int*)(USB_BASE_ADDR + 0x38)) +#define EP_INT_SET (*(volatile unsigned int*)(USB_BASE_ADDR + 0x3C)) +#define EP_INT_PRIO (*(volatile unsigned int*)(USB_BASE_ADDR + 0x40)) + +/* Endpoint Realization Registers */ +#define REALIZE_EP (*(volatile unsigned int*)(USB_BASE_ADDR + 0x44)) +#define EP_INDEX (*(volatile unsigned int*)(USB_BASE_ADDR + 0x48)) +#define MAXPACKET_SIZE (*(volatile unsigned int*)(USB_BASE_ADDR + 0x4C)) + +/* Command Reagisters */ +#define CMD_CODE (*(volatile unsigned int*)(USB_BASE_ADDR + 0x10)) +#define CMD_DATA (*(volatile unsigned int*)(USB_BASE_ADDR + 0x14)) + +/* Data Transfer Registers */ +#define RX_DATA (*(volatile unsigned int*)(USB_BASE_ADDR + 0x18)) +#define TX_DATA (*(volatile unsigned int*)(USB_BASE_ADDR + 0x1C)) +#define RX_PLENGTH (*(volatile unsigned int*)(USB_BASE_ADDR + 0x20)) +#define TX_PLENGTH (*(volatile unsigned int*)(USB_BASE_ADDR + 0x24)) +#define USB_CTRL (*(volatile unsigned int*)(USB_BASE_ADDR + 0x28)) + +/* System Register */ +#define DC_REVISION (*(volatile unsigned int*)(USB_BASE_ADDR + 0x7C)) + +/* DMA Registers */ +#define DMA_REQ_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0x50)) +#define DMA_REQ_CLR (*(volatile unsigned int*)(USB_BASE_ADDR + 0x54)) +#define DMA_REQ_SET (*(volatile unsigned int*)(USB_BASE_ADDR + 0x58)) +#define UDCA_HEAD (*(volatile unsigned int*)(USB_BASE_ADDR + 0x80)) +#define EP_DMA_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0x84)) +#define EP_DMA_EN (*(volatile unsigned int*)(USB_BASE_ADDR + 0x88)) +#define EP_DMA_DIS (*(volatile unsigned int*)(USB_BASE_ADDR + 0x8C)) +#define DMA_INT_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0x90)) +#define DMA_INT_EN (*(volatile unsigned int*)(USB_BASE_ADDR + 0x94)) +#define EOT_INT_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0xA0)) +#define EOT_INT_CLR (*(volatile unsigned int*)(USB_BASE_ADDR + 0xA4)) +#define EOT_INT_SET (*(volatile unsigned int*)(USB_BASE_ADDR + 0xA8)) +#define NDD_REQ_INT_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0xAC)) +#define NDD_REQ_INT_CLR (*(volatile unsigned int*)(USB_BASE_ADDR + 0xB0)) +#define NDD_REQ_INT_SET (*(volatile unsigned int*)(USB_BASE_ADDR + 0xB4)) +#define SYS_ERR_INT_STAT (*(volatile unsigned int*)(USB_BASE_ADDR + 0xB8)) +#define SYS_ERR_INT_CLR (*(volatile unsigned int*)(USB_BASE_ADDR + 0xBC)) +#define SYS_ERR_INT_SET (*(volatile unsigned int*)(USB_BASE_ADDR + 0xC0)) +#define MODULE_ID (*(volatile unsigned int*)(USB_BASE_ADDR + 0xFC)) + + +/* Device Interrupt Bit Definitions */ +#define FRAME_INT 0x00000001 +#define EP_FAST_INT 0x00000002 +#define EP_SLOW_INT 0x00000004 +#define DEV_STAT_INT 0x00000008 +#define CCEMTY_INT 0x00000010 +#define CDFULL_INT 0x00000020 +#define RxENDPKT_INT 0x00000040 +#define TxENDPKT_INT 0x00000080 +#define EP_RLZED_INT 0x00000100 +#define ERR_INT 0x00000200 + +/* Rx & Tx Packet Length Definitions */ +#define PKT_LNGTH_MASK 0x000003FF +#define PKT_DV 0x00000400 +#define PKT_RDY 0x00000800 + +/* USB Control Definitions */ +#define CTRL_RD_EN 0x00000001 +#define CTRL_WR_EN 0x00000002 + +/* Command Codes */ +#define CMD_SET_ADDR 0x00D00500 +#define CMD_CFG_DEV 0x00D80500 +#define CMD_SET_MODE 0x00F30500 +#define CMD_RD_FRAME 0x00F50500 +#define DAT_RD_FRAME 0x00F50200 +#define CMD_RD_TEST 0x00FD0500 +#define DAT_RD_TEST 0x00FD0200 +#define CMD_SET_DEV_STAT 0x00FE0500 +#define CMD_GET_DEV_STAT 0x00FE0500 +#define DAT_GET_DEV_STAT 0x00FE0200 +#define CMD_GET_ERR_CODE 0x00FF0500 +#define DAT_GET_ERR_CODE 0x00FF0200 +#define CMD_RD_ERR_STAT 0x00FB0500 +#define DAT_RD_ERR_STAT 0x00FB0200 +#define DAT_WR_BYTE(x) (0x00000100 | ((x) << 16)) +#define CMD_SEL_EP(x) (0x00000500 | ((x) << 16)) +#define DAT_SEL_EP(x) (0x00000200 | ((x) << 16)) +#define CMD_SEL_EP_CLRI(x) (0x00400500 | ((x) << 16)) +#define DAT_SEL_EP_CLRI(x) (0x00400200 | ((x) << 16)) +#define CMD_SET_EP_STAT(x) (0x00400500 | ((x) << 16)) +#define CMD_CLR_BUF 0x00F20500 +#define DAT_CLR_BUF 0x00F20200 +#define CMD_VALID_BUF 0x00FA0500 + +/* Device Address Register Definitions */ +#define DEV_ADDR_MASK 0x7F +#define DEV_EN 0x80 + +/* Device Configure Register Definitions */ +#define CONF_DVICE 0x01 + +/* Device Mode Register Definitions */ +#define AP_CLK 0x01 +#define INAK_CI 0x02 +#define INAK_CO 0x04 +#define INAK_II 0x08 +#define INAK_IO 0x10 +#define INAK_BI 0x20 +#define INAK_BO 0x40 + +/* Device Status Register Definitions */ +#define DEV_CON 0x01 +#define DEV_CON_CH 0x02 +#define DEV_SUS 0x04 +#define DEV_SUS_CH 0x08 +#define DEV_RST 0x10 + +/* Error Code Register Definitions */ +#define ERR_EC_MASK 0x0F +#define ERR_EA 0x10 + +/* Error Status Register Definitions */ +#define ERR_PID 0x01 +#define ERR_UEPKT 0x02 +#define ERR_DCRC 0x04 +#define ERR_TIMOUT 0x08 +#define ERR_EOP 0x10 +#define ERR_B_OVRN 0x20 +#define ERR_BTSTF 0x40 +#define ERR_TGL 0x80 + +/* Endpoint Select Register Definitions */ +#define EP_SEL_F 0x01 +#define EP_SEL_ST 0x02 +#define EP_SEL_STP 0x04 +#define EP_SEL_PO 0x08 +#define EP_SEL_EPN 0x10 +#define EP_SEL_B_1_FULL 0x20 +#define EP_SEL_B_2_FULL 0x40 + +/* Endpoint Status Register Definitions */ +#define EP_STAT_ST 0x01 +#define EP_STAT_DA 0x20 +#define EP_STAT_RF_MO 0x40 +#define EP_STAT_CND_ST 0x80 + +/* Clear Buffer Register Definitions */ +#define CLR_BUF_PO 0x01 + + +/* DMA Interrupt Bit Definitions */ +#define EOT_INT 0x01 +#define NDD_REQ_INT 0x02 +#define SYS_ERR_INT 0x04 + + +#endif /* __USBREG_H */ diff --git a/plugins/USBqemu/usb-mic/usbuser.h b/plugins/USBqemu/usb-mic/usbuser.h index 2307625934..3c226f2fad 100644 --- a/plugins/USBqemu/usb-mic/usbuser.h +++ b/plugins/USBqemu/usb-mic/usbuser.h @@ -1,74 +1,74 @@ -/*---------------------------------------------------------------------------- - * U S B - K e r n e l - *---------------------------------------------------------------------------- - * Name: USBUSER.H - * Purpose: USB Custom User Definitions - * Version: V1.10 - *---------------------------------------------------------------------------- - * This software is supplied "AS IS" without any warranties, express, - * implied or statutory, including but not limited to the implied - * warranties of fitness for purpose, satisfactory quality and - * noninfringement. Keil extends you a royalty-free right to reproduce - * and distribute executable files created using this software for use - * on Philips LPC2xxx microcontroller devices only. Nothing else gives - * you the right to use this software. - * - * Copyright (c) 2005-2006 Keil Software. - *---------------------------------------------------------------------------*/ - -#ifndef __USBUSER_H__ -#define __USBUSER_H__ - - -/* USB Device Events Callback Functions */ -extern void USB_Power_Event (BOOL power); -extern void USB_Reset_Event (void); -extern void USB_Suspend_Event (void); -extern void USB_Resume_Event (void); -extern void USB_WakeUp_Event (void); -extern void USB_SOF_Event (void); -extern void USB_Error_Event (DWORD error); - -/* USB Endpoint Callback Events */ -#define USB_EVT_SETUP 1 /* Setup Packet */ -#define USB_EVT_OUT 2 /* OUT Packet */ -#define USB_EVT_IN 3 /* IN Packet */ -#define USB_EVT_OUT_NAK 4 /* OUT Packet - Not Acknowledged */ -#define USB_EVT_IN_NAK 5 /* IN Packet - Not Acknowledged */ -#define USB_EVT_OUT_STALL 6 /* OUT Packet - Stalled */ -#define USB_EVT_IN_STALL 7 /* IN Packet - Stalled */ -#define USB_EVT_OUT_DMA_EOT 8 /* DMA OUT EP - End of Transfer */ -#define USB_EVT_IN_DMA_EOT 9 /* DMA IN EP - End of Transfer */ -#define USB_EVT_OUT_DMA_NDR 10 /* DMA OUT EP - New Descriptor Request */ -#define USB_EVT_IN_DMA_NDR 11 /* DMA IN EP - New Descriptor Request */ -#define USB_EVT_OUT_DMA_ERR 12 /* DMA OUT EP - Error */ -#define USB_EVT_IN_DMA_ERR 13 /* DMA IN EP - Error */ - -/* USB Endpoint Events Callback Pointers */ -extern void (* const USB_P_EP[16])(DWORD event); - -/* USB Endpoint Events Callback Functions */ -extern void USB_EndPoint0 (DWORD event); -extern void USB_EndPoint1 (DWORD event); -extern void USB_EndPoint2 (DWORD event); -extern void USB_EndPoint3 (DWORD event); -extern void USB_EndPoint4 (DWORD event); -extern void USB_EndPoint5 (DWORD event); -extern void USB_EndPoint6 (DWORD event); -extern void USB_EndPoint7 (DWORD event); -extern void USB_EndPoint8 (DWORD event); -extern void USB_EndPoint9 (DWORD event); -extern void USB_EndPoint10 (DWORD event); -extern void USB_EndPoint11 (DWORD event); -extern void USB_EndPoint12 (DWORD event); -extern void USB_EndPoint13 (DWORD event); -extern void USB_EndPoint14 (DWORD event); -extern void USB_EndPoint15 (DWORD event); - -/* USB Core Events Callback Functions */ -extern void USB_Configure_Event (void); -extern void USB_Interface_Event (void); -extern void USB_Feature_Event (void); - - -#endif /* __USBUSER_H__ */ +/*---------------------------------------------------------------------------- + * U S B - K e r n e l + *---------------------------------------------------------------------------- + * Name: USBUSER.H + * Purpose: USB Custom User Definitions + * Version: V1.10 + *---------------------------------------------------------------------------- + * This software is supplied "AS IS" without any warranties, express, + * implied or statutory, including but not limited to the implied + * warranties of fitness for purpose, satisfactory quality and + * noninfringement. Keil extends you a royalty-free right to reproduce + * and distribute executable files created using this software for use + * on Philips LPC2xxx microcontroller devices only. Nothing else gives + * you the right to use this software. + * + * Copyright (c) 2005-2006 Keil Software. + *---------------------------------------------------------------------------*/ + +#ifndef __USBUSER_H__ +#define __USBUSER_H__ + + +/* USB Device Events Callback Functions */ +extern void USB_Power_Event (BOOL power); +extern void USB_Reset_Event (void); +extern void USB_Suspend_Event (void); +extern void USB_Resume_Event (void); +extern void USB_WakeUp_Event (void); +extern void USB_SOF_Event (void); +extern void USB_Error_Event (DWORD error); + +/* USB Endpoint Callback Events */ +#define USB_EVT_SETUP 1 /* Setup Packet */ +#define USB_EVT_OUT 2 /* OUT Packet */ +#define USB_EVT_IN 3 /* IN Packet */ +#define USB_EVT_OUT_NAK 4 /* OUT Packet - Not Acknowledged */ +#define USB_EVT_IN_NAK 5 /* IN Packet - Not Acknowledged */ +#define USB_EVT_OUT_STALL 6 /* OUT Packet - Stalled */ +#define USB_EVT_IN_STALL 7 /* IN Packet - Stalled */ +#define USB_EVT_OUT_DMA_EOT 8 /* DMA OUT EP - End of Transfer */ +#define USB_EVT_IN_DMA_EOT 9 /* DMA IN EP - End of Transfer */ +#define USB_EVT_OUT_DMA_NDR 10 /* DMA OUT EP - New Descriptor Request */ +#define USB_EVT_IN_DMA_NDR 11 /* DMA IN EP - New Descriptor Request */ +#define USB_EVT_OUT_DMA_ERR 12 /* DMA OUT EP - Error */ +#define USB_EVT_IN_DMA_ERR 13 /* DMA IN EP - Error */ + +/* USB Endpoint Events Callback Pointers */ +extern void (* const USB_P_EP[16])(DWORD event); + +/* USB Endpoint Events Callback Functions */ +extern void USB_EndPoint0 (DWORD event); +extern void USB_EndPoint1 (DWORD event); +extern void USB_EndPoint2 (DWORD event); +extern void USB_EndPoint3 (DWORD event); +extern void USB_EndPoint4 (DWORD event); +extern void USB_EndPoint5 (DWORD event); +extern void USB_EndPoint6 (DWORD event); +extern void USB_EndPoint7 (DWORD event); +extern void USB_EndPoint8 (DWORD event); +extern void USB_EndPoint9 (DWORD event); +extern void USB_EndPoint10 (DWORD event); +extern void USB_EndPoint11 (DWORD event); +extern void USB_EndPoint12 (DWORD event); +extern void USB_EndPoint13 (DWORD event); +extern void USB_EndPoint14 (DWORD event); +extern void USB_EndPoint15 (DWORD event); + +/* USB Core Events Callback Functions */ +extern void USB_Configure_Event (void); +extern void USB_Interface_Event (void); +extern void USB_Feature_Event (void); + + +#endif /* __USBUSER_H__ */ diff --git a/plugins/cdvdGigaherz/src/Windows/cdvdGigaherz_vs2012.vcxproj b/plugins/cdvdGigaherz/src/Windows/cdvdGigaherz_vs2012.vcxproj index d98c1cfb5f..ea086408bb 100644 --- a/plugins/cdvdGigaherz/src/Windows/cdvdGigaherz_vs2012.vcxproj +++ b/plugins/cdvdGigaherz/src/Windows/cdvdGigaherz_vs2012.vcxproj @@ -1,134 +1,134 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - cdvdGigaherz - {5CF88D5F-64DD-4EDC-9F1A-436BD502940A} - cdvdGigaherz - - - - DynamicLibrary - false - MultiByte - v110_xp - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Release/cdvdGigaherz.tlb - - - - - %(AdditionalIncludeDirectories) - - - - - NDEBUG;%(PreprocessorDefinitions) - - - %(AdditionalDependencies) - .\plugin.def - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Debug/cdvdGigaherz.tlb - - - - - %(AdditionalIncludeDirectories) - - - _DEBUG;%(PreprocessorDefinitions) - - - $(OutDir)$(TargetName)$(TargetExt) - RequireAdministrator - .\plugin.def - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + cdvdGigaherz + {5CF88D5F-64DD-4EDC-9F1A-436BD502940A} + cdvdGigaherz + + + + DynamicLibrary + false + MultiByte + v110_xp + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/cdvdGigaherz.tlb + + + + + %(AdditionalIncludeDirectories) + + + + + NDEBUG;%(PreprocessorDefinitions) + + + %(AdditionalDependencies) + .\plugin.def + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/cdvdGigaherz.tlb + + + + + %(AdditionalIncludeDirectories) + + + _DEBUG;%(PreprocessorDefinitions) + + + $(OutDir)$(TargetName)$(TargetExt) + RequireAdministrator + .\plugin.def + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/cdvdGigaherz/src/Windows/cdvdGigaherz_vs2012.vcxproj.filters b/plugins/cdvdGigaherz/src/Windows/cdvdGigaherz_vs2012.vcxproj.filters index b2fdd98bd9..ddbfc919bd 100644 --- a/plugins/cdvdGigaherz/src/Windows/cdvdGigaherz_vs2012.vcxproj.filters +++ b/plugins/cdvdGigaherz/src/Windows/cdvdGigaherz_vs2012.vcxproj.filters @@ -1,88 +1,88 @@ - - - - - {c03fe088-95f7-4235-a796-5fe044914fb5} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {1dc55077-7d7a-4951-8841-26d21ff1513b} - - - {6c12b075-7b05-42ce-8628-c668f325f4ce} - h;hpp;hxx;hm;inl - - - {48ccf9e7-ebd6-41ff-bf33-0e964046bb00} - - - {a80698fd-3734-41c4-b7e8-6b96b34633e0} - ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files\Reader Modules - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files\rosddk - - - Header Files\rosddk - - - Header Files\rosddk - - - Header Files\rosddk - - - - - Resource Files - - - - - Resource Files - - + + + + + {c03fe088-95f7-4235-a796-5fe044914fb5} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {1dc55077-7d7a-4951-8841-26d21ff1513b} + + + {6c12b075-7b05-42ce-8628-c668f325f4ce} + h;hpp;hxx;hm;inl + + + {48ccf9e7-ebd6-41ff-bf33-0e964046bb00} + + + {a80698fd-3734-41c4-b7e8-6b96b34633e0} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\Reader Modules + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files\rosddk + + + Header Files\rosddk + + + Header Files\rosddk + + + Header Files\rosddk + + + + + Resource Files + + + + + Resource Files + + \ No newline at end of file diff --git a/plugins/dev9ghzdrk/Win32/DEV9ghzdrk.rc b/plugins/dev9ghzdrk/Win32/DEV9ghzdrk.rc index 89ea6a9cf2..3308816e16 100644 --- a/plugins/dev9ghzdrk/Win32/DEV9ghzdrk.rc +++ b/plugins/dev9ghzdrk/Win32/DEV9ghzdrk.rc @@ -1,129 +1,129 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Spanish (Argentina) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESS) -#ifdef _WIN32 -LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOGEX 0, 0, 290, 170 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "HDD Configure" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,115,150,50,14 - PUSHBUTTON "Cancel",IDCANCEL,233,150,50,14 - COMBOBOX IDC_BAYTYPE,60,10,223,47,CBS_DROPDOWNLIST | CBS_SORT | WS_DISABLED - LTEXT "DEV9 Type",IDC_STATIC,15,10,41,11,SS_CENTERIMAGE - LTEXT "Ethernet Device",IDC_STATIC,15,60,60,10,SS_CENTERIMAGE - COMBOBOX IDC_ETHDEV,83,60,193,82,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Ethernet",IDC_STATIC,7,30,276,50 - CONTROL "Enabled",IDC_ETHENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,45,42,10 - LTEXT "HDD File",IDC_STATIC,15,115,60,10,SS_CENTERIMAGE | WS_DISABLED - GROUPBOX "Hard Disk Drive (not yet properly implemented)",IDC_STATIC,7,90,276,50 - CONTROL "Enabled",IDC_HDDENABLED,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,15,100,42,10 - EDITTEXT IDC_HDDFILE,85,115,191,12,ES_AUTOHSCROLL | WS_DISABLED -END - -IDD_ABOUT DIALOGEX 0, 0, 177, 106 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "DEV9 About" -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,65,85,50,14 - LTEXT "DEV9 Driver",IDC_NAME,59,7,42,8 - LTEXT "Original Authors:\n\tlinuzappz \n\tShadow ",IDC_STATIC,7,18,141,30 - LTEXT "Fixed and improved by:\n\tgigahez \n\tdrk||Raziel",IDC_STATIC,7,49,155,27 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 283 - TOPMARGIN, 7 - BOTTOMMARGIN, 164 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 170 - TOPMARGIN, 7 - BOTTOMMARGIN, 99 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Spanish (Argentina) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Spanish (Argentina) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESS) +#ifdef _WIN32 +LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 290, 170 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "HDD Configure" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,115,150,50,14 + PUSHBUTTON "Cancel",IDCANCEL,233,150,50,14 + COMBOBOX IDC_BAYTYPE,60,10,223,47,CBS_DROPDOWNLIST | CBS_SORT | WS_DISABLED + LTEXT "DEV9 Type",IDC_STATIC,15,10,41,11,SS_CENTERIMAGE + LTEXT "Ethernet Device",IDC_STATIC,15,60,60,10,SS_CENTERIMAGE + COMBOBOX IDC_ETHDEV,83,60,193,82,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Ethernet",IDC_STATIC,7,30,276,50 + CONTROL "Enabled",IDC_ETHENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,45,42,10 + LTEXT "HDD File",IDC_STATIC,15,115,60,10,SS_CENTERIMAGE | WS_DISABLED + GROUPBOX "Hard Disk Drive (not yet properly implemented)",IDC_STATIC,7,90,276,50 + CONTROL "Enabled",IDC_HDDENABLED,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,15,100,42,10 + EDITTEXT IDC_HDDFILE,85,115,191,12,ES_AUTOHSCROLL | WS_DISABLED +END + +IDD_ABOUT DIALOGEX 0, 0, 177, 106 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "DEV9 About" +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,65,85,50,14 + LTEXT "DEV9 Driver",IDC_NAME,59,7,42,8 + LTEXT "Original Authors:\n\tlinuzappz \n\tShadow ",IDC_STATIC,7,18,141,30 + LTEXT "Fixed and improved by:\n\tgigahez \n\tdrk||Raziel",IDC_STATIC,7,49,155,27 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 283 + TOPMARGIN, 7 + BOTTOMMARGIN, 164 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 170 + TOPMARGIN, 7 + BOTTOMMARGIN, 99 + END +END +#endif // APSTUDIO_INVOKED + +#endif // Spanish (Argentina) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/dev9ghzdrk/Win32/DEV9ghzdrk_vs2012.vcxproj b/plugins/dev9ghzdrk/Win32/DEV9ghzdrk_vs2012.vcxproj index 244fccbfa2..a0c5946516 100644 --- a/plugins/dev9ghzdrk/Win32/DEV9ghzdrk_vs2012.vcxproj +++ b/plugins/dev9ghzdrk/Win32/DEV9ghzdrk_vs2012.vcxproj @@ -1,138 +1,138 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - DEV9ghzdrk - {BBE4E5FB-530A-4D18-A633-35AF0577B7F3} - DEV9ghzdrk - Win32Proj - - - - DynamicLibrary - MultiByte - true - v110_xp - - - DynamicLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - EnableFastChecks - MultiThreadedDebug - - - $(SvnRootDir)\common\include;$(SvnRootDir)\3rdparty\winpcap\include;%(AdditionalIncludeDirectories) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0408 - - - $(OutDir)$(TargetName)$(TargetExt) - .\DEV9ghzdrk.def - false - - - MachineX86 - ws2_32.lib;iphlpapi.lib;wpcap.lib;packet.lib;%(AdditionalDependencies) - $(SolutionDir)3rdparty\winpcap\lib;%(AdditionalLibraryDirectories) - - - - - - - $(SvnRootDir)\common\include;$(SvnRootDir)\3rdparty\winpcap\include;%(AdditionalIncludeDirectories) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0408 - - - DEV9ghzdrk.def - false - - - MachineX86 - $(SolutionDir)3rdparty\winpcap\lib;%(AdditionalLibraryDirectories) - ws2_32.lib;iphlpapi.lib;wpcap.lib;packet.lib;%(AdditionalDependencies) - - - - - - - - - - - - - true - true - - - true - true - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + DEV9ghzdrk + {BBE4E5FB-530A-4D18-A633-35AF0577B7F3} + DEV9ghzdrk + Win32Proj + + + + DynamicLibrary + MultiByte + true + v110_xp + + + DynamicLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + EnableFastChecks + MultiThreadedDebug + + + $(SvnRootDir)\common\include;$(SvnRootDir)\3rdparty\winpcap\include;%(AdditionalIncludeDirectories) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0408 + + + $(OutDir)$(TargetName)$(TargetExt) + .\DEV9ghzdrk.def + false + + + MachineX86 + ws2_32.lib;iphlpapi.lib;wpcap.lib;packet.lib;%(AdditionalDependencies) + $(SolutionDir)3rdparty\winpcap\lib;%(AdditionalLibraryDirectories) + + + + + + + $(SvnRootDir)\common\include;$(SvnRootDir)\3rdparty\winpcap\include;%(AdditionalIncludeDirectories) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0408 + + + DEV9ghzdrk.def + false + + + MachineX86 + $(SolutionDir)3rdparty\winpcap\lib;%(AdditionalLibraryDirectories) + ws2_32.lib;iphlpapi.lib;wpcap.lib;packet.lib;%(AdditionalDependencies) + + + + + + + + + + + + + true + true + + + true + true + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/dev9ghzdrk/Win32/ProjectRootDir.props b/plugins/dev9ghzdrk/Win32/ProjectRootDir.props index 8d9f9ad374..423e907385 100644 --- a/plugins/dev9ghzdrk/Win32/ProjectRootDir.props +++ b/plugins/dev9ghzdrk/Win32/ProjectRootDir.props @@ -1,15 +1,15 @@ - - - - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(SvnRootDir) - - + + + + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/plugins/dev9null/ReadMe.txt b/plugins/dev9null/ReadMe.txt index b45fd84072..bf10deb388 100644 --- a/plugins/dev9null/ReadMe.txt +++ b/plugins/dev9null/ReadMe.txt @@ -1,36 +1,36 @@ -DEV9null v0.3 -------------- - - This is an extension to use with play station2 emulators - as PCSX2 (only one right now). - The plugin is free open source code. - -Usage: ------ - Place the file "libDEV9null.so" (linux) or "DEV9null.dll" (win32) - at the Plugin directory of the Emulator to use it. - -Changes: +DEV9null v0.3 +------------- + + This is an extension to use with play station2 emulators + as PCSX2 (only one right now). + The plugin is free open source code. + +Usage: +----- + Place the file "libDEV9null.so" (linux) or "DEV9null.dll" (win32) + at the Plugin directory of the Emulator to use it. + +Changes: ------- v0.5: *Converted over to use the "PS2Eext.h" file. v0.4: - *Mass plugin cleanup. - v0.3: -*added vsnet2005beta1 project files. 64bit dll should work now (not tested!) - - v0.2: - *updated the specifications to 0.4.7 - - v0.1: - * First Release - * Tested with Pcsx2 - -Authors: -------- - - linuzappz - shadow - - - + *Mass plugin cleanup. + v0.3: +*added vsnet2005beta1 project files. 64bit dll should work now (not tested!) + + v0.2: + *updated the specifications to 0.4.7 + + v0.1: + * First Release + * Tested with Pcsx2 + +Authors: +------- + + linuzappz + shadow + + + diff --git a/plugins/dev9null/Windows/DEV9null_vs2012.vcxproj b/plugins/dev9null/Windows/DEV9null_vs2012.vcxproj index 8a76c80827..a66c8af40a 100644 --- a/plugins/dev9null/Windows/DEV9null_vs2012.vcxproj +++ b/plugins/dev9null/Windows/DEV9null_vs2012.vcxproj @@ -1,102 +1,102 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - DEV9null - {04439C5F-05FB-4A9C-AAD1-5388C25377DB} - DEV9null - Win32Proj - - - - DynamicLibrary - MultiByte - true - v110_xp - - - DynamicLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - EnableFastChecks - MultiThreadedDebug - - - - - $(OutDir)$(TargetName)$(TargetExt) - DEV9null.def - false - - - MachineX86 - - - - - - - - - DEV9null.def - false - - - MachineX86 - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + DEV9null + {04439C5F-05FB-4A9C-AAD1-5388C25377DB} + DEV9null + Win32Proj + + + + DynamicLibrary + MultiByte + true + v110_xp + + + DynamicLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + EnableFastChecks + MultiThreadedDebug + + + + + $(OutDir)$(TargetName)$(TargetExt) + DEV9null.def + false + + + MachineX86 + + + + + + + + + DEV9null.def + false + + + MachineX86 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/dev9null/Windows/DEV9null_vs2012.vcxproj.filters b/plugins/dev9null/Windows/DEV9null_vs2012.vcxproj.filters index 9e0f8168e6..91d1762b73 100644 --- a/plugins/dev9null/Windows/DEV9null_vs2012.vcxproj.filters +++ b/plugins/dev9null/Windows/DEV9null_vs2012.vcxproj.filters @@ -1,26 +1,26 @@ - - - - - {60e3858c-96ba-48fb-9518-894ac152b563} - cpp;c;cxx;def;odl;idl;hpj;bat;asm - - - - - Source Files - - - Source Files - - - - - Source Files - - - - - - + + + + + {60e3858c-96ba-48fb-9518-894ac152b563} + cpp;c;cxx;def;odl;idl;hpj;bat;asm + + + + + Source Files + + + Source Files + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/plugins/dev9null/Windows/ProjectRootDir.props b/plugins/dev9null/Windows/ProjectRootDir.props index 8d9f9ad374..423e907385 100644 --- a/plugins/dev9null/Windows/ProjectRootDir.props +++ b/plugins/dev9null/Windows/ProjectRootDir.props @@ -1,15 +1,15 @@ - - - - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(SvnRootDir) - - + + + + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/plugins/dev9null/Windows/dev9null.def b/plugins/dev9null/Windows/dev9null.def index 64450b8df6..1504d1d914 100644 --- a/plugins/dev9null/Windows/dev9null.def +++ b/plugins/dev9null/Windows/dev9null.def @@ -1,36 +1,36 @@ -; DEV9null.def : Declares the module parameters for the DLL. - - -;LIBRARY "DEV9null" -;DESCRIPTION 'DEV9null Driver' - - -EXPORTS - - ; Explicit exports can go here - - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - DEV9init @5 - DEV9shutdown @6 - DEV9open @7 - DEV9close @8 - DEV9read8 @9 - DEV9read16 @10 - DEV9read32 @11 - DEV9write8 @12 - DEV9write16 @13 - DEV9write32 @14 - DEV9readDMA8Mem @15 - DEV9writeDMA8Mem @16 - DEV9configure @17 - DEV9test @18 - DEV9about @19 - DEV9irqCallback @20 - DEV9irqHandler @21 - DEV9dmaRead - DEV9dmaWrite - DEV9dmaInterrupt - +; DEV9null.def : Declares the module parameters for the DLL. + + +;LIBRARY "DEV9null" +;DESCRIPTION 'DEV9null Driver' + + +EXPORTS + + ; Explicit exports can go here + + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + DEV9init @5 + DEV9shutdown @6 + DEV9open @7 + DEV9close @8 + DEV9read8 @9 + DEV9read16 @10 + DEV9read32 @11 + DEV9write8 @12 + DEV9write16 @13 + DEV9write32 @14 + DEV9readDMA8Mem @15 + DEV9writeDMA8Mem @16 + DEV9configure @17 + DEV9test @18 + DEV9about @19 + DEV9irqCallback @20 + DEV9irqHandler @21 + DEV9dmaRead + DEV9dmaWrite + DEV9dmaInterrupt + DEV9setSettingsDir \ No newline at end of file diff --git a/plugins/spu2-x/GPL.txt b/plugins/spu2-x/GPL.txt index 3f2e0ee4ce..5c6556a3a1 100644 --- a/plugins/spu2-x/GPL.txt +++ b/plugins/spu2-x/GPL.txt @@ -1,674 +1,674 @@ - 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 + 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 . \ No newline at end of file diff --git a/plugins/spu2-x/LGPL.txt b/plugins/spu2-x/LGPL.txt index a5043111dc..46b0e3d996 100644 --- a/plugins/spu2-x/LGPL.txt +++ b/plugins/spu2-x/LGPL.txt @@ -1,164 +1,164 @@ - 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. + 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. diff --git a/plugins/spu2-x/License.txt b/plugins/spu2-x/License.txt index 415aba65a4..bf5e208dd3 100644 --- a/plugins/spu2-x/License.txt +++ b/plugins/spu2-x/License.txt @@ -1,21 +1,21 @@ -[This file contains the template for the SPU2-X code rights license. For the full - rant-like preamble of the LGPL, see GPL.txt and LGPL.txt -- both lisences apply, - with the LGPL as a subset extension of the GPL.] - - -/* SPU2-X, A plugin for Emulating the Sound Processing Unit of the Playstation 2 - * Developed and maintained by the Pcsx2 Development Team. - * - * Original portions from SPU2ghz are (c) 2008 by David Quintana [gigaherz] - * - * SPU2-X is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * SPU2-X is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with SPU2-X. If not, see . +[This file contains the template for the SPU2-X code rights license. For the full + rant-like preamble of the LGPL, see GPL.txt and LGPL.txt -- both lisences apply, + with the LGPL as a subset extension of the GPL.] + + +/* SPU2-X, A plugin for Emulating the Sound Processing Unit of the Playstation 2 + * Developed and maintained by the Pcsx2 Development Team. + * + * Original portions from SPU2ghz are (c) 2008 by David Quintana [gigaherz] + * + * SPU2-X is free software: you can redistribute it and/or modify it under the terms + * of the GNU Lesser General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * SPU2-X is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with SPU2-X. If not, see . */ \ No newline at end of file diff --git a/plugins/spu2-x/Website.txt b/plugins/spu2-x/Website.txt index 0be59561ea..464ee3cbe2 100644 --- a/plugins/spu2-x/Website.txt +++ b/plugins/spu2-x/Website.txt @@ -1,18 +1,18 @@ - --- SPU2-X -- Website Links - -The official Svn for SPU2-X is hosted at GoogleCode, under the Pcsx2 project. -You can check it out directly or you can check out Pcsx2 as a whole (which -includes this plugin along with many others). The links are as follows: - -Homepage (website): - http://code.google.com/p/pcsx2/ - - You'll find information on how to check out from svn and how to compile - Pcsx2 and the plugins at the above link. - -SPU2-X (svn): - http://pcsx2.googlecode.com/svn/trunk/plugins/spu2-x - -Pcsx2 + All Plugins (svn): - http://pcsx2.googlecode.com/svn/trunk/ + +-- SPU2-X -- Website Links + +The official Svn for SPU2-X is hosted at GoogleCode, under the Pcsx2 project. +You can check it out directly or you can check out Pcsx2 as a whole (which +includes this plugin along with many others). The links are as follows: + +Homepage (website): + http://code.google.com/p/pcsx2/ + + You'll find information on how to check out from svn and how to compile + Pcsx2 and the plugins at the above link. + +SPU2-X (svn): + http://pcsx2.googlecode.com/svn/trunk/plugins/spu2-x + +Pcsx2 + All Plugins (svn): + http://pcsx2.googlecode.com/svn/trunk/ diff --git a/plugins/spu2-x/src/DplIIdecoder.cpp b/plugins/spu2-x/src/DplIIdecoder.cpp index 77da73f87b..c010541155 100644 --- a/plugins/spu2-x/src/DplIIdecoder.cpp +++ b/plugins/spu2-x/src/DplIIdecoder.cpp @@ -1,174 +1,174 @@ -/* SPU2-X, A plugin for Emulating the Sound Processing Unit of the Playstation 2 - * Developed and maintained by the Pcsx2 Development Team. - * - * Original portions from SPU2ghz are (c) 2008 by David Quintana [gigaherz] - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2.1 of the License, or (at your - * option) any later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License along - * with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "Global.h" - -static const u8 sLogTable[256] = { - 0x00,0x3C,0x60,0x78,0x8C,0x9C,0xA8,0xB4,0xBE,0xC8,0xD0,0xD8,0xDE,0xE4,0xEA,0xF0, - 0xF6,0xFA,0xFE,0x04,0x08,0x0C,0x10,0x14,0x16,0x1A,0x1E,0x20,0x24,0x26,0x2A,0x2C, - 0x2E,0x32,0x34,0x36,0x38,0x3A,0x3E,0x40,0x42,0x44,0x46,0x48,0x4A,0x4C,0x4E,0x50, - 0x50,0x52,0x54,0x56,0x58,0x5A,0x5A,0x5C,0x5E,0x60,0x60,0x62,0x64,0x66,0x66,0x68, - 0x6A,0x6A,0x6C,0x6E,0x6E,0x70,0x70,0x72,0x74,0x74,0x76,0x76,0x78,0x7A,0x7A,0x7C, - 0x7C,0x7E,0x7E,0x80,0x80,0x82,0x82,0x84,0x84,0x86,0x86,0x88,0x88,0x8A,0x8A,0x8C, - 0x8C,0x8C,0x8E,0x8E,0x90,0x90,0x92,0x92,0x92,0x94,0x94,0x96,0x96,0x96,0x98,0x98, - 0x9A,0x9A,0x9A,0x9C,0x9C,0x9C,0x9E,0x9E,0xA0,0xA0,0xA0,0xA2,0xA2,0xA2,0xA4,0xA4, - 0xA4,0xA6,0xA6,0xA6,0xA8,0xA8,0xA8,0xAA,0xAA,0xAA,0xAC,0xAC,0xAC,0xAC,0xAE,0xAE, - 0xAE,0xB0,0xB0,0xB0,0xB2,0xB2,0xB2,0xB2,0xB4,0xB4,0xB4,0xB6,0xB6,0xB6,0xB6,0xB8, - 0xB8,0xB8,0xB8,0xBA,0xBA,0xBA,0xBC,0xBC,0xBC,0xBC,0xBE,0xBE,0xBE,0xBE,0xC0,0xC0, - 0xC0,0xC0,0xC2,0xC2,0xC2,0xC2,0xC2,0xC4,0xC4,0xC4,0xC4,0xC6,0xC6,0xC6,0xC6,0xC8, - 0xC8,0xC8,0xC8,0xC8,0xCA,0xCA,0xCA,0xCA,0xCC,0xCC,0xCC,0xCC,0xCC,0xCE,0xCE,0xCE, - 0xCE,0xCE,0xD0,0xD0,0xD0,0xD0,0xD0,0xD2,0xD2,0xD2,0xD2,0xD2,0xD4,0xD4,0xD4,0xD4, - 0xD4,0xD6,0xD6,0xD6,0xD6,0xD6,0xD8,0xD8,0xD8,0xD8,0xD8,0xD8,0xDA,0xDA,0xDA,0xDA, - 0xDA,0xDC,0xDC,0xDC,0xDC,0xDC,0xDC,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0xE0,0xE0,0xE0, -}; - -static float Gfl=0,Gfr=0; -static float LMax=0,RMax=0; - -static float AccL=0; -static float AccR=0; - -const float Scale = 4294967296.0f; // tweak this value to change the overall output volume - -const float GainL = 0.80f * Scale; -const float GainR = 0.80f * Scale; - -const float GainC = 0.75f * Scale; - -const float GainSL = 0.90f * Scale; -const float GainSR = 0.90f * Scale; - -const float GainLFE= 0.90f * Scale; - -const float AddCLR = 0.20f * Scale; // Stereo expansion - -extern void ResetDplIIDecoder() -{ - Gfl=0; - Gfr=0; - LMax=0; - RMax=0; - AccL=0; - AccR=0; -} - -void ProcessDplIISample32( const StereoOut32& src, Stereo51Out32DplII * s) -{ - float IL = src.Left / (float)(1<<(SndOutVolumeShift+16)); - float IR = src.Right / (float)(1<<(SndOutVolumeShift+16)); - - // Calculate center channel and LFE - float C = (IL+IR) * 0.5f; - float SUB = C; // no need to lowpass, the speaker amplifier should take care of it - - float L = IL - C; // Effective L/R data - float R = IR - C; - - // Peak L/R - float PL = std::abs(L); - float PR = std::abs(R); - - AccL += (PL-AccL)*0.1f; - AccR += (PR-AccR)*0.1f; - - // Calculate power balance - float Balance = (AccR-AccL); // -1 .. 1 - - // If the power levels are different, then the audio is meant for the front speakers - float Frontness = std::abs(Balance); - float Rearness = 1-Frontness; // And the other way around - - // Equalize the power levels for L/R - float B = std::min(0.9f,std::max(-0.9f,Balance)); - - float VL = L / (1-B); // if B>0, it means R>L, so increase L, else decrease L - float VR = R / (1+B); // vice-versa - - // 1.73+1.22 = 2.94; 2.94 = 0.34 = 0.9996; Close enough. - // The range for VL/VR is approximately 0..1, - // But in the cases where VL/VR are > 0.5, Rearness is 0 so it should never overflow. - const float RearScale = 0.34f * 2; - - float SL = (VR*1.73f - VL*1.22f) * RearScale * Rearness; - float SR = (VR*1.22f - VL*1.73f) * RearScale * Rearness; - // Possible experiment: Play with stereo expension levels on rear - - // Adjust the volume of the front speakers based on what we calculated above - L *= Frontness; - R *= Frontness; - - s32 CX = (s32)(C * AddCLR); - - s->Left = (s32)(L * GainL ) + CX; - s->Right = (s32)(R * GainR ) + CX; - s->Center = (s32)(C * GainC ); - s->LFE = (s32)(SUB * GainLFE); - s->LeftBack = (s32)(SL * GainSL ); - s->RightBack = (s32)(SR * GainSR ); -} - -void ProcessDplIISample16( const StereoOut32& src, Stereo51Out16DplII * s) -{ - Stereo51Out32DplII ss; - ProcessDplIISample32(src, &ss); - - s->Left = ss.Left >> 16; - s->Right = ss.Right >> 16; - s->Center = ss.Center >> 16; - s->LFE = ss.LFE >> 16; - s->LeftBack = ss.LeftBack >> 16; - s->RightBack = ss.RightBack >> 16; -} - -void ProcessDplSample32( const StereoOut32& src, Stereo51Out32Dpl * s) -{ - float ValL = src.Left / (float)(1<<(SndOutVolumeShift+16)); - float ValR = src.Right / (float)(1<<(SndOutVolumeShift+16)); - - float C = (ValL+ValR)*0.5f; //+15.8 - float S = (ValL-ValR)*0.5f; - - float L=ValL-C; //+15.8 - float R=ValR-C; - - float SUB = C; - - s32 CX = (s32)(C * AddCLR); // +15.16 - - s->Left = (s32)(L * GainL ) + CX; // +15.16 = +31, can grow to +32 if (GainL + AddCLR)>255 - s->Right = (s32)(R * GainR ) + CX; - s->Center = (s32)(C * GainC ); // +15.16 = +31 - s->LFE = (s32)(SUB * GainLFE); - s->LeftBack = (s32)(S * GainSL ); - s->RightBack = (s32)(S * GainSR ); -} - -void ProcessDplSample16( const StereoOut32& src, Stereo51Out16Dpl * s) -{ - Stereo51Out32Dpl ss; - ProcessDplSample32(src, &ss); - - s->Left = ss.Left >> 16; - s->Right = ss.Right >> 16; - s->Center = ss.Center >> 16; - s->LFE = ss.LFE >> 16; - s->LeftBack = ss.LeftBack >> 16; - s->RightBack = ss.RightBack >> 16; -} +/* SPU2-X, A plugin for Emulating the Sound Processing Unit of the Playstation 2 + * Developed and maintained by the Pcsx2 Development Team. + * + * Original portions from SPU2ghz are (c) 2008 by David Quintana [gigaherz] + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your + * option) any later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "Global.h" + +static const u8 sLogTable[256] = { + 0x00,0x3C,0x60,0x78,0x8C,0x9C,0xA8,0xB4,0xBE,0xC8,0xD0,0xD8,0xDE,0xE4,0xEA,0xF0, + 0xF6,0xFA,0xFE,0x04,0x08,0x0C,0x10,0x14,0x16,0x1A,0x1E,0x20,0x24,0x26,0x2A,0x2C, + 0x2E,0x32,0x34,0x36,0x38,0x3A,0x3E,0x40,0x42,0x44,0x46,0x48,0x4A,0x4C,0x4E,0x50, + 0x50,0x52,0x54,0x56,0x58,0x5A,0x5A,0x5C,0x5E,0x60,0x60,0x62,0x64,0x66,0x66,0x68, + 0x6A,0x6A,0x6C,0x6E,0x6E,0x70,0x70,0x72,0x74,0x74,0x76,0x76,0x78,0x7A,0x7A,0x7C, + 0x7C,0x7E,0x7E,0x80,0x80,0x82,0x82,0x84,0x84,0x86,0x86,0x88,0x88,0x8A,0x8A,0x8C, + 0x8C,0x8C,0x8E,0x8E,0x90,0x90,0x92,0x92,0x92,0x94,0x94,0x96,0x96,0x96,0x98,0x98, + 0x9A,0x9A,0x9A,0x9C,0x9C,0x9C,0x9E,0x9E,0xA0,0xA0,0xA0,0xA2,0xA2,0xA2,0xA4,0xA4, + 0xA4,0xA6,0xA6,0xA6,0xA8,0xA8,0xA8,0xAA,0xAA,0xAA,0xAC,0xAC,0xAC,0xAC,0xAE,0xAE, + 0xAE,0xB0,0xB0,0xB0,0xB2,0xB2,0xB2,0xB2,0xB4,0xB4,0xB4,0xB6,0xB6,0xB6,0xB6,0xB8, + 0xB8,0xB8,0xB8,0xBA,0xBA,0xBA,0xBC,0xBC,0xBC,0xBC,0xBE,0xBE,0xBE,0xBE,0xC0,0xC0, + 0xC0,0xC0,0xC2,0xC2,0xC2,0xC2,0xC2,0xC4,0xC4,0xC4,0xC4,0xC6,0xC6,0xC6,0xC6,0xC8, + 0xC8,0xC8,0xC8,0xC8,0xCA,0xCA,0xCA,0xCA,0xCC,0xCC,0xCC,0xCC,0xCC,0xCE,0xCE,0xCE, + 0xCE,0xCE,0xD0,0xD0,0xD0,0xD0,0xD0,0xD2,0xD2,0xD2,0xD2,0xD2,0xD4,0xD4,0xD4,0xD4, + 0xD4,0xD6,0xD6,0xD6,0xD6,0xD6,0xD8,0xD8,0xD8,0xD8,0xD8,0xD8,0xDA,0xDA,0xDA,0xDA, + 0xDA,0xDC,0xDC,0xDC,0xDC,0xDC,0xDC,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0xE0,0xE0,0xE0, +}; + +static float Gfl=0,Gfr=0; +static float LMax=0,RMax=0; + +static float AccL=0; +static float AccR=0; + +const float Scale = 4294967296.0f; // tweak this value to change the overall output volume + +const float GainL = 0.80f * Scale; +const float GainR = 0.80f * Scale; + +const float GainC = 0.75f * Scale; + +const float GainSL = 0.90f * Scale; +const float GainSR = 0.90f * Scale; + +const float GainLFE= 0.90f * Scale; + +const float AddCLR = 0.20f * Scale; // Stereo expansion + +extern void ResetDplIIDecoder() +{ + Gfl=0; + Gfr=0; + LMax=0; + RMax=0; + AccL=0; + AccR=0; +} + +void ProcessDplIISample32( const StereoOut32& src, Stereo51Out32DplII * s) +{ + float IL = src.Left / (float)(1<<(SndOutVolumeShift+16)); + float IR = src.Right / (float)(1<<(SndOutVolumeShift+16)); + + // Calculate center channel and LFE + float C = (IL+IR) * 0.5f; + float SUB = C; // no need to lowpass, the speaker amplifier should take care of it + + float L = IL - C; // Effective L/R data + float R = IR - C; + + // Peak L/R + float PL = std::abs(L); + float PR = std::abs(R); + + AccL += (PL-AccL)*0.1f; + AccR += (PR-AccR)*0.1f; + + // Calculate power balance + float Balance = (AccR-AccL); // -1 .. 1 + + // If the power levels are different, then the audio is meant for the front speakers + float Frontness = std::abs(Balance); + float Rearness = 1-Frontness; // And the other way around + + // Equalize the power levels for L/R + float B = std::min(0.9f,std::max(-0.9f,Balance)); + + float VL = L / (1-B); // if B>0, it means R>L, so increase L, else decrease L + float VR = R / (1+B); // vice-versa + + // 1.73+1.22 = 2.94; 2.94 = 0.34 = 0.9996; Close enough. + // The range for VL/VR is approximately 0..1, + // But in the cases where VL/VR are > 0.5, Rearness is 0 so it should never overflow. + const float RearScale = 0.34f * 2; + + float SL = (VR*1.73f - VL*1.22f) * RearScale * Rearness; + float SR = (VR*1.22f - VL*1.73f) * RearScale * Rearness; + // Possible experiment: Play with stereo expension levels on rear + + // Adjust the volume of the front speakers based on what we calculated above + L *= Frontness; + R *= Frontness; + + s32 CX = (s32)(C * AddCLR); + + s->Left = (s32)(L * GainL ) + CX; + s->Right = (s32)(R * GainR ) + CX; + s->Center = (s32)(C * GainC ); + s->LFE = (s32)(SUB * GainLFE); + s->LeftBack = (s32)(SL * GainSL ); + s->RightBack = (s32)(SR * GainSR ); +} + +void ProcessDplIISample16( const StereoOut32& src, Stereo51Out16DplII * s) +{ + Stereo51Out32DplII ss; + ProcessDplIISample32(src, &ss); + + s->Left = ss.Left >> 16; + s->Right = ss.Right >> 16; + s->Center = ss.Center >> 16; + s->LFE = ss.LFE >> 16; + s->LeftBack = ss.LeftBack >> 16; + s->RightBack = ss.RightBack >> 16; +} + +void ProcessDplSample32( const StereoOut32& src, Stereo51Out32Dpl * s) +{ + float ValL = src.Left / (float)(1<<(SndOutVolumeShift+16)); + float ValR = src.Right / (float)(1<<(SndOutVolumeShift+16)); + + float C = (ValL+ValR)*0.5f; //+15.8 + float S = (ValL-ValR)*0.5f; + + float L=ValL-C; //+15.8 + float R=ValR-C; + + float SUB = C; + + s32 CX = (s32)(C * AddCLR); // +15.16 + + s->Left = (s32)(L * GainL ) + CX; // +15.16 = +31, can grow to +32 if (GainL + AddCLR)>255 + s->Right = (s32)(R * GainR ) + CX; + s->Center = (s32)(C * GainC ); // +15.16 = +31 + s->LFE = (s32)(SUB * GainLFE); + s->LeftBack = (s32)(S * GainSL ); + s->RightBack = (s32)(S * GainSR ); +} + +void ProcessDplSample16( const StereoOut32& src, Stereo51Out16Dpl * s) +{ + Stereo51Out32Dpl ss; + ProcessDplSample32(src, &ss); + + s->Left = ss.Left >> 16; + s->Right = ss.Right >> 16; + s->Center = ss.Center >> 16; + s->LFE = ss.LFE >> 16; + s->LeftBack = ss.LeftBack >> 16; + s->RightBack = ss.RightBack >> 16; +} diff --git a/plugins/spu2-x/src/Windows/Spu2-X.def b/plugins/spu2-x/src/Windows/Spu2-X.def index 4fd35b8e8c..8f9cc18b3a 100644 --- a/plugins/spu2-x/src/Windows/Spu2-X.def +++ b/plugins/spu2-x/src/Windows/Spu2-X.def @@ -1,65 +1,65 @@ -; * SPU2-X, A plugin for Emulating the Sound Processing Unit of the Playstation 2 -; * Developed and maintained by the Pcsx2 Development Team. -; * -; * Originally based on SPU2ghz v1.9 beta, by David Quintana. -; * -; * SPU2-X is free software: you can redistribute it and/or modify it under the terms -; * of the GNU Lesser General Public License as published by the Free Software Found- -; * ation, either version 3 of the License, or (at your option) any later version. -; * -; * SPU2-X is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; -; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -; * PURPOSE. See the GNU Lesser General Public License for more details. -; * -; * You should have received a copy of the GNU Lesser General Public License -; * along with SPU2-X. If not, see . - -; SPU2-X.def : Declares the module parameters for the DLL. - -;LIBRARY "SPU2-X" - -EXPORTS - ; Explicit exports can go here - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - - SPU2init @5 - SPU2shutdown @6 - SPU2open @7 - SPU2close @8 - - SPU2configure @9 - SPU2test @10 - SPU2about @11 - SPU2freeze @12 - - SPU2setSettingsDir @13 - SPU2setLogDir @14 - - SPU2write @15 - SPU2read @16 - SPU2async @17 - SPU2dmaRead @18 - SPU2dmaWrite @19 - SPU2dmaInterrupt @20 - - SPU2readDMA4Mem @21 - SPU2writeDMA4Mem @22 - SPU2readDMA7Mem @23 - SPU2writeDMA7Mem @24 - SPU2interruptDMA4 @25 - SPU2interruptDMA7 @26 - - SPU2irqCallback @27 - SPU2setupRecording @28 - - SPU2ReadMemAddr @29 - SPU2WriteMemAddr @30 - - SPU2setClockPtr @31 - SPU2setDMABaseAddr @32 - - SPU2replay = s2r_replay @33 - - SPU2reset @34 +; * SPU2-X, A plugin for Emulating the Sound Processing Unit of the Playstation 2 +; * Developed and maintained by the Pcsx2 Development Team. +; * +; * Originally based on SPU2ghz v1.9 beta, by David Quintana. +; * +; * SPU2-X is free software: you can redistribute it and/or modify it under the terms +; * of the GNU Lesser General Public License as published by the Free Software Found- +; * ation, either version 3 of the License, or (at your option) any later version. +; * +; * SPU2-X is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +; * PURPOSE. See the GNU Lesser General Public License for more details. +; * +; * You should have received a copy of the GNU Lesser General Public License +; * along with SPU2-X. If not, see . + +; SPU2-X.def : Declares the module parameters for the DLL. + +;LIBRARY "SPU2-X" + +EXPORTS + ; Explicit exports can go here + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + + SPU2init @5 + SPU2shutdown @6 + SPU2open @7 + SPU2close @8 + + SPU2configure @9 + SPU2test @10 + SPU2about @11 + SPU2freeze @12 + + SPU2setSettingsDir @13 + SPU2setLogDir @14 + + SPU2write @15 + SPU2read @16 + SPU2async @17 + SPU2dmaRead @18 + SPU2dmaWrite @19 + SPU2dmaInterrupt @20 + + SPU2readDMA4Mem @21 + SPU2writeDMA4Mem @22 + SPU2readDMA7Mem @23 + SPU2writeDMA7Mem @24 + SPU2interruptDMA4 @25 + SPU2interruptDMA7 @26 + + SPU2irqCallback @27 + SPU2setupRecording @28 + + SPU2ReadMemAddr @29 + SPU2WriteMemAddr @30 + + SPU2setClockPtr @31 + SPU2setDMABaseAddr @32 + + SPU2replay = s2r_replay @33 + + SPU2reset @34 diff --git a/plugins/spu2-x/src/Windows/Spu2-X.rc b/plugins/spu2-x/src/Windows/Spu2-X.rc index 9bcd164505..c0cef8b207 100644 --- a/plugins/spu2-x/src/Windows/Spu2-X.rc +++ b/plugins/spu2-x/src/Windows/Spu2-X.rc @@ -1,408 +1,408 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "svnrev.h" -#include "afxresmw.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_ABOUT DIALOGEX 0, 0, 291, 223 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "About SPU2-X" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "I've Seen Enough",IDOK,91,204,111,14 - CTEXT "Original portions from SPU2ghz are (c) 2008 by David Quintana [gigaherz]",IDC_STATIC,9,184,273,11 - CONTROL 114,IDC_STATIC,"Static",SS_BITMAP,45,5,203,64,WS_EX_CLIENTEDGE - CTEXT "A Sound Processing Unit 2 plugin for Playstation 2 emulators.",IDC_STATIC,9,71,273,10 - CTEXT "For updates and news, visit the following links:",IDC_STATIC,9,98,273,10 - CTEXT "The SPU2-X project is derived from SPU2ghz v1.9beta released in 2008 and later modified and upgraded by the Pcsx2 Playground Team.",IDC_STATIC,25,161,242,17 - CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,20,157,252,41 - CTEXT "Compile Date, Revision, Etc.",IDC_LABEL_VERSION_INFO,9,80,273,17 - CTEXT "Pcsx2 Official Git Repository @ GitHub",IDC_LINK_GOOGLECODE,9,121,273,10,SS_NOPREFIX | SS_NOTIFY - CTEXT "Pcsx2 Official Website and Forums",IDC_LINK_WEBSITE,9,110,273,10,SS_NOPREFIX | SS_NOTIFY - CTEXT "Brought to you by the collaborative efforts of the Pcsx2 Development Team.",IDC_STATIC,9,141,273,10 -END - -IDD_CONFIG DIALOGEX 0, 0, 319, 302 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "SPU2-X Settings" -FONT 8, "MS Shell Dlg", 400, 0, 0x0 -BEGIN - PUSHBUTTON "OK",IDOK,200,276,54,15,NOT WS_TABSTOP - PUSHBUTTON "Cancel",IDCANCEL,259,276,54,15,NOT WS_TABSTOP - GROUPBOX "Mixing Settings",IDC_STATIC,6,5,130,115 - GROUPBOX "Output Settings",IDC_STATIC,142,0,172,268 - COMBOBOX IDC_OUTPUT,154,26,126,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Configure...",IDC_OUTCONF,236,40,54,12 - COMBOBOX IDC_INTERPOLATE,14,26,114,84,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Slider2",IDC_LATENCY_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,166,94,116,10 - CONTROL "Use a Winamp DSP plugin",IDC_DSP_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,149,223,126,11 - CHECKBOX "Disable Effects Processing",IDC_EFFECTS_DISABLE,14,47,112,10 - LTEXT "Latency:",IDC_STATIC,189,84,29,8,NOT WS_GROUP - LTEXT "Interpolation:",IDC_STATIC,12,16,55,10,NOT WS_GROUP - LTEXT "Module:",IDC_STATIC,161,16,50,9,NOT WS_GROUP - LTEXT "(speedup!) Skips reverb effects processing, but won't sound as good in most games.",IDC_STATIC,26,60,104,36 - LTEXT "(currently requires manual configuration via the ini file)",IDC_STATIC,162,236,146,20 - CTEXT "100 ms (avg)",IDC_LATENCY_LABEL,224,86,58,9 - CONTROL 116,IDC_STATIC,"Static",SS_BITMAP,6,213,119,55,WS_EX_CLIENTEDGE - PUSHBUTTON "Advanced...",IDC_OPEN_CONFIG_SOUNDTOUCH,219,149,84,12 - PUSHBUTTON "Configure Debug Options...",IDC_OPEN_CONFIG_DEBUG,14,167,108,14 - CHECKBOX "Enable Debug Options",IDC_DEBUG_ENABLE,14,153,104,10,NOT WS_TABSTOP - GROUPBOX "",IDC_STATIC,6,143,129,46 - LTEXT "Audio Expansion Mode:",IDC_STATIC,161,176,135,9,NOT WS_GROUP - COMBOBOX IDC_SPEAKERS,163,185,135,84,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "WIP - XAudio2 Only",IDC_STATIC,161,204,135,9,NOT WS_GROUP - CONTROL "Synchronizing Mode:",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,161,116,131,8 - COMBOBOX IDC_SYNCHMODE,163,125,134,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Volume:",IDC_STATIC,192,59,26,8,NOT WS_GROUP - CTEXT "100%",IDC_VOLUME_LABEL,224,59,58,9 - CONTROL "",IDC_VOLUME_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,166,69,116,10 - CONTROL "Use the de-alias filter",IDC_DEALIASFILTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,92,112,10 - LTEXT "(overemphasizes the highs)",IDC_STATIC,26,104,100,12,NOT WS_GROUP -END - -IDD_DEBUG DIALOGEX 0, 0, 303, 473 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "SPU2-X Debug" -FONT 9, "Lucida Console", 400, 0, 0x0 -BEGIN - DEFPUSHBUTTON "Close",IDOK,246,451,50,14 -END - -IDD_DSOUND DIALOGEX 0, 0, 196, 218 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "DirectSound Output Module Settings" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,83,200,50,14 - PUSHBUTTON "Cancel",IDCANCEL,141,200,50,14 - COMBOBOX IDC_DS_DEVICE,4,15,146,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "DirectSound Device",IDC_STATIC,4,3,63,8 - CONTROL "",IDC_BUFFERS_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,38,137,108,10 - LTEXT "Increase the buffer count if you are experiencing loopy or studdery audio even when games run at high FPS.",IDC_STATIC,11,157,169,27 - CTEXT "8 (80 ms latency)",IDC_LATENCY_LABEL,44,123,95,11 - LTEXT "The options above are useful for compatibility with older and/or buggy sound drivers ONLY, and should not be checked unless you experience sound problems (such as crackly audio or silence).",IDC_STATIC,16,68,175,38 - CONTROL "Disable Global Focus",IDC_GLOBALFOCUS_DISABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,4,38,140,10 - CONTROL "Use a crappy alternate buffering mode",IDC_USE_HARDWARE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,53,140,10 - GROUPBOX "Output Buffers",IDC_STATIC,4,111,185,79 -END - -IDD_WAVEOUT DIALOGEX 0, 0, 170, 122 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "waveOut Output Module Settings" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,52,104,50,14 - PUSHBUTTON "Cancel",IDCANCEL,115,104,50,14 - COMBOBOX IDC_DS_DEVICE,4,15,161,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "waveOut Device",IDC_STATIC,4,3,54,8 - LTEXT "Number of Buffers",IDC_STATIC,4,39,61,11 - CONTROL "",IDC_BUFFERS_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,71,48,94,10 - LTEXT "Use extra buffers if you are experiencing loopy or studdery audio even when games run at high FPS.",IDC_STATIC,8,66,151,27 - CTEXT "8 (80 ms latency)",IDC_LATENCY_LABEL,70,37,95,11 -END - -IDD_XAUDIO2 DIALOGEX 0, 0, 202, 116 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "XAudio2 Output Module Settings" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,88,98,50,14 - PUSHBUTTON "Cancel",IDCANCEL,147,98,50,14 - COMBOBOX IDC_DS_DEVICE,4,15,193,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "XAudio Device",IDC_STATIC,4,3,46,8 - CONTROL "Use Triple Buffering",IDC_XA2_TRIBLE_BUFFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,40,109,10 - LTEXT "Increases latency by a few milliseconds. Enable triple buffering you are experiencing loopy or studdery audio even when games run at high FPS.",IDC_STATIC,20,53,175,35 -END - -IDD_CONFIG_SOUNDTOUCH DIALOGEX 0, 0, 206, 223 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Soundtouch Advanced Configuration - SPU2-X" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,50,205,50,14 - PUSHBUTTON "Cancel",IDCANCEL,104,205,50,14 - CTEXT "These are advanced configuration options for fine tuning time stretching behavior. Larger values are better for slowdown, while smaller values are better for speed-up (better than 60fps).\n\nAll options are in milliseconds (ms).",IDC_STATIC,5,5,196,52 - CONTROL "",IDC_SEQLEN_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,50,98,105,10 - CTEXT "Sequence Length",IDC_STATIC,72,88,64,9 - CONTROL "",IDC_SEEKWIN_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,50,136,105,10 - CTEXT "Seekwindow Size",IDC_STATIC,70,125,66,9 - CONTROL "",IDC_OVERLAP_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,50,170,105,10 - CTEXT "Overlap",IDC_STATIC,86,162,34,9 - LTEXT "20",IDC_STATIC,50,112,9,8 - LTEXT "100",IDC_STATIC,146,112,13,8 - LTEXT "10",IDC_STATIC,50,149,9,8 - LTEXT "30",IDC_STATIC,146,149,9,8 - LTEXT "5",IDC_STATIC,52,184,8,8 - LTEXT "15",IDC_STATIC,146,184,9,8 - PUSHBUTTON "Reset Defaults",IDC_RESET_DEFAULTS,61,62,82,12 -END - -IDD_CONFIG_DEBUG DIALOGEX 0, 0, 292, 239 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "SPU2-X Debugging Options" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,190,220,46,14 - PUSHBUTTON "Cancel",IDCANCEL,241,220,46,14 - GROUPBOX "",IDC_STATIC,5,5,135,93 - GROUPBOX "Logfile-only Logs",IDC_STATIC,151,5,136,53 - GROUPBOX "Dumps (on close)",IDC_STATIC,151,60,135,54 - CONTROL "Show In Console",IDC_MSGSHOW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,5,69,10 - CHECKBOX "KeyOn/Off Events",IDC_MSGKEY,17,18,74,9,NOT WS_TABSTOP - CONTROL "Voice Stop Events",IDC_MSGVOICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,31,75,9 - CONTROL "DMA Operations",IDC_MSGDMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,44,68,9 - CONTROL "AutoDMA Operations",IDC_MSGADMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,57,83,9 - CONTROL "Buffer Over/Underruns",IDC_DBG_OVERRUNS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,70,97,9 - CONTROL "ADPCM Cache Statistics",IDC_DBG_CACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,83,114,9 - CHECKBOX "Dump Core and Voice State",IDC_DUMPCORE,159,74,104,10,NOT WS_TABSTOP - CHECKBOX "Dump Memory Contents",IDC_DUMPMEM,159,87,91,10,NOT WS_TABSTOP - CHECKBOX "Dump Register Data",IDC_DUMPREGS,159,100,80,10,NOT WS_TABSTOP - CHECKBOX "Log Register/DMA Actions",IDC_LOGREGS,159,18,101,10,WS_GROUP | NOT WS_TABSTOP - CHECKBOX "Log DMA Writes",IDC_LOGDMA,159,31,68,10,NOT WS_TABSTOP - CHECKBOX "Log Audio Output",IDC_LOGWAVE,159,44,71,10,NOT WS_TABSTOP - LTEXT "Note: This is a non-devel build. For performance reasons, some logging options are disabled; and only available in devel/debug builds.",IDC_MSG_PUBLIC_BUILD,9,187,174,30 - GROUPBOX "Others",IDC_DEBUG_OTHERS,5,104,135,68 - CONTROL "Show Core Activity",IDC_DEBUG_VISUAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,116,90,11 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 9 - RIGHTMARGIN, 282 - TOPMARGIN, 5 - BOTTOMMARGIN, 218 - END - - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 6 - RIGHTMARGIN, 314 - VERTGUIDE, 218 - VERTGUIDE, 282 - BOTTOMMARGIN, 292 - HORZGUIDE, 268 - END - - IDD_DEBUG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 296 - TOPMARGIN, 7 - BOTTOMMARGIN, 465 - END - - IDD_DSOUND, DIALOG - BEGIN - LEFTMARGIN, 4 - RIGHTMARGIN, 191 - TOPMARGIN, 3 - BOTTOMMARGIN, 214 - END - - IDD_WAVEOUT, DIALOG - BEGIN - LEFTMARGIN, 4 - RIGHTMARGIN, 165 - TOPMARGIN, 3 - BOTTOMMARGIN, 118 - END - - IDD_XAUDIO2, DIALOG - BEGIN - LEFTMARGIN, 4 - RIGHTMARGIN, 197 - TOPMARGIN, 3 - BOTTOMMARGIN, 112 - END - - IDD_CONFIG_SOUNDTOUCH, DIALOG - BEGIN - LEFTMARGIN, 5 - RIGHTMARGIN, 201 - TOPMARGIN, 5 - BOTTOMMARGIN, 218 - END - - IDD_CONFIG_DEBUG, DIALOG - BEGIN - LEFTMARGIN, 5 - RIGHTMARGIN, 287 - TOPMARGIN, 5 - BOTTOMMARGIN, 234 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_SPU2X BITMAP "..\\..\\spu2-x.bmp" -IDB_SPU2X_SMALL BITMAP "..\\..\\spu2-x-sm.bmp" - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,0,0,4851 - PRODUCTVERSION 2,0,0,4851 - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "SPU2 Plugin for PS2 Emulators" - VALUE "CompanyName", "PCSX2 Dev Team" - VALUE "FileDescription", "SPU2-X Plugin (git build)" - VALUE "FileVersion", "2.0.GIT" - VALUE "InternalName", "SPU2-X" - VALUE "LegalCopyright", "Copyright (C) 2011" - VALUE "OriginalFilename", "SPU2-X-2.0.dll" - VALUE "ProductName", "SPU2-X" - VALUE "ProductVersion", "2.0.GIT" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (United Kingdom) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK -#pragma code_page(1252) - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_PORTAUDIO DIALOGEX 0, 0, 316, 166 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Portaudio Output Module Settings" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,205,145,50,14 - PUSHBUTTON "Cancel",IDCANCEL,259,145,50,14 - COMBOBOX IDC_PA_HOSTAPI,7,18,95,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Host Api",IDC_STATIC,7,7,28,8 - COMBOBOX IDC_PA_DEVICE,108,18,201,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Device Name",IDC_STATIC,107,7,42,8 - CONTROL "",IDC_LATENCY,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,96,93,155,10 - LTEXT "NOTE: Depending on the hardware and drivers, the suggested manual latency might not be used, and portaudio will choose the closest possible value.",IDC_STATIC,12,111,286,19 - CTEXT "20ms",IDC_LATENCY_LABEL,264,93,35,11 - GROUPBOX "Output Latency",IDC_STATIC,7,57,302,82 - CONTROL "Use smallest possible (may cause issues if the actual value is too small)",IDC_MINIMIZE, - "Button",BS_AUTORADIOBUTTON | WS_GROUP,12,75,258,10 - CONTROL "Use this latency:",IDC_MANUAL,"Button",BS_AUTORADIOBUTTON,12,93,69,10 - CONTROL "WASAPI Exclusive Mode",IDC_EXCLUSIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,39,93,10 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_PORTAUDIO, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 309 - TOPMARGIN, 7 - BOTTOMMARGIN, 159 - END -END -#endif // APSTUDIO_INVOKED - -#endif // English (United Kingdom) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Spanish (Spain, International Sort) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESN) -LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MODERN -#pragma code_page(1252) - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""svnrev.h""\r\n" - "#include ""afxresmw.h""\0" -END - -3 TEXTINCLUDE -BEGIN - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // Spanish (Spain, International Sort) resources -///////////////////////////////////////////////////////////////////////////// - - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "svnrev.h" +#include "afxresmw.h" +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUT DIALOGEX 0, 0, 291, 223 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About SPU2-X" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "I've Seen Enough",IDOK,91,204,111,14 + CTEXT "Original portions from SPU2ghz are (c) 2008 by David Quintana [gigaherz]",IDC_STATIC,9,184,273,11 + CONTROL 114,IDC_STATIC,"Static",SS_BITMAP,45,5,203,64,WS_EX_CLIENTEDGE + CTEXT "A Sound Processing Unit 2 plugin for Playstation 2 emulators.",IDC_STATIC,9,71,273,10 + CTEXT "For updates and news, visit the following links:",IDC_STATIC,9,98,273,10 + CTEXT "The SPU2-X project is derived from SPU2ghz v1.9beta released in 2008 and later modified and upgraded by the Pcsx2 Playground Team.",IDC_STATIC,25,161,242,17 + CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,20,157,252,41 + CTEXT "Compile Date, Revision, Etc.",IDC_LABEL_VERSION_INFO,9,80,273,17 + CTEXT "Pcsx2 Official Git Repository @ GitHub",IDC_LINK_GOOGLECODE,9,121,273,10,SS_NOPREFIX | SS_NOTIFY + CTEXT "Pcsx2 Official Website and Forums",IDC_LINK_WEBSITE,9,110,273,10,SS_NOPREFIX | SS_NOTIFY + CTEXT "Brought to you by the collaborative efforts of the Pcsx2 Development Team.",IDC_STATIC,9,141,273,10 +END + +IDD_CONFIG DIALOGEX 0, 0, 319, 302 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "SPU2-X Settings" +FONT 8, "MS Shell Dlg", 400, 0, 0x0 +BEGIN + PUSHBUTTON "OK",IDOK,200,276,54,15,NOT WS_TABSTOP + PUSHBUTTON "Cancel",IDCANCEL,259,276,54,15,NOT WS_TABSTOP + GROUPBOX "Mixing Settings",IDC_STATIC,6,5,130,115 + GROUPBOX "Output Settings",IDC_STATIC,142,0,172,268 + COMBOBOX IDC_OUTPUT,154,26,126,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Configure...",IDC_OUTCONF,236,40,54,12 + COMBOBOX IDC_INTERPOLATE,14,26,114,84,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Slider2",IDC_LATENCY_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,166,94,116,10 + CONTROL "Use a Winamp DSP plugin",IDC_DSP_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,149,223,126,11 + CHECKBOX "Disable Effects Processing",IDC_EFFECTS_DISABLE,14,47,112,10 + LTEXT "Latency:",IDC_STATIC,189,84,29,8,NOT WS_GROUP + LTEXT "Interpolation:",IDC_STATIC,12,16,55,10,NOT WS_GROUP + LTEXT "Module:",IDC_STATIC,161,16,50,9,NOT WS_GROUP + LTEXT "(speedup!) Skips reverb effects processing, but won't sound as good in most games.",IDC_STATIC,26,60,104,36 + LTEXT "(currently requires manual configuration via the ini file)",IDC_STATIC,162,236,146,20 + CTEXT "100 ms (avg)",IDC_LATENCY_LABEL,224,86,58,9 + CONTROL 116,IDC_STATIC,"Static",SS_BITMAP,6,213,119,55,WS_EX_CLIENTEDGE + PUSHBUTTON "Advanced...",IDC_OPEN_CONFIG_SOUNDTOUCH,219,149,84,12 + PUSHBUTTON "Configure Debug Options...",IDC_OPEN_CONFIG_DEBUG,14,167,108,14 + CHECKBOX "Enable Debug Options",IDC_DEBUG_ENABLE,14,153,104,10,NOT WS_TABSTOP + GROUPBOX "",IDC_STATIC,6,143,129,46 + LTEXT "Audio Expansion Mode:",IDC_STATIC,161,176,135,9,NOT WS_GROUP + COMBOBOX IDC_SPEAKERS,163,185,135,84,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "WIP - XAudio2 Only",IDC_STATIC,161,204,135,9,NOT WS_GROUP + CONTROL "Synchronizing Mode:",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,161,116,131,8 + COMBOBOX IDC_SYNCHMODE,163,125,134,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Volume:",IDC_STATIC,192,59,26,8,NOT WS_GROUP + CTEXT "100%",IDC_VOLUME_LABEL,224,59,58,9 + CONTROL "",IDC_VOLUME_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,166,69,116,10 + CONTROL "Use the de-alias filter",IDC_DEALIASFILTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,92,112,10 + LTEXT "(overemphasizes the highs)",IDC_STATIC,26,104,100,12,NOT WS_GROUP +END + +IDD_DEBUG DIALOGEX 0, 0, 303, 473 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "SPU2-X Debug" +FONT 9, "Lucida Console", 400, 0, 0x0 +BEGIN + DEFPUSHBUTTON "Close",IDOK,246,451,50,14 +END + +IDD_DSOUND DIALOGEX 0, 0, 196, 218 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "DirectSound Output Module Settings" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,83,200,50,14 + PUSHBUTTON "Cancel",IDCANCEL,141,200,50,14 + COMBOBOX IDC_DS_DEVICE,4,15,146,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "DirectSound Device",IDC_STATIC,4,3,63,8 + CONTROL "",IDC_BUFFERS_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,38,137,108,10 + LTEXT "Increase the buffer count if you are experiencing loopy or studdery audio even when games run at high FPS.",IDC_STATIC,11,157,169,27 + CTEXT "8 (80 ms latency)",IDC_LATENCY_LABEL,44,123,95,11 + LTEXT "The options above are useful for compatibility with older and/or buggy sound drivers ONLY, and should not be checked unless you experience sound problems (such as crackly audio or silence).",IDC_STATIC,16,68,175,38 + CONTROL "Disable Global Focus",IDC_GLOBALFOCUS_DISABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,4,38,140,10 + CONTROL "Use a crappy alternate buffering mode",IDC_USE_HARDWARE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,53,140,10 + GROUPBOX "Output Buffers",IDC_STATIC,4,111,185,79 +END + +IDD_WAVEOUT DIALOGEX 0, 0, 170, 122 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "waveOut Output Module Settings" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,52,104,50,14 + PUSHBUTTON "Cancel",IDCANCEL,115,104,50,14 + COMBOBOX IDC_DS_DEVICE,4,15,161,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "waveOut Device",IDC_STATIC,4,3,54,8 + LTEXT "Number of Buffers",IDC_STATIC,4,39,61,11 + CONTROL "",IDC_BUFFERS_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,71,48,94,10 + LTEXT "Use extra buffers if you are experiencing loopy or studdery audio even when games run at high FPS.",IDC_STATIC,8,66,151,27 + CTEXT "8 (80 ms latency)",IDC_LATENCY_LABEL,70,37,95,11 +END + +IDD_XAUDIO2 DIALOGEX 0, 0, 202, 116 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "XAudio2 Output Module Settings" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,88,98,50,14 + PUSHBUTTON "Cancel",IDCANCEL,147,98,50,14 + COMBOBOX IDC_DS_DEVICE,4,15,193,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "XAudio Device",IDC_STATIC,4,3,46,8 + CONTROL "Use Triple Buffering",IDC_XA2_TRIBLE_BUFFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,40,109,10 + LTEXT "Increases latency by a few milliseconds. Enable triple buffering you are experiencing loopy or studdery audio even when games run at high FPS.",IDC_STATIC,20,53,175,35 +END + +IDD_CONFIG_SOUNDTOUCH DIALOGEX 0, 0, 206, 223 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Soundtouch Advanced Configuration - SPU2-X" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,50,205,50,14 + PUSHBUTTON "Cancel",IDCANCEL,104,205,50,14 + CTEXT "These are advanced configuration options for fine tuning time stretching behavior. Larger values are better for slowdown, while smaller values are better for speed-up (better than 60fps).\n\nAll options are in milliseconds (ms).",IDC_STATIC,5,5,196,52 + CONTROL "",IDC_SEQLEN_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,50,98,105,10 + CTEXT "Sequence Length",IDC_STATIC,72,88,64,9 + CONTROL "",IDC_SEEKWIN_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,50,136,105,10 + CTEXT "Seekwindow Size",IDC_STATIC,70,125,66,9 + CONTROL "",IDC_OVERLAP_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,50,170,105,10 + CTEXT "Overlap",IDC_STATIC,86,162,34,9 + LTEXT "20",IDC_STATIC,50,112,9,8 + LTEXT "100",IDC_STATIC,146,112,13,8 + LTEXT "10",IDC_STATIC,50,149,9,8 + LTEXT "30",IDC_STATIC,146,149,9,8 + LTEXT "5",IDC_STATIC,52,184,8,8 + LTEXT "15",IDC_STATIC,146,184,9,8 + PUSHBUTTON "Reset Defaults",IDC_RESET_DEFAULTS,61,62,82,12 +END + +IDD_CONFIG_DEBUG DIALOGEX 0, 0, 292, 239 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "SPU2-X Debugging Options" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,190,220,46,14 + PUSHBUTTON "Cancel",IDCANCEL,241,220,46,14 + GROUPBOX "",IDC_STATIC,5,5,135,93 + GROUPBOX "Logfile-only Logs",IDC_STATIC,151,5,136,53 + GROUPBOX "Dumps (on close)",IDC_STATIC,151,60,135,54 + CONTROL "Show In Console",IDC_MSGSHOW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,5,69,10 + CHECKBOX "KeyOn/Off Events",IDC_MSGKEY,17,18,74,9,NOT WS_TABSTOP + CONTROL "Voice Stop Events",IDC_MSGVOICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,31,75,9 + CONTROL "DMA Operations",IDC_MSGDMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,44,68,9 + CONTROL "AutoDMA Operations",IDC_MSGADMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,57,83,9 + CONTROL "Buffer Over/Underruns",IDC_DBG_OVERRUNS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,70,97,9 + CONTROL "ADPCM Cache Statistics",IDC_DBG_CACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,83,114,9 + CHECKBOX "Dump Core and Voice State",IDC_DUMPCORE,159,74,104,10,NOT WS_TABSTOP + CHECKBOX "Dump Memory Contents",IDC_DUMPMEM,159,87,91,10,NOT WS_TABSTOP + CHECKBOX "Dump Register Data",IDC_DUMPREGS,159,100,80,10,NOT WS_TABSTOP + CHECKBOX "Log Register/DMA Actions",IDC_LOGREGS,159,18,101,10,WS_GROUP | NOT WS_TABSTOP + CHECKBOX "Log DMA Writes",IDC_LOGDMA,159,31,68,10,NOT WS_TABSTOP + CHECKBOX "Log Audio Output",IDC_LOGWAVE,159,44,71,10,NOT WS_TABSTOP + LTEXT "Note: This is a non-devel build. For performance reasons, some logging options are disabled; and only available in devel/debug builds.",IDC_MSG_PUBLIC_BUILD,9,187,174,30 + GROUPBOX "Others",IDC_DEBUG_OTHERS,5,104,135,68 + CONTROL "Show Core Activity",IDC_DEBUG_VISUAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,116,90,11 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 9 + RIGHTMARGIN, 282 + TOPMARGIN, 5 + BOTTOMMARGIN, 218 + END + + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 6 + RIGHTMARGIN, 314 + VERTGUIDE, 218 + VERTGUIDE, 282 + BOTTOMMARGIN, 292 + HORZGUIDE, 268 + END + + IDD_DEBUG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 296 + TOPMARGIN, 7 + BOTTOMMARGIN, 465 + END + + IDD_DSOUND, DIALOG + BEGIN + LEFTMARGIN, 4 + RIGHTMARGIN, 191 + TOPMARGIN, 3 + BOTTOMMARGIN, 214 + END + + IDD_WAVEOUT, DIALOG + BEGIN + LEFTMARGIN, 4 + RIGHTMARGIN, 165 + TOPMARGIN, 3 + BOTTOMMARGIN, 118 + END + + IDD_XAUDIO2, DIALOG + BEGIN + LEFTMARGIN, 4 + RIGHTMARGIN, 197 + TOPMARGIN, 3 + BOTTOMMARGIN, 112 + END + + IDD_CONFIG_SOUNDTOUCH, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 201 + TOPMARGIN, 5 + BOTTOMMARGIN, 218 + END + + IDD_CONFIG_DEBUG, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 287 + TOPMARGIN, 5 + BOTTOMMARGIN, 234 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_SPU2X BITMAP "..\\..\\spu2-x.bmp" +IDB_SPU2X_SMALL BITMAP "..\\..\\spu2-x-sm.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 2,0,0,4851 + PRODUCTVERSION 2,0,0,4851 + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "SPU2 Plugin for PS2 Emulators" + VALUE "CompanyName", "PCSX2 Dev Team" + VALUE "FileDescription", "SPU2-X Plugin (git build)" + VALUE "FileVersion", "2.0.GIT" + VALUE "InternalName", "SPU2-X" + VALUE "LegalCopyright", "Copyright (C) 2011" + VALUE "OriginalFilename", "SPU2-X-2.0.dll" + VALUE "ProductName", "SPU2-X" + VALUE "ProductVersion", "2.0.GIT" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (United Kingdom) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_PORTAUDIO DIALOGEX 0, 0, 316, 166 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Portaudio Output Module Settings" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,205,145,50,14 + PUSHBUTTON "Cancel",IDCANCEL,259,145,50,14 + COMBOBOX IDC_PA_HOSTAPI,7,18,95,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Host Api",IDC_STATIC,7,7,28,8 + COMBOBOX IDC_PA_DEVICE,108,18,201,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Device Name",IDC_STATIC,107,7,42,8 + CONTROL "",IDC_LATENCY,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,96,93,155,10 + LTEXT "NOTE: Depending on the hardware and drivers, the suggested manual latency might not be used, and portaudio will choose the closest possible value.",IDC_STATIC,12,111,286,19 + CTEXT "20ms",IDC_LATENCY_LABEL,264,93,35,11 + GROUPBOX "Output Latency",IDC_STATIC,7,57,302,82 + CONTROL "Use smallest possible (may cause issues if the actual value is too small)",IDC_MINIMIZE, + "Button",BS_AUTORADIOBUTTON | WS_GROUP,12,75,258,10 + CONTROL "Use this latency:",IDC_MANUAL,"Button",BS_AUTORADIOBUTTON,12,93,69,10 + CONTROL "WASAPI Exclusive Mode",IDC_EXCLUSIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,39,93,10 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_PORTAUDIO, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 309 + TOPMARGIN, 7 + BOTTOMMARGIN, 159 + END +END +#endif // APSTUDIO_INVOKED + +#endif // English (United Kingdom) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// Spanish (Spain, International Sort) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESN) +LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MODERN +#pragma code_page(1252) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""svnrev.h""\r\n" + "#include ""afxresmw.h""\0" +END + +3 TEXTINCLUDE +BEGIN + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // Spanish (Spain, International Sort) resources +///////////////////////////////////////////////////////////////////////////// + + diff --git a/plugins/spu2-x/src/Windows/Spu2-X_vs2012.vcxproj b/plugins/spu2-x/src/Windows/Spu2-X_vs2012.vcxproj index 97e0596353..1add7a3b5f 100644 --- a/plugins/spu2-x/src/Windows/Spu2-X_vs2012.vcxproj +++ b/plugins/spu2-x/src/Windows/Spu2-X_vs2012.vcxproj @@ -1,487 +1,487 @@ - - - - - DebugStrict - Win32 - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - SPU2-X - {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4} - spu2x - - - - DynamicLibrary - false - Static - Unicode - v110_xp - - - DynamicLibrary - false - Static - Unicode - true - v110_xp - - - DynamicLibrary - false - Static - Unicode - v110_xp - - - DynamicLibrary - false - Static - Unicode - true - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - false - true - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(ProjectName)-dev - false - $(DXSDK_DIR)\include;$(IncludePath) - $(DXSDK_DIR)\Lib\x86;$(LibraryPath) - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Release/spu2-x.tlb - - - - - $(DXSDK_DIR)include;$(SolutionDir)3rdparty\portaudio\include\;%(AdditionalIncludeDirectories) - FLOAT_SAMPLES;NDEBUG;_USRDLL;%(PreprocessorDefinitions) - Async - StreamingSIMDExtensions2 - Fast - Use - Global.h - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0a - - - rpcrt4.lib;winmm.lib;dsound.lib;comctl32.lib;soundtouch-dev.lib;x86emitter-dev.lib;utilities-dev.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - $(SolutionDir)3rdparty\portaudio;%(AdditionalLibraryDirectories) - .\Spu2-X.def - false - MachineX86 - - - true - - - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Debug/spu2-x.tlb - - - - - $(DXSDK_DIR)include;$(SolutionDir)3rdparty\portaudio\include\;%(AdditionalIncludeDirectories) - FLOAT_SAMPLES;_USRDLL;%(PreprocessorDefinitions) - Async - Use - Global.h - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0a - - - rpcrt4.lib;winmm.lib;dsound.lib;comctl32.lib;soundtouch.lib;x86emitter.lib;utilities.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - $(SolutionDir)3rdparty\portaudio;%(AdditionalLibraryDirectories) - .\Spu2-X.def - false - false - MachineX86 - - - true - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - - - - - $(DXSDK_DIR)include;$(SolutionDir)3rdparty\portaudio\include\;%(AdditionalIncludeDirectories) - FLOAT_SAMPLES;NDEBUG;_USRDLL;%(PreprocessorDefinitions) - Async - StreamingSIMDExtensions2 - Fast - Use - Global.h - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0a - - - rpcrt4.lib;winmm.lib;dsound.lib;comctl32.lib;soundtouch.lib;x86emitter.lib;utilities.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - $(SolutionDir)3rdparty\portaudio;%(AdditionalLibraryDirectories) - .\Spu2-X.def - $(TargetDir)$(TargetName).pdb - - - false - MachineX86 - - - true - - - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Debug/spu2-x.tlb - - - - - $(DXSDK_DIR)include;$(SolutionDir)3rdparty\portaudio\include\;%(AdditionalIncludeDirectories) - wxUSE_GUI=0;FLOAT_SAMPLES;DEBUG_FAST;_USRDLL;%(PreprocessorDefinitions) - Async - Use - Global.h - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0a - %(AdditionalIncludeDirectories) - - - rpcrt4.lib;winmm.lib;dsound.lib;comctl32.lib;soundtouch-dbg.lib;x86emitter-dbg.lib;utilities-dbg.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - .\Spu2-X.def - false - false - .\Debug/spu2-x.lib - MachineX86 - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Global.h - Create - Global.h - Create - Global.h - - - - - true - - - true - - - true - Default - - - true - Default - - - - Default - Default - - - Default - Default - - - - - - - - - - - - - - - true - - - true - - - true - Default - - - true - Default - - - - - - - true - true - true - true - - - - - - true - - - true - - - AssemblyAndSourceCode - true - Default - - - true - Default - - - - - - - - - AssemblyAndSourceCode - true - - - true - - - true - Default - - - true - Default - - - - - - true - true - true - true - - - true - true - true - true - - - - - Default - Default - - - - - - - - - - - - - - - - - - - - - - - - - - - - %(AdditionalIncludeDirectories) - - - - - {0a18a071-125e-442f-aff7-a3f68abecf99} - false - - - {e9b51944-7e6d-4bcd-83f2-7bbd5a46182d} - false - - - {26511268-2902-4997-8421-ecd7055f9e28} - false - - - {7e9b2be7-cec3-4f14-847b-0ab8d562fb86} - false - - - {3fcc50c2-81e9-5db2-b8d8-2129427568b1} - - - {2f6c0388-20cb-4242-9f6c-a6ebb6a83f47} - false - - - {4639972e-424e-4e13-8b07-ca403c481346} - false - - - {a51123f5-9505-4eae-85e7-d320290a272c} - false - - - - - + + + + + DebugStrict + Win32 + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + SPU2-X + {5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4} + spu2x + + + + DynamicLibrary + false + Static + Unicode + v110_xp + + + DynamicLibrary + false + Static + Unicode + true + v110_xp + + + DynamicLibrary + false + Static + Unicode + v110_xp + + + DynamicLibrary + false + Static + Unicode + true + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + false + true + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)-dev + false + $(DXSDK_DIR)\include;$(IncludePath) + $(DXSDK_DIR)\Lib\x86;$(LibraryPath) + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/spu2-x.tlb + + + + + $(DXSDK_DIR)include;$(SolutionDir)3rdparty\portaudio\include\;%(AdditionalIncludeDirectories) + FLOAT_SAMPLES;NDEBUG;_USRDLL;%(PreprocessorDefinitions) + Async + StreamingSIMDExtensions2 + Fast + Use + Global.h + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0a + + + rpcrt4.lib;winmm.lib;dsound.lib;comctl32.lib;soundtouch-dev.lib;x86emitter-dev.lib;utilities-dev.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + $(SolutionDir)3rdparty\portaudio;%(AdditionalLibraryDirectories) + .\Spu2-X.def + false + MachineX86 + + + true + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/spu2-x.tlb + + + + + $(DXSDK_DIR)include;$(SolutionDir)3rdparty\portaudio\include\;%(AdditionalIncludeDirectories) + FLOAT_SAMPLES;_USRDLL;%(PreprocessorDefinitions) + Async + Use + Global.h + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0a + + + rpcrt4.lib;winmm.lib;dsound.lib;comctl32.lib;soundtouch.lib;x86emitter.lib;utilities.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + $(SolutionDir)3rdparty\portaudio;%(AdditionalLibraryDirectories) + .\Spu2-X.def + false + false + MachineX86 + + + true + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + + + $(DXSDK_DIR)include;$(SolutionDir)3rdparty\portaudio\include\;%(AdditionalIncludeDirectories) + FLOAT_SAMPLES;NDEBUG;_USRDLL;%(PreprocessorDefinitions) + Async + StreamingSIMDExtensions2 + Fast + Use + Global.h + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0a + + + rpcrt4.lib;winmm.lib;dsound.lib;comctl32.lib;soundtouch.lib;x86emitter.lib;utilities.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + $(SolutionDir)3rdparty\portaudio;%(AdditionalLibraryDirectories) + .\Spu2-X.def + $(TargetDir)$(TargetName).pdb + + + false + MachineX86 + + + true + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/spu2-x.tlb + + + + + $(DXSDK_DIR)include;$(SolutionDir)3rdparty\portaudio\include\;%(AdditionalIncludeDirectories) + wxUSE_GUI=0;FLOAT_SAMPLES;DEBUG_FAST;_USRDLL;%(PreprocessorDefinitions) + Async + Use + Global.h + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0a + %(AdditionalIncludeDirectories) + + + rpcrt4.lib;winmm.lib;dsound.lib;comctl32.lib;soundtouch-dbg.lib;x86emitter-dbg.lib;utilities-dbg.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + %(AdditionalLibraryDirectories) + .\Spu2-X.def + false + false + .\Debug/spu2-x.lib + MachineX86 + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + Global.h + Create + Global.h + Create + Global.h + + + + + true + + + true + + + true + Default + + + true + Default + + + + Default + Default + + + Default + Default + + + + + + + + + + + + + + + true + + + true + + + true + Default + + + true + Default + + + + + + + true + true + true + true + + + + + + true + + + true + + + AssemblyAndSourceCode + true + Default + + + true + Default + + + + + + + + + AssemblyAndSourceCode + true + + + true + + + true + Default + + + true + Default + + + + + + true + true + true + true + + + true + true + true + true + + + + + Default + Default + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(AdditionalIncludeDirectories) + + + + + {0a18a071-125e-442f-aff7-a3f68abecf99} + false + + + {e9b51944-7e6d-4bcd-83f2-7bbd5a46182d} + false + + + {26511268-2902-4997-8421-ecd7055f9e28} + false + + + {7e9b2be7-cec3-4f14-847b-0ab8d562fb86} + false + + + {3fcc50c2-81e9-5db2-b8d8-2129427568b1} + + + {2f6c0388-20cb-4242-9f6c-a6ebb6a83f47} + false + + + {4639972e-424e-4e13-8b07-ca403c481346} + false + + + {a51123f5-9505-4eae-85e7-d320290a272c} + false + + + + + diff --git a/plugins/spu2-x/src/Windows/Spu2-X_vs2012.vcxproj.filters b/plugins/spu2-x/src/Windows/Spu2-X_vs2012.vcxproj.filters index 6766bd2248..9d5f669b5b 100644 --- a/plugins/spu2-x/src/Windows/Spu2-X_vs2012.vcxproj.filters +++ b/plugins/spu2-x/src/Windows/Spu2-X_vs2012.vcxproj.filters @@ -1,248 +1,248 @@ - - - - - {21596259-72f4-41c0-b499-40839e39f043} - h;hpp;cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {30e5b8dd-2015-4c3d-a663-992fb42627b5} - - - {ed4df93e-4e4b-4675-a181-c5084146df7c} - - - {1cb77247-dec9-4a0a-867f-7353b14decac} - - - {f87cf8e1-d654-4214-b7f4-6fb697f3941a} - - - {10ccccc1-642a-42ec-900c-801f707bd776} - - - {03be4765-f627-4c0a-9d40-f3c0f86f1e57} - - - {ea7e8889-2015-40b9-ac77-b4a3a58c41af} - - - {63ac2d88-b5c3-41a3-bd2c-a04c80acd35f} - - - {825046cd-874f-45f4-8622-14c146a97b46} - - - {3924e038-9ec9-4f1c-89b9-6d03c46566ac} - - - {efaf786c-f09d-49f7-b5f3-8bb7078e9c44} - - - {00c53f28-fde8-4f60-88d2-d223584f1db5} - - - {95111121-7e1f-4624-8765-a17e8f13827f} - - - {70e9653e-fba5-4c6e-ad9b-185006096d49} - - - {6fcf6c91-7afe-4ade-bb30-79d63901d590} - - - {381a6e5e-bdd5-48b0-81f8-e2775eff9585} - - - {d26e57df-a97e-4ba5-801a-c0c52b5d061f} - - - - - Source Files - - - Source Files - - - Source Files\debug - - - Source Files\Sound Output - - - Source Files\Sound Output - - - Source Files\Sound Output\Linux - - - Source Files\decoder - - - Source Files\SPU2 - - - Source Files\SPU2 - - - Source Files\SPU2 - - - Source Files\SPU2\Mixer - - - Source Files\Winamp DSP - - - Source Files\GUI\Linux\Include - - - Source Files\GUI\Linux\Include - - - Source Files\GUI\Windows - - - Source Files\GUI\Windows - - - Source Files\GUI\Windows - - - Source Files\PluginInterface - - - Resources - - - - - Source Files - - - Source Files\debug - - - Source Files\debug - - - Source Files\debug - - - Source Files\debug - - - Source Files\Sound Output - - - Source Files\Sound Output - - - Source Files\Sound Output - - - Source Files\Sound Output\Windows - - - Source Files\Sound Output\Windows - - - Source Files\Sound Output\Windows - - - Source Files\Sound Output\Linux - - - Source Files\Sound Output\Crossplatform - - - Source Files\SPU2 - - - Source Files\SPU2 - - - Source Files\SPU2 - - - Source Files\SPU2 - - - Source Files\SPU2\Mixer - - - Source Files\SPU2\Mixer - - - Source Files\SPU2\Mixer - - - Source Files\SPU2\Mixer - - - Source Files\Winamp DSP - - - Source Files\GUI\Linux - - - Source Files\GUI\Linux - - - Source Files\GUI\Windows - - - Source Files\GUI\Windows - - - Source Files\GUI\Windows - - - Source Files\GUI\Windows - - - Source Files\GUI\Windows - - - Source Files\GUI\Windows - - - Source Files\GUI\Windows - - - Source Files\GUI\Windows - - - Source Files\PluginInterface - - - Source Files\Sound Output - - - - - Documents - - - Documents - - - Documents - - - Resources - - - Resources - - - Resources - - - - - Resources - - + + + + + {21596259-72f4-41c0-b499-40839e39f043} + h;hpp;cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {30e5b8dd-2015-4c3d-a663-992fb42627b5} + + + {ed4df93e-4e4b-4675-a181-c5084146df7c} + + + {1cb77247-dec9-4a0a-867f-7353b14decac} + + + {f87cf8e1-d654-4214-b7f4-6fb697f3941a} + + + {10ccccc1-642a-42ec-900c-801f707bd776} + + + {03be4765-f627-4c0a-9d40-f3c0f86f1e57} + + + {ea7e8889-2015-40b9-ac77-b4a3a58c41af} + + + {63ac2d88-b5c3-41a3-bd2c-a04c80acd35f} + + + {825046cd-874f-45f4-8622-14c146a97b46} + + + {3924e038-9ec9-4f1c-89b9-6d03c46566ac} + + + {efaf786c-f09d-49f7-b5f3-8bb7078e9c44} + + + {00c53f28-fde8-4f60-88d2-d223584f1db5} + + + {95111121-7e1f-4624-8765-a17e8f13827f} + + + {70e9653e-fba5-4c6e-ad9b-185006096d49} + + + {6fcf6c91-7afe-4ade-bb30-79d63901d590} + + + {381a6e5e-bdd5-48b0-81f8-e2775eff9585} + + + {d26e57df-a97e-4ba5-801a-c0c52b5d061f} + + + + + Source Files + + + Source Files + + + Source Files\debug + + + Source Files\Sound Output + + + Source Files\Sound Output + + + Source Files\Sound Output\Linux + + + Source Files\decoder + + + Source Files\SPU2 + + + Source Files\SPU2 + + + Source Files\SPU2 + + + Source Files\SPU2\Mixer + + + Source Files\Winamp DSP + + + Source Files\GUI\Linux\Include + + + Source Files\GUI\Linux\Include + + + Source Files\GUI\Windows + + + Source Files\GUI\Windows + + + Source Files\GUI\Windows + + + Source Files\PluginInterface + + + Resources + + + + + Source Files + + + Source Files\debug + + + Source Files\debug + + + Source Files\debug + + + Source Files\debug + + + Source Files\Sound Output + + + Source Files\Sound Output + + + Source Files\Sound Output + + + Source Files\Sound Output\Windows + + + Source Files\Sound Output\Windows + + + Source Files\Sound Output\Windows + + + Source Files\Sound Output\Linux + + + Source Files\Sound Output\Crossplatform + + + Source Files\SPU2 + + + Source Files\SPU2 + + + Source Files\SPU2 + + + Source Files\SPU2 + + + Source Files\SPU2\Mixer + + + Source Files\SPU2\Mixer + + + Source Files\SPU2\Mixer + + + Source Files\SPU2\Mixer + + + Source Files\Winamp DSP + + + Source Files\GUI\Linux + + + Source Files\GUI\Linux + + + Source Files\GUI\Windows + + + Source Files\GUI\Windows + + + Source Files\GUI\Windows + + + Source Files\GUI\Windows + + + Source Files\GUI\Windows + + + Source Files\GUI\Windows + + + Source Files\GUI\Windows + + + Source Files\GUI\Windows + + + Source Files\PluginInterface + + + Source Files\Sound Output + + + + + Documents + + + Documents + + + Documents + + + Resources + + + Resources + + + Resources + + + + + Resources + + \ No newline at end of file diff --git a/plugins/xpad/res/xpad.rc2 b/plugins/xpad/res/xpad.rc2 index e4fedae2a0..c6b3aee757 100644 --- a/plugins/xpad/res/xpad.rc2 +++ b/plugins/xpad/res/xpad.rc2 @@ -1,14 +1,14 @@ -// -// xpad.RC2 - resources Microsoft Visual C++ does not edit directly -// - -#ifdef APSTUDIO_INVOKED -#error this file is not editable by Microsoft Visual C++ -#endif //APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// Add manually edited resources here... - - -///////////////////////////////////////////////////////////////////////////// +// +// xpad.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED +#error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + + +///////////////////////////////////////////////////////////////////////////// diff --git a/plugins/xpad/vsprops/ProjectRootDir.props b/plugins/xpad/vsprops/ProjectRootDir.props index 0456ef11c9..b78b467682 100644 --- a/plugins/xpad/vsprops/ProjectRootDir.props +++ b/plugins/xpad/vsprops/ProjectRootDir.props @@ -1,26 +1,26 @@ - - - - $(ProjectDir). - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - plugins - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(ProjectRootDir) - - - $(SvnRootDir) - - - $(SvnCommonDir) - - - $(PcsxSubsection) - - + + + + $(ProjectDir). + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + plugins + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(ProjectRootDir) + + + $(SvnRootDir) + + + $(SvnCommonDir) + + + $(PcsxSubsection) + + \ No newline at end of file diff --git a/plugins/xpad/vsprops/common.props b/plugins/xpad/vsprops/common.props index 6e00a749ca..a061cc9fef 100644 --- a/plugins/xpad/vsprops/common.props +++ b/plugins/xpad/vsprops/common.props @@ -1,29 +1,29 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - - - - true - WIN32;_WINDOWS;_WIN32_WINNT=0x500;%(PreprocessorDefinitions) - Fast - false - Level4 - ProgramDatabase - 4995;4324;%(DisableSpecificWarnings) - $(DXSDK_DIR)include;%(AdditionalIncludeDirectories) - - - d3d10.lib;d3dx10.lib;d3d9.lib;d3dx9.lib;dxguid.lib;winmm.lib;strmiids.lib;xinput.lib;%(AdditionalDependencies) - ..\..\bin\plugins\$(ProjectName).dll - d3d9.dll;d3dx9_43.dll;d3d10.dll;d3dx10_43.dll;%(DelayLoadDLLs) - true - Windows - false - $(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories) - - + + + + <_ProjectFileVersion>10.0.30128.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + true + WIN32;_WINDOWS;_WIN32_WINNT=0x500;%(PreprocessorDefinitions) + Fast + false + Level4 + ProgramDatabase + 4995;4324;%(DisableSpecificWarnings) + $(DXSDK_DIR)include;%(AdditionalIncludeDirectories) + + + d3d10.lib;d3dx10.lib;d3d9.lib;d3dx9.lib;dxguid.lib;winmm.lib;strmiids.lib;xinput.lib;%(AdditionalDependencies) + ..\..\bin\plugins\$(ProjectName).dll + d3d9.dll;d3dx9_43.dll;d3d10.dll;d3dx10_43.dll;%(DelayLoadDLLs) + true + Windows + false + $(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories) + + \ No newline at end of file diff --git a/plugins/xpad/vsprops/debug.props b/plugins/xpad/vsprops/debug.props index e7fbf0688c..f3bc693c29 100644 --- a/plugins/xpad/vsprops/debug.props +++ b/plugins/xpad/vsprops/debug.props @@ -1,16 +1,16 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - true - - - - Disabled - _DEBUG;%(PreprocessorDefinitions) - true - StackFrameRuntimeCheck - MultiThreadedDebugDLL - - + + + + <_ProjectFileVersion>10.0.30128.1 + true + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + true + StackFrameRuntimeCheck + MultiThreadedDebugDLL + + \ No newline at end of file diff --git a/plugins/xpad/vsprops/release.props b/plugins/xpad/vsprops/release.props index c2c34b8f40..b1f648cd51 100644 --- a/plugins/xpad/vsprops/release.props +++ b/plugins/xpad/vsprops/release.props @@ -1,25 +1,25 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - false - - - - MaxSpeed - AnySuitable - true - Speed - true - true - NDEBUG;_SECURE_SCL=0;%(PreprocessorDefinitions) - true - MultiThreadedDLL - false - - - true - true - - + + + + <_ProjectFileVersion>10.0.30128.1 + false + + + + MaxSpeed + AnySuitable + true + Speed + true + true + NDEBUG;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + + + true + true + + \ No newline at end of file diff --git a/plugins/xpad/vsprops/sse2.props b/plugins/xpad/vsprops/sse2.props index 0d00e53dc7..d44efb76ce 100644 --- a/plugins/xpad/vsprops/sse2.props +++ b/plugins/xpad/vsprops/sse2.props @@ -1,12 +1,12 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - - - - StreamingSIMDExtensions2 - _M_SSE=0x200;%(PreprocessorDefinitions) - - + + + + <_ProjectFileVersion>10.0.30128.1 + + + + StreamingSIMDExtensions2 + _M_SSE=0x200;%(PreprocessorDefinitions) + + \ No newline at end of file diff --git a/plugins/xpad/vsprops/sse4.props b/plugins/xpad/vsprops/sse4.props index 2cf2b9d740..11f7adcb54 100644 --- a/plugins/xpad/vsprops/sse4.props +++ b/plugins/xpad/vsprops/sse4.props @@ -1,12 +1,12 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - - - - _M_SSE=0x401;%(PreprocessorDefinitions) - StreamingSIMDExtensions2 - - + + + + <_ProjectFileVersion>10.0.30128.1 + + + + _M_SSE=0x401;%(PreprocessorDefinitions) + StreamingSIMDExtensions2 + + \ No newline at end of file diff --git a/plugins/xpad/vsprops/ssse3.props b/plugins/xpad/vsprops/ssse3.props index c3e75d766a..7afc002f82 100644 --- a/plugins/xpad/vsprops/ssse3.props +++ b/plugins/xpad/vsprops/ssse3.props @@ -1,13 +1,13 @@ - - - - <_ProjectFileVersion>10.0.30128.1 - <_PropertySheetDisplayName>sse3 - - - - StreamingSIMDExtensions2 - _M_SSE=0x301;%(PreprocessorDefinitions) - - + + + + <_ProjectFileVersion>10.0.30128.1 + <_PropertySheetDisplayName>sse3 + + + + StreamingSIMDExtensions2 + _M_SSE=0x301;%(PreprocessorDefinitions) + + \ No newline at end of file diff --git a/plugins/xpad/xpad.def b/plugins/xpad/xpad.def index 3c51252c49..f617189147 100644 --- a/plugins/xpad/xpad.def +++ b/plugins/xpad/xpad.def @@ -1,26 +1,26 @@ -; xpad.def : Declares the module parameters for the DLL. - -LIBRARY "xpad" - -EXPORTS - ; Explicit exports can go here - PSEgetLibType - PSEgetLibName - PSEgetLibVersion - PS2EgetLibType - PS2EgetLibName - PS2EgetLibVersion2 - PADinit - PADshutdown - PADopen - PADclose - PADkeyEvent - PADstartPoll - PADpoll - PADquery - PADconfigure - PADtest - PADabout - PADreadPort - PADreadPort1 - PADreadPort2 +; xpad.def : Declares the module parameters for the DLL. + +LIBRARY "xpad" + +EXPORTS + ; Explicit exports can go here + PSEgetLibType + PSEgetLibName + PSEgetLibVersion + PS2EgetLibType + PS2EgetLibName + PS2EgetLibVersion2 + PADinit + PADshutdown + PADopen + PADclose + PADkeyEvent + PADstartPoll + PADpoll + PADquery + PADconfigure + PADtest + PADabout + PADreadPort + PADreadPort1 + PADreadPort2 diff --git a/plugins/xpad/xpad.props b/plugins/xpad/xpad.props index 721abc667d..12c5aca34f 100644 --- a/plugins/xpad/xpad.props +++ b/plugins/xpad/xpad.props @@ -1,16 +1,16 @@ - - - - - <_PropertySheetDisplayName>xpad - - - - xinput.lib;%(AdditionalDependencies) - - - "$(SolutionDir)common\vsprops\preBuild.cmd" "$(ProjectDir)." - - - + + + + + <_PropertySheetDisplayName>xpad + + + + xinput.lib;%(AdditionalDependencies) + + + "$(SolutionDir)common\vsprops\preBuild.cmd" "$(ProjectDir)." + + + \ No newline at end of file diff --git a/plugins/xpad/xpad.rc b/plugins/xpad/xpad.rc index 19d5c3c725..b1187f5c1e 100644 --- a/plugins/xpad/xpad.rc +++ b/plugins/xpad/xpad.rc @@ -1,151 +1,151 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Hungarian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_HUN) -#ifdef _WIN32 -LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT -#pragma code_page(1250) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "#define _AFX_NO_SPLITTER_RESOURCES\r\n" - "#define _AFX_NO_OLE_RESOURCES\r\n" - "#define _AFX_NO_TRACKER_RESOURCES\r\n" - "#define _AFX_NO_PROPERTY_RESOURCES\r\n" - "\r\n" - "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" - "LANGUAGE 9, 1\r\n" - "#pragma code_page(1252)\r\n" - "#include ""res\\xpad.rc2"" // non-Microsoft Visual C++ edited resources\r\n" - "#endif\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // Hungarian resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,0 - PRODUCTVERSION 1,0,0,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "Comments", "http://guliverkli.sf.net/" - VALUE "CompanyName", "Gabest" - VALUE "FileDescription", "XInput PAD plugin for ps2 emulators" - VALUE "FileVersion", "1, 0, 0, 0" - VALUE "InternalName", "xpad.dll" - VALUE "LegalCopyright", "Copyright (c) 2007-2008 Gabest. All rights reserved." - VALUE "OriginalFilename", "xpad.dll" - VALUE "ProductName", "xpad" - VALUE "ProductVersion", "1, 0, 0, 0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// -#define _AFX_NO_SPLITTER_RESOURCES -#define _AFX_NO_OLE_RESOURCES -#define _AFX_NO_TRACKER_RESOURCES -#define _AFX_NO_PROPERTY_RESOURCES - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE 9, 1 -#pragma code_page(1252) -#include "res\xpad.rc2" // non-Microsoft Visual C++ edited resources -#endif - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Hungarian resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_HUN) +#ifdef _WIN32 +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT +#pragma code_page(1250) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#include ""res\\xpad.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // Hungarian resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,0 + PRODUCTVERSION 1,0,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "Comments", "http://guliverkli.sf.net/" + VALUE "CompanyName", "Gabest" + VALUE "FileDescription", "XInput PAD plugin for ps2 emulators" + VALUE "FileVersion", "1, 0, 0, 0" + VALUE "InternalName", "xpad.dll" + VALUE "LegalCopyright", "Copyright (c) 2007-2008 Gabest. All rights reserved." + VALUE "OriginalFilename", "xpad.dll" + VALUE "ProductName", "xpad" + VALUE "ProductVersion", "1, 0, 0, 0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE 9, 1 +#pragma code_page(1252) +#include "res\xpad.rc2" // non-Microsoft Visual C++ edited resources +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/xpad/xpad_vs2012.vcxproj b/plugins/xpad/xpad_vs2012.vcxproj index d29a637401..3123debe3f 100644 --- a/plugins/xpad/xpad_vs2012.vcxproj +++ b/plugins/xpad/xpad_vs2012.vcxproj @@ -1,586 +1,586 @@ - - - - - Debug SSE2 - Win32 - - - Debug SSE2 - x64 - - - Debug SSE4 - Win32 - - - Debug SSE4 - x64 - - - Debug SSSE3 - Win32 - - - Debug SSSE3 - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release SSE2 - Win32 - - - Release SSE2 - x64 - - - Release SSE4 - Win32 - - - Release SSE4 - x64 - - - Release SSSE3 - Win32 - - - Release SSSE3 - x64 - - - Release - Win32 - - - Release - x64 - - - Template - Win32 - - - Template - x64 - - - - xpad - {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A} - xpad - Win32Proj - - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - false - MultiByte - v110_xp - - - DynamicLibrary - false - MultiByte - v110_xp - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - false - MultiByte - v110_xp - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - false - MultiByte - v110_xp - - - Application - v110_xp - - - DynamicLibrary - Static - MultiByte - true - v110_xp - - - DynamicLibrary - Static - MultiByte - v110_xp - - - DynamicLibrary - Static - MultiByte - v110_xp - - - DynamicLibrary - Static - MultiByte - true - v110_xp - - - DynamicLibrary - Static - MultiByte - true - v110_xp - - - DynamicLibrary - Static - MultiByte - false - v110_xp - - - DynamicLibrary - Static - MultiByte - true - v110_xp - - - DynamicLibrary - Static - MultiByte - v110_xp - - - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(ProjectName)-dbg - $(ProjectName)-dbg - $(ProjectName)-dbg - $(ProjectName)-dbg - - - - Use - - - .\xpad.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - X64 - - - Use - - - - - - - MachineX64 - - - - - Use - - - .\xpad.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - X64 - - - Use - - - - - - - MachineX64 - - - - - Use - - - .\xpad.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - Use - - - - - MachineX64 - - - - - Use - - - .\xpad.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - Use - - - - - MachineX64 - - - - - Use - - - .\xpad.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - Use - - - - - MachineX64 - - - - - Use - - - .\xpad.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - Use - - - - - MachineX64 - - - - - Use - - - .\xpad.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - X64 - - - Use - - - - - MachineX64 - - - - - Use - - - .\xpad.def - - - - - MachineX86 - $(OutDir)$(TargetName)$(TargetExt) - - - - - X64 - - - Use - - - - - MachineX64 - - - - - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug SSE2 + Win32 + + + Debug SSE2 + x64 + + + Debug SSE4 + Win32 + + + Debug SSE4 + x64 + + + Debug SSSE3 + Win32 + + + Debug SSSE3 + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release SSE2 + Win32 + + + Release SSE2 + x64 + + + Release SSE4 + Win32 + + + Release SSE4 + x64 + + + Release SSSE3 + Win32 + + + Release SSSE3 + x64 + + + Release + Win32 + + + Release + x64 + + + Template + Win32 + + + Template + x64 + + + + xpad + {6F3C4136-5801-4EBC-AC6E-37DF6FAB150A} + xpad + Win32Proj + + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + false + MultiByte + v110_xp + + + DynamicLibrary + false + MultiByte + v110_xp + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + false + MultiByte + v110_xp + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + false + MultiByte + v110_xp + + + Application + v110_xp + + + DynamicLibrary + Static + MultiByte + true + v110_xp + + + DynamicLibrary + Static + MultiByte + v110_xp + + + DynamicLibrary + Static + MultiByte + v110_xp + + + DynamicLibrary + Static + MultiByte + true + v110_xp + + + DynamicLibrary + Static + MultiByte + true + v110_xp + + + DynamicLibrary + Static + MultiByte + false + v110_xp + + + DynamicLibrary + Static + MultiByte + true + v110_xp + + + DynamicLibrary + Static + MultiByte + v110_xp + + + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(ProjectName)-dbg + $(ProjectName)-dbg + $(ProjectName)-dbg + $(ProjectName)-dbg + + + + Use + + + .\xpad.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + X64 + + + Use + + + + + + + MachineX64 + + + + + Use + + + .\xpad.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + X64 + + + Use + + + + + + + MachineX64 + + + + + Use + + + .\xpad.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + Use + + + + + MachineX64 + + + + + Use + + + .\xpad.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + Use + + + + + MachineX64 + + + + + Use + + + .\xpad.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + Use + + + + + MachineX64 + + + + + Use + + + .\xpad.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + Use + + + + + MachineX64 + + + + + Use + + + .\xpad.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + X64 + + + Use + + + + + MachineX64 + + + + + Use + + + .\xpad.def + + + + + MachineX86 + $(OutDir)$(TargetName)$(TargetExt) + + + + + X64 + + + Use + + + + + MachineX64 + + + + + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/xpad/xpad_vs2012.vcxproj.filters b/plugins/xpad/xpad_vs2012.vcxproj.filters index afd67733b7..4495487c02 100644 --- a/plugins/xpad/xpad_vs2012.vcxproj.filters +++ b/plugins/xpad/xpad_vs2012.vcxproj.filters @@ -1,52 +1,52 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - - - Source Files - - - Resource Files - - - - - Header Files - - - Header Files - - - Header Files - - - Resource Files - - - - - Resource Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + + + Source Files + + + Resource Files + + + + + Header Files + + + Header Files + + + Header Files + + + Resource Files + + + + + Resource Files + + \ No newline at end of file diff --git a/plugins/zerogs/dx/Windows/GSsoftdx.def b/plugins/zerogs/dx/Windows/GSsoftdx.def index 6e882957b0..bf2d12e899 100644 --- a/plugins/zerogs/dx/Windows/GSsoftdx.def +++ b/plugins/zerogs/dx/Windows/GSsoftdx.def @@ -1,36 +1,36 @@ -; Declares the module parameters for the DLL. - -;LIBRARY "ZeroGS" - -EXPORTS - ; Explicit exports can go here - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - GSinit @5 - GSshutdown @6 - GSopen @7 - GSclose @8 - GSgifTransfer1 @13 - GSgifTransfer2 @14 - GSgifTransfer3 @15 - GSreadFIFO @16 - GSvsync @17 - GSmakeSnapshot @18 - GSkeyEvent @19 - GSfreeze @20 - GSconfigure @21 - GStest @22 - GSabout @23 - GSreadFIFO2 @28 - GSirqCallback @29 - GSsetBaseMem @30 - GSwriteCSR @31 - GSchangeSaveState @32 - GSreset @33 - GSgifSoftReset @34 - GSsetFrameSkip @35 - GSsetGameCRC @36 - GSgetLastTag @37 - GSsetupRecording @38 +; Declares the module parameters for the DLL. + +;LIBRARY "ZeroGS" + +EXPORTS + ; Explicit exports can go here + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + GSinit @5 + GSshutdown @6 + GSopen @7 + GSclose @8 + GSgifTransfer1 @13 + GSgifTransfer2 @14 + GSgifTransfer3 @15 + GSreadFIFO @16 + GSvsync @17 + GSmakeSnapshot @18 + GSkeyEvent @19 + GSfreeze @20 + GSconfigure @21 + GStest @22 + GSabout @23 + GSreadFIFO2 @28 + GSirqCallback @29 + GSsetBaseMem @30 + GSwriteCSR @31 + GSchangeSaveState @32 + GSreset @33 + GSgifSoftReset @34 + GSsetFrameSkip @35 + GSsetGameCRC @36 + GSgetLastTag @37 + GSsetupRecording @38 GSsetSettingsDir @39 \ No newline at end of file diff --git a/plugins/zerogs/dx/Windows/plugin.def b/plugins/zerogs/dx/Windows/plugin.def index 49ad02b7dc..048a3b25a8 100644 --- a/plugins/zerogs/dx/Windows/plugin.def +++ b/plugins/zerogs/dx/Windows/plugin.def @@ -1,31 +1,31 @@ -EXPORTS - GSabout = GSabout@0 @90 - GSclose = GSclose@0 @91 - GSconfigure = GSconfigure@0 @92 - GSfreeze = GSfreeze@8 @93 - GSgetDriverInfo = GSgetDriverInfo@4 @94 - GSgifTransfer1 = GSgifTransfer1@8 @95 - GSgifTransfer2 = GSgifTransfer2@8 @96 - GSgifTransfer3 = GSgifTransfer3@8 @97 - GSinit = GSinit@0 @99 - GSirqCallback = GSirqCallback@4 @101 - GSkeyEvent = GSkeyEvent@4 @102 - GSmakeSnapshot = GSmakeSnapshot@4 @103 - GSopen = GSopen@8 @104 - GSprintf = GSprintf@0 @105 - GSread16 = GSread16@4 @106 - GSread32 = GSread32@4 @107 - GSread64 = GSread64@4 @108 - GSread8 = GSread8@4 @109 - GSreadFIFO = GSreadFIFO@4 @110 - GSreset @111 - GSshutdown = GSshutdown@0 @112 - GStest = GStest@0 @113 - GSvsync = GSvsync@0 @115 - GSwrite16 = GSwrite16@8 @117 - GSwrite32 = GSwrite32@8 @118 - GSwrite64 = GSwrite64@12 @119 - GSwrite8 = GSwrite8@8 @120 - PS2EgetLibName = PS2EgetLibName@0 @128 - PS2EgetLibType = PS2EgetLibType@0 @129 - PS2EgetLibVersion2 = PS2EgetLibVersion2@4 @130 +EXPORTS + GSabout = GSabout@0 @90 + GSclose = GSclose@0 @91 + GSconfigure = GSconfigure@0 @92 + GSfreeze = GSfreeze@8 @93 + GSgetDriverInfo = GSgetDriverInfo@4 @94 + GSgifTransfer1 = GSgifTransfer1@8 @95 + GSgifTransfer2 = GSgifTransfer2@8 @96 + GSgifTransfer3 = GSgifTransfer3@8 @97 + GSinit = GSinit@0 @99 + GSirqCallback = GSirqCallback@4 @101 + GSkeyEvent = GSkeyEvent@4 @102 + GSmakeSnapshot = GSmakeSnapshot@4 @103 + GSopen = GSopen@8 @104 + GSprintf = GSprintf@0 @105 + GSread16 = GSread16@4 @106 + GSread32 = GSread32@4 @107 + GSread64 = GSread64@4 @108 + GSread8 = GSread8@4 @109 + GSreadFIFO = GSreadFIFO@4 @110 + GSreset @111 + GSshutdown = GSshutdown@0 @112 + GStest = GStest@0 @113 + GSvsync = GSvsync@0 @115 + GSwrite16 = GSwrite16@8 @117 + GSwrite32 = GSwrite32@8 @118 + GSwrite64 = GSwrite64@12 @119 + GSwrite8 = GSwrite8@8 @120 + PS2EgetLibName = PS2EgetLibName@0 @128 + PS2EgetLibType = PS2EgetLibType@0 @129 + PS2EgetLibVersion2 = PS2EgetLibVersion2@4 @130 diff --git a/plugins/zerogs/dx/Windows/zerogs.rc b/plugins/zerogs/dx/Windows/zerogs.rc index 20b7958b23..46bc7b0cd8 100644 --- a/plugins/zerogs/dx/Windows/zerogs.rc +++ b/plugins/zerogs/dx/Windows/zerogs.rc @@ -1,233 +1,233 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resrc1.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "resource.h" -#include "afxresmw.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_ZEROGSLOGO BITMAP "zerogs.bmp" - -///////////////////////////////////////////////////////////////////////////// -// -// RCDATA -// - -IDR_SHADERS RCDATA "ps2fx.dat" - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOGEX 0, 0, 427, 385 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - CONTROL "Interlace Enable (toggle with F5)\n there are 2 modes + interlace off",IDC_CONFIG_INTERLACE, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,7,134,18 - CONTROL "Bilinear Filtering (Shift+F5)\n Best quality is on, turn off for speed.",IDC_CONFIG_BILINEAR, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,31,135,18 - CONTROL "None",IDC_CONFIG_AANONE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,19,92,34,11 - CONTROL "2X",IDC_CONFIG_AA2,"Button",BS_AUTORADIOBUTTON,69,92,26,11 - CONTROL "4X",IDC_CONFIG_AA4,"Button",BS_AUTORADIOBUTTON,111,92,28,11 - CONTROL "8X",IDC_CONFIG_AA8,"Button",BS_AUTORADIOBUTTON,69,108,26,11 - CONTROL "16X",IDC_CONFIG_AA16,"Button",BS_AUTORADIOBUTTON,111,108,28,11 - CONTROL "Wireframe rendering (F7)",IDC_CONFIG_WIREFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,129,93,10 - CONTROL "Capture Avi (zerogs.avi) (F12)",IDC_CONFIG_CAPTUREAVI, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,145,109,10 - CONTROL "Save Snapshots as BMPs (default is JPG)",IDC_CONFIG_BMPSS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,162,147,10 - CONTROL "Fullscreen (Alt+Enter)\n to get out press Alt+Enter again",IDC_CONFIG_FULLSCREEN, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,178,146,17 - CONTROL "640 x 480",IDC_CONF_WIN640,"Button",BS_AUTORADIOBUTTON | WS_GROUP,15,233,59,8 - CONTROL "800 x 600",IDC_CONF_WIN800,"Button",BS_AUTORADIOBUTTON,78,233,59,8 - CONTROL "1024 x 768",IDC_CONF_WIN1024,"Button",BS_AUTORADIOBUTTON,15,246,59,8 - CONTROL "1280 x 960",IDC_CONF_WIN1280,"Button",BS_AUTORADIOBUTTON,78,246,59,8 - CONTROL "960 x 540",IDC_CONF_WIN960W,"Button",BS_AUTORADIOBUTTON,14,270,53,8 - CONTROL "1280 x 720",IDC_CONF_WIN1280W,"Button",BS_AUTORADIOBUTTON,77,270,53,8 - CONTROL "1920 x 1080",IDC_CONF_WIN1920W,"Button",BS_AUTORADIOBUTTON,14,283,53,8 - DEFPUSHBUTTON "OK",IDOK,7,364,50,14 - PUSHBUTTON "Cancel",IDCANCEL,94,364,50,14 - GROUPBOX "Anti-aliasing for sharper graphics",IDC_STATIC,7,57,136,66 - GROUPBOX "Default Window Size (no speed impact)",IDC_STATIC,7,223,141,76 - LTEXT "Show Frames Per Second (Shift+F7)",IDC_STATIC,7,314,140,10 - GROUPBOX "Advanced Options",IDC_STATIC,152,7,268,371 - LTEXT "Each option is presented with a unique ID in hex. In order to preserve options across games, go into the game's patch (.pnach) file and type\n zerogs=IDS\nwhere IDS is the OR all of the values in hex for every option you want enabled. ",IDC_STATIC,161,16,252,33 - PUSHBUTTON "Use Defaults (recommended)",IDC_CONF_DEFAULT,159,76,151,14 - CONTROL "Disable alpha testing - 00080000",IDC_CONFOPT_00080000, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,104,119,10 - CONTROL "Disable stencil buffer - 00002000\nusually safe to do for simple scenes",IDC_CONFOPT_00002000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,159,114,118,22 - CONTROL "No target CLUT - 00001000\n(use on RE4, or foggy scenes)",IDC_CONFOPT_00001000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,169,120,24 - CONTROL "Disable depth updates - 00000200",IDC_CONFOPT_00000200, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,161,125,10 - CONTROL "FFX hack - 00000080\nshows missing geometry",IDC_CONFOPT_00000080, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,190,121,17 - CONTROL "Exact color testing - 00000020\nfixes overbright or shadow/black artifacts (crash n burn)",IDC_CONFOPT_00000020, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,209,119,25 - CONTROL "Tex Target checking - 00000001\nlego racers",IDC_CONFOPT_00000001, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,233,123,22 - CONTROL "Interlace 2X - 00000004\nfixes 2x bigger screen (gradius3)",IDC_CONFOPT_00000004, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,254,119,20 - CONTROL "32 bit render targets - 00200000",IDC_CONFOPT_00200000, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,285,93,117,10 - CONTROL "No Vertical Stripes - 00004000\n try when there's a lot of garbage on screen",IDC_CONFOPT_00004000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,138,111,28 - CONTROL "No depth resolve - 00008000\nmight give z buffer artifacts",IDC_CONFOPT_00008000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,164,121,19 - CONTROL "full 16 bit resolution - 00010000\nuse when half the screen is missing, etc",IDC_CONFOPT_00010000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,185,125,23 - CONTROL "Auto Reset Targs - 00000002\nshadow hearts, samurai warriors (use when game is slow and toggling AA fixes it)",IDC_CONFOPT_00000002, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,283,212,124,32 - CONTROL "Tex Alpha Hack - 00000008\nnightmare before christmas",IDC_CONFOPT_00000008, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,286,252,125,17 - EDITTEXT IDC_CONFOPT_IDS,372,364,48,14,ES_AUTOHSCROLL | ES_READONLY - CONTROL "Resolve Hack #1 - 00000400\nspeeds some games (kingdom hearts)",IDC_CONFOPT_00000400, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,270,135,19 - CONTROL "Resolve Hack #2 - 00000800\nshadow hearts, urbz",IDC_CONFOPT_00000800, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,276,117,17 - CONTROL "Resolve Hack #3 - 00020000\nneopets",IDC_CONFOPT_00020000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,292,125,17 - CONTROL "Fast Update - 00040000\nspeeds some games (okami)",IDC_CONFOPT_00040000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,297,125,17 - PUSHBUTTON "Compute OR of IDS",IDC_CONFOPT_COMPUTEOR,287,364,73,14 - LTEXT "Important options are listed first. Note, setting option here means that they will be ADDED to whatever options are set in each pnach file.",IDC_STATIC,159,50,252,23 - CONTROL "No target resolves - 00000010\nStops all resolving of targets (try this first for really slow games)",IDC_CONFOPT_00000010, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,104,111,33 - CONTROL "Disable Multiple RTs - 00100000",IDC_CONFOPT_00100000, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,91,119,10 - CONTROL "No color clamping - 00000040\nSpeeds games up but might be too bright or too dim",IDC_CONFOPT_00000040, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,157,137,123,22 - CONTROL "Specular Highlights - 01000000\nMakes xenosaga graphics faster by removing highlights",IDC_CONFOPT_01000000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,313,125,25 - CONTROL "Partial Targets - 02000000\nReduces artifacts and speeds up some games (mgs3)",IDC_CONFOPT_02000000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,319,125,24 - CONTROL "Partial Depth - 04000000\nTries to save the depth target as much as possible (mgs3)",IDC_CONFOPT_04000000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,159,347,125,24 - LTEXT "shortcuts: F6 - next, Shift+F6 - prev",IDC_STATIC,24,71,116,11 - CONTROL "16:9 widescreen (Shift+F9)",IDC_CONFIG_WIDESCREEN, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,199,146,17 - LTEXT "Widescreen:",IDC_STATIC,14,257,89,11 - CONTROL "Relaxed Depth - 08000000\nMight show hidden sprites (xenosaga text)",IDC_CONFOPT_08000000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,338,125,25 -END - -IDD_ABOUT DIALOGEX 0, 0, 182, 78 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "About ZeroGS KSOMOS...." -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,65,57,50,14 - LTEXT "ZeroGS v0.97.1",IDC_STATIC,7,7,160,11 - LTEXT "Thanks to Gabest for some SSE optimizations",IDC_ABOUTTEXT,7,39,152,12 - LTEXT "Author: zerofrog(@gmail.com)",IDC_STATIC,8,23,144,14 -END - -IDD_LOGGING DIALOG 0, 0, 152, 55 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Dialog" -FONT 8, "MS Sans Serif" -BEGIN - DEFPUSHBUTTON "OK",IDOK,40,35,50,14 - PUSHBUTTON "Cancel",IDCANCEL,95,35,50,14 - CONTROL "Log",IDC_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,15,28,10 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 420 - TOPMARGIN, 7 - BOTTOMMARGIN, 378 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 175 - TOPMARGIN, 7 - BOTTOMMARGIN, 71 - END - - IDD_LOGGING, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 145 - TOPMARGIN, 7 - BOTTOMMARGIN, 48 - END -END -#endif // APSTUDIO_INVOKED - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resrc1.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""resource.h""\r\n" - "#include ""afxresmw.h""\r\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resrc1.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "resource.h" +#include "afxresmw.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_ZEROGSLOGO BITMAP "zerogs.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// RCDATA +// + +IDR_SHADERS RCDATA "ps2fx.dat" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 427, 385 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + CONTROL "Interlace Enable (toggle with F5)\n there are 2 modes + interlace off",IDC_CONFIG_INTERLACE, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,7,134,18 + CONTROL "Bilinear Filtering (Shift+F5)\n Best quality is on, turn off for speed.",IDC_CONFIG_BILINEAR, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,31,135,18 + CONTROL "None",IDC_CONFIG_AANONE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,19,92,34,11 + CONTROL "2X",IDC_CONFIG_AA2,"Button",BS_AUTORADIOBUTTON,69,92,26,11 + CONTROL "4X",IDC_CONFIG_AA4,"Button",BS_AUTORADIOBUTTON,111,92,28,11 + CONTROL "8X",IDC_CONFIG_AA8,"Button",BS_AUTORADIOBUTTON,69,108,26,11 + CONTROL "16X",IDC_CONFIG_AA16,"Button",BS_AUTORADIOBUTTON,111,108,28,11 + CONTROL "Wireframe rendering (F7)",IDC_CONFIG_WIREFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,129,93,10 + CONTROL "Capture Avi (zerogs.avi) (F12)",IDC_CONFIG_CAPTUREAVI, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,145,109,10 + CONTROL "Save Snapshots as BMPs (default is JPG)",IDC_CONFIG_BMPSS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,162,147,10 + CONTROL "Fullscreen (Alt+Enter)\n to get out press Alt+Enter again",IDC_CONFIG_FULLSCREEN, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,178,146,17 + CONTROL "640 x 480",IDC_CONF_WIN640,"Button",BS_AUTORADIOBUTTON | WS_GROUP,15,233,59,8 + CONTROL "800 x 600",IDC_CONF_WIN800,"Button",BS_AUTORADIOBUTTON,78,233,59,8 + CONTROL "1024 x 768",IDC_CONF_WIN1024,"Button",BS_AUTORADIOBUTTON,15,246,59,8 + CONTROL "1280 x 960",IDC_CONF_WIN1280,"Button",BS_AUTORADIOBUTTON,78,246,59,8 + CONTROL "960 x 540",IDC_CONF_WIN960W,"Button",BS_AUTORADIOBUTTON,14,270,53,8 + CONTROL "1280 x 720",IDC_CONF_WIN1280W,"Button",BS_AUTORADIOBUTTON,77,270,53,8 + CONTROL "1920 x 1080",IDC_CONF_WIN1920W,"Button",BS_AUTORADIOBUTTON,14,283,53,8 + DEFPUSHBUTTON "OK",IDOK,7,364,50,14 + PUSHBUTTON "Cancel",IDCANCEL,94,364,50,14 + GROUPBOX "Anti-aliasing for sharper graphics",IDC_STATIC,7,57,136,66 + GROUPBOX "Default Window Size (no speed impact)",IDC_STATIC,7,223,141,76 + LTEXT "Show Frames Per Second (Shift+F7)",IDC_STATIC,7,314,140,10 + GROUPBOX "Advanced Options",IDC_STATIC,152,7,268,371 + LTEXT "Each option is presented with a unique ID in hex. In order to preserve options across games, go into the game's patch (.pnach) file and type\n zerogs=IDS\nwhere IDS is the OR all of the values in hex for every option you want enabled. ",IDC_STATIC,161,16,252,33 + PUSHBUTTON "Use Defaults (recommended)",IDC_CONF_DEFAULT,159,76,151,14 + CONTROL "Disable alpha testing - 00080000",IDC_CONFOPT_00080000, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,104,119,10 + CONTROL "Disable stencil buffer - 00002000\nusually safe to do for simple scenes",IDC_CONFOPT_00002000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,159,114,118,22 + CONTROL "No target CLUT - 00001000\n(use on RE4, or foggy scenes)",IDC_CONFOPT_00001000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,169,120,24 + CONTROL "Disable depth updates - 00000200",IDC_CONFOPT_00000200, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,161,125,10 + CONTROL "FFX hack - 00000080\nshows missing geometry",IDC_CONFOPT_00000080, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,190,121,17 + CONTROL "Exact color testing - 00000020\nfixes overbright or shadow/black artifacts (crash n burn)",IDC_CONFOPT_00000020, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,209,119,25 + CONTROL "Tex Target checking - 00000001\nlego racers",IDC_CONFOPT_00000001, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,233,123,22 + CONTROL "Interlace 2X - 00000004\nfixes 2x bigger screen (gradius3)",IDC_CONFOPT_00000004, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,254,119,20 + CONTROL "32 bit render targets - 00200000",IDC_CONFOPT_00200000, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,285,93,117,10 + CONTROL "No Vertical Stripes - 00004000\n try when there's a lot of garbage on screen",IDC_CONFOPT_00004000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,138,111,28 + CONTROL "No depth resolve - 00008000\nmight give z buffer artifacts",IDC_CONFOPT_00008000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,164,121,19 + CONTROL "full 16 bit resolution - 00010000\nuse when half the screen is missing, etc",IDC_CONFOPT_00010000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,185,125,23 + CONTROL "Auto Reset Targs - 00000002\nshadow hearts, samurai warriors (use when game is slow and toggling AA fixes it)",IDC_CONFOPT_00000002, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,283,212,124,32 + CONTROL "Tex Alpha Hack - 00000008\nnightmare before christmas",IDC_CONFOPT_00000008, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,286,252,125,17 + EDITTEXT IDC_CONFOPT_IDS,372,364,48,14,ES_AUTOHSCROLL | ES_READONLY + CONTROL "Resolve Hack #1 - 00000400\nspeeds some games (kingdom hearts)",IDC_CONFOPT_00000400, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,270,135,19 + CONTROL "Resolve Hack #2 - 00000800\nshadow hearts, urbz",IDC_CONFOPT_00000800, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,276,117,17 + CONTROL "Resolve Hack #3 - 00020000\nneopets",IDC_CONFOPT_00020000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,292,125,17 + CONTROL "Fast Update - 00040000\nspeeds some games (okami)",IDC_CONFOPT_00040000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,297,125,17 + PUSHBUTTON "Compute OR of IDS",IDC_CONFOPT_COMPUTEOR,287,364,73,14 + LTEXT "Important options are listed first. Note, setting option here means that they will be ADDED to whatever options are set in each pnach file.",IDC_STATIC,159,50,252,23 + CONTROL "No target resolves - 00000010\nStops all resolving of targets (try this first for really slow games)",IDC_CONFOPT_00000010, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,104,111,33 + CONTROL "Disable Multiple RTs - 00100000",IDC_CONFOPT_00100000, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,91,119,10 + CONTROL "No color clamping - 00000040\nSpeeds games up but might be too bright or too dim",IDC_CONFOPT_00000040, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,157,137,123,22 + CONTROL "Specular Highlights - 01000000\nMakes xenosaga graphics faster by removing highlights",IDC_CONFOPT_01000000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,313,125,25 + CONTROL "Partial Targets - 02000000\nReduces artifacts and speeds up some games (mgs3)",IDC_CONFOPT_02000000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,319,125,24 + CONTROL "Partial Depth - 04000000\nTries to save the depth target as much as possible (mgs3)",IDC_CONFOPT_04000000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,159,347,125,24 + LTEXT "shortcuts: F6 - next, Shift+F6 - prev",IDC_STATIC,24,71,116,11 + CONTROL "16:9 widescreen (Shift+F9)",IDC_CONFIG_WIDESCREEN, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,199,146,17 + LTEXT "Widescreen:",IDC_STATIC,14,257,89,11 + CONTROL "Relaxed Depth - 08000000\nMight show hidden sprites (xenosaga text)",IDC_CONFOPT_08000000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,338,125,25 +END + +IDD_ABOUT DIALOGEX 0, 0, 182, 78 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About ZeroGS KSOMOS...." +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,65,57,50,14 + LTEXT "ZeroGS v0.97.1",IDC_STATIC,7,7,160,11 + LTEXT "Thanks to Gabest for some SSE optimizations",IDC_ABOUTTEXT,7,39,152,12 + LTEXT "Author: zerofrog(@gmail.com)",IDC_STATIC,8,23,144,14 +END + +IDD_LOGGING DIALOG 0, 0, 152, 55 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Dialog" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",IDOK,40,35,50,14 + PUSHBUTTON "Cancel",IDCANCEL,95,35,50,14 + CONTROL "Log",IDC_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,15,28,10 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 420 + TOPMARGIN, 7 + BOTTOMMARGIN, 378 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 175 + TOPMARGIN, 7 + BOTTOMMARGIN, 71 + END + + IDD_LOGGING, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 145 + TOPMARGIN, 7 + BOTTOMMARGIN, 48 + END +END +#endif // APSTUDIO_INVOKED + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resrc1.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""resource.h""\r\n" + "#include ""afxresmw.h""\r\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/zerogs/dx/Windows/zerogs_vs2012.vcxproj b/plugins/zerogs/dx/Windows/zerogs_vs2012.vcxproj index 0dae19a784..9912d83ac7 100644 --- a/plugins/zerogs/dx/Windows/zerogs_vs2012.vcxproj +++ b/plugins/zerogs/dx/Windows/zerogs_vs2012.vcxproj @@ -1,207 +1,207 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - ZeroGS - {5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8} - ZeroGS - - - - DynamicLibrary - false - MultiByte - true - v110_xp - - - DynamicLibrary - MultiByte - v110_xp - - - DynamicLibrary - false - MultiByte - false - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - false - $(ProjectName)-dev - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Release/GSsoftdx.tlb - - - - - $(DXSDK_DIR)include;..\x86\;..\..\ZeroGSShaders\;%(AdditionalIncludeDirectories) - NDEBUG;_USRDLL;__i386__;ZEROGS_DEVBUILD;ZEROGS_SSE2;%(PreprocessorDefinitions) - .\Release/GSsoftdx.pch - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - dxerr.lib;dxguid.lib;d3dx9.lib;d3d9.lib;odbc32.lib;odbccp32.lib;winmm.lib;Vfw32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - true - ..\;$(DXSDK_DIR)lib\x86;%(AdditionalLibraryDirectories) - .\GSsoftdx.def - false - MachineX86 - false - - - - - $(DXSDK_DIR)include;..\x86\;..\..\ZeroGSShaders\;%(AdditionalIncludeDirectories) - D3D_DEBUG_INFO;_USRDLL;__i386__;ZEROGS_DEVBUILD;ZEROGS_SSE2;%(PreprocessorDefinitions) - EditAndContinue - - - dxerr.lib;dxguid.lib;d3dx9.lib;d3d9.lib;odbc32.lib;odbccp32.lib;winmm.lib;Vfw32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\;$(DXSDK_DIR)lib\x86;%(AdditionalLibraryDirectories) - %(IgnoreSpecificDefaultLibraries) - .\GSsoftdx.def - false - false - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Release/GSsoftdx.tlb - - - - - $(DXSDK_DIR)include;..\x86\;..\..\ZeroGSShaders\;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;__i386__;RELEASE_TO_PUBLIC;ZEROGS_SSE2;%(PreprocessorDefinitions) - - - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - dxerr.lib;dxguid.lib;d3dx9.lib;d3d9.lib;odbc32.lib;odbccp32.lib;winmm.lib;Vfw32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - true - ..\;$(DXSDK_DIR)lib\x86;%(AdditionalLibraryDirectories) - .\GSsoftdx.def - false - MachineX86 - false - - - - - - - - - - - - - - - - ml /nologo /c /Zi /Fo"$(IntDir)%(Filename).obj" "%(FullPath)" - - $(IntDir)%(Filename).obj;%(Outputs) - ml /nologo /c /Zi /Fo"$(IntDir)%(Filename).obj" "%(FullPath)" - - $(IntDir)%(Filename).obj;%(Outputs) - ml /nologo /c /Zi /Fo"$(IntDir)%(Filename).obj" "%(FullPath)" - - $(IntDir)%(Filename).obj;%(Outputs) - - - - - - - - - - - - - - - - - - - - - - {2f6c0388-20cb-4242-9f6c-a6ebb6a83f47} - true - false - false - true - false - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + ZeroGS + {5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8} + ZeroGS + + + + DynamicLibrary + false + MultiByte + true + v110_xp + + + DynamicLibrary + MultiByte + v110_xp + + + DynamicLibrary + false + MultiByte + false + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + false + $(ProjectName)-dev + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/GSsoftdx.tlb + + + + + $(DXSDK_DIR)include;..\x86\;..\..\ZeroGSShaders\;%(AdditionalIncludeDirectories) + NDEBUG;_USRDLL;__i386__;ZEROGS_DEVBUILD;ZEROGS_SSE2;%(PreprocessorDefinitions) + .\Release/GSsoftdx.pch + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + dxerr.lib;dxguid.lib;d3dx9.lib;d3d9.lib;odbc32.lib;odbccp32.lib;winmm.lib;Vfw32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + true + ..\;$(DXSDK_DIR)lib\x86;%(AdditionalLibraryDirectories) + .\GSsoftdx.def + false + MachineX86 + false + + + + + $(DXSDK_DIR)include;..\x86\;..\..\ZeroGSShaders\;%(AdditionalIncludeDirectories) + D3D_DEBUG_INFO;_USRDLL;__i386__;ZEROGS_DEVBUILD;ZEROGS_SSE2;%(PreprocessorDefinitions) + EditAndContinue + + + dxerr.lib;dxguid.lib;d3dx9.lib;d3d9.lib;odbc32.lib;odbccp32.lib;winmm.lib;Vfw32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\;$(DXSDK_DIR)lib\x86;%(AdditionalLibraryDirectories) + %(IgnoreSpecificDefaultLibraries) + .\GSsoftdx.def + false + false + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/GSsoftdx.tlb + + + + + $(DXSDK_DIR)include;..\x86\;..\..\ZeroGSShaders\;%(AdditionalIncludeDirectories) + NDEBUG;_WINDOWS;_USRDLL;__i386__;RELEASE_TO_PUBLIC;ZEROGS_SSE2;%(PreprocessorDefinitions) + + + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + dxerr.lib;dxguid.lib;d3dx9.lib;d3d9.lib;odbc32.lib;odbccp32.lib;winmm.lib;Vfw32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + true + ..\;$(DXSDK_DIR)lib\x86;%(AdditionalLibraryDirectories) + .\GSsoftdx.def + false + MachineX86 + false + + + + + + + + + + + + + + + + ml /nologo /c /Zi /Fo"$(IntDir)%(Filename).obj" "%(FullPath)" + + $(IntDir)%(Filename).obj;%(Outputs) + ml /nologo /c /Zi /Fo"$(IntDir)%(Filename).obj" "%(FullPath)" + + $(IntDir)%(Filename).obj;%(Outputs) + ml /nologo /c /Zi /Fo"$(IntDir)%(Filename).obj" "%(FullPath)" + + $(IntDir)%(Filename).obj;%(Outputs) + + + + + + + + + + + + + + + + + + + + + + {2f6c0388-20cb-4242-9f6c-a6ebb6a83f47} + true + false + false + true + false + + + + + diff --git a/plugins/zerogs/dx/Windows/zerogs_vs2012.vcxproj.filters b/plugins/zerogs/dx/Windows/zerogs_vs2012.vcxproj.filters index 3ad0324729..e273346c31 100644 --- a/plugins/zerogs/dx/Windows/zerogs_vs2012.vcxproj.filters +++ b/plugins/zerogs/dx/Windows/zerogs_vs2012.vcxproj.filters @@ -1,94 +1,94 @@ - - - - - {3d88e262-211f-4c7c-8e48-401a5e7e5693} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {0ec02065-4a77-4d4f-8eda-d1c1842fc718} - h;hpp;hxx;hm;inl - - - {069c51db-9551-438c-b89f-20063b43404f} - ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Source Files - - - Resource Files - - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - - - Source Files - - + + + + + {3d88e262-211f-4c7c-8e48-401a5e7e5693} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {0ec02065-4a77-4d4f-8eda-d1c1842fc718} + h;hpp;hxx;hm;inl + + + {069c51db-9551-438c-b89f-20063b43404f} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Source Files + + + Resource Files + + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + + + Source Files + + diff --git a/plugins/zerogs/dx/backup.bat b/plugins/zerogs/dx/backup.bat index 9da64b07d0..177b7ece68 100644 --- a/plugins/zerogs/dx/backup.bat +++ b/plugins/zerogs/dx/backup.bat @@ -1,4 +1,4 @@ -@echo off -call parsedate -set TIMESTAMP=%month%%day%%year:~2,3% +@echo off +call parsedate +set TIMESTAMP=%month%%day%%year:~2,3% winrar u ZeroGS%TIMESTAMP%.zip *.h *.cpp Win32\*.sln Win32\*.vcproj Win32\*.suo Win32\*.bat Win32\*.cpp Win32\*.h Win32\*.def *.asm *.fx *.bat zerogs.psd ZeroGSShaders.exe x86\*.* Win32\*.rc Win32\*.bmp Win32\*.dat ..\ZeroGSShaders\*.h ..\ZeroGSShaders\*.cpp \ No newline at end of file diff --git a/plugins/zerogs/dx/buildshaders.bat b/plugins/zerogs/dx/buildshaders.bat index 401b5f258d..2478cbf55a 100644 --- a/plugins/zerogs/dx/buildshaders.bat +++ b/plugins/zerogs/dx/buildshaders.bat @@ -1,3 +1,3 @@ -ZeroGSShaders.exe ps2hw.fx ps2fx.dat -del Win32\ps2fx.dat Win32\Release\*.res Win32\Debug\*.res +ZeroGSShaders.exe ps2hw.fx ps2fx.dat +del Win32\ps2fx.dat Win32\Release\*.res Win32\Debug\*.res move /y ps2fx.dat Win32\ps2fx.dat \ No newline at end of file diff --git a/plugins/zerogs/opengl/README.txt b/plugins/zerogs/opengl/README.txt index edeb776031..447dfdf204 100644 --- a/plugins/zerogs/opengl/README.txt +++ b/plugins/zerogs/opengl/README.txt @@ -1,13 +1,13 @@ -ZeroGS OpenGL -------------- -author: zerofrog (@gmail.com) - -ZeroGS heavily uses GPU shaders. All the shaders are written in nVidia's Cg language and can be found in ps2hw.fx. - -'Dev' versions of ZeroGS directly read ps2hw.fx -'Release' versions of ZeroGS read a precompiled version of ps2hw.fx from ps2hw.dat. In order to build ps2hw.dat, compile ZeroGSShaders and execute: - -./ZeroGSShaders ps2hw.fx ps2hw.dat - -For Windows users, once ZeroGSShaders is built, run buildshaders.bat directly. It will update all necessary resource files. +ZeroGS OpenGL +------------- +author: zerofrog (@gmail.com) + +ZeroGS heavily uses GPU shaders. All the shaders are written in nVidia's Cg language and can be found in ps2hw.fx. + +'Dev' versions of ZeroGS directly read ps2hw.fx +'Release' versions of ZeroGS read a precompiled version of ps2hw.fx from ps2hw.dat. In order to build ps2hw.dat, compile ZeroGSShaders and execute: + +./ZeroGSShaders ps2hw.fx ps2hw.dat + +For Windows users, once ZeroGSShaders is built, run buildshaders.bat directly. It will update all necessary resource files. Note that ZeroGSShaders has only been tested in Windows so far, but the Windows ps2hw.dat can be used in linux builds. \ No newline at end of file diff --git a/plugins/zerogs/opengl/Win32/vsprops/postBuild.tmpl b/plugins/zerogs/opengl/Win32/vsprops/postBuild.tmpl index 8423bad3f5..49e9699b1c 100644 --- a/plugins/zerogs/opengl/Win32/vsprops/postBuild.tmpl +++ b/plugins/zerogs/opengl/Win32/vsprops/postBuild.tmpl @@ -1,24 +1,24 @@ -@echo off -rem -rem Usage: postBuild.cmd SourcePath DestDir DestFile DestExt -rem -rem SourcePath - $(TargetPath) - Fully qualified path of the generated target file. -rem DestDir - $(SolutionDir) - Directory of the destination, usually the same as the solution. -rem DestFile - Base filename of the target/dest, without extension! -rem DestExt - Extension of the target/dest! - -set pcsxoutdir=%~2\bin\plugins -set pcsxoutname=%pcsxoutdir%\%~3%4 -set pcsxnewname=%pcsxoutdir%\%~3-r$WCREV$$WCMODS?m:$%4 - -IF NOT EXIST %pcsxoutdir% ( - md %pcsxoutdir% -) - -copy /Y %~1 %pcsxoutname% -copy /Y %~1 %pcsxnewname% - -if ERRORLEVEL 0 ( - echo Target copied to %pcsxnewname% -) -exit 0 +@echo off +rem +rem Usage: postBuild.cmd SourcePath DestDir DestFile DestExt +rem +rem SourcePath - $(TargetPath) - Fully qualified path of the generated target file. +rem DestDir - $(SolutionDir) - Directory of the destination, usually the same as the solution. +rem DestFile - Base filename of the target/dest, without extension! +rem DestExt - Extension of the target/dest! + +set pcsxoutdir=%~2\bin\plugins +set pcsxoutname=%pcsxoutdir%\%~3%4 +set pcsxnewname=%pcsxoutdir%\%~3-r$WCREV$$WCMODS?m:$%4 + +IF NOT EXIST %pcsxoutdir% ( + md %pcsxoutdir% +) + +copy /Y %~1 %pcsxoutname% +copy /Y %~1 %pcsxnewname% + +if ERRORLEVEL 0 ( + echo Target copied to %pcsxnewname% +) +exit 0 diff --git a/plugins/zerogs/opengl/Win32/vsprops/postBuild.unknown b/plugins/zerogs/opengl/Win32/vsprops/postBuild.unknown index d633aa67d3..92d63feadf 100644 --- a/plugins/zerogs/opengl/Win32/vsprops/postBuild.unknown +++ b/plugins/zerogs/opengl/Win32/vsprops/postBuild.unknown @@ -1,21 +1,21 @@ -@echo off -rem -rem Usage: postBuild.cmd SourcePath DestDir DestFile DestExt -rem -rem SourcePath - $(TargetPath) - Fully qualified path of the generated target file. -rem DestDir - $(SolutionDir) - Directory of the destination, usually the same as the solution. -rem DestFile - Base filename of the target/dest, without extension! -rem DestExt - Extension of the target/dest! - -set pcsxoutdir=%~2\bin\plugins -set pcsxoutname=%pcsxoutdir%%~3%4 - -IF NOT EXIST %pcsxoutdir% ( - md %pcsxoutdir% -) - -copy /Y %~1 %pcsxoutname% -if ERRORLEVEL 0 ( - echo Target copied to %pcsxoutname% -) -set ERRORLEVEL=0 +@echo off +rem +rem Usage: postBuild.cmd SourcePath DestDir DestFile DestExt +rem +rem SourcePath - $(TargetPath) - Fully qualified path of the generated target file. +rem DestDir - $(SolutionDir) - Directory of the destination, usually the same as the solution. +rem DestFile - Base filename of the target/dest, without extension! +rem DestExt - Extension of the target/dest! + +set pcsxoutdir=%~2\bin\plugins +set pcsxoutname=%pcsxoutdir%%~3%4 + +IF NOT EXIST %pcsxoutdir% ( + md %pcsxoutdir% +) + +copy /Y %~1 %pcsxoutname% +if ERRORLEVEL 0 ( + echo Target copied to %pcsxoutname% +) +set ERRORLEVEL=0 diff --git a/plugins/zerogs/opengl/Win32/vsprops/preBuild.cmd b/plugins/zerogs/opengl/Win32/vsprops/preBuild.cmd index fc5f233aba..ccc0214b47 100644 --- a/plugins/zerogs/opengl/Win32/vsprops/preBuild.cmd +++ b/plugins/zerogs/opengl/Win32/vsprops/preBuild.cmd @@ -1,20 +1,20 @@ -@echo off - -rem Usage: preBuild.cmd ProjectSrcDir VspropsDir -rem -rem ProjectSrcDir - $(ProjectDir)\.. - Directory of project source code. -rem VspropsDir - $(PrjectDir)\vsprops - Directory of this script and its counterparts. - -SubWCRev.exe %~1 %~2\svnrev_template.h %~1\svnrev.h -if %ERRORLEVEL% NEQ 0 ( - echo Automatic revision update unavailable, using generic template instead. - echo You can safely ignore this message - see svnrev.h for details. - copy /Y %~2\svnrev_unknown.h %~1\svnrev.h - copy /Y %~2\postBuild.unknown %~2\postBuild.cmd -) else ( - SubWCRev.exe %~1 %~2\postBuild.tmpl %~2\postBuild.cmd -) - -rem Always return an errorlevel of 0 -- this allows compilation to continue if SubWCRev failed. - -exit 0 +@echo off + +rem Usage: preBuild.cmd ProjectSrcDir VspropsDir +rem +rem ProjectSrcDir - $(ProjectDir)\.. - Directory of project source code. +rem VspropsDir - $(PrjectDir)\vsprops - Directory of this script and its counterparts. + +SubWCRev.exe %~1 %~2\svnrev_template.h %~1\svnrev.h +if %ERRORLEVEL% NEQ 0 ( + echo Automatic revision update unavailable, using generic template instead. + echo You can safely ignore this message - see svnrev.h for details. + copy /Y %~2\svnrev_unknown.h %~1\svnrev.h + copy /Y %~2\postBuild.unknown %~2\postBuild.cmd +) else ( + SubWCRev.exe %~1 %~2\postBuild.tmpl %~2\postBuild.cmd +) + +rem Always return an errorlevel of 0 -- this allows compilation to continue if SubWCRev failed. + +exit 0 diff --git a/plugins/zerogs/opengl/Win32/zerogs.def b/plugins/zerogs/opengl/Win32/zerogs.def index 396ee27def..874a5b7263 100644 --- a/plugins/zerogs/opengl/Win32/zerogs.def +++ b/plugins/zerogs/opengl/Win32/zerogs.def @@ -1,37 +1,37 @@ -; Declares the module parameters for the DLL. - -;LIBRARY "ZeroGS" -;DESCRIPTION 'ZeroGS dll' - -EXPORTS - ; Explicit exports can go here - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - GSinit @5 - GSshutdown @6 - GSopen @7 - GSclose @8 - GSgifTransfer1 @13 - GSgifTransfer2 @14 - GSgifTransfer3 @15 - GSreadFIFO @16 - GSvsync @17 - GSmakeSnapshot @18 - GSkeyEvent @19 - GSfreeze @20 - GSconfigure @21 - GStest @22 - GSabout @23 - GSreadFIFO2 @28 - GSirqCallback @29 - GSsetBaseMem @30 - GSwriteCSR @31 - GSchangeSaveState @32 - GSreset @33 - GSgifSoftReset @34 - GSsetFrameSkip @35 - GSsetGameCRC @36 - GSgetLastTag @37 - GSsetupRecording @38 +; Declares the module parameters for the DLL. + +;LIBRARY "ZeroGS" +;DESCRIPTION 'ZeroGS dll' + +EXPORTS + ; Explicit exports can go here + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + GSinit @5 + GSshutdown @6 + GSopen @7 + GSclose @8 + GSgifTransfer1 @13 + GSgifTransfer2 @14 + GSgifTransfer3 @15 + GSreadFIFO @16 + GSvsync @17 + GSmakeSnapshot @18 + GSkeyEvent @19 + GSfreeze @20 + GSconfigure @21 + GStest @22 + GSabout @23 + GSreadFIFO2 @28 + GSirqCallback @29 + GSsetBaseMem @30 + GSwriteCSR @31 + GSchangeSaveState @32 + GSreset @33 + GSgifSoftReset @34 + GSsetFrameSkip @35 + GSsetGameCRC @36 + GSgetLastTag @37 + GSsetupRecording @38 GSsetSettingsDir @39 \ No newline at end of file diff --git a/plugins/zerogs/opengl/Win32/zerogs.rc b/plugins/zerogs/opengl/Win32/zerogs.rc index b25ecf6378..1048c1f52e 100644 --- a/plugins/zerogs/opengl/Win32/zerogs.rc +++ b/plugins/zerogs/opengl/Win32/zerogs.rc @@ -1,228 +1,228 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resrc1.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "resource.h" -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_ZEROGSLOGO BITMAP "zerogs.bmp" - -///////////////////////////////////////////////////////////////////////////// -// -// RCDATA -// - -IDR_SHADERS RCDATA "ps2hw.dat" - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOGEX 0, 0, 427, 401 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - CONTROL "Interlace Enable (toggle with F5)\n there are 2 modes + interlace off",IDC_CONFIG_INTERLACE, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,7,134,18 - CONTROL "Bilinear Filtering (Shift+F5)\n Best quality is on, turn off for speed.",IDC_CONFIG_BILINEAR, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,31,135,18 - CONTROL "None",IDC_CONFIG_AANONE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,19,81,34,11 - CONTROL "2X",IDC_CONFIG_AA2,"Button",BS_AUTORADIOBUTTON,69,81,26,11 - CONTROL "4X",IDC_CONFIG_AA4,"Button",BS_AUTORADIOBUTTON,111,81,28,11 - CONTROL "Wireframe rendering (F7)",IDC_CONFIG_WIREFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,93,10 - CONTROL "Capture Avi (zerogs.avi) (F12)",IDC_CONFIG_CAPTUREAVI, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,140,109,10 - CONTROL "Save Snapshots as BMPs (default is JPG)",IDC_CONFIG_BMPSS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,161,147,10 - CONTROL "Fullscreen (Alt+Enter)\n to get out press Alt+Enter again",IDC_CONFIG_FULLSCREEN, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,177,146,17 - CONTROL "640 x 480",IDC_CONF_WIN640,"Button",BS_AUTORADIOBUTTON | WS_GROUP,15,210,59,8 - CONTROL "800 x 600",IDC_CONF_WIN800,"Button",BS_AUTORADIOBUTTON,78,210,59,8 - CONTROL "1024 x 768",IDC_CONF_WIN1024,"Button",BS_AUTORADIOBUTTON,15,223,59,8 - CONTROL "1280 x 960",IDC_CONF_WIN1280,"Button",BS_AUTORADIOBUTTON,78,223,59,8 - DEFPUSHBUTTON "OK",IDOK,7,380,50,14 - PUSHBUTTON "Cancel",IDCANCEL,94,380,50,14 - GROUPBOX "Anti-aliasing for sharper graphics (F6)",IDC_STATIC,7,55,132,61 - GROUPBOX "Default Window Size (no speed impact)",IDC_STATIC,7,201,141,35 - LTEXT "Show Frames Per Second (Shift+F7)",IDC_STATIC,7,244,140,10 - GROUPBOX "Advanced Options",IDC_STATIC,152,7,268,387 - LTEXT "Each option is presented with a unique ID in hex. In order to preserve options across games, go into the game's patch (.pnach) file and type\n zerogs=IDS\nwhere IDS is the OR all of the values in hex for every option you want enabled. ",IDC_STATIC,161,16,252,33 - PUSHBUTTON "Use Defaults (recommended)",IDC_CONF_DEFAULT,159,76,151,14 - CONTROL "Disable alpha testing - 00080000",IDC_CONFOPT_00080000, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,104,119,10 - CONTROL "Disable stencil buffer - 00002000\nusually safe to do for simple scenes",IDC_CONFOPT_00002000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,159,114,118,22 - CONTROL "No target CLUT - 00001000\n(use on RE4, or foggy scenes)",IDC_CONFOPT_00001000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,169,120,24 - CONTROL "Disable depth updates - 00000200",IDC_CONFOPT_00000200, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,161,125,10 - CONTROL "FFX hack - 00000080\nshows missing geometry",IDC_CONFOPT_00000080, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,190,121,17 - CONTROL "Exact color testing - 00000020\nfixes overbright or shadow/black artifacts (crash n burn)",IDC_CONFOPT_00000020, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,209,119,25 - CONTROL "Tex Target checking - 00000001\nlego racers",IDC_CONFOPT_00000001, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,233,123,22 - CONTROL "Interlace 2X - 00000004\nfixes 2x bigger screen (gradius3)",IDC_CONFOPT_00000004, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,254,119,20 - CONTROL "32 bit render targets - 00200000",IDC_CONFOPT_00200000, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,285,93,117,10 - CONTROL "No depth resolve - 00008000\nmight give z buffer artifacts",IDC_CONFOPT_00008000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,164,121,19 - CONTROL "full 16 bit resolution - 00010000\nuse when half the screen is missing, etc",IDC_CONFOPT_00010000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,185,125,23 - CONTROL "Auto Reset Targs - 00000002\nshadow hearts, samurai warriors (use when game is slow and toggling AA fixes it)",IDC_CONFOPT_00000002, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,212,124,32 - CONTROL "Tex Alpha Hack - 00000008\nnightmare before christmas",IDC_CONFOPT_00000008, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,247,125,17 - EDITTEXT IDC_CONFOPT_IDS,361,380,48,14,ES_AUTOHSCROLL | ES_READONLY - CONTROL "Resolve Hack #1 - 00000400\nspeeds some games (kingdom hearts)",IDC_CONFOPT_00000400, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,266,135,19 - CONTROL "Resolve Hack #2 - 00000800\nshadow hearts, urbz",IDC_CONFOPT_00000800, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,276,117,17 - CONTROL "Resolve Hack #3 - 00020000\nneopets",IDC_CONFOPT_00020000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,287,125,17 - CONTROL "Fast Update - 00040000\nspeeds some games (okami)",IDC_CONFOPT_00040000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,297,125,17 - PUSHBUTTON "Compute OR of IDS",IDC_CONFOPT_COMPUTEOR,283,380,73,14 - LTEXT "Important options are listed first. Note, setting option here means that they will be ADDED to whatever options are set in each pnach file.",IDC_STATIC,159,50,252,23 - CONTROL "No target resolves - 00000010\nStops all resolving of targets (try this first for really slow games)",IDC_CONFOPT_00000010, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,104,111,33 - CONTROL "Disable Multiple RTs - 00100000",IDC_CONFOPT_00100000, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,91,119,10 - CONTROL "No color clamping - 00000040\nSpeeds games up but might be too bright or too dim",IDC_CONFOPT_00000040, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,157,137,123,22 - CONTROL "8X",IDC_CONFIG_AA8,"Button",BS_AUTORADIOBUTTON,65,97,26,11 - CONTROL "16X",IDC_CONFIG_AA16,"Button",BS_AUTORADIOBUTTON,107,97,28,11 - LTEXT "shortcuts: F6 - next, Shift+F6 - prev",IDC_STATIC,19,65,116,11 - CONTROL "No Vertical Stripes - 00004000\n try when there's a lot of garbage on screen",IDC_CONFOPT_00004000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,138,111,28 - CONTROL "Partial Targets - 02000000\nReduces artifacts and speeds up some games (mgs3)",IDC_CONFOPT_02000000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,319,125,24 - CONTROL "Partial Depth - 04000000\nTries to save the depth target as much as possible (mgs3)",IDC_CONFOPT_04000000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,159,347,125,24 - CONTROL "Specular Highlights - 01000000\nMakes xenosaga graphics faster by removing highlights",IDC_CONFOPT_01000000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,313,125,25 - CONTROL "Parallelize Contexts - 00800000 (Might speed things up, xenosaga is faster)",IDC_CONFOPT_00800000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,284,345,125,25 -END - -IDD_ABOUT DIALOGEX 0, 0, 182, 220 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "GSabout" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,65,199,50,14 - LTEXT "ZeroGS\n\nauthor: zerofrog(@gmail.com)\n\n\nthanks to Gabest for SSE optimizations",IDC_STATIC,7,7,160,47 - LTEXT "Static",IDC_ABOUTTEXT,7,65,152,124 -END - -IDD_LOGGING DIALOG 0, 0, 152, 55 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Dialog" -FONT 8, "MS Sans Serif" -BEGIN - DEFPUSHBUTTON "OK",IDOK,40,35,50,14 - PUSHBUTTON "Cancel",IDCANCEL,95,35,50,14 - CONTROL "Log",IDC_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,15,28,10 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 420 - TOPMARGIN, 7 - BOTTOMMARGIN, 394 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 175 - TOPMARGIN, 7 - BOTTOMMARGIN, 213 - END - - IDD_LOGGING, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 145 - TOPMARGIN, 7 - BOTTOMMARGIN, 48 - END -END -#endif // APSTUDIO_INVOKED - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resrc1.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""resource.h""\r\n" - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resrc1.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "resource.h" +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_ZEROGSLOGO BITMAP "zerogs.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// RCDATA +// + +IDR_SHADERS RCDATA "ps2hw.dat" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 427, 401 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + CONTROL "Interlace Enable (toggle with F5)\n there are 2 modes + interlace off",IDC_CONFIG_INTERLACE, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,7,134,18 + CONTROL "Bilinear Filtering (Shift+F5)\n Best quality is on, turn off for speed.",IDC_CONFIG_BILINEAR, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,31,135,18 + CONTROL "None",IDC_CONFIG_AANONE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,19,81,34,11 + CONTROL "2X",IDC_CONFIG_AA2,"Button",BS_AUTORADIOBUTTON,69,81,26,11 + CONTROL "4X",IDC_CONFIG_AA4,"Button",BS_AUTORADIOBUTTON,111,81,28,11 + CONTROL "Wireframe rendering (F7)",IDC_CONFIG_WIREFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,93,10 + CONTROL "Capture Avi (zerogs.avi) (F12)",IDC_CONFIG_CAPTUREAVI, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,140,109,10 + CONTROL "Save Snapshots as BMPs (default is JPG)",IDC_CONFIG_BMPSS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,161,147,10 + CONTROL "Fullscreen (Alt+Enter)\n to get out press Alt+Enter again",IDC_CONFIG_FULLSCREEN, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,177,146,17 + CONTROL "640 x 480",IDC_CONF_WIN640,"Button",BS_AUTORADIOBUTTON | WS_GROUP,15,210,59,8 + CONTROL "800 x 600",IDC_CONF_WIN800,"Button",BS_AUTORADIOBUTTON,78,210,59,8 + CONTROL "1024 x 768",IDC_CONF_WIN1024,"Button",BS_AUTORADIOBUTTON,15,223,59,8 + CONTROL "1280 x 960",IDC_CONF_WIN1280,"Button",BS_AUTORADIOBUTTON,78,223,59,8 + DEFPUSHBUTTON "OK",IDOK,7,380,50,14 + PUSHBUTTON "Cancel",IDCANCEL,94,380,50,14 + GROUPBOX "Anti-aliasing for sharper graphics (F6)",IDC_STATIC,7,55,132,61 + GROUPBOX "Default Window Size (no speed impact)",IDC_STATIC,7,201,141,35 + LTEXT "Show Frames Per Second (Shift+F7)",IDC_STATIC,7,244,140,10 + GROUPBOX "Advanced Options",IDC_STATIC,152,7,268,387 + LTEXT "Each option is presented with a unique ID in hex. In order to preserve options across games, go into the game's patch (.pnach) file and type\n zerogs=IDS\nwhere IDS is the OR all of the values in hex for every option you want enabled. ",IDC_STATIC,161,16,252,33 + PUSHBUTTON "Use Defaults (recommended)",IDC_CONF_DEFAULT,159,76,151,14 + CONTROL "Disable alpha testing - 00080000",IDC_CONFOPT_00080000, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,104,119,10 + CONTROL "Disable stencil buffer - 00002000\nusually safe to do for simple scenes",IDC_CONFOPT_00002000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,159,114,118,22 + CONTROL "No target CLUT - 00001000\n(use on RE4, or foggy scenes)",IDC_CONFOPT_00001000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,169,120,24 + CONTROL "Disable depth updates - 00000200",IDC_CONFOPT_00000200, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,161,125,10 + CONTROL "FFX hack - 00000080\nshows missing geometry",IDC_CONFOPT_00000080, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,190,121,17 + CONTROL "Exact color testing - 00000020\nfixes overbright or shadow/black artifacts (crash n burn)",IDC_CONFOPT_00000020, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,209,119,25 + CONTROL "Tex Target checking - 00000001\nlego racers",IDC_CONFOPT_00000001, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,233,123,22 + CONTROL "Interlace 2X - 00000004\nfixes 2x bigger screen (gradius3)",IDC_CONFOPT_00000004, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,254,119,20 + CONTROL "32 bit render targets - 00200000",IDC_CONFOPT_00200000, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,285,93,117,10 + CONTROL "No depth resolve - 00008000\nmight give z buffer artifacts",IDC_CONFOPT_00008000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,164,121,19 + CONTROL "full 16 bit resolution - 00010000\nuse when half the screen is missing, etc",IDC_CONFOPT_00010000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,185,125,23 + CONTROL "Auto Reset Targs - 00000002\nshadow hearts, samurai warriors (use when game is slow and toggling AA fixes it)",IDC_CONFOPT_00000002, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,212,124,32 + CONTROL "Tex Alpha Hack - 00000008\nnightmare before christmas",IDC_CONFOPT_00000008, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,247,125,17 + EDITTEXT IDC_CONFOPT_IDS,361,380,48,14,ES_AUTOHSCROLL | ES_READONLY + CONTROL "Resolve Hack #1 - 00000400\nspeeds some games (kingdom hearts)",IDC_CONFOPT_00000400, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,266,135,19 + CONTROL "Resolve Hack #2 - 00000800\nshadow hearts, urbz",IDC_CONFOPT_00000800, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,276,117,17 + CONTROL "Resolve Hack #3 - 00020000\nneopets",IDC_CONFOPT_00020000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,287,125,17 + CONTROL "Fast Update - 00040000\nspeeds some games (okami)",IDC_CONFOPT_00040000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,297,125,17 + PUSHBUTTON "Compute OR of IDS",IDC_CONFOPT_COMPUTEOR,283,380,73,14 + LTEXT "Important options are listed first. Note, setting option here means that they will be ADDED to whatever options are set in each pnach file.",IDC_STATIC,159,50,252,23 + CONTROL "No target resolves - 00000010\nStops all resolving of targets (try this first for really slow games)",IDC_CONFOPT_00000010, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,104,111,33 + CONTROL "Disable Multiple RTs - 00100000",IDC_CONFOPT_00100000, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,91,119,10 + CONTROL "No color clamping - 00000040\nSpeeds games up but might be too bright or too dim",IDC_CONFOPT_00000040, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,157,137,123,22 + CONTROL "8X",IDC_CONFIG_AA8,"Button",BS_AUTORADIOBUTTON,65,97,26,11 + CONTROL "16X",IDC_CONFIG_AA16,"Button",BS_AUTORADIOBUTTON,107,97,28,11 + LTEXT "shortcuts: F6 - next, Shift+F6 - prev",IDC_STATIC,19,65,116,11 + CONTROL "No Vertical Stripes - 00004000\n try when there's a lot of garbage on screen",IDC_CONFOPT_00004000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,138,111,28 + CONTROL "Partial Targets - 02000000\nReduces artifacts and speeds up some games (mgs3)",IDC_CONFOPT_02000000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,319,125,24 + CONTROL "Partial Depth - 04000000\nTries to save the depth target as much as possible (mgs3)",IDC_CONFOPT_04000000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,159,347,125,24 + CONTROL "Specular Highlights - 01000000\nMakes xenosaga graphics faster by removing highlights",IDC_CONFOPT_01000000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,313,125,25 + CONTROL "Parallelize Contexts - 00800000 (Might speed things up, xenosaga is faster)",IDC_CONFOPT_00800000, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,284,345,125,25 +END + +IDD_ABOUT DIALOGEX 0, 0, 182, 220 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "GSabout" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,65,199,50,14 + LTEXT "ZeroGS\n\nauthor: zerofrog(@gmail.com)\n\n\nthanks to Gabest for SSE optimizations",IDC_STATIC,7,7,160,47 + LTEXT "Static",IDC_ABOUTTEXT,7,65,152,124 +END + +IDD_LOGGING DIALOG 0, 0, 152, 55 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Dialog" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",IDOK,40,35,50,14 + PUSHBUTTON "Cancel",IDCANCEL,95,35,50,14 + CONTROL "Log",IDC_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,15,28,10 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 420 + TOPMARGIN, 7 + BOTTOMMARGIN, 394 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 175 + TOPMARGIN, 7 + BOTTOMMARGIN, 213 + END + + IDD_LOGGING, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 145 + TOPMARGIN, 7 + BOTTOMMARGIN, 48 + END +END +#endif // APSTUDIO_INVOKED + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resrc1.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""resource.h""\r\n" + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/zerogs/opengl/ZeroGSShaders/ZeroGSShaders_2005.sln b/plugins/zerogs/opengl/ZeroGSShaders/ZeroGSShaders_2005.sln index 45a5aa122b..cc194e0eae 100644 --- a/plugins/zerogs/opengl/ZeroGSShaders/ZeroGSShaders_2005.sln +++ b/plugins/zerogs/opengl/ZeroGSShaders/ZeroGSShaders_2005.sln @@ -1,23 +1,23 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZeroGSShaders", "ZeroGSShaders_2005.vcproj", "{811D47CC-E5F0-456A-918E-5908005E8FC0}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release (to Public)|Win32 = Release (to Public)|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {811D47CC-E5F0-456A-918E-5908005E8FC0}.Debug|Win32.ActiveCfg = Debug|Win32 - {811D47CC-E5F0-456A-918E-5908005E8FC0}.Debug|Win32.Build.0 = Debug|Win32 - {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release (to Public)|Win32.ActiveCfg = Release (to Public)|Win32 - {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release (to Public)|Win32.Build.0 = Release (to Public)|Win32 - {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release|Win32.ActiveCfg = Release|Win32 - {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZeroGSShaders", "ZeroGSShaders_2005.vcproj", "{811D47CC-E5F0-456A-918E-5908005E8FC0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release (to Public)|Win32 = Release (to Public)|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {811D47CC-E5F0-456A-918E-5908005E8FC0}.Debug|Win32.ActiveCfg = Debug|Win32 + {811D47CC-E5F0-456A-918E-5908005E8FC0}.Debug|Win32.Build.0 = Debug|Win32 + {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release (to Public)|Win32.ActiveCfg = Release (to Public)|Win32 + {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release (to Public)|Win32.Build.0 = Release (to Public)|Win32 + {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release|Win32.ActiveCfg = Release|Win32 + {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/plugins/zerogs/opengl/buildshaders.bat b/plugins/zerogs/opengl/buildshaders.bat index c7698558ae..a2ceb68b6e 100644 --- a/plugins/zerogs/opengl/buildshaders.bat +++ b/plugins/zerogs/opengl/buildshaders.bat @@ -1,3 +1,3 @@ -ZeroGSShaders.exe ps2hw.fx ps2hw.dat -del Win32\ps2hw.dat Win32\Release\*.res Win32\Debug\*.res +ZeroGSShaders.exe ps2hw.fx ps2hw.dat +del Win32\ps2hw.dat Win32\Release\*.res Win32\Debug\*.res move /y ps2hw.dat Win32\ps2hw.dat \ No newline at end of file diff --git a/plugins/zerogs/opengl/ps2hw.fx b/plugins/zerogs/opengl/ps2hw.fx index e73b6366b8..6b37c7c869 100644 --- a/plugins/zerogs/opengl/ps2hw.fx +++ b/plugins/zerogs/opengl/ps2hw.fx @@ -1,841 +1,841 @@ -// Cg Shaders for PS2 GS emulation - -// divides by z for every pixel, instead of in vertex shader -// fixes kh textures -#define PERSPECTIVE_CORRECT_TEX - -//#define TEST_AEM // tests AEM for black pixels -//#define REGION_REPEAT // set if texture wrapping mode is region repeat -//#define WRITE_DEPTH // set if depth is also written in a MRT -//#define ACCURATE_DECOMPRESSION // set for less capable hardware ATI Radeon 9000 series -//#define EXACT_COLOR // make sure the output color is clamped to 1/255 boundaries (for alpha testing) - -#ifdef PERSPECTIVE_CORRECT_TEX -#define TEX_XY tex.xy/tex.z -#define TEX_DECL float3 -#else -#define TEX_XY tex.xy -#define TEX_DECL float2 -#endif - -#ifdef WRITE_DEPTH -#define DOZWRITE(x) x -#else -#define DOZWRITE(x) -#endif - -#include "ps2hw_ctx.fx" - -// used to get the tiled offset into a page given the linear offset -uniform samplerRECT g_sSrcFinal : register(s2); -uniform sampler2D g_sBlocks : register(s3); -uniform sampler2D g_sBilinearBlocks : register(s4); -uniform sampler2D g_sConv16to32 : register(s4); -uniform sampler3D g_sConv32to16 : register(s4); -uniform sampler2D g_sBitwiseANDX : register(s5); -uniform sampler2D g_sBitwiseANDY : register(s6); -uniform samplerRECT g_sInterlace : register(s7); - -// used only on rare cases where the render target is PSMT8H -uniform sampler2D g_sCLUT : register(s2); - -// global pixel shader constants -uniform float4 g_fInvTexDims : register(c22); // similar to g_fClutOff -uniform float4 g_fFogColor : register(c23); - -// used for rectblitting -uniform float4 g_fBitBltZ : register(c24); - -uniform half4 g_fOneColor : register(c25); // col*.xxxy+.zzzw - -// vertex shader constants -uniform float4 g_fBitBltPos : register(c4); -uniform float4 g_fZ : register(c5); // transforms d3dcolor z into float z -uniform float4 g_fZNorm : register(c6); -uniform float4 g_fBitBltTex : register(c7); - -// pixel shader consts -// .z is used for the addressing fn -uniform half4 g_fExactColor : register(c27) = half4(0.5,0.5/256.0f,0,1/255.0f); -uniform float4 g_fBilinear : register(c28) = float4(-0.7f, -0.65f, 0.9,1/32767.0f); -uniform float4 g_fZBias : register(c29) = half4(1.0f/256.0f, 1.0004f, 1, 0.5); // also for vs -uniform float4 g_fc0 : register(c30) = float4(0,1, 0.001, 0.5f); // also for vs -uniform float4 g_fMult : register(c31) = float4(1/1024.0f, 0.2f/1024.0f, 1/128.0f, 1/512.0f); - -// vertex shader consts -uniform float4 g_fBitBltTrans : register(c31) = float4(0.5f, -0.5f, 0.5, 0.5 + 0.4/416.0f); - -// given a local tex coord, returns the coord in the memory -float2 ps2memcoord(float2 realtex) -{ - float4 off; - - // block off - realtex.xy = realtex.xy * g_fTexDims.xy + g_fTexDims.zw; - realtex.xy = (realtex.xy - frac(realtex.xy)) * g_fMult.zw; - float2 fblock = frac(realtex.xy); - off.xy = realtex.xy-fblock.xy; - -#ifdef ACCURATE_DECOMPRESSION - off.zw = tex2D(g_sBlocks, g_fTexBlock.xy*fblock + g_fTexBlock.zw).ar; - off.x = dot(off.xyw, g_fTexOffset.xyw); - float f = frac(off.x); - float fadd = g_fTexOffset.z * off.z; - off.w = off.x + fadd; - off.x = frac(f + fadd); - off.w -= off.x; -#else - off.z = tex2D(g_sBlocks, g_fTexBlock.xy*fblock + g_fTexBlock.zw).a; - - // combine the two - off.x = dot(off.xyz, g_fTexOffset.xyz)+g_fTexOffset.w; - off.x = modf(off.x, off.w); -#endif - - off.xy = off.xw * g_fPageOffset.zy + g_fPageOffset.wx; - //off.y = off.w * g_fPageOffset.y + g_fPageOffset.x; - return off.xy; -} - -// find all texcoords for bilinear filtering -// assume that orgtex are already on boundaries -void ps2memcoord4(float4 orgtex, out float4 off0, out float4 off1) -{ - //float4 off0, off1, off2, off3; - float4 realtex; - - // block off - realtex = (orgtex * g_fTexDims.xyxy + g_fTexDims.zwzw);// * g_fMult.zwzw; - float4 fblock = frac(realtex.xyzw); - float4 ftransblock = g_fTexBlock.xyxy*fblock + g_fTexBlock.zwzw; - realtex -= fblock; - - float4 transvals = g_fTexOffset.x * realtex.xzxz + g_fTexOffset.y * realtex.yyww + g_fTexOffset.w; - - float4 colors;// = tex2D(g_sBilinearBlocks, ftransblock.xy); - - // this is faster on ffx ingame - colors.x = tex2D(g_sBlocks, ftransblock.xy).a; - colors.y = tex2D(g_sBlocks, ftransblock.zy).a; - colors.z = tex2D(g_sBlocks, ftransblock.xw).a; - colors.w = tex2D(g_sBlocks, ftransblock.zw).a; - - float4 fr, rem; - -#ifdef ACCURATE_DECOMPRESSION - fr = frac(transvals); - float4 fadd = colors * g_fTexOffset.z; - rem = transvals + fadd; - fr = frac(fr + fadd); - rem -= fr; -#else - transvals += colors * g_fTexOffset.z; - - fr = modf(transvals, rem); -#endif - - rem = rem * g_fPageOffset.y + g_fPageOffset.x; - fr = fr * g_fPageOffset.z + g_fPageOffset.w; - - // combine - off0 = g_fc0.yxyx * fr.xxyy + g_fc0.xyxy * rem.xxyy; - off1 = g_fc0.yxyx * fr.zzww + g_fc0.xyxy * rem.zzww; -} - -void ps2memcoord4_fast(float4 orgtex, out float4 off0, out float4 off1) -{ - float4 realtex; - - realtex = (orgtex * g_fTexDims.xyxy + g_fTexDims.zwzw);// * g_fMult.zwzw; - float4 fblock = frac(realtex.xyzw); - float2 ftransblock = g_fTexBlock.xy*fblock.xy + g_fTexBlock.zw; - realtex -= fblock; - - float4 transvals = g_fTexOffset.x * realtex.xzxz + g_fTexOffset.y * realtex.yyww + g_fTexOffset.w; - - float4 colors = tex2D(g_sBilinearBlocks, ftransblock.xy); - float4 fr, rem; - -#ifdef ACCURATE_DECOMPRESSION - fr = frac(transvals); - float4 fadd = colors * g_fTexOffset.z; - rem = transvals + fadd; - fr = frac(fr + fadd); - rem -= fr; -#else - transvals += colors * g_fTexOffset.z; - - fr = modf(transvals, rem); -#endif - - rem = rem * g_fPageOffset.y + g_fPageOffset.x; - fr = fr * g_fPageOffset.z; - - off0 = g_fc0.yxyx * fr.xxyy + g_fc0.xyxy * rem.xxyy; - off1 = g_fc0.yxyx * fr.zzww + g_fc0.xyxy * rem.zzww; -} - -// Wrapping modes -#if defined(REPEAT) - -float2 ps2addr(float2 coord) -{ - return frac(coord.xy); -} - -#elif defined(CLAMP) - -float2 ps2addr(float2 coord) -{ - return clamp(coord.xy, g_fClampExts.xy, g_fClampExts.zw); -} - -#elif defined(REGION_REPEAT) - -// computes the local tex coord along with addressing modes -float2 ps2addr(float2 coord) -{ - float2 final = frac(clamp(coord.xy, g_fClampExts.xy, g_fClampExts.zw)); - - if( TexWrapMode.x > g_fBilinear.z ) // region repeat mode for x (umsk&x)|ufix - final.x = tex2D(g_sBitwiseANDX, abs(coord.x)*TexWrapMode.zz).x * g_fClampExts.x + g_fClampExts.z; - if( TexWrapMode.y > g_fBilinear.z ) // region repeat mode for x (vmsk&x)|vfix - final.y = tex2D(g_sBitwiseANDY, abs(coord.y)*TexWrapMode.ww).x * g_fClampExts.y + g_fClampExts.w; - - return final; -} - -#else - -float2 ps2addr(float2 coord) -{ - return frac(clamp(coord.xy, g_fClampExts.xy, g_fClampExts.zw)); -} - -#endif - -half4 tex2DPS_32(float2 tex0) -{ - return texRECT(g_sMemory, ps2memcoord(tex0).xy); -} - -// use when texture is not tiled -half4 tex2DPS_tex32(float2 tex0) -{ - return texRECT(g_sMemory, g_fTexDims.xy*tex0+g_fTexDims.zw)*g_fZBias.zzzw+g_fPageOffset.w; -} - -// use when texture is not tiled -half4 tex2DPS_clut32(float2 tex0) -{ - float index = texRECT(g_sMemory, g_fTexDims.xy*tex0+g_fTexDims.zw).a+g_fPageOffset.w; - return tex2D(g_sCLUT, index*g_fExactColor.xz+g_fExactColor.yz); -} - -// use when texture is not tiled and converting from 32bit to 16bit -// don't convert on the block level, only on the column level -// so every other 8 pixels, use the upper bits instead of lower -half4 tex2DPS_tex32to16(float2 tex0) -{ - bool upper = false; - tex0.y += g_fPageOffset.z; - float2 ffrac = fmod(tex0, g_fTexOffset.xy); - tex0.xy = g_fc0.ww * (tex0.xy + ffrac); - if( ffrac.x > g_fTexOffset.z ) { - tex0.x -= g_fTexOffset.z; - upper = true; - } - if( ffrac.y >= g_fTexOffset.w ) { - tex0.y -= g_fTexOffset.w; - tex0.x += g_fc0.w; - } - - half4 color = texRECT(g_sMemory, g_fTexDims.xy*tex0+g_fTexDims.zw)*g_fZBias.zzzw+g_fPageOffset.w; - float2 uv = upper ? color.xw : color.zy; - return tex2D(g_sConv16to32, uv+g_fPageOffset.xy); -} - -// used when a 16 bit texture is used an 8h -half4 tex2DPS_tex16to8h(float2 tex0) -{ - float4 final; - float2 ffrac = fmod(tex0+g_fPageOffset.zw, g_fTexOffset.xy); - tex0.xy = g_fPageOffset.xy * tex0.xy - ffrac * g_fc0.yw; - - if( ffrac.x > g_fTexOffset.x*g_fc0.w ) - tex0.x += g_fTexOffset.x*g_fc0.w; - if( tex0.x >= g_fc0.y ) tex0 += g_fTexOffset.zw; - - float4 upper = texRECT(g_sMemory, g_fTexDims.xy*tex0+g_fTexDims.zw); - - // only need alpha - float index = tex3D(g_sConv32to16, upper.zyx-g_fc0.z).y + upper.w*g_fc0.w*g_fc0.w; - return tex2D(g_sCLUT, index+g_fExactColor.yz); -} - -//half4 f; -//f.w = old.y > (127.2f/255.0f) ? 1 : 0; -//old.y -= 0.5f * f.w; -//f.xyz = frac(old.yyx*half3(2.002*255.0f/256.0f, 64.025f*255.0f/256.0f, 8.002*255.0f/256.0f)); -//f.y += old.x * (0.25f*255.0f/256.0f); - -//////////////////////////////// -// calculates the texture color -//////////////////////////////// - -#define decl_ps2shade(num) \ -decl_ps2shade_##num(_32) \ -decl_ps2shade_##num(_tex32) \ -decl_ps2shade_##num(_clut32) \ -decl_ps2shade_##num(_tex32to16) \ -decl_ps2shade_##num(_tex16to8h) \ - -// nearest -#define decl_ps2shade_0(bit) \ -float4 ps2shade0##bit( TEX_DECL tex) \ -{ \ - return tex2DPS##bit( ps2addr(TEX_XY)); \ -} \ - -// do fast memcoord4 calcs when textures behave well -#ifdef REPEAT -#define PS2MEMCOORD4 ps2memcoord4 -#else -#define PS2MEMCOORD4 ps2memcoord4 -#endif - -#define decl_BilinearFilter(bit, addrfn) \ -half4 BilinearFilter##bit(float2 tex0) \ -{ \ - float4 off0, off1; \ - float4 ftex; \ - float2 ffrac; \ - ftex.xy = tex0 + g_fBilinear.xy * g_fRealTexDims.zw; \ - ffrac = frac(ftex.xy*g_fRealTexDims.xy); \ - ftex.xy -= ffrac.xy * g_fRealTexDims.zw; \ - \ - ftex.zw = ps2addr(ftex.xy + g_fRealTexDims.zw); \ - ftex.xy = ps2addr(ftex.xy); \ - \ - PS2MEMCOORD4(ftex, off0, off1); \ - half4 c0 = texRECT(g_sMemory, off0.xy); \ - half4 c1 = texRECT(g_sMemory, off0.zw); \ - half4 c2 = texRECT(g_sMemory, off1.xy); \ - half4 c3 = texRECT(g_sMemory, off1.zw); \ - return lerp( lerp(c0, c1, ffrac.x), lerp(c2, c3, ffrac.x), ffrac.y ); \ -} \ - -decl_BilinearFilter(_32, ps2addr) -decl_BilinearFilter(_tex32, ps2addr) -decl_BilinearFilter(_clut32, ps2addr) -decl_BilinearFilter(_tex32to16, ps2addr) -decl_BilinearFilter(_tex16to8h, ps2addr) - -//TODO! For mip maps, only apply when LOD >= 0 -// lcm == 0, LOD = log(1/Q)*L + K, lcm == 1, LOD = K - -// bilinear -#define decl_ps2shade_1(bit) \ -half4 ps2shade1##bit(TEX_DECL tex) \ -{ \ - return BilinearFilter##bit(TEX_XY); \ -} \ - -// nearest, mip nearest -#define decl_ps2shade_2(bit) \ -half4 ps2shade2##bit(TEX_DECL tex) \ -{ \ - return tex2DPS##bit( ps2addr(TEX_XY)); \ -} \ - -// nearest, mip linear -#define decl_ps2shade_3(bit) \ -half4 ps2shade3##bit(TEX_DECL tex) \ -{ \ - return tex2DPS##bit(ps2addr(TEX_XY)); \ -} \ - -// linear, mip nearest -#define decl_ps2shade_4(bit) \ -half4 ps2shade4##bit(TEX_DECL tex) \ -{ \ - return BilinearFilter##bit(TEX_XY); \ -} \ - -// linear, mip linear -#define decl_ps2shade_5(bit) \ -half4 ps2shade5##bit(TEX_DECL tex) \ -{ \ - return BilinearFilter##bit(TEX_XY); \ -} \ - -decl_ps2shade(0) -decl_ps2shade(1) -decl_ps2shade(2) -decl_ps2shade(3) -decl_ps2shade(4) -decl_ps2shade(5) - -half4 ps2CalcShade(half4 texcol, half4 color) -{ -#ifdef TEST_AEM - if( dot(texcol.xyzw, g_fTestBlack.xyzw) <= g_fc0.z ) - texcol.w = g_fc0.x; - else -#endif - texcol.w = texcol.w * fTexAlpha.y + fTexAlpha.x; - - texcol = texcol * (fTexAlpha2.zzzw * color + fTexAlpha2.xxxy) + fTexAlpha.zzzw * color.wwww; - - return texcol; -} - -// final ops on the color -#ifdef EXACT_COLOR - -half4 ps2FinalColor(half4 col) -{ - // g_fOneColor has to scale by 255 - half4 temp = col * g_fOneColor.xxxy + g_fOneColor.zzzw; - temp.w = floor(temp.w)*g_fExactColor.w; - return temp; -} - -#else -half4 ps2FinalColor(half4 col) -{ - return col * g_fOneColor.xxxy + g_fOneColor.zzzw; -} -#endif - -//////////////// -// Techniques // -//////////////// - -// technique to copy a rectangle from source to target -struct VSOUT_ -{ - float4 pos : POSITION; - half4 color : COLOR0; - DOZWRITE(float4 z : TEXCOORD0;) -}; - -struct VSOUT_T -{ - float4 pos : POSITION; - half4 color : COLOR0; - TEX_DECL tex : TEXCOORD0; - DOZWRITE(float4 z : TEXCOORD1;) -}; - -struct VSOUT_F -{ - float4 pos : POSITION; - half4 color : COLOR0; - float fog : TEXCOORD0; - DOZWRITE(float4 z : TEXCOORD1;) -}; - -struct VSOUT_TF -{ - float4 pos : POSITION; - half4 color : COLOR0; - TEX_DECL tex : TEXCOORD0; - half fog : TEXCOORD1; - DOZWRITE(float4 z : TEXCOORD2;) -}; - -// just smooth shadering -VSOUT_ RegularVS(float4 pos : POSITION, - half4 color : COLOR0, - float4 z : COLOR1 - ) -{ - VSOUT_ o; - - o.pos.xy = pos.xy*g_fPosXY.xy+g_fPosXY.zw; - o.pos.z = log(g_fc0.y+dot(g_fZ, z.zyxw))*g_fZNorm.x+g_fZNorm.y; - o.pos.w = g_fc0.y; // 1 - o.color = color; - - DOZWRITE(o.z = z*g_fZBias.x+g_fZBias.y; o.z.w = g_fc0.y;) - return o; -} - -void RegularPS(VSOUT_ i, out float4 c0 : COLOR0 -#ifdef WRITE_DEPTH - , out float4 c1 : COLOR1 -#endif - ) -{ - // whenever outputting depth, make sure to mult by 255/256 and 1 - c0 = ps2FinalColor(i.color); - DOZWRITE(c1 = i.z;) -} - -// diffuse texture mapping -VSOUT_T TextureVS(float4 pos : POSITION, - half4 color : COLOR0, - float4 z : COLOR1, - float3 tex0 : TEXCOORD0) -{ - VSOUT_T o; - o.pos.xy = pos.xy*g_fPosXY.xy+g_fPosXY.zw; - o.pos.z = log(g_fc0.y+dot(g_fZ, z.zyxw))*g_fZNorm.x + g_fZNorm.y; - o.pos.w = g_fc0.y; - o.color = color; - DOZWRITE(o.z = z*g_fZBias.x+g_fZBias.y; o.z.w = g_fc0.y;) -#ifdef PERSPECTIVE_CORRECT_TEX - o.tex = tex0; -#else - o.tex = tex0.xy/tex0.z; -#endif - return o; -} - -#ifdef WRITE_DEPTH - -#define DECL_TEXPS(num, bit) \ -void Texture##num##bit##PS(VSOUT_T i, out half4 c0 : COLOR0, out float4 c1 : COLOR1) \ -{ \ - c0 = ps2FinalColor(ps2CalcShade(ps2shade##num##bit(i.tex), i.color)); \ - c1 = i.z; \ -} \ - -#else - -#define DECL_TEXPS(num, bit) \ -void Texture##num##bit##PS(VSOUT_T i, out half4 c0 : COLOR0) \ -{ \ - c0 = ps2FinalColor(ps2CalcShade(ps2shade##num##bit(i.tex), i.color)); \ -} \ - -#endif - -#define DECL_TEXPS_(num) \ -DECL_TEXPS(num, _32) \ -DECL_TEXPS(num, _tex32) \ -DECL_TEXPS(num, _clut32) \ -DECL_TEXPS(num, _tex32to16) \ -DECL_TEXPS(num, _tex16to8h) \ - -DECL_TEXPS_(0) -DECL_TEXPS_(1) -DECL_TEXPS_(2) -DECL_TEXPS_(3) -DECL_TEXPS_(4) -DECL_TEXPS_(5) - -VSOUT_F RegularFogVS(float4 pos : POSITION, - half4 color : COLOR0, - float4 z : COLOR1) -{ - VSOUT_F o; - - o.pos.xy = pos.xy*g_fPosXY.xy+g_fPosXY.zw; - o.pos.z = log(g_fc0.y+dot(g_fZ, z.zyxw))*g_fZNorm.x+g_fZNorm.y; - o.pos.w = g_fc0.y; - DOZWRITE(o.z = z*g_fZBias.x+g_fZBias.y; o.z.w = g_fc0.y;) - o.color = color; - o.fog = pos.z*g_fBilinear.w; - return o; -} - -void RegularFogPS(VSOUT_F i, out half4 c0 : COLOR0 -#ifdef WRITE_DEPTH - , out float4 c1 : COLOR1 -#endif - ) -{ - half4 c; - c.xyz = lerp(g_fFogColor.xyz, i.color.xyz, i.fog); - c.w = i.color.w; - c0 = ps2FinalColor(c); - DOZWRITE(c1 = i.z;) -} - -VSOUT_TF TextureFogVS(float4 pos : POSITION, - half4 color : COLOR0, - float4 z : COLOR1, - float3 tex0 : TEXCOORD0) -{ - VSOUT_TF o; - - o.pos.xy = pos.xy*g_fPosXY.xy+g_fPosXY.zw; - o.pos.z = log(g_fc0.y+dot(g_fZ, z.zyxw))*g_fZNorm.x+g_fZNorm.y; - o.pos.w = g_fc0.y; - o.color = color; - o.fog = pos.z*g_fBilinear.w; - DOZWRITE(o.z = z*g_fZBias.x+g_fZBias.y; o.z.w = g_fc0.y;) -#ifdef PERSPECTIVE_CORRECT_TEX - o.tex = tex0; -#else - o.tex = tex0.xy/tex0.z; -#endif - return o; -} - -#ifdef WRITE_DEPTH - -#define DECL_TEXFOGPS(num, bit) \ -void TextureFog##num##bit##PS(VSOUT_TF i, out half4 c0 : COLOR0, out float4 c1 : COLOR1 ) \ -{ \ - half4 c = ps2CalcShade(ps2shade##num##bit(i.tex), i.color); \ - c.xyz = lerp(g_fFogColor.xyz, c.xyz, i.fog); \ - c0 = ps2FinalColor(c); \ - c1 = i.z; \ -} \ - -#else - -#define DECL_TEXFOGPS(num, bit) \ -void TextureFog##num##bit##PS(VSOUT_TF i, out half4 c0 : COLOR0) \ -{ \ - half4 c = ps2CalcShade(ps2shade##num##bit(i.tex), i.color); \ - c.xyz = lerp(g_fFogColor.xyz, c.xyz, i.fog); \ - c0 = ps2FinalColor(c); \ -} \ - -#endif - -#define DECL_TEXFOGPS_(num) \ -DECL_TEXFOGPS(num, _32) \ -DECL_TEXFOGPS(num, _tex32) \ -DECL_TEXFOGPS(num, _clut32) \ -DECL_TEXFOGPS(num, _tex32to16) \ -DECL_TEXFOGPS(num, _tex16to8h) \ - -DECL_TEXFOGPS_(0) -DECL_TEXFOGPS_(1) -DECL_TEXFOGPS_(2) -DECL_TEXFOGPS_(3) -DECL_TEXFOGPS_(4) -DECL_TEXFOGPS_(5) - -//------------------------------------------------------- -// Techniques not related to the main primitive commands -half4 BilinearBitBlt(float2 tex0) -{ - float4 ftex; - float2 ffrac; - - ffrac.xy = frac(tex0*g_fRealTexDims.xy); - ftex.xy = tex0 - ffrac.xy * g_fRealTexDims.zw; - ftex.zw = ftex.xy + g_fRealTexDims.zw; - - float4 off0, off1; - ps2memcoord4_fast(ftex, off0, off1); - half4 c0 = texRECT(g_sMemory, off0.xy); - half4 c1 = texRECT(g_sMemory, off0.zw); - half4 c2 = texRECT(g_sMemory, off1.xy); - half4 c3 = texRECT(g_sMemory, off1.zw); - - return lerp( lerp(c0, c1, ffrac.x), lerp(c2, c3, ffrac.x), ffrac.y ); -} - -void BitBltVS(in float4 pos : POSITION, - in half4 tex0 : COLOR1, - in float3 tex : TEXCOORD0, - out float4 opos : POSITION, - out float2 otex0 : TEXCOORD0, - out float2 ointerpos : TEXCOORD1) -{ - opos.xy = pos.xy * g_fBitBltPos.xy + g_fBitBltPos.zw; - ointerpos = opos.xy * g_fBitBltTrans.xy + g_fBitBltTrans.zw; - opos.zw = g_fc0.xy; - otex0 = tex.xy * g_fBitBltTex.xy + g_fBitBltTex.zw; -} - -half4 BitBltPS(in float2 tex0 : TEXCOORD0) : COLOR -{ - return texRECT(g_sMemory, ps2memcoord(tex0).xy)*g_fOneColor.xxxy; -} - -// used when AA -half4 BitBltAAPS(in float2 tex0 : TEXCOORD0) : COLOR -{ - return BilinearBitBlt(tex0)*g_fOneColor.xxxy; -} - -void BitBltDepthPS(in float2 tex0 : TEXCOORD0, - out float4 c : COLOR0, - out float depth : DEPTH) -{ - c = texRECT(g_sMemory, ps2memcoord(tex0)); - - depth = log(g_fc0.y+dot(c, g_fBitBltZ))*g_fOneColor.w; - c += g_fZBias.y; -} - -void BitBltDepthMRTPS(in float2 tex0 : TEXCOORD0, - out half4 c0 : COLOR0, - out float4 c1 : COLOR1, - out float depth : DEPTH) -{ - c1 = texRECT(g_sMemory, ps2memcoord(tex0)); - - depth = log(g_fc0.y+dot(c1, g_fBitBltZ))*g_fOneColor.w; - c1 += g_fZBias.y; - c0 = g_fc0.x; -} - -/*static const float BlurKernel[9] = { - 0.027601, - 0.066213, - 0.123701, - 0.179952, - 0.205065, - 0.179952, - 0.123701, - 0.066213, - 0.027601 -};*/ - -half4 BilinearFloat16(float2 tex0) -{ - /*float4 ffrac, ftex; - ffrac.xy = frac(tex0); - ftex.xy = (tex0 - ffrac.xy) * g_fInvTexDims.xy + g_fInvTexDims.zw; - ftex.zw = ftex.xy + g_fInvTexDims.xy; - - half4 c0 = texRECT(g_sSrcFinal, ftex.xy); - half4 c1 = texRECT(g_sSrcFinal, ftex.zy); - half4 c2 = texRECT(g_sSrcFinal, ftex.xw); - half4 c3 = texRECT(g_sSrcFinal, ftex.zw); - - return lerp( lerp(c0, c1, ffrac.x), lerp(c2, c3, ffrac.x), ffrac.y );*/ - return texRECT(g_sSrcFinal, tex0.xy); -// return 0.55f * texRECT(g_sSrcFinal, tex0.xy) + -// 0.15f * texRECT(g_sSrcFinal, tex0.xy+g_fInvTexDims.xz) + -// 0.15f * texRECT(g_sSrcFinal, tex0.xy+g_fInvTexDims.zy) + -// 0.15f * texRECT(g_sSrcFinal, tex0.xy+g_fInvTexDims.xy); -} - -half4 CRTCTargInterPS(in float2 tex0 : TEXCOORD0, in float2 ointerpos : TEXCOORD1) : COLOR -{ - float finter = texRECT(g_sInterlace, ointerpos.yy).x; - clip(finter * g_fOneColor.z + g_fOneColor.w); - - float4 c = BilinearFloat16(tex0); - c.w = g_fc0.w*c.w * g_fOneColor.x + g_fOneColor.y; - return c; -} - -half4 CRTCTargPS(in float2 tex0 : TEXCOORD0) : COLOR -{ - float4 c = BilinearFloat16(tex0); - c.w = g_fc0.w*c.w * g_fOneColor.x + g_fOneColor.y; - return c; -} - -half4 CRTCInterPS(in float2 tex0 : TEXCOORD0, in float2 ointerpos : TEXCOORD1) : COLOR -{ - float2 filtcoord = (tex0-frac(tex0))*g_fInvTexDims.xy+g_fInvTexDims.zw; - float finter = texRECT(g_sInterlace, ointerpos.yy).x; - clip(finter * g_fOneColor.z + g_fOneColor.w); - - half4 c = BilinearBitBlt(filtcoord); - c.w = c.w * g_fOneColor.x + g_fOneColor.y; - - return c; -} - -// simpler -half4 CRTCInterPS_Nearest(in float2 tex0 : TEXCOORD0, in float2 ointerpos : TEXCOORD1) : COLOR -{ - float finter = texRECT(g_sInterlace, ointerpos.yy).x; - clip(finter * g_fOneColor.z + g_fOneColor.w); - - half4 c = texRECT(g_sMemory, ps2memcoord(tex0).xy); - c.w = c.w * g_fOneColor.x + g_fOneColor.y; - return c; -} - -half4 CRTCPS(in float2 tex0 : TEXCOORD0) : COLOR -{ - float2 filtcoord = (tex0/*-frac(tex0)*/)*g_fInvTexDims.xy+g_fInvTexDims.zw; - half4 c = BilinearBitBlt(filtcoord); - c.w = c.w * g_fOneColor.x + g_fOneColor.y; - - return c; -} - -// simpler -half4 CRTCPS_Nearest(in float2 tex0 : TEXCOORD0) : COLOR -{ - half4 c = texRECT(g_sMemory, ps2memcoord(tex0).xy); - c.w = c.w * g_fOneColor.x + g_fOneColor.y; - return c; -} - -half4 CRTC24InterPS(in float2 tex0 : TEXCOORD0, in float2 ointerpos : TEXCOORD1) : COLOR -{ - float2 filtcoord = (tex0-frac(tex0))*g_fInvTexDims.xy+g_fInvTexDims.zw; - float finter = texRECT(g_sInterlace, ointerpos.yy).x; - clip(finter * g_fOneColor.z + g_fOneColor.w); - - half4 c = texRECT(g_sMemory, ps2memcoord(filtcoord).xy).x; - c.w = c.w * g_fOneColor.x + g_fOneColor.y; - - return c; -} - -half4 CRTC24PS(in float2 tex0 : TEXCOORD0) : COLOR -{ - float2 filtcoord = (tex0-frac(tex0))*g_fInvTexDims.xy+g_fInvTexDims.zw; - half4 c = texRECT(g_sMemory, ps2memcoord(filtcoord).xy).x; - c.w = c.w * g_fOneColor.x + g_fOneColor.y; - - return c; -} - -half4 ZeroPS() : COLOR -{ - return g_fOneColor.x; -} - -half4 BaseTexturePS(in float2 tex0 : TEXCOORD0) : COLOR -{ - return texRECT(g_sSrcFinal, tex0) * g_fOneColor; -} - -half4 Convert16to32PS(float2 tex0 : TEXCOORD0) : COLOR -{ - float4 final; - float2 ffrac = fmod(tex0+g_fTexDims.zw, g_fTexOffset.xy); - tex0.xy = g_fTexDims.xy * tex0.xy - ffrac * g_fc0.yw; - - if( ffrac.x > g_fTexOffset.x*g_fc0.w ) - tex0.x += g_fTexOffset.x*g_fc0.w; - if( tex0.x >= g_fc0.y ) tex0 += g_fTexOffset.zw; - - float4 lower = texRECT(g_sSrcFinal, tex0); - float4 upper = texRECT(g_sSrcFinal, tex0+g_fPageOffset.xy); - - final.zy = tex3D(g_sConv32to16, lower.zyx).xy + lower.ww*g_fPageOffset.zw; - final.xw = tex3D(g_sConv32to16, upper.zyx).xy + upper.ww*g_fPageOffset.zw; - - return final; -} - -// use when texture is not tiled and converting from 32bit to 16bit -// don't convert on the block level, only on the column level -// so every other 8 pixels, use the upper bits instead of lower -half4 Convert32to16PS(float2 tex0 : TEXCOORD0) : COLOR -{ - bool upper = false; - float2 ffrac = fmod(tex0+g_fTexDims.zw, g_fTexOffset.xy); - tex0.xy = g_fc0.ww * (tex0.xy + ffrac); - if( ffrac.x > g_fTexOffset.z ) { - tex0.x -= g_fTexOffset.z; - upper = true; - } - if( ffrac.y >= g_fTexOffset.w ) { - tex0.y -= g_fTexOffset.w; - tex0.x += g_fc0.w; - } - - half4 color = texRECT(g_sSrcFinal, tex0*g_fTexDims.xy)*g_fc0.yyyw; - float2 uv = upper ? color.xw : color.zy; - return tex2D(g_sConv16to32, uv*g_fPageOffset.xy+g_fPageOffset.zw)*g_fTexDims.xxxy; -} +// Cg Shaders for PS2 GS emulation + +// divides by z for every pixel, instead of in vertex shader +// fixes kh textures +#define PERSPECTIVE_CORRECT_TEX + +//#define TEST_AEM // tests AEM for black pixels +//#define REGION_REPEAT // set if texture wrapping mode is region repeat +//#define WRITE_DEPTH // set if depth is also written in a MRT +//#define ACCURATE_DECOMPRESSION // set for less capable hardware ATI Radeon 9000 series +//#define EXACT_COLOR // make sure the output color is clamped to 1/255 boundaries (for alpha testing) + +#ifdef PERSPECTIVE_CORRECT_TEX +#define TEX_XY tex.xy/tex.z +#define TEX_DECL float3 +#else +#define TEX_XY tex.xy +#define TEX_DECL float2 +#endif + +#ifdef WRITE_DEPTH +#define DOZWRITE(x) x +#else +#define DOZWRITE(x) +#endif + +#include "ps2hw_ctx.fx" + +// used to get the tiled offset into a page given the linear offset +uniform samplerRECT g_sSrcFinal : register(s2); +uniform sampler2D g_sBlocks : register(s3); +uniform sampler2D g_sBilinearBlocks : register(s4); +uniform sampler2D g_sConv16to32 : register(s4); +uniform sampler3D g_sConv32to16 : register(s4); +uniform sampler2D g_sBitwiseANDX : register(s5); +uniform sampler2D g_sBitwiseANDY : register(s6); +uniform samplerRECT g_sInterlace : register(s7); + +// used only on rare cases where the render target is PSMT8H +uniform sampler2D g_sCLUT : register(s2); + +// global pixel shader constants +uniform float4 g_fInvTexDims : register(c22); // similar to g_fClutOff +uniform float4 g_fFogColor : register(c23); + +// used for rectblitting +uniform float4 g_fBitBltZ : register(c24); + +uniform half4 g_fOneColor : register(c25); // col*.xxxy+.zzzw + +// vertex shader constants +uniform float4 g_fBitBltPos : register(c4); +uniform float4 g_fZ : register(c5); // transforms d3dcolor z into float z +uniform float4 g_fZNorm : register(c6); +uniform float4 g_fBitBltTex : register(c7); + +// pixel shader consts +// .z is used for the addressing fn +uniform half4 g_fExactColor : register(c27) = half4(0.5,0.5/256.0f,0,1/255.0f); +uniform float4 g_fBilinear : register(c28) = float4(-0.7f, -0.65f, 0.9,1/32767.0f); +uniform float4 g_fZBias : register(c29) = half4(1.0f/256.0f, 1.0004f, 1, 0.5); // also for vs +uniform float4 g_fc0 : register(c30) = float4(0,1, 0.001, 0.5f); // also for vs +uniform float4 g_fMult : register(c31) = float4(1/1024.0f, 0.2f/1024.0f, 1/128.0f, 1/512.0f); + +// vertex shader consts +uniform float4 g_fBitBltTrans : register(c31) = float4(0.5f, -0.5f, 0.5, 0.5 + 0.4/416.0f); + +// given a local tex coord, returns the coord in the memory +float2 ps2memcoord(float2 realtex) +{ + float4 off; + + // block off + realtex.xy = realtex.xy * g_fTexDims.xy + g_fTexDims.zw; + realtex.xy = (realtex.xy - frac(realtex.xy)) * g_fMult.zw; + float2 fblock = frac(realtex.xy); + off.xy = realtex.xy-fblock.xy; + +#ifdef ACCURATE_DECOMPRESSION + off.zw = tex2D(g_sBlocks, g_fTexBlock.xy*fblock + g_fTexBlock.zw).ar; + off.x = dot(off.xyw, g_fTexOffset.xyw); + float f = frac(off.x); + float fadd = g_fTexOffset.z * off.z; + off.w = off.x + fadd; + off.x = frac(f + fadd); + off.w -= off.x; +#else + off.z = tex2D(g_sBlocks, g_fTexBlock.xy*fblock + g_fTexBlock.zw).a; + + // combine the two + off.x = dot(off.xyz, g_fTexOffset.xyz)+g_fTexOffset.w; + off.x = modf(off.x, off.w); +#endif + + off.xy = off.xw * g_fPageOffset.zy + g_fPageOffset.wx; + //off.y = off.w * g_fPageOffset.y + g_fPageOffset.x; + return off.xy; +} + +// find all texcoords for bilinear filtering +// assume that orgtex are already on boundaries +void ps2memcoord4(float4 orgtex, out float4 off0, out float4 off1) +{ + //float4 off0, off1, off2, off3; + float4 realtex; + + // block off + realtex = (orgtex * g_fTexDims.xyxy + g_fTexDims.zwzw);// * g_fMult.zwzw; + float4 fblock = frac(realtex.xyzw); + float4 ftransblock = g_fTexBlock.xyxy*fblock + g_fTexBlock.zwzw; + realtex -= fblock; + + float4 transvals = g_fTexOffset.x * realtex.xzxz + g_fTexOffset.y * realtex.yyww + g_fTexOffset.w; + + float4 colors;// = tex2D(g_sBilinearBlocks, ftransblock.xy); + + // this is faster on ffx ingame + colors.x = tex2D(g_sBlocks, ftransblock.xy).a; + colors.y = tex2D(g_sBlocks, ftransblock.zy).a; + colors.z = tex2D(g_sBlocks, ftransblock.xw).a; + colors.w = tex2D(g_sBlocks, ftransblock.zw).a; + + float4 fr, rem; + +#ifdef ACCURATE_DECOMPRESSION + fr = frac(transvals); + float4 fadd = colors * g_fTexOffset.z; + rem = transvals + fadd; + fr = frac(fr + fadd); + rem -= fr; +#else + transvals += colors * g_fTexOffset.z; + + fr = modf(transvals, rem); +#endif + + rem = rem * g_fPageOffset.y + g_fPageOffset.x; + fr = fr * g_fPageOffset.z + g_fPageOffset.w; + + // combine + off0 = g_fc0.yxyx * fr.xxyy + g_fc0.xyxy * rem.xxyy; + off1 = g_fc0.yxyx * fr.zzww + g_fc0.xyxy * rem.zzww; +} + +void ps2memcoord4_fast(float4 orgtex, out float4 off0, out float4 off1) +{ + float4 realtex; + + realtex = (orgtex * g_fTexDims.xyxy + g_fTexDims.zwzw);// * g_fMult.zwzw; + float4 fblock = frac(realtex.xyzw); + float2 ftransblock = g_fTexBlock.xy*fblock.xy + g_fTexBlock.zw; + realtex -= fblock; + + float4 transvals = g_fTexOffset.x * realtex.xzxz + g_fTexOffset.y * realtex.yyww + g_fTexOffset.w; + + float4 colors = tex2D(g_sBilinearBlocks, ftransblock.xy); + float4 fr, rem; + +#ifdef ACCURATE_DECOMPRESSION + fr = frac(transvals); + float4 fadd = colors * g_fTexOffset.z; + rem = transvals + fadd; + fr = frac(fr + fadd); + rem -= fr; +#else + transvals += colors * g_fTexOffset.z; + + fr = modf(transvals, rem); +#endif + + rem = rem * g_fPageOffset.y + g_fPageOffset.x; + fr = fr * g_fPageOffset.z; + + off0 = g_fc0.yxyx * fr.xxyy + g_fc0.xyxy * rem.xxyy; + off1 = g_fc0.yxyx * fr.zzww + g_fc0.xyxy * rem.zzww; +} + +// Wrapping modes +#if defined(REPEAT) + +float2 ps2addr(float2 coord) +{ + return frac(coord.xy); +} + +#elif defined(CLAMP) + +float2 ps2addr(float2 coord) +{ + return clamp(coord.xy, g_fClampExts.xy, g_fClampExts.zw); +} + +#elif defined(REGION_REPEAT) + +// computes the local tex coord along with addressing modes +float2 ps2addr(float2 coord) +{ + float2 final = frac(clamp(coord.xy, g_fClampExts.xy, g_fClampExts.zw)); + + if( TexWrapMode.x > g_fBilinear.z ) // region repeat mode for x (umsk&x)|ufix + final.x = tex2D(g_sBitwiseANDX, abs(coord.x)*TexWrapMode.zz).x * g_fClampExts.x + g_fClampExts.z; + if( TexWrapMode.y > g_fBilinear.z ) // region repeat mode for x (vmsk&x)|vfix + final.y = tex2D(g_sBitwiseANDY, abs(coord.y)*TexWrapMode.ww).x * g_fClampExts.y + g_fClampExts.w; + + return final; +} + +#else + +float2 ps2addr(float2 coord) +{ + return frac(clamp(coord.xy, g_fClampExts.xy, g_fClampExts.zw)); +} + +#endif + +half4 tex2DPS_32(float2 tex0) +{ + return texRECT(g_sMemory, ps2memcoord(tex0).xy); +} + +// use when texture is not tiled +half4 tex2DPS_tex32(float2 tex0) +{ + return texRECT(g_sMemory, g_fTexDims.xy*tex0+g_fTexDims.zw)*g_fZBias.zzzw+g_fPageOffset.w; +} + +// use when texture is not tiled +half4 tex2DPS_clut32(float2 tex0) +{ + float index = texRECT(g_sMemory, g_fTexDims.xy*tex0+g_fTexDims.zw).a+g_fPageOffset.w; + return tex2D(g_sCLUT, index*g_fExactColor.xz+g_fExactColor.yz); +} + +// use when texture is not tiled and converting from 32bit to 16bit +// don't convert on the block level, only on the column level +// so every other 8 pixels, use the upper bits instead of lower +half4 tex2DPS_tex32to16(float2 tex0) +{ + bool upper = false; + tex0.y += g_fPageOffset.z; + float2 ffrac = fmod(tex0, g_fTexOffset.xy); + tex0.xy = g_fc0.ww * (tex0.xy + ffrac); + if( ffrac.x > g_fTexOffset.z ) { + tex0.x -= g_fTexOffset.z; + upper = true; + } + if( ffrac.y >= g_fTexOffset.w ) { + tex0.y -= g_fTexOffset.w; + tex0.x += g_fc0.w; + } + + half4 color = texRECT(g_sMemory, g_fTexDims.xy*tex0+g_fTexDims.zw)*g_fZBias.zzzw+g_fPageOffset.w; + float2 uv = upper ? color.xw : color.zy; + return tex2D(g_sConv16to32, uv+g_fPageOffset.xy); +} + +// used when a 16 bit texture is used an 8h +half4 tex2DPS_tex16to8h(float2 tex0) +{ + float4 final; + float2 ffrac = fmod(tex0+g_fPageOffset.zw, g_fTexOffset.xy); + tex0.xy = g_fPageOffset.xy * tex0.xy - ffrac * g_fc0.yw; + + if( ffrac.x > g_fTexOffset.x*g_fc0.w ) + tex0.x += g_fTexOffset.x*g_fc0.w; + if( tex0.x >= g_fc0.y ) tex0 += g_fTexOffset.zw; + + float4 upper = texRECT(g_sMemory, g_fTexDims.xy*tex0+g_fTexDims.zw); + + // only need alpha + float index = tex3D(g_sConv32to16, upper.zyx-g_fc0.z).y + upper.w*g_fc0.w*g_fc0.w; + return tex2D(g_sCLUT, index+g_fExactColor.yz); +} + +//half4 f; +//f.w = old.y > (127.2f/255.0f) ? 1 : 0; +//old.y -= 0.5f * f.w; +//f.xyz = frac(old.yyx*half3(2.002*255.0f/256.0f, 64.025f*255.0f/256.0f, 8.002*255.0f/256.0f)); +//f.y += old.x * (0.25f*255.0f/256.0f); + +//////////////////////////////// +// calculates the texture color +//////////////////////////////// + +#define decl_ps2shade(num) \ +decl_ps2shade_##num(_32) \ +decl_ps2shade_##num(_tex32) \ +decl_ps2shade_##num(_clut32) \ +decl_ps2shade_##num(_tex32to16) \ +decl_ps2shade_##num(_tex16to8h) \ + +// nearest +#define decl_ps2shade_0(bit) \ +float4 ps2shade0##bit( TEX_DECL tex) \ +{ \ + return tex2DPS##bit( ps2addr(TEX_XY)); \ +} \ + +// do fast memcoord4 calcs when textures behave well +#ifdef REPEAT +#define PS2MEMCOORD4 ps2memcoord4 +#else +#define PS2MEMCOORD4 ps2memcoord4 +#endif + +#define decl_BilinearFilter(bit, addrfn) \ +half4 BilinearFilter##bit(float2 tex0) \ +{ \ + float4 off0, off1; \ + float4 ftex; \ + float2 ffrac; \ + ftex.xy = tex0 + g_fBilinear.xy * g_fRealTexDims.zw; \ + ffrac = frac(ftex.xy*g_fRealTexDims.xy); \ + ftex.xy -= ffrac.xy * g_fRealTexDims.zw; \ + \ + ftex.zw = ps2addr(ftex.xy + g_fRealTexDims.zw); \ + ftex.xy = ps2addr(ftex.xy); \ + \ + PS2MEMCOORD4(ftex, off0, off1); \ + half4 c0 = texRECT(g_sMemory, off0.xy); \ + half4 c1 = texRECT(g_sMemory, off0.zw); \ + half4 c2 = texRECT(g_sMemory, off1.xy); \ + half4 c3 = texRECT(g_sMemory, off1.zw); \ + return lerp( lerp(c0, c1, ffrac.x), lerp(c2, c3, ffrac.x), ffrac.y ); \ +} \ + +decl_BilinearFilter(_32, ps2addr) +decl_BilinearFilter(_tex32, ps2addr) +decl_BilinearFilter(_clut32, ps2addr) +decl_BilinearFilter(_tex32to16, ps2addr) +decl_BilinearFilter(_tex16to8h, ps2addr) + +//TODO! For mip maps, only apply when LOD >= 0 +// lcm == 0, LOD = log(1/Q)*L + K, lcm == 1, LOD = K + +// bilinear +#define decl_ps2shade_1(bit) \ +half4 ps2shade1##bit(TEX_DECL tex) \ +{ \ + return BilinearFilter##bit(TEX_XY); \ +} \ + +// nearest, mip nearest +#define decl_ps2shade_2(bit) \ +half4 ps2shade2##bit(TEX_DECL tex) \ +{ \ + return tex2DPS##bit( ps2addr(TEX_XY)); \ +} \ + +// nearest, mip linear +#define decl_ps2shade_3(bit) \ +half4 ps2shade3##bit(TEX_DECL tex) \ +{ \ + return tex2DPS##bit(ps2addr(TEX_XY)); \ +} \ + +// linear, mip nearest +#define decl_ps2shade_4(bit) \ +half4 ps2shade4##bit(TEX_DECL tex) \ +{ \ + return BilinearFilter##bit(TEX_XY); \ +} \ + +// linear, mip linear +#define decl_ps2shade_5(bit) \ +half4 ps2shade5##bit(TEX_DECL tex) \ +{ \ + return BilinearFilter##bit(TEX_XY); \ +} \ + +decl_ps2shade(0) +decl_ps2shade(1) +decl_ps2shade(2) +decl_ps2shade(3) +decl_ps2shade(4) +decl_ps2shade(5) + +half4 ps2CalcShade(half4 texcol, half4 color) +{ +#ifdef TEST_AEM + if( dot(texcol.xyzw, g_fTestBlack.xyzw) <= g_fc0.z ) + texcol.w = g_fc0.x; + else +#endif + texcol.w = texcol.w * fTexAlpha.y + fTexAlpha.x; + + texcol = texcol * (fTexAlpha2.zzzw * color + fTexAlpha2.xxxy) + fTexAlpha.zzzw * color.wwww; + + return texcol; +} + +// final ops on the color +#ifdef EXACT_COLOR + +half4 ps2FinalColor(half4 col) +{ + // g_fOneColor has to scale by 255 + half4 temp = col * g_fOneColor.xxxy + g_fOneColor.zzzw; + temp.w = floor(temp.w)*g_fExactColor.w; + return temp; +} + +#else +half4 ps2FinalColor(half4 col) +{ + return col * g_fOneColor.xxxy + g_fOneColor.zzzw; +} +#endif + +//////////////// +// Techniques // +//////////////// + +// technique to copy a rectangle from source to target +struct VSOUT_ +{ + float4 pos : POSITION; + half4 color : COLOR0; + DOZWRITE(float4 z : TEXCOORD0;) +}; + +struct VSOUT_T +{ + float4 pos : POSITION; + half4 color : COLOR0; + TEX_DECL tex : TEXCOORD0; + DOZWRITE(float4 z : TEXCOORD1;) +}; + +struct VSOUT_F +{ + float4 pos : POSITION; + half4 color : COLOR0; + float fog : TEXCOORD0; + DOZWRITE(float4 z : TEXCOORD1;) +}; + +struct VSOUT_TF +{ + float4 pos : POSITION; + half4 color : COLOR0; + TEX_DECL tex : TEXCOORD0; + half fog : TEXCOORD1; + DOZWRITE(float4 z : TEXCOORD2;) +}; + +// just smooth shadering +VSOUT_ RegularVS(float4 pos : POSITION, + half4 color : COLOR0, + float4 z : COLOR1 + ) +{ + VSOUT_ o; + + o.pos.xy = pos.xy*g_fPosXY.xy+g_fPosXY.zw; + o.pos.z = log(g_fc0.y+dot(g_fZ, z.zyxw))*g_fZNorm.x+g_fZNorm.y; + o.pos.w = g_fc0.y; // 1 + o.color = color; + + DOZWRITE(o.z = z*g_fZBias.x+g_fZBias.y; o.z.w = g_fc0.y;) + return o; +} + +void RegularPS(VSOUT_ i, out float4 c0 : COLOR0 +#ifdef WRITE_DEPTH + , out float4 c1 : COLOR1 +#endif + ) +{ + // whenever outputting depth, make sure to mult by 255/256 and 1 + c0 = ps2FinalColor(i.color); + DOZWRITE(c1 = i.z;) +} + +// diffuse texture mapping +VSOUT_T TextureVS(float4 pos : POSITION, + half4 color : COLOR0, + float4 z : COLOR1, + float3 tex0 : TEXCOORD0) +{ + VSOUT_T o; + o.pos.xy = pos.xy*g_fPosXY.xy+g_fPosXY.zw; + o.pos.z = log(g_fc0.y+dot(g_fZ, z.zyxw))*g_fZNorm.x + g_fZNorm.y; + o.pos.w = g_fc0.y; + o.color = color; + DOZWRITE(o.z = z*g_fZBias.x+g_fZBias.y; o.z.w = g_fc0.y;) +#ifdef PERSPECTIVE_CORRECT_TEX + o.tex = tex0; +#else + o.tex = tex0.xy/tex0.z; +#endif + return o; +} + +#ifdef WRITE_DEPTH + +#define DECL_TEXPS(num, bit) \ +void Texture##num##bit##PS(VSOUT_T i, out half4 c0 : COLOR0, out float4 c1 : COLOR1) \ +{ \ + c0 = ps2FinalColor(ps2CalcShade(ps2shade##num##bit(i.tex), i.color)); \ + c1 = i.z; \ +} \ + +#else + +#define DECL_TEXPS(num, bit) \ +void Texture##num##bit##PS(VSOUT_T i, out half4 c0 : COLOR0) \ +{ \ + c0 = ps2FinalColor(ps2CalcShade(ps2shade##num##bit(i.tex), i.color)); \ +} \ + +#endif + +#define DECL_TEXPS_(num) \ +DECL_TEXPS(num, _32) \ +DECL_TEXPS(num, _tex32) \ +DECL_TEXPS(num, _clut32) \ +DECL_TEXPS(num, _tex32to16) \ +DECL_TEXPS(num, _tex16to8h) \ + +DECL_TEXPS_(0) +DECL_TEXPS_(1) +DECL_TEXPS_(2) +DECL_TEXPS_(3) +DECL_TEXPS_(4) +DECL_TEXPS_(5) + +VSOUT_F RegularFogVS(float4 pos : POSITION, + half4 color : COLOR0, + float4 z : COLOR1) +{ + VSOUT_F o; + + o.pos.xy = pos.xy*g_fPosXY.xy+g_fPosXY.zw; + o.pos.z = log(g_fc0.y+dot(g_fZ, z.zyxw))*g_fZNorm.x+g_fZNorm.y; + o.pos.w = g_fc0.y; + DOZWRITE(o.z = z*g_fZBias.x+g_fZBias.y; o.z.w = g_fc0.y;) + o.color = color; + o.fog = pos.z*g_fBilinear.w; + return o; +} + +void RegularFogPS(VSOUT_F i, out half4 c0 : COLOR0 +#ifdef WRITE_DEPTH + , out float4 c1 : COLOR1 +#endif + ) +{ + half4 c; + c.xyz = lerp(g_fFogColor.xyz, i.color.xyz, i.fog); + c.w = i.color.w; + c0 = ps2FinalColor(c); + DOZWRITE(c1 = i.z;) +} + +VSOUT_TF TextureFogVS(float4 pos : POSITION, + half4 color : COLOR0, + float4 z : COLOR1, + float3 tex0 : TEXCOORD0) +{ + VSOUT_TF o; + + o.pos.xy = pos.xy*g_fPosXY.xy+g_fPosXY.zw; + o.pos.z = log(g_fc0.y+dot(g_fZ, z.zyxw))*g_fZNorm.x+g_fZNorm.y; + o.pos.w = g_fc0.y; + o.color = color; + o.fog = pos.z*g_fBilinear.w; + DOZWRITE(o.z = z*g_fZBias.x+g_fZBias.y; o.z.w = g_fc0.y;) +#ifdef PERSPECTIVE_CORRECT_TEX + o.tex = tex0; +#else + o.tex = tex0.xy/tex0.z; +#endif + return o; +} + +#ifdef WRITE_DEPTH + +#define DECL_TEXFOGPS(num, bit) \ +void TextureFog##num##bit##PS(VSOUT_TF i, out half4 c0 : COLOR0, out float4 c1 : COLOR1 ) \ +{ \ + half4 c = ps2CalcShade(ps2shade##num##bit(i.tex), i.color); \ + c.xyz = lerp(g_fFogColor.xyz, c.xyz, i.fog); \ + c0 = ps2FinalColor(c); \ + c1 = i.z; \ +} \ + +#else + +#define DECL_TEXFOGPS(num, bit) \ +void TextureFog##num##bit##PS(VSOUT_TF i, out half4 c0 : COLOR0) \ +{ \ + half4 c = ps2CalcShade(ps2shade##num##bit(i.tex), i.color); \ + c.xyz = lerp(g_fFogColor.xyz, c.xyz, i.fog); \ + c0 = ps2FinalColor(c); \ +} \ + +#endif + +#define DECL_TEXFOGPS_(num) \ +DECL_TEXFOGPS(num, _32) \ +DECL_TEXFOGPS(num, _tex32) \ +DECL_TEXFOGPS(num, _clut32) \ +DECL_TEXFOGPS(num, _tex32to16) \ +DECL_TEXFOGPS(num, _tex16to8h) \ + +DECL_TEXFOGPS_(0) +DECL_TEXFOGPS_(1) +DECL_TEXFOGPS_(2) +DECL_TEXFOGPS_(3) +DECL_TEXFOGPS_(4) +DECL_TEXFOGPS_(5) + +//------------------------------------------------------- +// Techniques not related to the main primitive commands +half4 BilinearBitBlt(float2 tex0) +{ + float4 ftex; + float2 ffrac; + + ffrac.xy = frac(tex0*g_fRealTexDims.xy); + ftex.xy = tex0 - ffrac.xy * g_fRealTexDims.zw; + ftex.zw = ftex.xy + g_fRealTexDims.zw; + + float4 off0, off1; + ps2memcoord4_fast(ftex, off0, off1); + half4 c0 = texRECT(g_sMemory, off0.xy); + half4 c1 = texRECT(g_sMemory, off0.zw); + half4 c2 = texRECT(g_sMemory, off1.xy); + half4 c3 = texRECT(g_sMemory, off1.zw); + + return lerp( lerp(c0, c1, ffrac.x), lerp(c2, c3, ffrac.x), ffrac.y ); +} + +void BitBltVS(in float4 pos : POSITION, + in half4 tex0 : COLOR1, + in float3 tex : TEXCOORD0, + out float4 opos : POSITION, + out float2 otex0 : TEXCOORD0, + out float2 ointerpos : TEXCOORD1) +{ + opos.xy = pos.xy * g_fBitBltPos.xy + g_fBitBltPos.zw; + ointerpos = opos.xy * g_fBitBltTrans.xy + g_fBitBltTrans.zw; + opos.zw = g_fc0.xy; + otex0 = tex.xy * g_fBitBltTex.xy + g_fBitBltTex.zw; +} + +half4 BitBltPS(in float2 tex0 : TEXCOORD0) : COLOR +{ + return texRECT(g_sMemory, ps2memcoord(tex0).xy)*g_fOneColor.xxxy; +} + +// used when AA +half4 BitBltAAPS(in float2 tex0 : TEXCOORD0) : COLOR +{ + return BilinearBitBlt(tex0)*g_fOneColor.xxxy; +} + +void BitBltDepthPS(in float2 tex0 : TEXCOORD0, + out float4 c : COLOR0, + out float depth : DEPTH) +{ + c = texRECT(g_sMemory, ps2memcoord(tex0)); + + depth = log(g_fc0.y+dot(c, g_fBitBltZ))*g_fOneColor.w; + c += g_fZBias.y; +} + +void BitBltDepthMRTPS(in float2 tex0 : TEXCOORD0, + out half4 c0 : COLOR0, + out float4 c1 : COLOR1, + out float depth : DEPTH) +{ + c1 = texRECT(g_sMemory, ps2memcoord(tex0)); + + depth = log(g_fc0.y+dot(c1, g_fBitBltZ))*g_fOneColor.w; + c1 += g_fZBias.y; + c0 = g_fc0.x; +} + +/*static const float BlurKernel[9] = { + 0.027601, + 0.066213, + 0.123701, + 0.179952, + 0.205065, + 0.179952, + 0.123701, + 0.066213, + 0.027601 +};*/ + +half4 BilinearFloat16(float2 tex0) +{ + /*float4 ffrac, ftex; + ffrac.xy = frac(tex0); + ftex.xy = (tex0 - ffrac.xy) * g_fInvTexDims.xy + g_fInvTexDims.zw; + ftex.zw = ftex.xy + g_fInvTexDims.xy; + + half4 c0 = texRECT(g_sSrcFinal, ftex.xy); + half4 c1 = texRECT(g_sSrcFinal, ftex.zy); + half4 c2 = texRECT(g_sSrcFinal, ftex.xw); + half4 c3 = texRECT(g_sSrcFinal, ftex.zw); + + return lerp( lerp(c0, c1, ffrac.x), lerp(c2, c3, ffrac.x), ffrac.y );*/ + return texRECT(g_sSrcFinal, tex0.xy); +// return 0.55f * texRECT(g_sSrcFinal, tex0.xy) + +// 0.15f * texRECT(g_sSrcFinal, tex0.xy+g_fInvTexDims.xz) + +// 0.15f * texRECT(g_sSrcFinal, tex0.xy+g_fInvTexDims.zy) + +// 0.15f * texRECT(g_sSrcFinal, tex0.xy+g_fInvTexDims.xy); +} + +half4 CRTCTargInterPS(in float2 tex0 : TEXCOORD0, in float2 ointerpos : TEXCOORD1) : COLOR +{ + float finter = texRECT(g_sInterlace, ointerpos.yy).x; + clip(finter * g_fOneColor.z + g_fOneColor.w); + + float4 c = BilinearFloat16(tex0); + c.w = g_fc0.w*c.w * g_fOneColor.x + g_fOneColor.y; + return c; +} + +half4 CRTCTargPS(in float2 tex0 : TEXCOORD0) : COLOR +{ + float4 c = BilinearFloat16(tex0); + c.w = g_fc0.w*c.w * g_fOneColor.x + g_fOneColor.y; + return c; +} + +half4 CRTCInterPS(in float2 tex0 : TEXCOORD0, in float2 ointerpos : TEXCOORD1) : COLOR +{ + float2 filtcoord = (tex0-frac(tex0))*g_fInvTexDims.xy+g_fInvTexDims.zw; + float finter = texRECT(g_sInterlace, ointerpos.yy).x; + clip(finter * g_fOneColor.z + g_fOneColor.w); + + half4 c = BilinearBitBlt(filtcoord); + c.w = c.w * g_fOneColor.x + g_fOneColor.y; + + return c; +} + +// simpler +half4 CRTCInterPS_Nearest(in float2 tex0 : TEXCOORD0, in float2 ointerpos : TEXCOORD1) : COLOR +{ + float finter = texRECT(g_sInterlace, ointerpos.yy).x; + clip(finter * g_fOneColor.z + g_fOneColor.w); + + half4 c = texRECT(g_sMemory, ps2memcoord(tex0).xy); + c.w = c.w * g_fOneColor.x + g_fOneColor.y; + return c; +} + +half4 CRTCPS(in float2 tex0 : TEXCOORD0) : COLOR +{ + float2 filtcoord = (tex0/*-frac(tex0)*/)*g_fInvTexDims.xy+g_fInvTexDims.zw; + half4 c = BilinearBitBlt(filtcoord); + c.w = c.w * g_fOneColor.x + g_fOneColor.y; + + return c; +} + +// simpler +half4 CRTCPS_Nearest(in float2 tex0 : TEXCOORD0) : COLOR +{ + half4 c = texRECT(g_sMemory, ps2memcoord(tex0).xy); + c.w = c.w * g_fOneColor.x + g_fOneColor.y; + return c; +} + +half4 CRTC24InterPS(in float2 tex0 : TEXCOORD0, in float2 ointerpos : TEXCOORD1) : COLOR +{ + float2 filtcoord = (tex0-frac(tex0))*g_fInvTexDims.xy+g_fInvTexDims.zw; + float finter = texRECT(g_sInterlace, ointerpos.yy).x; + clip(finter * g_fOneColor.z + g_fOneColor.w); + + half4 c = texRECT(g_sMemory, ps2memcoord(filtcoord).xy).x; + c.w = c.w * g_fOneColor.x + g_fOneColor.y; + + return c; +} + +half4 CRTC24PS(in float2 tex0 : TEXCOORD0) : COLOR +{ + float2 filtcoord = (tex0-frac(tex0))*g_fInvTexDims.xy+g_fInvTexDims.zw; + half4 c = texRECT(g_sMemory, ps2memcoord(filtcoord).xy).x; + c.w = c.w * g_fOneColor.x + g_fOneColor.y; + + return c; +} + +half4 ZeroPS() : COLOR +{ + return g_fOneColor.x; +} + +half4 BaseTexturePS(in float2 tex0 : TEXCOORD0) : COLOR +{ + return texRECT(g_sSrcFinal, tex0) * g_fOneColor; +} + +half4 Convert16to32PS(float2 tex0 : TEXCOORD0) : COLOR +{ + float4 final; + float2 ffrac = fmod(tex0+g_fTexDims.zw, g_fTexOffset.xy); + tex0.xy = g_fTexDims.xy * tex0.xy - ffrac * g_fc0.yw; + + if( ffrac.x > g_fTexOffset.x*g_fc0.w ) + tex0.x += g_fTexOffset.x*g_fc0.w; + if( tex0.x >= g_fc0.y ) tex0 += g_fTexOffset.zw; + + float4 lower = texRECT(g_sSrcFinal, tex0); + float4 upper = texRECT(g_sSrcFinal, tex0+g_fPageOffset.xy); + + final.zy = tex3D(g_sConv32to16, lower.zyx).xy + lower.ww*g_fPageOffset.zw; + final.xw = tex3D(g_sConv32to16, upper.zyx).xy + upper.ww*g_fPageOffset.zw; + + return final; +} + +// use when texture is not tiled and converting from 32bit to 16bit +// don't convert on the block level, only on the column level +// so every other 8 pixels, use the upper bits instead of lower +half4 Convert32to16PS(float2 tex0 : TEXCOORD0) : COLOR +{ + bool upper = false; + float2 ffrac = fmod(tex0+g_fTexDims.zw, g_fTexOffset.xy); + tex0.xy = g_fc0.ww * (tex0.xy + ffrac); + if( ffrac.x > g_fTexOffset.z ) { + tex0.x -= g_fTexOffset.z; + upper = true; + } + if( ffrac.y >= g_fTexOffset.w ) { + tex0.y -= g_fTexOffset.w; + tex0.x += g_fc0.w; + } + + half4 color = texRECT(g_sSrcFinal, tex0*g_fTexDims.xy)*g_fc0.yyyw; + float2 uv = upper ? color.xw : color.zy; + return tex2D(g_sConv16to32, uv*g_fPageOffset.xy+g_fPageOffset.zw)*g_fTexDims.xxxy; +} diff --git a/plugins/zerospu2/Windows/ProjectRootDir.props b/plugins/zerospu2/Windows/ProjectRootDir.props index 5e4da28bf9..45c14ddc1b 100644 --- a/plugins/zerospu2/Windows/ProjectRootDir.props +++ b/plugins/zerospu2/Windows/ProjectRootDir.props @@ -1,16 +1,16 @@ - - - - $(ProjectDir).. - $(ProjectRootDir)\..\.. - $(SvnRootDir)\common - - - <_ProjectFileVersion>10.0.30128.1 - - - - $(SvnRootDir) - - + + + + $(ProjectDir).. + $(ProjectRootDir)\..\.. + $(SvnRootDir)\common + + + <_ProjectFileVersion>10.0.30128.1 + + + + $(SvnRootDir) + + \ No newline at end of file diff --git a/plugins/zerospu2/Windows/ZeroSPU2.def b/plugins/zerospu2/Windows/ZeroSPU2.def index da0e5adee8..c4af972743 100644 --- a/plugins/zerospu2/Windows/ZeroSPU2.def +++ b/plugins/zerospu2/Windows/ZeroSPU2.def @@ -1,37 +1,37 @@ -; SPU2null.def : Declares the module parameters for the DLL. - -;LIBRARY "SPU2null" -;DESCRIPTION 'SPU2 Null Driver' - -EXPORTS - ; Explicit exports can go here - PS2EgetLibType @2 - PS2EgetLibName @3 - PS2EgetLibVersion2 @4 - SPU2init @5 - SPU2shutdown @6 - SPU2open @7 - SPU2close @8 - SPU2write @9 - SPU2read @10 - SPU2readDMA4Mem @11 - SPU2writeDMA4Mem @12 - SPU2readDMA7Mem @13 - SPU2writeDMA7Mem @14 - SPU2async @15 - SPU2interruptDMA4 @16 - SPU2interruptDMA7 @17 - SPU2freeze @18 - SPU2configure @21 - SPU2test @22 - SPU2about @23 - - SPU2ReadMemAddr @24 - SPU2WriteMemAddr @25 - SPU2irqCallback @26 - SPU2setDMABaseAddr @27 - SPU2setupRecording @28 - - SPU2setSettingsDir - +; SPU2null.def : Declares the module parameters for the DLL. + +;LIBRARY "SPU2null" +;DESCRIPTION 'SPU2 Null Driver' + +EXPORTS + ; Explicit exports can go here + PS2EgetLibType @2 + PS2EgetLibName @3 + PS2EgetLibVersion2 @4 + SPU2init @5 + SPU2shutdown @6 + SPU2open @7 + SPU2close @8 + SPU2write @9 + SPU2read @10 + SPU2readDMA4Mem @11 + SPU2writeDMA4Mem @12 + SPU2readDMA7Mem @13 + SPU2writeDMA7Mem @14 + SPU2async @15 + SPU2interruptDMA4 @16 + SPU2interruptDMA7 @17 + SPU2freeze @18 + SPU2configure @21 + SPU2test @22 + SPU2about @23 + + SPU2ReadMemAddr @24 + SPU2WriteMemAddr @25 + SPU2irqCallback @26 + SPU2setDMABaseAddr @27 + SPU2setupRecording @28 + + SPU2setSettingsDir + LIBRARY "ZeroSPU2" \ No newline at end of file diff --git a/plugins/zerospu2/Windows/ZeroSPU2.rc b/plugins/zerospu2/Windows/ZeroSPU2.rc index a5e85e5384..d3debd5b04 100644 --- a/plugins/zerospu2/Windows/ZeroSPU2.rc +++ b/plugins/zerospu2/Windows/ZeroSPU2.rc @@ -1,169 +1,169 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxresmw.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxresmw.h""\r\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,4,6,0 - PRODUCTVERSION 0,4,6,0 - FILEFLAGSMASK 0x17L - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "SPU2 Plugin for PS2 emulators" - VALUE "CompanyName", "ZeroFrog" - VALUE "FileDescription", "ZeroSPU2 v0.4.6" - VALUE "FileVersion", "0, 4, 6, 0" - VALUE "InternalName", "ZeroSPU2" - VALUE "LegalCopyright", "Copyright (C) 2009" - VALUE "OriginalFilename", "ZeroSPU2-0.4.6.dll" - VALUE "ProductName", "ZeroSPU2" - VALUE "ProductVersion", "0, 4, 6, 0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Greek resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ELL) -#ifdef _WIN32 -LANGUAGE LANG_GREEK, SUBLANG_DEFAULT -#pragma code_page(1253) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOGEX 0, 0, 212, 175 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - CONTROL "Time Scaling (recommended) - Slows down or speeds up sound with respect to game's real speed. Enabling this produces higher quality sound with less cracking, but can reduce speed.",IDC_TIMESTRETCH, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,7,198,37 - CONTROL "Real Time mode - tries to reduce delays in music as much possible. Use when game is already fast and need sound tightly synchronized (like in DDR, Guitar Hero, Guitaroo Man)",IDC_REALTIME, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,43,198,37 - CONTROL "Recording - Saves the raw 16bit stereo wav data to zerospu2.wav. Timed to ps2 time.",IDC_SNDRECORDING, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,87,198,15 - CONTROL "Mute - ZeroSPU2 will not output any sound (fast).",IDC_MUTESOUND, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,101,168,24 - CONTROL "Enable logging(for develop use only)",IDC_LOGGING, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,127,159,15 - DEFPUSHBUTTON "OK",IDOK,48,154,50,14 - PUSHBUTTON "Cancel",IDCANCEL,113,154,50,14 -END - -IDD_ABOUT DIALOGEX 0, 0, 177, 106 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "About ZeroSPU2..." -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,65,85,50,14 - LTEXT "ZeroSPU2 driver v0.4.6",IDC_NAME,51,7,79,15 - LTEXT "Author: Zerofrog Additional coding: Refraction Based on SPU2 Null driver by Shadow and Linuzappz",IDC_STATIC,7,23,141,54 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 205 - TOPMARGIN, 7 - BOTTOMMARGIN, 168 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 175 - TOPMARGIN, 7 - BOTTOMMARGIN, 99 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Greek resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxresmw.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxresmw.h""\r\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,4,6,0 + PRODUCTVERSION 0,4,6,0 + FILEFLAGSMASK 0x17L + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "SPU2 Plugin for PS2 emulators" + VALUE "CompanyName", "ZeroFrog" + VALUE "FileDescription", "ZeroSPU2 v0.4.6" + VALUE "FileVersion", "0, 4, 6, 0" + VALUE "InternalName", "ZeroSPU2" + VALUE "LegalCopyright", "Copyright (C) 2009" + VALUE "OriginalFilename", "ZeroSPU2-0.4.6.dll" + VALUE "ProductName", "ZeroSPU2" + VALUE "ProductVersion", "0, 4, 6, 0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// Greek resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ELL) +#ifdef _WIN32 +LANGUAGE LANG_GREEK, SUBLANG_DEFAULT +#pragma code_page(1253) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 212, 175 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + CONTROL "Time Scaling (recommended) - Slows down or speeds up sound with respect to game's real speed. Enabling this produces higher quality sound with less cracking, but can reduce speed.",IDC_TIMESTRETCH, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,7,198,37 + CONTROL "Real Time mode - tries to reduce delays in music as much possible. Use when game is already fast and need sound tightly synchronized (like in DDR, Guitar Hero, Guitaroo Man)",IDC_REALTIME, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,43,198,37 + CONTROL "Recording - Saves the raw 16bit stereo wav data to zerospu2.wav. Timed to ps2 time.",IDC_SNDRECORDING, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,87,198,15 + CONTROL "Mute - ZeroSPU2 will not output any sound (fast).",IDC_MUTESOUND, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,101,168,24 + CONTROL "Enable logging(for develop use only)",IDC_LOGGING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,127,159,15 + DEFPUSHBUTTON "OK",IDOK,48,154,50,14 + PUSHBUTTON "Cancel",IDCANCEL,113,154,50,14 +END + +IDD_ABOUT DIALOGEX 0, 0, 177, 106 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About ZeroSPU2..." +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,65,85,50,14 + LTEXT "ZeroSPU2 driver v0.4.6",IDC_NAME,51,7,79,15 + LTEXT "Author: Zerofrog Additional coding: Refraction Based on SPU2 Null driver by Shadow and Linuzappz",IDC_STATIC,7,23,141,54 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 205 + TOPMARGIN, 7 + BOTTOMMARGIN, 168 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 175 + TOPMARGIN, 7 + BOTTOMMARGIN, 99 + END +END +#endif // APSTUDIO_INVOKED + +#endif // Greek resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/zerospu2/Windows/ZeroSPU2_vs2012.vcxproj b/plugins/zerospu2/Windows/ZeroSPU2_vs2012.vcxproj index 9a802192bd..18bbf15679 100644 --- a/plugins/zerospu2/Windows/ZeroSPU2_vs2012.vcxproj +++ b/plugins/zerospu2/Windows/ZeroSPU2_vs2012.vcxproj @@ -1,162 +1,162 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - ZeroSPU2 - {7F059854-568D-4E08-9D00-1E78E203E4DC} - ZeroSPU2 - Win32Proj - - - - DynamicLibrary - MultiByte - false - v110_xp - - - DynamicLibrary - MultiByte - true - v110_xp - - - DynamicLibrary - MultiByte - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - true - $(ProjectName)-dev - - - - - - - - _USRDLL;ZEROSPU2_EXPORTS;%(PreprocessorDefinitions) - - - - - dsound.lib;winmm.lib;soundtouch-dbg.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(IgnoreSpecificDefaultLibraries) - ZeroSPU2.def - Windows - false - MachineX86 - - - - - - - - - FLOAT_SAMPLES;NDEBUG;_USRDLL;ZEROSPU2_EXPORTS;%(PreprocessorDefinitions) - - - - - dsound.lib;winmm.lib;soundtouch.lib;%(AdditionalDependencies) - %(IgnoreSpecificDefaultLibraries) - ZeroSPU2.def - Windows - false - MachineX86 - - - - - - - - - FLOAT_SAMPLES;NDEBUG;_USRDLL;ZEROSPU2_EXPORTS;%(PreprocessorDefinitions) - true - false - - - - - dsound.lib;winmm.lib;soundtouch-dev.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(IgnoreSpecificDefaultLibraries) - ZeroSPU2.def - Windows - false - MachineX86 - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + ZeroSPU2 + {7F059854-568D-4E08-9D00-1E78E203E4DC} + ZeroSPU2 + Win32Proj + + + + DynamicLibrary + MultiByte + false + v110_xp + + + DynamicLibrary + MultiByte + true + v110_xp + + + DynamicLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + true + $(ProjectName)-dev + + + + + + + + _USRDLL;ZEROSPU2_EXPORTS;%(PreprocessorDefinitions) + + + + + dsound.lib;winmm.lib;soundtouch-dbg.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + %(IgnoreSpecificDefaultLibraries) + ZeroSPU2.def + Windows + false + MachineX86 + + + + + + + + + FLOAT_SAMPLES;NDEBUG;_USRDLL;ZEROSPU2_EXPORTS;%(PreprocessorDefinitions) + + + + + dsound.lib;winmm.lib;soundtouch.lib;%(AdditionalDependencies) + %(IgnoreSpecificDefaultLibraries) + ZeroSPU2.def + Windows + false + MachineX86 + + + + + + + + + FLOAT_SAMPLES;NDEBUG;_USRDLL;ZEROSPU2_EXPORTS;%(PreprocessorDefinitions) + true + false + + + + + dsound.lib;winmm.lib;soundtouch-dev.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + %(IgnoreSpecificDefaultLibraries) + ZeroSPU2.def + Windows + false + MachineX86 + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/zerospu2/Windows/ZeroSPU2_vs2012.vcxproj.filters b/plugins/zerospu2/Windows/ZeroSPU2_vs2012.vcxproj.filters index 60ceb6dab4..df12de1e0e 100644 --- a/plugins/zerospu2/Windows/ZeroSPU2_vs2012.vcxproj.filters +++ b/plugins/zerospu2/Windows/ZeroSPU2_vs2012.vcxproj.filters @@ -1,71 +1,71 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + \ No newline at end of file diff --git a/plugins/zzogl-pg/opengl/Win32/zerogsogl_vs2012.vcxproj b/plugins/zzogl-pg/opengl/Win32/zerogsogl_vs2012.vcxproj index 5ffae93e60..f5312ada3c 100644 --- a/plugins/zzogl-pg/opengl/Win32/zerogsogl_vs2012.vcxproj +++ b/plugins/zzogl-pg/opengl/Win32/zerogsogl_vs2012.vcxproj @@ -1,294 +1,294 @@ - - - - - Debug - Win32 - - - Devel - Win32 - - - Release - Win32 - - - - ZZOgl - {2D4E85B2-F47F-4D65-B091-701E5C031DAC} - ZZogl - - - - DynamicLibrary - false - Unicode - true - v110_xp - - - DynamicLibrary - Unicode - v110_xp - - - DynamicLibrary - false - Unicode - v110_xp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(ProjectName)-dev - $(SolutionDir)bin\$(PcsxSubsection)\ - $(PlatformName)\$(Configuration)\ - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - - - - - $(CG_INC_PATH);$(ProjectRootDir)\;$(ProjectRootDir)\ZeroGSShaders\;$(ProjectRootDir)\Win32;$(SvnRootDir)\3rdparty\libjpeg;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) - NDEBUG;_USRDLL;__i386__;ZEROGS_DEVBUILD;%(PreprocessorDefinitions) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - winmm.lib;Vfw32.lib;cg.lib;cgGL.lib;opengl32.lib;Comctl32.lib;rpcrt4.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - $(CG_LIB_PATH);..\;%(AdditionalLibraryDirectories) - .\zerogs.def - false - - - - - $(CG_INC_PATH);$(ProjectRootDir)\;$(ProjectRootDir)\ZeroGSShaders\;$(ProjectRootDir)\Win32;$(SvnRootDir)\3rdparty\libjpeg;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) - _USRDLL;ZEROGS_DEVBUILD;_DEBUG;__i386__;%(PreprocessorDefinitions) - - - winmm.lib;Vfw32.lib;cg.lib;cgGL.lib;opengl32.lib;Comctl32.lib;rpcrt4.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - $(CG_LIB_PATH);..\;%(AdditionalLibraryDirectories) - %(IgnoreSpecificDefaultLibraries) - .\zerogs.def - false - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - - - - - $(CG_INC_PATH);$(ProjectRootDir)\;$(ProjectRootDir)\ZeroGSShaders\;$(ProjectRootDir)\Win32;$(SvnRootDir)\3rdparty\libjpeg;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) - NDEBUG;_USRDLL;__i386__;ZEROGS_SSE2;RELEASE_TO_PUBLIC;%(PreprocessorDefinitions) - - - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - winmm.lib;Vfw32.lib;cg.lib;cgGL.lib;opengl32.lib;Comctl32.lib;rpcrt4.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - $(CG_LIB_PATH);..\;%(AdditionalLibraryDirectories) - .\zerogs.def - - - false - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ml /nologo /c /Fo"$(IntDir)%(Filename).obj" "%(FullPath)" - - $(IntDir)%(Filename).obj;%(Outputs) - ml /nologo /c /Fo"$(IntDir)%(Filename).obj" "%(FullPath)" - - $(IntDir)%(Filename).obj;%(Outputs) - ml /nologo /c /Fo"$(IntDir)%(Filename).obj" "%(FullPath)" - - $(IntDir)%(Filename).obj;%(Outputs) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {bc236261-77e8-4567-8d09-45cd02965eb6} - true - false - false - true - false - - - {26511268-2902-4997-8421-ecd7055f9e28} - true - false - false - true - false - - - {7e9b2be7-cec3-4f14-847b-0ab8d562fb86} - true - false - false - true - false - - - {48ad7e0a-25b1-4974-a1e3-03f8c438d34f} - true - false - false - true - false - - - {0318ba30-ef48-441a-9e10-dc85efae39f0} - true - false - false - true - false - - - {2f6c0388-20cb-4242-9f6c-a6ebb6a83f47} - true - false - false - true - false - - - {4639972e-424e-4e13-8b07-ca403c481346} - true - false - false - true - false - - - - - + + + + + Debug + Win32 + + + Devel + Win32 + + + Release + Win32 + + + + ZZOgl + {2D4E85B2-F47F-4D65-B091-701E5C031DAC} + ZZogl + + + + DynamicLibrary + false + Unicode + true + v110_xp + + + DynamicLibrary + Unicode + v110_xp + + + DynamicLibrary + false + Unicode + v110_xp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(ProjectName)-dev + $(SolutionDir)bin\$(PcsxSubsection)\ + $(PlatformName)\$(Configuration)\ + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + + + $(CG_INC_PATH);$(ProjectRootDir)\;$(ProjectRootDir)\ZeroGSShaders\;$(ProjectRootDir)\Win32;$(SvnRootDir)\3rdparty\libjpeg;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) + NDEBUG;_USRDLL;__i386__;ZEROGS_DEVBUILD;%(PreprocessorDefinitions) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;Vfw32.lib;cg.lib;cgGL.lib;opengl32.lib;Comctl32.lib;rpcrt4.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + $(CG_LIB_PATH);..\;%(AdditionalLibraryDirectories) + .\zerogs.def + false + + + + + $(CG_INC_PATH);$(ProjectRootDir)\;$(ProjectRootDir)\ZeroGSShaders\;$(ProjectRootDir)\Win32;$(SvnRootDir)\3rdparty\libjpeg;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) + _USRDLL;ZEROGS_DEVBUILD;_DEBUG;__i386__;%(PreprocessorDefinitions) + + + winmm.lib;Vfw32.lib;cg.lib;cgGL.lib;opengl32.lib;Comctl32.lib;rpcrt4.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + $(CG_LIB_PATH);..\;%(AdditionalLibraryDirectories) + %(IgnoreSpecificDefaultLibraries) + .\zerogs.def + false + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + + + $(CG_INC_PATH);$(ProjectRootDir)\;$(ProjectRootDir)\ZeroGSShaders\;$(ProjectRootDir)\Win32;$(SvnRootDir)\3rdparty\libjpeg;$(SvnRootDir)\3rdparty\zlib;%(AdditionalIncludeDirectories) + NDEBUG;_USRDLL;__i386__;ZEROGS_SSE2;RELEASE_TO_PUBLIC;%(PreprocessorDefinitions) + + + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;Vfw32.lib;cg.lib;cgGL.lib;opengl32.lib;Comctl32.lib;rpcrt4.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + $(CG_LIB_PATH);..\;%(AdditionalLibraryDirectories) + .\zerogs.def + + + false + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ml /nologo /c /Fo"$(IntDir)%(Filename).obj" "%(FullPath)" + + $(IntDir)%(Filename).obj;%(Outputs) + ml /nologo /c /Fo"$(IntDir)%(Filename).obj" "%(FullPath)" + + $(IntDir)%(Filename).obj;%(Outputs) + ml /nologo /c /Fo"$(IntDir)%(Filename).obj" "%(FullPath)" + + $(IntDir)%(Filename).obj;%(Outputs) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {bc236261-77e8-4567-8d09-45cd02965eb6} + true + false + false + true + false + + + {26511268-2902-4997-8421-ecd7055f9e28} + true + false + false + true + false + + + {7e9b2be7-cec3-4f14-847b-0ab8d562fb86} + true + false + false + true + false + + + {48ad7e0a-25b1-4974-a1e3-03f8c438d34f} + true + false + false + true + false + + + {0318ba30-ef48-441a-9e10-dc85efae39f0} + true + false + false + true + false + + + {2f6c0388-20cb-4242-9f6c-a6ebb6a83f47} + true + false + false + true + false + + + {4639972e-424e-4e13-8b07-ca403c481346} + true + false + false + true + false + + + + + \ No newline at end of file diff --git a/plugins/zzogl-pg/opengl/Win32/zerogsogl_vs2012.vcxproj.filters b/plugins/zzogl-pg/opengl/Win32/zerogsogl_vs2012.vcxproj.filters index 4769f94131..dc16a04531 100644 --- a/plugins/zzogl-pg/opengl/Win32/zerogsogl_vs2012.vcxproj.filters +++ b/plugins/zzogl-pg/opengl/Win32/zerogsogl_vs2012.vcxproj.filters @@ -1,241 +1,241 @@ - - - - - {db5b3cda-2af3-451d-95a6-1ecd6410acb3} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {609d2fdc-53bd-42af-90ff-793a1107f003} - h;hpp;hxx;hm;inl - - - {a2158e1c-a894-441e-ab9e-e2361e55f009} - ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - {4755b02f-755a-491e-b851-acab63a59d75} - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Source Files - - - Resource Files - - - Resource Files - - - Docs - - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - - - Source Files - - + + + + + {db5b3cda-2af3-451d-95a6-1ecd6410acb3} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {609d2fdc-53bd-42af-90ff-793a1107f003} + h;hpp;hxx;hm;inl + + + {a2158e1c-a894-441e-ab9e-e2361e55f009} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + {4755b02f-755a-491e-b851-acab63a59d75} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Source Files + + + Resource Files + + + Resource Files + + + Docs + + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + + + Source Files + + \ No newline at end of file diff --git a/plugins/zzogl-pg/opengl/ZeroGSShaders/ZeroGSShaders_2005.sln b/plugins/zzogl-pg/opengl/ZeroGSShaders/ZeroGSShaders_2005.sln index 45a5aa122b..cc194e0eae 100644 --- a/plugins/zzogl-pg/opengl/ZeroGSShaders/ZeroGSShaders_2005.sln +++ b/plugins/zzogl-pg/opengl/ZeroGSShaders/ZeroGSShaders_2005.sln @@ -1,23 +1,23 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZeroGSShaders", "ZeroGSShaders_2005.vcproj", "{811D47CC-E5F0-456A-918E-5908005E8FC0}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release (to Public)|Win32 = Release (to Public)|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {811D47CC-E5F0-456A-918E-5908005E8FC0}.Debug|Win32.ActiveCfg = Debug|Win32 - {811D47CC-E5F0-456A-918E-5908005E8FC0}.Debug|Win32.Build.0 = Debug|Win32 - {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release (to Public)|Win32.ActiveCfg = Release (to Public)|Win32 - {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release (to Public)|Win32.Build.0 = Release (to Public)|Win32 - {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release|Win32.ActiveCfg = Release|Win32 - {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZeroGSShaders", "ZeroGSShaders_2005.vcproj", "{811D47CC-E5F0-456A-918E-5908005E8FC0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release (to Public)|Win32 = Release (to Public)|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {811D47CC-E5F0-456A-918E-5908005E8FC0}.Debug|Win32.ActiveCfg = Debug|Win32 + {811D47CC-E5F0-456A-918E-5908005E8FC0}.Debug|Win32.Build.0 = Debug|Win32 + {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release (to Public)|Win32.ActiveCfg = Release (to Public)|Win32 + {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release (to Public)|Win32.Build.0 = Release (to Public)|Win32 + {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release|Win32.ActiveCfg = Release|Win32 + {811D47CC-E5F0-456A-918E-5908005E8FC0}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/plugins/zzogl-pg/opengl/ps2hw.glsl b/plugins/zzogl-pg/opengl/ps2hw.glsl index 2e48e8caf9..e030f5ce70 100644 --- a/plugins/zzogl-pg/opengl/ps2hw.glsl +++ b/plugins/zzogl-pg/opengl/ps2hw.glsl @@ -1,827 +1,827 @@ -// ZZ Open GL graphics plugin -// Copyright (c)2009-2010 zeydlitz@gmail.com, arcum42@gmail.com -// Based on Zerofrog's ZeroGS KOSMOS (c)2005-2008 -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - -// divides by z for every pixel, instead of in vertex shader -// fixes kh textures - -#extension ARB_texture_rectangle: enable -#define GL_compatibility_profile 1 -#define PERSPECTIVE_CORRECT_TEX - -// When writting GLSL code we should change variables in code according to denominator -// Not than in and out variables are differ! -// in POSITION set by glVertexPointer goes to gl_Vertex; -// out POSITION goes to gl_position -// in COLOR0 gl_Color -// out COLOR0 gl_FrontColor -// in TEXCOORD0 gl_MultiTexCoord0 -// out TEXCOORD0 gl_TexCoord[0] - -//in Fragments: -// in TEXCOORD0 gl_TexCoord[0] -// out COLOR0 gl_FragData[0] - -//#define TEST_AEM // tests AEM for black pixels -//#define REGION_REPEAT // set if texture wrapping mode is region repeat -//#define WRITE_DEPTH // set if depth is also written in a MRT -//#define ACCURATE_DECOMPRESSION // set for less capable hardware ATI Radeon 9000 series -//#define EXACT_COLOR // make sure the output color is clamped to 1/255 boundaries (for alpha testing) - -#ifdef PERSPECTIVE_CORRECT_TEX -#define TEX_XY tex.xy/tex.z -#define TEX_DECL vec4 -#else -#define TEX_XY tex.xy -#define TEX_DECL vec4 -#endif - -#ifdef WRITE_DEPTH -#define DOZWRITE(x) x -#else -#define DOZWRITE(x) -#endif - -// NVidia CG-data types -#define half2 vec2 -#define half3 vec3 -#define half4 vec4 -#define float2 vec2 -#define float3 vec3 -#define float4 vec4 - -// main ps2 memory, each pixel is stored in 32bit color -uniform sampler2DRect g_sMemory[2]; - -// per context pixel shader constants -uniform half4 fTexAlpha2[2]; - -uniform float4 g_fTexOffset[2]; // converts the page and block offsets into the mem addr/1024 -uniform float4 g_fTexDims[2]; // mult by tex dims when accessing the block texture -uniform float4 g_fTexBlock[2]; - -uniform float4 g_fClampExts[2]; // if clamping the texture, use (minu, minv, maxu, maxv) -uniform float4 TexWrapMode[2]; // 0 - repeat/clamp, 1 - region rep (use fRegRepMask) - -uniform float4 g_fRealTexDims[2]; // tex dims used for linear filtering (w,h,1/w,1/h) - -// (alpha0, alpha1, 1 if highlight2 and tcc is rgba, 1-y) -uniform half4 g_fTestBlack[2]; // used for aem bit - -uniform float4 g_fPageOffset[2]; - -uniform half4 fTexAlpha[2]; - -// vertex shader constants -uniform float4 g_fPosXY[2]; - -// used to get the tiled offset into a page given the linear offset -uniform sampler2DRect g_sSrcFinal; -uniform sampler2D g_sBlocks; -uniform sampler2D g_sBilinearBlocks; -uniform sampler2D g_sConv16to32; -uniform sampler3D g_sConv32to16; -uniform sampler2DRect g_sBitwiseANDX; -uniform sampler2DRect g_sBitwiseANDY; -uniform sampler2DRect g_sInterlace; - -// used only on rare cases where the render target is PSMT8H -uniform sampler2D g_sCLUT; - -// global pixel shader constants -uniform float4 g_fInvTexDims; // similar to g_fClutOff -uniform float4 g_fFogColor; - -// used for rectblitting -uniform float4 g_fBitBltZ; - -uniform half4 g_fOneColor; // col*.xxxy+.zzzw - -// vertex shader constants -uniform float4 g_fBitBltPos; -uniform float4 g_fZ; // transforms d3dcolor z into float z -uniform float4 g_fZNorm; -uniform float4 g_fZMin = float4(0.0f, 1.0f, 0.0f, 0.0f); -uniform float4 g_fBitBltTex; - -// pixel shader consts -// .z is used for the addressing fn -uniform half4 g_fExactColor = half4(0.5,0.5/256.0f,0,1/255.0f); -uniform float4 g_fBilinear = float4(-0.7f, -0.65f, 0.9,1/32767.0f); -uniform float4 g_fZBias = half4(1.0f/256.0f, 1.0004f, 1, 0.5); // also for vs -uniform float4 g_fc0 = float4(0,1, 0.001, 0.5f); // also for vs -uniform float4 g_fMult = float4(1/1024.0f, 0.2f/1024.0f, 1/128.0f, 1/512.0f); - -// vertex shader consts -uniform float4 g_fBitBltTrans = float4(0.5f, -0.5f, 0.5, 0.5 + 0.4/416.0f); - -// given a local tex coord, returns the coord in the memory -float2 ps2memcoord(float2 realtex) -{ - float4 off; - - // block off - realtex.xy = realtex.xy * g_fTexDims[CTX].xy + g_fTexDims[CTX].zw; - realtex.xy = (realtex.xy - fract(realtex.xy)) * g_fMult.zw; - float2 fblock = fract(realtex.xy); - off.xy = realtex.xy-fblock.xy; - -#ifdef ACCURATE_DECOMPRESSION - off.zw = texture(g_sBlocks, g_fTexBlock[CTX].xy*fblock + g_fTexBlock[CTX].zw).ar; - off.x = dot(off.xy, g_fTexOffset[CTX].xy); - float r = g_fTexOffset[CTX].w; - float f = fract(off.x); - float fadd = g_fTexOffset[CTX].z * off.z; - off.w = off.x + fadd + r; - off.x = fract(f + fadd + r); - off.w -= off.x ; -#else - off.z = texture(g_sBlocks, g_fTexBlock[CTX].xy*fblock + g_fTexBlock[CTX].zw).a; - - // combine the two - off.x = dot(off.xyz, g_fTexOffset[CTX].xyz)+g_fTexOffset[CTX].w; - off.x = modf(off.x, off.w); -#endif - - off.xy = off.xw * g_fPageOffset[CTX].zy + g_fPageOffset[CTX].wx; - //off.y = off.w * g_fPageOffset[CTX].y + g_fPageOffset[CTX].x; - return off.xy; -} - -// find all texcoords for bilinear filtering -// assume that orgtex are already on boundaries -void ps2memcoord4(float4 orgtex, out float4 off0, out float4 off1) -{ - //float4 off0, off1, off2, off3; - float4 realtex; - - // block off - realtex = (orgtex * g_fTexDims[CTX].xyxy + g_fTexDims[CTX].zwzw);// * g_fMult.zwzw; - float4 fblock = fract(realtex.xyzw); - float4 ftransblock = g_fTexBlock[CTX].xyxy*fblock + g_fTexBlock[CTX].zwzw; - realtex -= fblock; - - float4 transvals = g_fTexOffset[CTX].x * realtex.xzxz + g_fTexOffset[CTX].y * realtex.yyww + g_fTexOffset[CTX].w; - - float4 colors;// = texture(g_sBilinearBlocks, ftransblock.xy); - - // this is faster on ffx ingame - colors.x = texture(g_sBlocks, ftransblock.xy).a; - colors.y = texture(g_sBlocks, ftransblock.zy).a; - colors.z = texture(g_sBlocks, ftransblock.xw).a; - colors.w = texture(g_sBlocks, ftransblock.zw).a; - - float4 fr, rem; - -#ifdef ACCURATE_DECOMPRESSION - fr = fract(transvals); - float4 fadd = colors * g_fTexOffset[CTX].z; - rem = transvals + fadd; - fr = fract(fr + fadd); - rem -= fr; -#else - transvals += colors * g_fTexOffset[CTX].z; - - fr = modf(transvals, rem); -#endif - - rem = rem * g_fPageOffset[CTX].y + g_fPageOffset[CTX].x; - fr = fr * g_fPageOffset[CTX].z + g_fPageOffset[CTX].w; - - // combine - off0 = g_fc0.yxyx * fr.xxyy + g_fc0.xyxy * rem.xxyy; - off1 = g_fc0.yxyx * fr.zzww + g_fc0.xyxy * rem.zzww; -} - -void ps2memcoord4_fast(float4 orgtex, out float4 off0, out float4 off1) -{ - float4 realtex; - - realtex = (orgtex * g_fTexDims[CTX].xyxy + g_fTexDims[CTX].zwzw);// * g_fMult.zwzw; - float4 fblock = fract(realtex.xyzw); - float2 ftransblock = g_fTexBlock[CTX].xy*fblock.xy + g_fTexBlock[CTX].zw; - realtex -= fblock; - - float4 transvals = g_fTexOffset[CTX].x * realtex.xzxz + g_fTexOffset[CTX].y * realtex.yyww + g_fTexOffset[CTX].w; - - float4 colors = texture(g_sBilinearBlocks, ftransblock.xy); - float4 fr, rem; - -#ifdef ACCURATE_DECOMPRESSION - fr = fract(transvals); - float4 fadd = colors * g_fTexOffset[CTX].z; - rem = transvals + fadd; - fr = fract(fr + fadd); - rem -= fr; -#else - transvals += colors * g_fTexOffset[CTX].z; - - fr = modf(transvals, rem); -#endif - - rem = rem * g_fPageOffset[CTX].y + g_fPageOffset[CTX].x; - fr = fr * g_fPageOffset[CTX].z; - - off0 = g_fc0.yxyx * fr.xxyy + g_fc0.xyxy * rem.xxyy; - off1 = g_fc0.yxyx * fr.zzww + g_fc0.xyxy * rem.zzww; -} - -// Wrapping modes -#if defined(REPEAT) - -float2 ps2addr(float2 coord) -{ - return fract(coord.xy); -} - -#elif defined(CLAMP) - -float2 ps2addr(float2 coord) -{ - return clamp(coord.xy, g_fClampExts[CTX].xy, g_fClampExts[CTX].zw); -} - -#elif defined(REGION_REPEAT) - -// computes the local tex coord along with addressing modes -float2 ps2addr(float2 coord) -{ - float2 final = fract(clamp(coord.xy, g_fClampExts[CTX].xy, g_fClampExts[CTX].zw)); - - if( TexWrapMode[CTX].x > g_fBilinear.z ) // region repeat mode for x (umsk&x)|ufix - final.x = texture(g_sBitwiseANDX, abs(coord.x)*TexWrapMode[CTX].zx).x * g_fClampExts[CTX].x + g_fClampExts[CTX].z; - if( TexWrapMode[CTX].y > g_fBilinear.z ) // region repeat mode for x (vmsk&x)|vfix - final.y = texture(g_sBitwiseANDY, abs(coord.y)*TexWrapMode[CTX].wy).x * g_fClampExts[CTX].y + g_fClampExts[CTX].w; - - return final; -} - -#else - -float2 ps2addr(float2 coord) -{ - return fract(clamp(coord.xy, g_fClampExts[CTX].xy, g_fClampExts[CTX].zw)); -} - -#endif - -half4 tex2DPS_32(float2 tex0) -{ - return texture(g_sMemory[CTX], ps2memcoord(tex0).xy); -} - -// use when texture is not tiled -- shader 1 -half4 tex2DPS_tex32(float2 tex0) -{ - return texture(g_sMemory[CTX], g_fTexDims[CTX].xy*tex0+g_fTexDims[CTX].zw)*g_fZBias.zzzw+g_fPageOffset[CTX].w; -} - -// use when texture is not tiled -- shader 2 -half4 tex2DPS_clut32(float2 tex0) -{ - float index = texture(g_sMemory[CTX], g_fTexDims[CTX].xy*tex0+g_fTexDims[CTX].zw).a+g_fPageOffset[CTX].w; - return texture(g_sCLUT, index*g_fExactColor.xz+g_fExactColor.yz); -} - -// Shader 3 -// use when texture is not tiled and converting from 32bit to 16bit -// don't convert on the block level, only on the column level -// so every other 8 pixels, use the upper bits instead of lower -half4 tex2DPS_tex32to16(float2 tex0) -{ - bool upper = false; - tex0.y += g_fPageOffset[CTX].z; - float2 ffrac = mod(tex0, g_fTexOffset[CTX].xy); - tex0.xy = g_fc0.ww * (tex0.xy + ffrac); - if( ffrac.x > g_fTexOffset[CTX].z ) { - tex0.x -= g_fTexOffset[CTX].z; - upper = true; - } - if( ffrac.y >= g_fTexOffset[CTX].w ) { - tex0.y -= g_fTexOffset[CTX].w; - tex0.x += g_fc0.w; - } - - half4 color = texture(g_sMemory[CTX], g_fTexDims[CTX].xy*tex0+g_fTexDims[CTX].zw)*g_fZBias.zzzw+g_fPageOffset[CTX].w; - float2 uv = upper ? color.xw : color.zy; - return texture(g_sConv16to32, uv+g_fPageOffset[CTX].xy); -} - -// Shader 4 -// used when a 16 bit texture is used an 8h -half4 tex2DPS_tex16to8h(float2 tex0) -{ - float4 final; - float2 ffrac = mod(tex0+g_fPageOffset[CTX].zw, g_fTexOffset[CTX].xy); - tex0.xy = g_fPageOffset[CTX].xy * tex0.xy - ffrac * g_fc0.yw; - - if( ffrac.x > g_fTexOffset[CTX].x*g_fc0.w ) - tex0.x += g_fTexOffset[CTX].x*g_fc0.w; - if( tex0.x >= g_fc0.y ) tex0 += g_fTexOffset[CTX].zw; - - float4 upper = texture(g_sMemory[CTX], g_fTexDims[CTX].xy*tex0+g_fTexDims[CTX].zw); - - // only need alpha - float index = texture(g_sConv32to16, upper.zyx-g_fc0.z).y + upper.w*g_fc0.w*g_fc0.w; - return texture(g_sCLUT, index+g_fExactColor.yz); -} - -// Shader 5 -// used when a 16 bit texture is used a 32bit one -half4 tex2DPS_tex16to32(float2 tex0) -{ - float4 final; - float2 ffrac = mod(tex0+g_fPageOffset[CTX].zw, g_fTexOffset[CTX].xy); - //tex0.xy = g_fPageOffset[CTX].xy * tex0.xy - ffrac * g_fc0.yw; - tex0.y += g_fPageOffset[CTX].y * ffrac.y; - - if( ffrac.x > g_fTexOffset[CTX].z ) { - tex0.x -= g_fTexOffset[CTX].z; - tex0.y += g_fTexOffset[CTX].w; - } - - float fconst = g_fc0.w*g_fc0.w; - float4 lower = texture(g_sSrcFinal, g_fTexDims[CTX].xy*tex0); - float4 upper = texture(g_sMemory[CTX], g_fTexDims[CTX].xy*tex0+g_fTexDims[CTX].zw); - - final.zy = texture(g_sConv32to16, lower.zyx).xy + lower.ww*fconst; - final.xw = texture(g_sConv32to16, upper.zyx).xy + upper.ww*fconst; - return final; -} - -half4 tex2DPS_tex16to32h(float2 tex0) -{ - float4 final = vec4(0.0, 0.0, 0.0, 0.0); - return final; -} - -//half4 f; -//f.w = old.y > (127.2f/255.0f) ? 1 : 0; -//old.y -= 0.5f * f.w; -//f.xyz = fract(old.yyx*half3(2.002*255.0f/256.0f, 64.025f*255.0f/256.0f, 8.002*255.0f/256.0f)); -//f.y += old.x * (0.25f*255.0f/256.0f); - -//////////////////////////////// -// calculates the texture color -//////////////////////////////// - -#define decl_ps2shade(num) \ -decl_ps2shade_##num(_32) \ -decl_ps2shade_##num(_tex32) \ -decl_ps2shade_##num(_clut32) \ -decl_ps2shade_##num(_tex32to16) \ -decl_ps2shade_##num(_tex16to8h) \ -decl_ps2shade_##num(_tex16to32h) - -// nearest -#define decl_ps2shade_0(bit) \ -float4 ps2shade0##bit( TEX_DECL tex) \ -{ \ - return tex2DPS##bit( ps2addr(TEX_XY)); \ -} - -// do fast memcoord4 calcs when textures behave well -#ifdef REPEAT -#define PS2MEMCOORD4 ps2memcoord4 -#else -#define PS2MEMCOORD4 ps2memcoord4 -#endif - - -#define decl_BilinearFilter(bit, addrfn) \ -half4 BilinearFilter##bit(float2 tex0) \ -{ \ - float4 off0, off1; \ - float4 ftex; \ - float2 ffrac; \ - ftex.xy = tex0 + g_fBilinear.xy * g_fRealTexDims[CTX].zw; \ - ffrac = fract(ftex.xy*g_fRealTexDims[CTX].xy); \ - ftex.xy -= ffrac.xy * g_fRealTexDims[CTX].zw; \ - \ - ftex.zw = ps2addr(ftex.xy + g_fRealTexDims[CTX].zw); \ - ftex.xy = ps2addr(ftex.xy); \ - \ - PS2MEMCOORD4(ftex, off0, off1); \ - half4 c0 = texture(g_sMemory[CTX], off0.xy); \ - half4 c1 = texture(g_sMemory[CTX], off0.zw); \ - half4 c2 = texture(g_sMemory[CTX], off1.xy); \ - half4 c3 = texture(g_sMemory[CTX], off1.zw); \ - return mix( mix(c0, c1, vec4(ffrac.x)), mix(c2, c3, ffrac.x), vec4(ffrac.y) ); \ -} - -decl_BilinearFilter(_32, ps2addr) -decl_BilinearFilter(_tex32, ps2addr) -decl_BilinearFilter(_clut32, ps2addr) -decl_BilinearFilter(_tex32to16, ps2addr) -decl_BilinearFilter(_tex16to8h, ps2addr) -decl_BilinearFilter(_tex16to32h, ps2addr) - -//TODO! For mip maps, only apply when LOD >= 0 -// lcm == 0, LOD = log(1/Q)*L + K, lcm == 1, LOD = K - -// bilinear -#define decl_ps2shade_1(bit) \ -half4 ps2shade1##bit(TEX_DECL tex) \ -{ \ - return BilinearFilter##bit(TEX_XY); \ -} - -// nearest, mip nearest -#define decl_ps2shade_2(bit) \ -half4 ps2shade2##bit(TEX_DECL tex) \ -{ \ - return tex2DPS##bit( ps2addr(TEX_XY)); \ -} - -// nearest, mip linear -#define decl_ps2shade_3(bit) \ -half4 ps2shade3##bit(TEX_DECL tex) \ -{ \ - return tex2DPS##bit(ps2addr(TEX_XY)); \ -} - -// linear, mip nearest -#define decl_ps2shade_4(bit) \ -half4 ps2shade4##bit(TEX_DECL tex) \ -{ \ - return BilinearFilter##bit(TEX_XY); \ -} - -// linear, mip linear -#define decl_ps2shade_5(bit) \ -half4 ps2shade5##bit(TEX_DECL tex) \ -{ \ - return BilinearFilter##bit(TEX_XY); \ -} - -decl_ps2shade(0) -decl_ps2shade(1) -decl_ps2shade(2) -decl_ps2shade(3) -decl_ps2shade(4) -decl_ps2shade(5) - - -half4 ps2CalcShade(half4 texcol, half4 color) -{ -#ifdef TEST_AEM - if( dot(texcol.xyzw, g_fTestBlack[CTX].xyzw) <= g_fc0.z ) - texcol.w = g_fc0.x; - else -#endif - texcol.w = texcol.w * fTexAlpha[CTX].y + fTexAlpha[CTX].x; - - texcol = texcol * (fTexAlpha2[CTX].zzzw * color + fTexAlpha2[CTX].xxxy) + fTexAlpha[CTX].zzzw * color.wwww; - - return texcol; -} - -// final ops on the color -#ifdef EXACT_COLOR - -half4 ps2FinalColor(half4 col) -{ - // g_fOneColor has to scale by 255 - half4 temp = col * g_fOneColor.xxxy + g_fOneColor.zzzw; - temp.w = floor(temp.w)*g_fExactColor.w; - return temp; -} - -#else -half4 ps2FinalColor(half4 col) -{ - return col * g_fOneColor.xxxy + g_fOneColor.zzzw; -} -#endif - -#ifdef FRAGMENT_SHADER // This is code only for FRAGMENTS (pixel shader) - -void RegularPS() { - // whenever outputting depth, make sure to mult by 255/256 and 1 - gl_FragData[0] = ps2FinalColor(gl_Color); - DOZWRITE(gl_FragData[1] = gl_TexCoord[0];) -} - -#ifdef WRITE_DEPTH - -#define DECL_TEXPS(num, bit) \ -void Texture##num##bit##PS() \ -{ \ - gl_FragData[0] = ps2FinalColor(ps2CalcShade(ps2shade##num##bit(gl_TexCoord[0]), gl_Color)); \ - gl_FragData[1] = gl_TexCoord[1]; \ -} - -#else - -#define DECL_TEXPS(num, bit) \ -void Texture##num##bit##PS() \ -{ \ - gl_FragData[0] = ps2FinalColor(ps2CalcShade(ps2shade##num##bit(gl_TexCoord[0]), gl_Color)); \ -} - -#endif - - -#define DECL_TEXPS_(num) \ -DECL_TEXPS(num, _32) \ -DECL_TEXPS(num, _tex32) \ -DECL_TEXPS(num, _clut32) \ -DECL_TEXPS(num, _tex32to16) \ -DECL_TEXPS(num, _tex16to8h) - -DECL_TEXPS_(0) -DECL_TEXPS_(1) -DECL_TEXPS_(2) -DECL_TEXPS_(3) -DECL_TEXPS_(4) -DECL_TEXPS_(5) - -void RegularFogPS() { - half4 c; - c.xyz = mix(g_fFogColor.xyz, gl_Color.xyz, vec3(gl_TexCoord[0].x)); - c.w = gl_Color.w; - gl_FragData[0] = ps2FinalColor(c); - DOZWRITE(gl_FragData[1] = gl_TexCoord[1];) -} - -#ifdef WRITE_DEPTH - -#define DECL_TEXFOGPS(num, bit) \ -void TextureFog##num##bit##PS() \ -{ \ - half4 c = ps2CalcShade(ps2shade##num##bit(gl_TexCoord[0]), gl_Color); \ - c.xyz = mix(g_fFogColor.xyz, c.xyz, vec3(gl_TexCoord[1].x)); \ - gl_FragData[0] = ps2FinalColor(c); \ - gl_FragData[1] = gl_TexCoord[2]; \ -} - -#else - -#define DECL_TEXFOGPS(num, bit) \ -void TextureFog##num##bit##PS() \ -{ \ - half4 c = ps2CalcShade(ps2shade##num##bit(gl_TexCoord[0]), gl_Color); \ - c.xyz = mix(g_fFogColor.xyz, c.xyz, vec3(gl_TexCoord[1].x)); \ - gl_FragData[0] = ps2FinalColor(c); \ -} - -#endif - -#define DECL_TEXFOGPS_(num) \ -DECL_TEXFOGPS(num, _32) \ -DECL_TEXFOGPS(num, _tex32) \ -DECL_TEXFOGPS(num, _clut32) \ -DECL_TEXFOGPS(num, _tex32to16) \ -DECL_TEXFOGPS(num, _tex16to8h) - -DECL_TEXFOGPS_(0) -DECL_TEXFOGPS_(1) -DECL_TEXFOGPS_(2) -DECL_TEXFOGPS_(3) -DECL_TEXFOGPS_(4) -DECL_TEXFOGPS_(5) - -//------------------------------------------------------- -// Techniques not related to the main primitive commands -half4 BilinearBitBlt(float2 tex0) -{ - float4 ftex; - float2 ffrac; - - ffrac.xy = fract(tex0*g_fRealTexDims[CTX].xy); - ftex.xy = tex0 - ffrac.xy * g_fRealTexDims[CTX].zw; - ftex.zw = ftex.xy + g_fRealTexDims[CTX].zw; - - float4 off0, off1; - ps2memcoord4_fast(ftex, off0, off1); - half4 c0 = texture(g_sMemory[CTX], off0.xy); - half4 c1 = texture(g_sMemory[CTX], off0.zw); - half4 c2 = texture(g_sMemory[CTX], off1.xy); - half4 c3 = texture(g_sMemory[CTX], off1.zw); - - return mix( mix(c0, c1, vec4(ffrac.x)), mix(c2, c3, vec4(ffrac.x)), vec4(ffrac.y) ); -} - -void BitBltPS() { - gl_FragData[0] = texture(g_sMemory[CTX], ps2memcoord(gl_TexCoord[0].xy).xy)*g_fOneColor.xxxy; -} - -// used when AA -void BitBltAAPS() { - gl_FragData[0] = BilinearBitBlt(gl_TexCoord[0].xy) * g_fOneColor.xxxy; -} - -void BitBltDepthPS() { - vec4 data; - data = texture(g_sMemory[CTX], ps2memcoord(gl_TexCoord[0].xy)); - gl_FragData[0] = data + g_fZBias.y; - gl_FragDepth = (log(g_fc0.y + dot(data, g_fBitBltZ)) * g_fOneColor.w) * g_fZMin.y + dot(data, g_fBitBltZ) * g_fZMin.x ; -} - -void BitBltDepthMRTPS() { - vec4 data; - data = texture(g_sMemory[CTX], ps2memcoord(gl_TexCoord[0].xy)); - gl_FragData[0] = data + g_fZBias.y; - gl_FragData[1].x = g_fc0.x; - gl_FragDepth = (log(g_fc0.y + dot(data, g_fBitBltZ)) * g_fOneColor.w) * g_fZMin.y + dot(data, g_fBitBltZ) * g_fZMin.x ; -} - -// static const float BlurKernel[9] = { -// 0.027601, -// 0.066213, -// 0.123701, -// 0.179952, -// 0.205065, -// 0.179952, -// 0.123701, -// 0.066213, -// 0.027601 -// }; - -half4 BilinearFloat16(float2 tex0) -{ - return texture(g_sSrcFinal, tex0.xy); -} - -void CRTCTargInterPS() { - float finter = texture(g_sInterlace, gl_TexCoord[1].yy).x * g_fOneColor.z + g_fOneColor.w + g_fc0.w; - float4 c = BilinearFloat16(gl_TexCoord[0].xy); - c.w = ( g_fc0.w*c.w * g_fOneColor.x + g_fOneColor.y ) * finter; - gl_FragData[0] = c; -} - -void CRTCTargPS() { - float4 c = BilinearFloat16(gl_TexCoord[0].xy); - c.w = g_fc0.w * c.w * g_fOneColor.x + g_fOneColor.y; - gl_FragData[0] = c; -} - -void CRTCInterPS() { - float finter = texture(g_sInterlace, gl_TexCoord[1].yy).x * g_fOneColor.z + g_fOneColor.w + g_fc0.w; - float2 filtcoord = trunc(gl_TexCoord[0].xy) * g_fInvTexDims.xy + g_fInvTexDims.zw; - half4 c = BilinearBitBlt(filtcoord); - c.w = (c.w * g_fOneColor.x + g_fOneColor.y)*finter; - gl_FragData[0] = c; -} - -// simpler -void CRTCInterPS_Nearest() { - float finter = texture(g_sInterlace, gl_TexCoord[1].yy).x * g_fOneColor.z + g_fOneColor.w + g_fc0.w; - half4 c = texture(g_sMemory[CTX], ps2memcoord(gl_TexCoord[0].xy).xy); - c.w = (c.w * g_fOneColor.x + g_fOneColor.y)*finter; - gl_FragData[0] = c; -} - -void CRTCPS() { - float2 filtcoord = gl_TexCoord[0].xy * g_fInvTexDims.xy+g_fInvTexDims.zw; - half4 c = BilinearBitBlt(filtcoord); - c.w = c.w * g_fOneColor.x + g_fOneColor.y; - gl_FragData[0] = c; -} - -// simpler -void CRTCPS_Nearest() { - half4 c = texture(g_sMemory[CTX], ps2memcoord(gl_TexCoord[0].xy).xy); - c.w = c.w * g_fOneColor.x + g_fOneColor.y; - gl_FragData[0] = c; -} - -void CRTC24InterPS() { - float finter = texture(g_sInterlace, gl_TexCoord[1].yy).x * g_fOneColor.z + g_fOneColor.w + g_fc0.w; - float2 filtcoord = trunc(gl_TexCoord[0].xy) * g_fInvTexDims.xy + g_fInvTexDims.zw; - - half4 c = texture(g_sMemory[CTX], ps2memcoord(filtcoord).xy); - c.w = (c.w * g_fOneColor.x + g_fOneColor.y)*finter; - gl_FragData[0] = c; -} - -void CRTC24PS() { - float2 filtcoord = trunc(gl_TexCoord[0].xy) * g_fInvTexDims.xy + g_fInvTexDims.zw; - half4 c = texture(g_sMemory[CTX], ps2memcoord(filtcoord).xy); - c.w = c.w * g_fOneColor.x + g_fOneColor.y; - gl_FragData[0] = c; -} - -void ZeroPS() { - gl_FragData[0] = g_fOneColor; -} - -void BaseTexturePS() { - gl_FragData[0] = texture(g_sSrcFinal, gl_TexCoord[0].xy) * g_fOneColor; -} - -void Convert16to32PS() { - float4 final; - float2 ffrac = mod ( gl_TexCoord[0].xy + g_fTexDims[CTX].zw, g_fTexOffset[CTX].xy); - float2 tex0 = g_fTexDims[CTX].xy * gl_TexCoord[0].xy - ffrac * g_fc0.yw; - - if (ffrac.x > g_fTexOffset[CTX].x*g_fc0.w) - tex0.x += g_fTexOffset[CTX].x*g_fc0.w; - if (tex0.x >= g_fc0.y) - tex0 += g_fTexOffset[CTX].zw; - - float4 lower = texture(g_sSrcFinal, tex0); - float4 upper = texture(g_sSrcFinal, tex0 + g_fPageOffset[CTX].xy); - - final.zy = texture(g_sConv32to16, lower.zyx).xy + lower.ww*g_fPageOffset[CTX].zw; - final.xw = texture(g_sConv32to16, upper.zyx).xy + upper.ww*g_fPageOffset[CTX].zw; - - gl_FragData[0]= final; -} - -// use when texture is not tiled and converting from 32bit to 16bit -// don't convert on the block level, only on the column level -// so every other 8 pixels, use the upper bits instead of lower -void Convert32to16PS() { - bool upper = false; - float2 ffrac = mod(gl_TexCoord[0].xy + g_fTexDims[CTX].zw, g_fTexOffset[CTX].xy); - float2 tex0 = g_fc0.ww * (gl_TexCoord[0].xy + ffrac); - if( ffrac.x > g_fTexOffset[CTX].z ) { - tex0.x -= g_fTexOffset[CTX].z; - upper = true; - } - if( ffrac.y >= g_fTexOffset[CTX].w ) { - tex0.y -= g_fTexOffset[CTX].w; - tex0.x += g_fc0.w; - } - - half4 color = texture(g_sSrcFinal, tex0*g_fTexDims[CTX].xy)*g_fc0.yyyw; - float2 uv = upper ? color.xw : color.zy; - gl_FragData[0] = texture(g_sConv16to32, uv*g_fPageOffset[CTX].xy+g_fPageOffset[CTX].zw)*g_fTexDims[CTX].xxxy; -} -#endif //FRAGMENT_SHADER - -#ifdef VERTEX_SHADER - -float4 OutPosition(float4 vertex) { - float4 Position; - Position.xy = gl_Vertex.xy * g_fPosXY[CTX].xy + g_fPosXY[CTX].zw; - Position.z = (log(g_fc0.y + dot(g_fZ, gl_SecondaryColor.zyxw)) * g_fZNorm.x + g_fZNorm.y) * g_fZMin.y + dot(g_fZ, gl_SecondaryColor.zyxw) * g_fZMin.x ; - Position.w = g_fc0.y; - return Position; -} - -// just smooth shadering -void RegularVS() { - gl_Position = OutPosition(gl_Vertex); - gl_FrontColor = gl_Color; - DOZWRITE(gl_TexCoord[0] = gl_SecondaryColor * g_fZBias.x + g_fZBias.y; gl_TexCoord[0].w = g_fc0.y;) -} - -// diffuse texture mapping -void TextureVS() { - gl_Position = OutPosition(gl_Vertex); - gl_FrontColor = gl_Color; -#ifdef PERSPECTIVE_CORRECT_TEX - gl_TexCoord[0].xyz = gl_MultiTexCoord0.xyz; -#else - gl_TexCoord[0].xy = gl_MultiTexCoord0.xy/gl_MultiTexCoord0.z; -#endif - DOZWRITE(gl_TexCoord[1] = gl_SecondaryColor * g_fZBias.x + g_fZBias.y; gl_TexCoord[1].w = g_fc0.y;) -} - -void RegularFogVS() { - float4 position = OutPosition(gl_Vertex); - gl_Position = position; - gl_FrontColor = gl_Color; - gl_TexCoord[0].x = position.z * g_fBilinear.w; - DOZWRITE(gl_TexCoord[1] = gl_SecondaryColor * g_fZBias.x + g_fZBias.y; gl_TexCoord[1].w = g_fc0.y;) -} - -void TextureFogVS() { - gl_Position = OutPosition(gl_Vertex); - gl_FrontColor = gl_Color; -#ifdef PERSPECTIVE_CORRECT_TEX - gl_TexCoord[0].xyz = gl_MultiTexCoord0.xyz; -#else - gl_TexCoord[0].xy = gl_MultiTexCoord0.xy / gl_MultiTexCoord0.z; -#endif - gl_TexCoord[1].x = gl_Vertex.z * g_fBilinear.w; - DOZWRITE(gl_TexCoord[2] = gl_SecondaryColor * g_fZBias.x + g_fZBias.y; gl_TexCoord[2].w = g_fc0.y;) -} - -void BitBltVS() { - vec4 position; - position.xy = gl_Vertex.xy * g_fBitBltPos.xy + g_fBitBltPos.zw; - position.zw = g_fc0.xy; - gl_Position = position; - - gl_TexCoord[0].xy = gl_MultiTexCoord0.xy * g_fBitBltTex.xy + g_fBitBltTex.zw; - gl_TexCoord[1].xy = position.xy * g_fBitBltTrans.xy + g_fBitBltTrans.zw; -} - -#endif +// ZZ Open GL graphics plugin +// Copyright (c)2009-2010 zeydlitz@gmail.com, arcum42@gmail.com +// Based on Zerofrog's ZeroGS KOSMOS (c)2005-2008 +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +// divides by z for every pixel, instead of in vertex shader +// fixes kh textures + +#extension ARB_texture_rectangle: enable +#define GL_compatibility_profile 1 +#define PERSPECTIVE_CORRECT_TEX + +// When writting GLSL code we should change variables in code according to denominator +// Not than in and out variables are differ! +// in POSITION set by glVertexPointer goes to gl_Vertex; +// out POSITION goes to gl_position +// in COLOR0 gl_Color +// out COLOR0 gl_FrontColor +// in TEXCOORD0 gl_MultiTexCoord0 +// out TEXCOORD0 gl_TexCoord[0] + +//in Fragments: +// in TEXCOORD0 gl_TexCoord[0] +// out COLOR0 gl_FragData[0] + +//#define TEST_AEM // tests AEM for black pixels +//#define REGION_REPEAT // set if texture wrapping mode is region repeat +//#define WRITE_DEPTH // set if depth is also written in a MRT +//#define ACCURATE_DECOMPRESSION // set for less capable hardware ATI Radeon 9000 series +//#define EXACT_COLOR // make sure the output color is clamped to 1/255 boundaries (for alpha testing) + +#ifdef PERSPECTIVE_CORRECT_TEX +#define TEX_XY tex.xy/tex.z +#define TEX_DECL vec4 +#else +#define TEX_XY tex.xy +#define TEX_DECL vec4 +#endif + +#ifdef WRITE_DEPTH +#define DOZWRITE(x) x +#else +#define DOZWRITE(x) +#endif + +// NVidia CG-data types +#define half2 vec2 +#define half3 vec3 +#define half4 vec4 +#define float2 vec2 +#define float3 vec3 +#define float4 vec4 + +// main ps2 memory, each pixel is stored in 32bit color +uniform sampler2DRect g_sMemory[2]; + +// per context pixel shader constants +uniform half4 fTexAlpha2[2]; + +uniform float4 g_fTexOffset[2]; // converts the page and block offsets into the mem addr/1024 +uniform float4 g_fTexDims[2]; // mult by tex dims when accessing the block texture +uniform float4 g_fTexBlock[2]; + +uniform float4 g_fClampExts[2]; // if clamping the texture, use (minu, minv, maxu, maxv) +uniform float4 TexWrapMode[2]; // 0 - repeat/clamp, 1 - region rep (use fRegRepMask) + +uniform float4 g_fRealTexDims[2]; // tex dims used for linear filtering (w,h,1/w,1/h) + +// (alpha0, alpha1, 1 if highlight2 and tcc is rgba, 1-y) +uniform half4 g_fTestBlack[2]; // used for aem bit + +uniform float4 g_fPageOffset[2]; + +uniform half4 fTexAlpha[2]; + +// vertex shader constants +uniform float4 g_fPosXY[2]; + +// used to get the tiled offset into a page given the linear offset +uniform sampler2DRect g_sSrcFinal; +uniform sampler2D g_sBlocks; +uniform sampler2D g_sBilinearBlocks; +uniform sampler2D g_sConv16to32; +uniform sampler3D g_sConv32to16; +uniform sampler2DRect g_sBitwiseANDX; +uniform sampler2DRect g_sBitwiseANDY; +uniform sampler2DRect g_sInterlace; + +// used only on rare cases where the render target is PSMT8H +uniform sampler2D g_sCLUT; + +// global pixel shader constants +uniform float4 g_fInvTexDims; // similar to g_fClutOff +uniform float4 g_fFogColor; + +// used for rectblitting +uniform float4 g_fBitBltZ; + +uniform half4 g_fOneColor; // col*.xxxy+.zzzw + +// vertex shader constants +uniform float4 g_fBitBltPos; +uniform float4 g_fZ; // transforms d3dcolor z into float z +uniform float4 g_fZNorm; +uniform float4 g_fZMin = float4(0.0f, 1.0f, 0.0f, 0.0f); +uniform float4 g_fBitBltTex; + +// pixel shader consts +// .z is used for the addressing fn +uniform half4 g_fExactColor = half4(0.5,0.5/256.0f,0,1/255.0f); +uniform float4 g_fBilinear = float4(-0.7f, -0.65f, 0.9,1/32767.0f); +uniform float4 g_fZBias = half4(1.0f/256.0f, 1.0004f, 1, 0.5); // also for vs +uniform float4 g_fc0 = float4(0,1, 0.001, 0.5f); // also for vs +uniform float4 g_fMult = float4(1/1024.0f, 0.2f/1024.0f, 1/128.0f, 1/512.0f); + +// vertex shader consts +uniform float4 g_fBitBltTrans = float4(0.5f, -0.5f, 0.5, 0.5 + 0.4/416.0f); + +// given a local tex coord, returns the coord in the memory +float2 ps2memcoord(float2 realtex) +{ + float4 off; + + // block off + realtex.xy = realtex.xy * g_fTexDims[CTX].xy + g_fTexDims[CTX].zw; + realtex.xy = (realtex.xy - fract(realtex.xy)) * g_fMult.zw; + float2 fblock = fract(realtex.xy); + off.xy = realtex.xy-fblock.xy; + +#ifdef ACCURATE_DECOMPRESSION + off.zw = texture(g_sBlocks, g_fTexBlock[CTX].xy*fblock + g_fTexBlock[CTX].zw).ar; + off.x = dot(off.xy, g_fTexOffset[CTX].xy); + float r = g_fTexOffset[CTX].w; + float f = fract(off.x); + float fadd = g_fTexOffset[CTX].z * off.z; + off.w = off.x + fadd + r; + off.x = fract(f + fadd + r); + off.w -= off.x ; +#else + off.z = texture(g_sBlocks, g_fTexBlock[CTX].xy*fblock + g_fTexBlock[CTX].zw).a; + + // combine the two + off.x = dot(off.xyz, g_fTexOffset[CTX].xyz)+g_fTexOffset[CTX].w; + off.x = modf(off.x, off.w); +#endif + + off.xy = off.xw * g_fPageOffset[CTX].zy + g_fPageOffset[CTX].wx; + //off.y = off.w * g_fPageOffset[CTX].y + g_fPageOffset[CTX].x; + return off.xy; +} + +// find all texcoords for bilinear filtering +// assume that orgtex are already on boundaries +void ps2memcoord4(float4 orgtex, out float4 off0, out float4 off1) +{ + //float4 off0, off1, off2, off3; + float4 realtex; + + // block off + realtex = (orgtex * g_fTexDims[CTX].xyxy + g_fTexDims[CTX].zwzw);// * g_fMult.zwzw; + float4 fblock = fract(realtex.xyzw); + float4 ftransblock = g_fTexBlock[CTX].xyxy*fblock + g_fTexBlock[CTX].zwzw; + realtex -= fblock; + + float4 transvals = g_fTexOffset[CTX].x * realtex.xzxz + g_fTexOffset[CTX].y * realtex.yyww + g_fTexOffset[CTX].w; + + float4 colors;// = texture(g_sBilinearBlocks, ftransblock.xy); + + // this is faster on ffx ingame + colors.x = texture(g_sBlocks, ftransblock.xy).a; + colors.y = texture(g_sBlocks, ftransblock.zy).a; + colors.z = texture(g_sBlocks, ftransblock.xw).a; + colors.w = texture(g_sBlocks, ftransblock.zw).a; + + float4 fr, rem; + +#ifdef ACCURATE_DECOMPRESSION + fr = fract(transvals); + float4 fadd = colors * g_fTexOffset[CTX].z; + rem = transvals + fadd; + fr = fract(fr + fadd); + rem -= fr; +#else + transvals += colors * g_fTexOffset[CTX].z; + + fr = modf(transvals, rem); +#endif + + rem = rem * g_fPageOffset[CTX].y + g_fPageOffset[CTX].x; + fr = fr * g_fPageOffset[CTX].z + g_fPageOffset[CTX].w; + + // combine + off0 = g_fc0.yxyx * fr.xxyy + g_fc0.xyxy * rem.xxyy; + off1 = g_fc0.yxyx * fr.zzww + g_fc0.xyxy * rem.zzww; +} + +void ps2memcoord4_fast(float4 orgtex, out float4 off0, out float4 off1) +{ + float4 realtex; + + realtex = (orgtex * g_fTexDims[CTX].xyxy + g_fTexDims[CTX].zwzw);// * g_fMult.zwzw; + float4 fblock = fract(realtex.xyzw); + float2 ftransblock = g_fTexBlock[CTX].xy*fblock.xy + g_fTexBlock[CTX].zw; + realtex -= fblock; + + float4 transvals = g_fTexOffset[CTX].x * realtex.xzxz + g_fTexOffset[CTX].y * realtex.yyww + g_fTexOffset[CTX].w; + + float4 colors = texture(g_sBilinearBlocks, ftransblock.xy); + float4 fr, rem; + +#ifdef ACCURATE_DECOMPRESSION + fr = fract(transvals); + float4 fadd = colors * g_fTexOffset[CTX].z; + rem = transvals + fadd; + fr = fract(fr + fadd); + rem -= fr; +#else + transvals += colors * g_fTexOffset[CTX].z; + + fr = modf(transvals, rem); +#endif + + rem = rem * g_fPageOffset[CTX].y + g_fPageOffset[CTX].x; + fr = fr * g_fPageOffset[CTX].z; + + off0 = g_fc0.yxyx * fr.xxyy + g_fc0.xyxy * rem.xxyy; + off1 = g_fc0.yxyx * fr.zzww + g_fc0.xyxy * rem.zzww; +} + +// Wrapping modes +#if defined(REPEAT) + +float2 ps2addr(float2 coord) +{ + return fract(coord.xy); +} + +#elif defined(CLAMP) + +float2 ps2addr(float2 coord) +{ + return clamp(coord.xy, g_fClampExts[CTX].xy, g_fClampExts[CTX].zw); +} + +#elif defined(REGION_REPEAT) + +// computes the local tex coord along with addressing modes +float2 ps2addr(float2 coord) +{ + float2 final = fract(clamp(coord.xy, g_fClampExts[CTX].xy, g_fClampExts[CTX].zw)); + + if( TexWrapMode[CTX].x > g_fBilinear.z ) // region repeat mode for x (umsk&x)|ufix + final.x = texture(g_sBitwiseANDX, abs(coord.x)*TexWrapMode[CTX].zx).x * g_fClampExts[CTX].x + g_fClampExts[CTX].z; + if( TexWrapMode[CTX].y > g_fBilinear.z ) // region repeat mode for x (vmsk&x)|vfix + final.y = texture(g_sBitwiseANDY, abs(coord.y)*TexWrapMode[CTX].wy).x * g_fClampExts[CTX].y + g_fClampExts[CTX].w; + + return final; +} + +#else + +float2 ps2addr(float2 coord) +{ + return fract(clamp(coord.xy, g_fClampExts[CTX].xy, g_fClampExts[CTX].zw)); +} + +#endif + +half4 tex2DPS_32(float2 tex0) +{ + return texture(g_sMemory[CTX], ps2memcoord(tex0).xy); +} + +// use when texture is not tiled -- shader 1 +half4 tex2DPS_tex32(float2 tex0) +{ + return texture(g_sMemory[CTX], g_fTexDims[CTX].xy*tex0+g_fTexDims[CTX].zw)*g_fZBias.zzzw+g_fPageOffset[CTX].w; +} + +// use when texture is not tiled -- shader 2 +half4 tex2DPS_clut32(float2 tex0) +{ + float index = texture(g_sMemory[CTX], g_fTexDims[CTX].xy*tex0+g_fTexDims[CTX].zw).a+g_fPageOffset[CTX].w; + return texture(g_sCLUT, index*g_fExactColor.xz+g_fExactColor.yz); +} + +// Shader 3 +// use when texture is not tiled and converting from 32bit to 16bit +// don't convert on the block level, only on the column level +// so every other 8 pixels, use the upper bits instead of lower +half4 tex2DPS_tex32to16(float2 tex0) +{ + bool upper = false; + tex0.y += g_fPageOffset[CTX].z; + float2 ffrac = mod(tex0, g_fTexOffset[CTX].xy); + tex0.xy = g_fc0.ww * (tex0.xy + ffrac); + if( ffrac.x > g_fTexOffset[CTX].z ) { + tex0.x -= g_fTexOffset[CTX].z; + upper = true; + } + if( ffrac.y >= g_fTexOffset[CTX].w ) { + tex0.y -= g_fTexOffset[CTX].w; + tex0.x += g_fc0.w; + } + + half4 color = texture(g_sMemory[CTX], g_fTexDims[CTX].xy*tex0+g_fTexDims[CTX].zw)*g_fZBias.zzzw+g_fPageOffset[CTX].w; + float2 uv = upper ? color.xw : color.zy; + return texture(g_sConv16to32, uv+g_fPageOffset[CTX].xy); +} + +// Shader 4 +// used when a 16 bit texture is used an 8h +half4 tex2DPS_tex16to8h(float2 tex0) +{ + float4 final; + float2 ffrac = mod(tex0+g_fPageOffset[CTX].zw, g_fTexOffset[CTX].xy); + tex0.xy = g_fPageOffset[CTX].xy * tex0.xy - ffrac * g_fc0.yw; + + if( ffrac.x > g_fTexOffset[CTX].x*g_fc0.w ) + tex0.x += g_fTexOffset[CTX].x*g_fc0.w; + if( tex0.x >= g_fc0.y ) tex0 += g_fTexOffset[CTX].zw; + + float4 upper = texture(g_sMemory[CTX], g_fTexDims[CTX].xy*tex0+g_fTexDims[CTX].zw); + + // only need alpha + float index = texture(g_sConv32to16, upper.zyx-g_fc0.z).y + upper.w*g_fc0.w*g_fc0.w; + return texture(g_sCLUT, index+g_fExactColor.yz); +} + +// Shader 5 +// used when a 16 bit texture is used a 32bit one +half4 tex2DPS_tex16to32(float2 tex0) +{ + float4 final; + float2 ffrac = mod(tex0+g_fPageOffset[CTX].zw, g_fTexOffset[CTX].xy); + //tex0.xy = g_fPageOffset[CTX].xy * tex0.xy - ffrac * g_fc0.yw; + tex0.y += g_fPageOffset[CTX].y * ffrac.y; + + if( ffrac.x > g_fTexOffset[CTX].z ) { + tex0.x -= g_fTexOffset[CTX].z; + tex0.y += g_fTexOffset[CTX].w; + } + + float fconst = g_fc0.w*g_fc0.w; + float4 lower = texture(g_sSrcFinal, g_fTexDims[CTX].xy*tex0); + float4 upper = texture(g_sMemory[CTX], g_fTexDims[CTX].xy*tex0+g_fTexDims[CTX].zw); + + final.zy = texture(g_sConv32to16, lower.zyx).xy + lower.ww*fconst; + final.xw = texture(g_sConv32to16, upper.zyx).xy + upper.ww*fconst; + return final; +} + +half4 tex2DPS_tex16to32h(float2 tex0) +{ + float4 final = vec4(0.0, 0.0, 0.0, 0.0); + return final; +} + +//half4 f; +//f.w = old.y > (127.2f/255.0f) ? 1 : 0; +//old.y -= 0.5f * f.w; +//f.xyz = fract(old.yyx*half3(2.002*255.0f/256.0f, 64.025f*255.0f/256.0f, 8.002*255.0f/256.0f)); +//f.y += old.x * (0.25f*255.0f/256.0f); + +//////////////////////////////// +// calculates the texture color +//////////////////////////////// + +#define decl_ps2shade(num) \ +decl_ps2shade_##num(_32) \ +decl_ps2shade_##num(_tex32) \ +decl_ps2shade_##num(_clut32) \ +decl_ps2shade_##num(_tex32to16) \ +decl_ps2shade_##num(_tex16to8h) \ +decl_ps2shade_##num(_tex16to32h) + +// nearest +#define decl_ps2shade_0(bit) \ +float4 ps2shade0##bit( TEX_DECL tex) \ +{ \ + return tex2DPS##bit( ps2addr(TEX_XY)); \ +} + +// do fast memcoord4 calcs when textures behave well +#ifdef REPEAT +#define PS2MEMCOORD4 ps2memcoord4 +#else +#define PS2MEMCOORD4 ps2memcoord4 +#endif + + +#define decl_BilinearFilter(bit, addrfn) \ +half4 BilinearFilter##bit(float2 tex0) \ +{ \ + float4 off0, off1; \ + float4 ftex; \ + float2 ffrac; \ + ftex.xy = tex0 + g_fBilinear.xy * g_fRealTexDims[CTX].zw; \ + ffrac = fract(ftex.xy*g_fRealTexDims[CTX].xy); \ + ftex.xy -= ffrac.xy * g_fRealTexDims[CTX].zw; \ + \ + ftex.zw = ps2addr(ftex.xy + g_fRealTexDims[CTX].zw); \ + ftex.xy = ps2addr(ftex.xy); \ + \ + PS2MEMCOORD4(ftex, off0, off1); \ + half4 c0 = texture(g_sMemory[CTX], off0.xy); \ + half4 c1 = texture(g_sMemory[CTX], off0.zw); \ + half4 c2 = texture(g_sMemory[CTX], off1.xy); \ + half4 c3 = texture(g_sMemory[CTX], off1.zw); \ + return mix( mix(c0, c1, vec4(ffrac.x)), mix(c2, c3, ffrac.x), vec4(ffrac.y) ); \ +} + +decl_BilinearFilter(_32, ps2addr) +decl_BilinearFilter(_tex32, ps2addr) +decl_BilinearFilter(_clut32, ps2addr) +decl_BilinearFilter(_tex32to16, ps2addr) +decl_BilinearFilter(_tex16to8h, ps2addr) +decl_BilinearFilter(_tex16to32h, ps2addr) + +//TODO! For mip maps, only apply when LOD >= 0 +// lcm == 0, LOD = log(1/Q)*L + K, lcm == 1, LOD = K + +// bilinear +#define decl_ps2shade_1(bit) \ +half4 ps2shade1##bit(TEX_DECL tex) \ +{ \ + return BilinearFilter##bit(TEX_XY); \ +} + +// nearest, mip nearest +#define decl_ps2shade_2(bit) \ +half4 ps2shade2##bit(TEX_DECL tex) \ +{ \ + return tex2DPS##bit( ps2addr(TEX_XY)); \ +} + +// nearest, mip linear +#define decl_ps2shade_3(bit) \ +half4 ps2shade3##bit(TEX_DECL tex) \ +{ \ + return tex2DPS##bit(ps2addr(TEX_XY)); \ +} + +// linear, mip nearest +#define decl_ps2shade_4(bit) \ +half4 ps2shade4##bit(TEX_DECL tex) \ +{ \ + return BilinearFilter##bit(TEX_XY); \ +} + +// linear, mip linear +#define decl_ps2shade_5(bit) \ +half4 ps2shade5##bit(TEX_DECL tex) \ +{ \ + return BilinearFilter##bit(TEX_XY); \ +} + +decl_ps2shade(0) +decl_ps2shade(1) +decl_ps2shade(2) +decl_ps2shade(3) +decl_ps2shade(4) +decl_ps2shade(5) + + +half4 ps2CalcShade(half4 texcol, half4 color) +{ +#ifdef TEST_AEM + if( dot(texcol.xyzw, g_fTestBlack[CTX].xyzw) <= g_fc0.z ) + texcol.w = g_fc0.x; + else +#endif + texcol.w = texcol.w * fTexAlpha[CTX].y + fTexAlpha[CTX].x; + + texcol = texcol * (fTexAlpha2[CTX].zzzw * color + fTexAlpha2[CTX].xxxy) + fTexAlpha[CTX].zzzw * color.wwww; + + return texcol; +} + +// final ops on the color +#ifdef EXACT_COLOR + +half4 ps2FinalColor(half4 col) +{ + // g_fOneColor has to scale by 255 + half4 temp = col * g_fOneColor.xxxy + g_fOneColor.zzzw; + temp.w = floor(temp.w)*g_fExactColor.w; + return temp; +} + +#else +half4 ps2FinalColor(half4 col) +{ + return col * g_fOneColor.xxxy + g_fOneColor.zzzw; +} +#endif + +#ifdef FRAGMENT_SHADER // This is code only for FRAGMENTS (pixel shader) + +void RegularPS() { + // whenever outputting depth, make sure to mult by 255/256 and 1 + gl_FragData[0] = ps2FinalColor(gl_Color); + DOZWRITE(gl_FragData[1] = gl_TexCoord[0];) +} + +#ifdef WRITE_DEPTH + +#define DECL_TEXPS(num, bit) \ +void Texture##num##bit##PS() \ +{ \ + gl_FragData[0] = ps2FinalColor(ps2CalcShade(ps2shade##num##bit(gl_TexCoord[0]), gl_Color)); \ + gl_FragData[1] = gl_TexCoord[1]; \ +} + +#else + +#define DECL_TEXPS(num, bit) \ +void Texture##num##bit##PS() \ +{ \ + gl_FragData[0] = ps2FinalColor(ps2CalcShade(ps2shade##num##bit(gl_TexCoord[0]), gl_Color)); \ +} + +#endif + + +#define DECL_TEXPS_(num) \ +DECL_TEXPS(num, _32) \ +DECL_TEXPS(num, _tex32) \ +DECL_TEXPS(num, _clut32) \ +DECL_TEXPS(num, _tex32to16) \ +DECL_TEXPS(num, _tex16to8h) + +DECL_TEXPS_(0) +DECL_TEXPS_(1) +DECL_TEXPS_(2) +DECL_TEXPS_(3) +DECL_TEXPS_(4) +DECL_TEXPS_(5) + +void RegularFogPS() { + half4 c; + c.xyz = mix(g_fFogColor.xyz, gl_Color.xyz, vec3(gl_TexCoord[0].x)); + c.w = gl_Color.w; + gl_FragData[0] = ps2FinalColor(c); + DOZWRITE(gl_FragData[1] = gl_TexCoord[1];) +} + +#ifdef WRITE_DEPTH + +#define DECL_TEXFOGPS(num, bit) \ +void TextureFog##num##bit##PS() \ +{ \ + half4 c = ps2CalcShade(ps2shade##num##bit(gl_TexCoord[0]), gl_Color); \ + c.xyz = mix(g_fFogColor.xyz, c.xyz, vec3(gl_TexCoord[1].x)); \ + gl_FragData[0] = ps2FinalColor(c); \ + gl_FragData[1] = gl_TexCoord[2]; \ +} + +#else + +#define DECL_TEXFOGPS(num, bit) \ +void TextureFog##num##bit##PS() \ +{ \ + half4 c = ps2CalcShade(ps2shade##num##bit(gl_TexCoord[0]), gl_Color); \ + c.xyz = mix(g_fFogColor.xyz, c.xyz, vec3(gl_TexCoord[1].x)); \ + gl_FragData[0] = ps2FinalColor(c); \ +} + +#endif + +#define DECL_TEXFOGPS_(num) \ +DECL_TEXFOGPS(num, _32) \ +DECL_TEXFOGPS(num, _tex32) \ +DECL_TEXFOGPS(num, _clut32) \ +DECL_TEXFOGPS(num, _tex32to16) \ +DECL_TEXFOGPS(num, _tex16to8h) + +DECL_TEXFOGPS_(0) +DECL_TEXFOGPS_(1) +DECL_TEXFOGPS_(2) +DECL_TEXFOGPS_(3) +DECL_TEXFOGPS_(4) +DECL_TEXFOGPS_(5) + +//------------------------------------------------------- +// Techniques not related to the main primitive commands +half4 BilinearBitBlt(float2 tex0) +{ + float4 ftex; + float2 ffrac; + + ffrac.xy = fract(tex0*g_fRealTexDims[CTX].xy); + ftex.xy = tex0 - ffrac.xy * g_fRealTexDims[CTX].zw; + ftex.zw = ftex.xy + g_fRealTexDims[CTX].zw; + + float4 off0, off1; + ps2memcoord4_fast(ftex, off0, off1); + half4 c0 = texture(g_sMemory[CTX], off0.xy); + half4 c1 = texture(g_sMemory[CTX], off0.zw); + half4 c2 = texture(g_sMemory[CTX], off1.xy); + half4 c3 = texture(g_sMemory[CTX], off1.zw); + + return mix( mix(c0, c1, vec4(ffrac.x)), mix(c2, c3, vec4(ffrac.x)), vec4(ffrac.y) ); +} + +void BitBltPS() { + gl_FragData[0] = texture(g_sMemory[CTX], ps2memcoord(gl_TexCoord[0].xy).xy)*g_fOneColor.xxxy; +} + +// used when AA +void BitBltAAPS() { + gl_FragData[0] = BilinearBitBlt(gl_TexCoord[0].xy) * g_fOneColor.xxxy; +} + +void BitBltDepthPS() { + vec4 data; + data = texture(g_sMemory[CTX], ps2memcoord(gl_TexCoord[0].xy)); + gl_FragData[0] = data + g_fZBias.y; + gl_FragDepth = (log(g_fc0.y + dot(data, g_fBitBltZ)) * g_fOneColor.w) * g_fZMin.y + dot(data, g_fBitBltZ) * g_fZMin.x ; +} + +void BitBltDepthMRTPS() { + vec4 data; + data = texture(g_sMemory[CTX], ps2memcoord(gl_TexCoord[0].xy)); + gl_FragData[0] = data + g_fZBias.y; + gl_FragData[1].x = g_fc0.x; + gl_FragDepth = (log(g_fc0.y + dot(data, g_fBitBltZ)) * g_fOneColor.w) * g_fZMin.y + dot(data, g_fBitBltZ) * g_fZMin.x ; +} + +// static const float BlurKernel[9] = { +// 0.027601, +// 0.066213, +// 0.123701, +// 0.179952, +// 0.205065, +// 0.179952, +// 0.123701, +// 0.066213, +// 0.027601 +// }; + +half4 BilinearFloat16(float2 tex0) +{ + return texture(g_sSrcFinal, tex0.xy); +} + +void CRTCTargInterPS() { + float finter = texture(g_sInterlace, gl_TexCoord[1].yy).x * g_fOneColor.z + g_fOneColor.w + g_fc0.w; + float4 c = BilinearFloat16(gl_TexCoord[0].xy); + c.w = ( g_fc0.w*c.w * g_fOneColor.x + g_fOneColor.y ) * finter; + gl_FragData[0] = c; +} + +void CRTCTargPS() { + float4 c = BilinearFloat16(gl_TexCoord[0].xy); + c.w = g_fc0.w * c.w * g_fOneColor.x + g_fOneColor.y; + gl_FragData[0] = c; +} + +void CRTCInterPS() { + float finter = texture(g_sInterlace, gl_TexCoord[1].yy).x * g_fOneColor.z + g_fOneColor.w + g_fc0.w; + float2 filtcoord = trunc(gl_TexCoord[0].xy) * g_fInvTexDims.xy + g_fInvTexDims.zw; + half4 c = BilinearBitBlt(filtcoord); + c.w = (c.w * g_fOneColor.x + g_fOneColor.y)*finter; + gl_FragData[0] = c; +} + +// simpler +void CRTCInterPS_Nearest() { + float finter = texture(g_sInterlace, gl_TexCoord[1].yy).x * g_fOneColor.z + g_fOneColor.w + g_fc0.w; + half4 c = texture(g_sMemory[CTX], ps2memcoord(gl_TexCoord[0].xy).xy); + c.w = (c.w * g_fOneColor.x + g_fOneColor.y)*finter; + gl_FragData[0] = c; +} + +void CRTCPS() { + float2 filtcoord = gl_TexCoord[0].xy * g_fInvTexDims.xy+g_fInvTexDims.zw; + half4 c = BilinearBitBlt(filtcoord); + c.w = c.w * g_fOneColor.x + g_fOneColor.y; + gl_FragData[0] = c; +} + +// simpler +void CRTCPS_Nearest() { + half4 c = texture(g_sMemory[CTX], ps2memcoord(gl_TexCoord[0].xy).xy); + c.w = c.w * g_fOneColor.x + g_fOneColor.y; + gl_FragData[0] = c; +} + +void CRTC24InterPS() { + float finter = texture(g_sInterlace, gl_TexCoord[1].yy).x * g_fOneColor.z + g_fOneColor.w + g_fc0.w; + float2 filtcoord = trunc(gl_TexCoord[0].xy) * g_fInvTexDims.xy + g_fInvTexDims.zw; + + half4 c = texture(g_sMemory[CTX], ps2memcoord(filtcoord).xy); + c.w = (c.w * g_fOneColor.x + g_fOneColor.y)*finter; + gl_FragData[0] = c; +} + +void CRTC24PS() { + float2 filtcoord = trunc(gl_TexCoord[0].xy) * g_fInvTexDims.xy + g_fInvTexDims.zw; + half4 c = texture(g_sMemory[CTX], ps2memcoord(filtcoord).xy); + c.w = c.w * g_fOneColor.x + g_fOneColor.y; + gl_FragData[0] = c; +} + +void ZeroPS() { + gl_FragData[0] = g_fOneColor; +} + +void BaseTexturePS() { + gl_FragData[0] = texture(g_sSrcFinal, gl_TexCoord[0].xy) * g_fOneColor; +} + +void Convert16to32PS() { + float4 final; + float2 ffrac = mod ( gl_TexCoord[0].xy + g_fTexDims[CTX].zw, g_fTexOffset[CTX].xy); + float2 tex0 = g_fTexDims[CTX].xy * gl_TexCoord[0].xy - ffrac * g_fc0.yw; + + if (ffrac.x > g_fTexOffset[CTX].x*g_fc0.w) + tex0.x += g_fTexOffset[CTX].x*g_fc0.w; + if (tex0.x >= g_fc0.y) + tex0 += g_fTexOffset[CTX].zw; + + float4 lower = texture(g_sSrcFinal, tex0); + float4 upper = texture(g_sSrcFinal, tex0 + g_fPageOffset[CTX].xy); + + final.zy = texture(g_sConv32to16, lower.zyx).xy + lower.ww*g_fPageOffset[CTX].zw; + final.xw = texture(g_sConv32to16, upper.zyx).xy + upper.ww*g_fPageOffset[CTX].zw; + + gl_FragData[0]= final; +} + +// use when texture is not tiled and converting from 32bit to 16bit +// don't convert on the block level, only on the column level +// so every other 8 pixels, use the upper bits instead of lower +void Convert32to16PS() { + bool upper = false; + float2 ffrac = mod(gl_TexCoord[0].xy + g_fTexDims[CTX].zw, g_fTexOffset[CTX].xy); + float2 tex0 = g_fc0.ww * (gl_TexCoord[0].xy + ffrac); + if( ffrac.x > g_fTexOffset[CTX].z ) { + tex0.x -= g_fTexOffset[CTX].z; + upper = true; + } + if( ffrac.y >= g_fTexOffset[CTX].w ) { + tex0.y -= g_fTexOffset[CTX].w; + tex0.x += g_fc0.w; + } + + half4 color = texture(g_sSrcFinal, tex0*g_fTexDims[CTX].xy)*g_fc0.yyyw; + float2 uv = upper ? color.xw : color.zy; + gl_FragData[0] = texture(g_sConv16to32, uv*g_fPageOffset[CTX].xy+g_fPageOffset[CTX].zw)*g_fTexDims[CTX].xxxy; +} +#endif //FRAGMENT_SHADER + +#ifdef VERTEX_SHADER + +float4 OutPosition(float4 vertex) { + float4 Position; + Position.xy = gl_Vertex.xy * g_fPosXY[CTX].xy + g_fPosXY[CTX].zw; + Position.z = (log(g_fc0.y + dot(g_fZ, gl_SecondaryColor.zyxw)) * g_fZNorm.x + g_fZNorm.y) * g_fZMin.y + dot(g_fZ, gl_SecondaryColor.zyxw) * g_fZMin.x ; + Position.w = g_fc0.y; + return Position; +} + +// just smooth shadering +void RegularVS() { + gl_Position = OutPosition(gl_Vertex); + gl_FrontColor = gl_Color; + DOZWRITE(gl_TexCoord[0] = gl_SecondaryColor * g_fZBias.x + g_fZBias.y; gl_TexCoord[0].w = g_fc0.y;) +} + +// diffuse texture mapping +void TextureVS() { + gl_Position = OutPosition(gl_Vertex); + gl_FrontColor = gl_Color; +#ifdef PERSPECTIVE_CORRECT_TEX + gl_TexCoord[0].xyz = gl_MultiTexCoord0.xyz; +#else + gl_TexCoord[0].xy = gl_MultiTexCoord0.xy/gl_MultiTexCoord0.z; +#endif + DOZWRITE(gl_TexCoord[1] = gl_SecondaryColor * g_fZBias.x + g_fZBias.y; gl_TexCoord[1].w = g_fc0.y;) +} + +void RegularFogVS() { + float4 position = OutPosition(gl_Vertex); + gl_Position = position; + gl_FrontColor = gl_Color; + gl_TexCoord[0].x = position.z * g_fBilinear.w; + DOZWRITE(gl_TexCoord[1] = gl_SecondaryColor * g_fZBias.x + g_fZBias.y; gl_TexCoord[1].w = g_fc0.y;) +} + +void TextureFogVS() { + gl_Position = OutPosition(gl_Vertex); + gl_FrontColor = gl_Color; +#ifdef PERSPECTIVE_CORRECT_TEX + gl_TexCoord[0].xyz = gl_MultiTexCoord0.xyz; +#else + gl_TexCoord[0].xy = gl_MultiTexCoord0.xy / gl_MultiTexCoord0.z; +#endif + gl_TexCoord[1].x = gl_Vertex.z * g_fBilinear.w; + DOZWRITE(gl_TexCoord[2] = gl_SecondaryColor * g_fZBias.x + g_fZBias.y; gl_TexCoord[2].w = g_fc0.y;) +} + +void BitBltVS() { + vec4 position; + position.xy = gl_Vertex.xy * g_fBitBltPos.xy + g_fBitBltPos.zw; + position.zw = g_fc0.xy; + gl_Position = position; + + gl_TexCoord[0].xy = gl_MultiTexCoord0.xy * g_fBitBltTex.xy + g_fBitBltTex.zw; + gl_TexCoord[1].xy = position.xy * g_fBitBltTrans.xy + g_fBitBltTrans.zw; +} + +#endif diff --git a/tools/GSDumpGUI/Forms/frmMain.resx b/tools/GSDumpGUI/Forms/frmMain.resx index e4af639786..2501a738cb 100644 --- a/tools/GSDumpGUI/Forms/frmMain.resx +++ b/tools/GSDumpGUI/Forms/frmMain.resx @@ -1,2462 +1,2462 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - AAABAAcAEBAAAAAAIABoBAAAdgAAABgYAAAAACAAiAkAAN4EAAAgIAAAAAAgAKgQAABmDgAAMDAAAAAA - IACoJQAADh8AAEBAAAAAACAAKEIAALZEAABgYAAAAAAgAKiUAADehgAAgIAAAAAAIAAoCAEAhhsBACgA - AAAQAAAAIAAAAAEAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// - /wv7+/tN+/v7j/v7+4/8/PxP7+/vEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjo - 6Av8/Pxl/Pv717F3Z/Kvdmbz/Pz83Pv7+4Hz8/MWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/v - 7xD8/Pxn/fz83q90ZP6RPib/5crD/+28r/77+/rt+/v7h/Pz8xUAAAAAAAAAAAAAAAAAAAAAAAAAAPPz - 8xX9/f2E/Pz8576OgP6RPif/5srB/+SQe//jjnj/6qyc/v39/e/9/f2H8/PzFQAAAAAAAAAAAAAAAPPz - 8xX7+/uH/f397/3Hd/747eH/8unm/+mlk//rrZz//v7+/+abh//pqpr+/Pv77fr6+nTo6OgLAAAAAP// - /wz5+flb/Pz75/3Iev7+vV7//fn3//no5P/88/D/5piD//HIvP/+/v7/55yJ//jp5f77+vnf/Pz8Zf// - /wv5+flT/Pz8vf3x4Pr+tUz//vTj//rs6P/kknz/9+Da//vx7//ml4P/8svA//7+/v/Kopf/qWtZ/fv6 - +db7+/tE/Pjxtv3esPj9+vb//uCx//62Tf/+8t7/9t3X/+SSff/00cf/5ZaB//LLwP/EmIz/kT0n/5A9 - Jv+tcWDw+/v7fPzt19D9yX77/sFp//79+//+4bX//rhR//779v/23NX/5JF6//PMw//GnI//kT4n/5E9 - Jv+QPSb/wJOH8fv7+4L8/Pqp/fr56f3Iev7+wmr//sRv//7Ief/+9/P//ung//zz8f/+w6f/8rKW/5NA - Kf+QPSb/wZSH/fz8/Nf7+/tH+/v7Tf39/Yb8+/rt/cVz/v7Fcv/+9/P//php//6PXP/+49f//uzj//6Q - Xf/1vqf/1bWt/fz8/Nz8/Pxl////C+Pj4wnz8/MW+/v7hv39/en9+/n+/pJh//6xjf/+18T//o5Z//7i - 1f/+kV///cqz/vz8/Nn8/PxX////CgAAAAAAAAAAAAAAAPHx8RL6+vpo/Pz85v2zkP7+lmb//vr4//7T - v//+jFj//cOp/v39/eH8/Pxj39/fCAAAAAAAAAAAAAAAAAAAAAAAAAAA7u7uD/v7+4X8/Pzs/bST/v6Y - af/99fH//fbz+vz8/Nr8/Pxl5eXlCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADz8/MW+/v7hvz8 - ++T9tpb4/M259Pz8/Lf7+/tN////CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjCfv7 - +0j8/Pyb/O/ow/z496H7+/tE////CQAAAAAAAAAAAAAAAAAAAAAAAAAA/n8AAPwfAAD4DwAA4AcAAMAH - AADAAwAAgAEAAAABAAAAAAAAAAEAAIADAADABwAA8A8AAPAfAAD4PwAA/H8AACgAAAAYAAAAMAAAAAEA - IAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjo - 6Av5+fkr/Pz8Wv39/X/9/f1//Pz8Wvn5+Szr6+sN////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////C/f39z37+/uJ+/v7vdS1rNDRr6bQ+/n5vfv7 - +5D4+PhM8/PzFn9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADo6OgL+vr6Ov39/ZP8/Pzf2r+395VGMPqVSDP74MrE+Pz8/Of8/Pyu/Pz8VvPz8xb///8BAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AvDw8BH7+/tA/f39k/v6+tzYvLT6mU45/5E+ - J//DlIf/8dfQ//Xb1P38+/rq/Pz8svz8/Fr19fUZf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD///8B8/PzFfj4+E77+/ud/Pz84NW4sPqVRS/+kT4n/8mglP/wx7z/5JR//+SUf/7z1Mv9/fz87vz8 - /LT5+flZ8/PzFX9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAP///wH19fUZ+fn5Wfz8/K78/Pzm9/Hu+6tu - XP+TQSr/w5SH/+7Dt//jj3n/55+M/+ediv/kl4T/9NrT/fv6+uz8/Pyy/Pz8V+np6RcAAAAAAAAAAAAA - AAAAAAAAf39/AvPz8xX8/PxZ/Pz8tPz8++v94rr8+82K/9zAtf/Tsqj/9uHc/+aZhf/ml4L/99/Z//rr - 5//oopD/5JWC//PSyvz7+vrr/Pz8rfz8/Erq6uoMAAAAAAAAAAAAAAAA6urqDPv7+0j8/Pyu/Pz77f3m - xv39uVf//r9j//727P/+/fz//PXz/+utnP/kkXz/8ce7//78/P/55uH/5puH/+SVgv/24Nr8/f395f39 - /Zf6+vo6////CwAAAADj4+MJ+fn5Kvv7+4H9/Pre/eO8/P26Wv/+wWj//u7W//bd1v/vv7P//fb1//zz - 8P/ttKT/5ZN+//DCtv/9+fj/+ebh/+utnv/13Nb/8ufl+vr599z8/PyU+/v7Pf///wr6+vox/Pz8dfz8 - /L389Ofx/bta/v66Vv/+7NH//v7+//DDuP/kkHr/7beo//36+f/89vT/66+e/+SQev/wwrb//v38//78 - /P/u4t7/mk45/tGwp/r7+/vg+/v7h/j4+CX7+/t5/Pz8xf369fD9/Pv8/d6v//67WP/+xnP//vPh//z1 - 8//stab/5JJ8/+++sf/99/b/99/Z/+OOeP/nnIj//PTy/+jX0v+kXkv/kD0m/5dJM/7Utaz2+vn3tPv7 - +0b8/Pyk/eO+5f3Ecf397tb//v38//7juv/+ulX//sFn//7x3f/9+fj/7rut/+SRe//rrJz/6aaT/+SQ - ev/yy8H/6NXP/59YRP+RPif/kT0n/5A9Jv+TQy7607Wsyfr6+mv9/f2z/OC46P24Uv7+wWn//vLg//79 - +//+3q7//rdP//7Fcf/++/X//Pb0/+yzpP/kkHr/5ZR///HHvP/s3dn/mk44/5E+J/+RPSb/kT4n/5A9 - Jv+bUj7649POy/r6+m/7+/uY/Pv51f3jvfz9uln//sBm//7u1//+8dv//rtY//67WP/+9+z//v7+//z2 - 9P/xxbn/9NLK//7w6f/eua3/lkUw/5E9Jv+RPif/kD0m/6RfTP7m1dD3/f39t/v7+079/f1r/f39qv39 - /e794rr9/bhS/v69Xv/+vV7//rhS//7iuP/+/Pv//tO///7u5//+/v7//vj1//6QXf/+n3P/1aqd/5I/ - KP+QPSb/m086/uXUz/r8/Pzf/f39h/j4+Cb5+fkr+fn5Wfz8/LP8+/nq/eC1/f25WP/+ulj//uG0//7z - 7P/+uJn//o1Z//6ecf/+4tb//v38//7Hrv/+kmD//qF3/9eomP+3gHL+49HL+Pz8/Nr9/f2T+/v7PP// - /wrj4+MJ9PT0F/z8/Fb8/Pyy/Pv67f3s0/396s///fj1//64mP/+jVn//p1w//6RX//+mmz//ubb//78 - +//+uZn//otX//25m/76+Pf4/Pz81fv7+436+vo5////CwAAAAAAAAAAf39/AvPz8xb8/PxY/Pz8rfz8 - /OL9/f35/dPA//6NWf/+nG///vXx//7SvP/+lGP//p9z//7Tv//+lmf//Z5z//3m3Pn8/PzY+/v7hvr6 - +jTl5eUKAAAAAAAAAAAAAAAAAAAAAP///wH09PQX+/v7Sfz8/JX8/Pzf/efc/P2Za//+k2L//trI//79 - /f/+2Mf//pVl//6LWP/9oXn//eje+/z8/Nz7+/uR+vr6N+Xl5QoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAB6urqDPv7+0P8/Pyo/Pz87P3ay/39k2H+/pdo//7j1v/+/f3//dG9//2ccP795Nr5/Pz83/z8 - /JX7+/s85eXlCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPPz8xX8/PxX+vr6svz7 - ++r93c/9/Zlr//6Yaf/92cn//fz8/P359vD8/PzT+/v7kfv7+z7r6+sNAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wHz8/MW/Pz8Vvz8/LL8/Pzs/d3Q+v2SYv39oHf9/PXy7fz8 - /Lr8/Px1+vr6M+Xl5QoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38C9PT0F/z8/Fb9/f2e/Pz8yPzh1eD86uHa/Pz8svz8/Gb4+Pgj////BwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjCfj4+Cb8/Pxc/f39iP39 - /aH7+/uO/Pz8X/f39yL///8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A/4H/AP8A - /wD+AH8A/AA/APgAHwDwAA8A4AAHAMAAAwDAAAEAgAABAAAAAQAAAAEAAAABAIAAAQDAAAMA4AAHAPAA - DwD4AB8A/AA/AP4AfwD/Af8A/4P/AP/H/wAoAAAAIAAAAEAAAAABACAAAAAAAAAgAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj4+MJ9vb2Hfv7 - +zz8/Pxe/f39eP39/Xj8/Pxe+/v7PPb29h3j4+MJ////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8B6OjoC/n5 - +Sj5+flY+/v7iPz8/Kjz7uu48+zruPz6+qj7+/uJ/Pz8Xfr6+jDx8fESv7+/BAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Aerq - 6gz5+fks+vr6Zfz8/KX8/PvQ7eLf4q1yYuiqbFvo697a4vz8/NL8/Pyu+/v7ePf390D09PQX////BAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ - fwLr6+sN+fn5LPz8/Gb8/Pyp/Pv73Ove2vSsbl76kD0l/JE/KfzClon7/f399v39/eX8/PzA+/v7hfv7 - +0T09PQYzMzMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD///8D7+/vEPn5+S78/Pxm/Pz8qfv7+93p2dX2rnNi/pE/KP+RPSb/q2xa/+/e2v/35N/++ezn+vz7 - +uv8/PzE+/v7hvv7+0Xr6+sZzMzMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAzMzMBfPz8xb6+vo4/Pz8bfz8/Kv8+/vc59bR9rB1Zf6SQSv/kT4n/61uXP/pz8f/7r6y/+ac - iv/rsqP+9+Xg+/z7+uv8/PzE+/v7hvv7+0X19fUZzMzMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAMzMzAX09PQY9/f3Q/v7+338/Py1/Pz83+zg2/azfW79k0Ms/5E+J/+vc2H/58zE/+22 - qP/jjnj/4494/+OSff/rsaH+9uPe+/v6+uv8/PzE+/v7hvv7+0X09PQYzMzMBQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAADMzMwF6+vrGfv7+0X7+/uF/Pz8wfz8/Ob9/Pr34MrD/aFdSf+TQiz/t4Bx/+bM - xf/stKX/4495/+WVgP/ss6T/6KGP/+OSff/rsaP+9+Pf+vz7++r8/PzD+/v7hfv7+0Lz8/MV////AwAA - AAAAAAAAAAAAAAAAAAAAAAAA////BPT09Bj7+/tF+/v7hvz8/MT8+/rq/e3V+v3aqP7z3ML/yJ+S/8KV - iP/u4t7/8svA/+SQev/kkHr/7ban//vv7P/11s7/6KGP/+OTfv/rsqP+9+Pe+vv6+ur8/PzA+/v7fPr6 - +jf///8O////AQAAAAAAAAAAAAAAAAAAAAHw8PAR+/v7Pvv7+4T8/PzE/Pz76v3t1fr9zIT+/bhT//7c - qv/16uL/9e/t//38/P/008r/5ZR//+SQev/ss6T//Pb0//35+P/01s3/6KKQ/+OTfv/rsqP+9+Tf+fz7 - ++b8/Py0/Pz8bPn5+S7q6uoM////AQAAAAAAAAAA29vbB/j4+Cb6+vpt/Pz8u/z7+ur97db6/cuE/v23 - Uv/+wWn//unI//749P/99vT//v39//z18//xxrr/5ZN9/+WWgf/wwLP//Pb0//359//01c3/6KGP/+OS - ff/vw7j+/PXz9/z8/N/8/Pyr/Pz8Zvn5+Szo6OgLAAAAAOPj4wn29vYc+/v7SPz8/JX8/Pva/e7a+P3L - g/79t1H//sFo//7ju//++fL/8ce7/+ywoP/45N///v39//z19P/xx7v/5ZN9/+WXgv/vwLP//Pb0//34 - 9//118//7bep//TY0P/z6eb98+vp9vr5+d38/Pyp/Pz8ZPj4+Cff398I+Pj4Jfz8/FH9/f2E/Pz8vvz4 - 8ev926r8/bZQ//67Wf/+3az//vv1//77+v/ssqP/5JJ8/+mlkv/55uH//v7+//z29P/xx7z/5ZN9/+WX - g//vwLP//Pb0//36+f/88/D/8+fk/8KVif+wdmb+5NHM9vv6+tz8/Pyj/Pz8VPT09Bf8/PxQ/f39kvz8 - /Mj8/Pzm/fz5+P3mw/7+vmH//rhR//7OiP/+8t///v7+//ji3P/oo5D/5JF7/+ihj//66eX//v7+//z1 - 8//wxLj/4495/+aZhf/yy8D//v7+//Xv7f/FmIz/l0o1/5FAKv+oalj95dbR9Pv6+s37+/t8+fn5K/v7 - +3j8/Py9/Pr37P348Pr9/f3+/fn0//7ht//+v2H//rdP//7OiP/+8+L//v38//fi3f/noIz/5JB6/+ed - i//66uf//ff0/+y0pv/jj3n/5pqF//POxP/07ev/xJiL/5dIM/+RPif/kD0m/5E/KP+nZVP56NnW3vv6 - +pj7+/tH+/v7mPz38NT9y4P2/b9m/v3kv//+/v7//vz3//7htf/+vl///rZL//7PiP/+9eb//v7+//jl - 3//mnIf/4495/+abiP/rrZz/5JB5/+WXgv/yyL7/8+jl/8KVh/+VRC7/kT4n/5E9J/+RPSf/kD0m/489 - J/uxeWjk8+3rrPz8/GL9/f2k/Pbv1/3Gefj9tEv//r5h//7lv//+/v3//vz4//7gsv/+vl///rVK//7Q - iv/+9ur//v7+//jm4f/mmoX/4495/+OPef/ll4H/8se8//fx7v/JoJT/kj4n/5E+J/+RPSb/kT0m/5E+ - J/+QPSb/kUAp/MeflOX28/Kv/Pz8Zfv7+5D8/PvF/PHe8v3Fdf79tU3//sBl//7lwP/+/fr//vv0//7W - mf/+uFP//rZM//7pyP/+/fv//v7+//jl4f/mnYj/5pmE//HHvf/9+fj/38a+/5hKM/+RPif/kT0m/5E9 - Jv+RPif/kD0m/5RELv/BlIj68+7s4Pv7+5/8/PxP/Pz8bvz8/Kj9/fzl/e7Z+/3Hef79tU7//sFp//7l - v//+6Mf//sd1//64Uv/+yHj//vLg//769//+9vP//v7+//rq5//229P//vbz//7Yxv/zxbH/wYt7/5dG - Mf+RPSb/kT4n/5A9Jv+WSDL/wZSI/fLr6fT8/PzO/f39gPr6+jH7+/tJ/f39evz8/MP8+/ns/e3W+/3J - e/79t1L//r5h//6/Yf/+uFL//sl6//7u1f/+9vH//tTA//69oP/+6+P//v7+//7+/f/+59v//pJg//6V - ZP/xrpL/wId3/5dIMv+QPSb/l0o1/8GTh/3w6OX2/Pz83Pz8/KT8/PxV9fX1Gfj4+CT7+/tB+/v7hvz8 - /MX8+/ns/ezS+/3JfP79t1D//rdQ//7Je//+7dL//vXv//7Nt//+l2f//oxY//6pgf/+6d///v7+//7y - 7P/+s5D//pFf//6XZ//wr5P/w45//6hmVP7DmIz87+Xi9Pz8/Nz8/Pyp/Pz8ZPj4+Cff398I6OjoC/T0 - 9Bf7+/tE+/v7hvz8/MX8+/nr/ezR+v3Oiv79zYj//uvP//707f/+zbb//plr//6QXv/+lmb//oxX//6p - gv/+59z//v38//7q4P/+ror//otX//6ccP/3zbv/7uLf/PXv7fH9/f3W/Pz8pvz8/GX5+fks6OjoCwAA - AAAAAAABv7+/BOrq6hj7+/tE+/v7hvz8/MP8+/ro/fXn+P305v399vD+/s63//6bbf/+kF7//rWT//7J - sP/+nG7//o1Y//6rhP/+5dn//vDq//67m//+jFf//Ztu//3UwP38/Pzy/Pz80vv7+5z8/Pxe+fn5K+rq - 6gz///8BAAAAAAAAAAAAAAAA////BPT09Bj7+/tE/f39gvz8/Lr8/Pzf/Pz89P3o3v39p4D//oxY//6b - bv/+5tz//vz7//7Vwf/+nG///o5a//6ogP/+upv//pZn//2Xaf/9w6j9/PDq9Pz8/Nj8/Pye/Pz8WPj4 - +CXo6OgL////AQAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMBfT09Bj7+/s+/Pz8cfz8/Kv8/Pzd/e/p9/25 - mv79kWD//pVm//7Jsf/++fb//v38//7Ww//+nXD//oxX//6MWP/9l2j//cGn/fzu6PX9/f3b/f39pvz8 - /GH4+Pgn4+PjCQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////BPHx8RL19fUy+vr6bf39 - /bT8/Pzm/ejf+v21lP79kF7//pdo//7Jsf/++/n//vz7//7WxP/+nnL//ZVl//3Bp/387+n1/Pz83P39 - /aj6+vpm+fn5LOrq6gz///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Au/v - 7xD6+vo5+/v7fvz8/MH8/Pzq/erh+/20k/79j13//pZn//7Ir//+/Pv//fn3//3f0f791cP8/PDq9P39 - /dv9/f2o/Pz8Zvn5+S3r6+sN////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA////A/Pz8xb7+/tD+/v7hvz8/MT8/Pzr/ezj+/2zkf79jVr//pVl//3FrP/9+/r+/fz8+Pz5 - +Or8/PzR/Pz8pPz8/GX5+fkt6+vrDf///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAzMzMBfT09Bj7+/tE+/v7hvz8/MX8/Pzq/e7n+P2wjv39i1f+/Zdo/v3u - 6Pj8/Pzk/f39uv39/Yr5+flZ+fn5Kv///wz///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////BOrq6hj7+/tE/f39g/z8/Lz9/f3b/PDr6/zB - pvT8z7vx/fn44fz8/Lr9/f16+/v7QPb29h3l5eUK////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv7+/BPPz8xb7+/s8/f39a/v7 - +5b8/Py3/Pbzy/z498T8/Pym/f39d/v7+z/z8/MWzMzMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4+PjCfb2 - 9h77+/s8/Pz8X/39/YD7+/uP+/v7gfz8/F/6+vo49PT0F8zMzAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////+B////AP///gA///wAH//4AA//8AAH/8AAA/+AAAP/AA - AB/wAAAP4AAAB8AAAAOAAAADgAAAAQAAAAEAAAABAAAAAYAAAAHAAAADwAAAB+AAAA/wAAAf+AAAP/4A - AH//AAD//4AB//+AA///wAf//+Af///4P////H//KAAAADAAAABgAAAAAQAgAAAAAAAASAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAB29vbB/Dw8BH39/ch+vr6N/v7+038/Pxi/f39b/r6+nD8/Pxi+/v7Tfr6 - +jf39/ci8fHxEtvb2wd/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wHf398I9PT0F/n5+S38/PxK/Pz8Zvv7+3/7+/uR+/v7nPv7 - +5z7+/uR+/v7f/z8/Gb7+/tL+vr6MPX19Rrq6uoMv7+/BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd/f3wj09PQY+vr6NPz8/Fr9/f2B+/v7n/z8 - /LP8+vq/+Pf2xfj29sX6+vq//Pz8s/v7+5/7+/uE/Pz8Yvv7+z/4+Pgj7+/vEMzMzAUAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8B39/fCPX19Rr6+vo4/Pz8Yvv7 - +5H8/Py3/Pz8z/z8/Nzm1M7hqWpY5KloVuTexb7h/Pz83Pz8/ND8/Py7+/v7nPz8/HX7+/tN+fn5K/Hx - 8RLU1NQGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHf398I9fX1Gfr6 - +jf8/Pxj/Pz8lfz8/MH8/Pzf/f397vLq6PScVD/2jzwl9o88JfaYTDf25dLN9f39/e/8/Pzj/Pz8zfz8 - /K37+/uC/Pz8VPn5+Szy8vITzMzMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AuPj - 4wn19fUa+vr6N/z8/GT7+/uW/Pz8wvz8/OL7+/v059bS+ppQOv2OOyP9jz0m/Y88Jf2VRzH90rCn/f39 - /fv9/f32/Pz86/z8/Nf8/Py0+/v7h/z8/Fb5+fku8vLyE9TU1AYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACqqqoD5eXlCvX19Rr6+vo5/Pz8Y/z8/JX8/PzC/Pz84vv7+/Tt4Nz8olxJ/o87JP6QPSb+kD0m/488 - Jf/NqJ7+/f39/v39/f79/Pz9/f39+f39/e/8/Pza/Pz8tvv7+4f8/PxW+fn5LfLy8hPU1NQGAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAL+/vwTr6+sN9vb2Hvv7+zv6+vpm+/v7l/z8/ML8/Pzj/Pz79O3h3vyZTTf+jzsk/pA9 - Jv6QPSb/jzkh/7uIev/59fP/+Orm/+u0pv7prJz++Ofi/f38/Pr8/Pzx/Pz82vz8/Lf7+/uH/Pz8Vfn5 - +S3y8vITzMzMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA1NTUBvDw8BH4+Pgn+/v7Rvr6+m77+/ua/Pz8xPz8/OL8/Pz06djU+6Jd - Sv6POyT+kD0m/pA9Jv+RPyf/w5WI//nz8f/yzMH/5JF8/+KMd//ijnj+6KOS/vbh2/79/f36/f398P39 - /dv8/Py2+/v7h/z8/Fb5+fku8vLyE9TU1AYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwF8fHxEvn5+Sv8/PxQ+/v7e/z8/KX8/PzJ/f395fz8 - /PT07uz8nFI9/o88JP6QPSb+kD0m/4w1HP++jX//+/j3//PRx//jj3n/4495/+OPef/ijXj/4o95/uae - jP746OT+/f39+vz8/PH9/f3b/Pz8t/39/Yf8/PxV+fn5LPLy8hPMzMwFAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU1Aby8vIT+fn5Lvz8/FX7+/uE+/v7sPz8 - /NL8/Pzo/Pz89fn29fymY1D+jzsj/pA9Jv6QPSb/kkAp/72Mfv/48e//8s3D/+OPef/jjnj/4495/+OP - eP/jjnj/4o54/+KOeP7noY/+9uHb/v39/fr9/f3w/Pz82vz8/Lb7+/uH/Pz8Vfn5+S3x8fESzMzMBQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1NTUBvLy8hP5+fkt/Pz8Vvv7 - +4f8/Py2/Pz82f39/e79/f34/f39/fr39/6hXEj+jjoi/pA9J/+SQCn/z6uh//v4+P/zzsT/5JF7/+OO - eP/jj3n/5I95/+68r//uvbD/4413/+KNeP/ij3n+56KR/vjn4/79/f36/f398Pv7+9v8/Py2/f39hvz8 - /FP5+fkp7u7uD7+/vwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwF8vLyE/n5 - +S38/PxV+/v7h/z8/Lf8/Pza/f398P38+/r98uL9/eW//v326/7y6eb+ol1J/5RELv/NqJ3//v39//z1 - 8//kknz/4454/+OPef/kj3n/7rms//35+P/+/fz/7r2v/+SRe//ijXj/4o54/uadi/73497+/fz8+v39 - /fD8/PzZ/Pz8tPv7+4D8/PxK9/f3Iujo6At/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzM - zAXw8PAR+fn5LPz8/FX7+/uH/Pz8tvz8/Nr9/f3w/f39+v3t1/79wmz+/bRI/v3Oi//++/j/7N7b/93D - vP/+/f3//v7+//bd1v/jjHX/4495/+OPef/llX///fj3//7+/v/+/v7//Pf1/+68r//jjnf/4o54/+KO - eP7opJP+9+Tf/v39/fr9/f3u/f391vz8/Kr8/Pxz+/v7P/b29hzj4+MJ////AQAAAAAAAAAAAAAAAAAA - AAAAAAAAf39/Aurq6gz4+Pgl/Pz8T/v7+4T8/Py2/Pz82vz8/PH9/f36/fDe/v29YP79tEn+/bNK//7D - bf/++fL//v7+//7+/v/+/v7//v7+//z08//nn4z/4495/+OPef/jjXf/7ryv//77+v/+/v7//v7+//78 - /P/uuq3/5I95/+KNeP/ijnj+5p6L/vjp5P39/f34/Pz87Pz8/M38/Pye/Pz8aPr6+jn19fUZ39/fCAAA - AAEAAAAAAAAAAAAAAAAAAAAAzMzMBfT09Bf7+/s9/Pz8dfz8/K78/PzY/f397/39/fr97NP+/cFp/v20 - Sf79tEr//rVK//7Vmv/+/Pn//v7+//7+/v/+/v7//v7+//7+/v/34dz/6KKP/+OPef/jj3n/5I94/+/A - s//9+fj//v7+//7+/v/9+Pj/7ryv/+SPef/ijnj/4o54/uillP757+39/f399v39/eX8/PzF/f39l/r6 - +mX6+vo49fX1Gt/f3wj///8BAAAAAAAAAAG/v78E6urqDPj4+Cb8/PxV/Pz8lPz8/Mv8/Pzs/f39+f3y - 4v79wGf+/bRK/v20Sv/+tEn//tGP//769f/+/v7/+/Lv//TWzv/9+fj//v7+//7+/v/+/f3/+Obg/+ed - iv/jj3n/4495/+SRe//vv7L//v39//7+/v/+/v7//fj3/+65q//jjnf/4o14/+WYhf756+f+/f39/Pz8 - /PT8/Pzj/Pz8w/v7+5b8/Pxj+vr6OPT09Bjf398IAAAAAd/f3wjy8vIT9/f3Ivv7+0D8/Pxw/Pz8q/39 - /dv8+/v1/e7Z/P2+ZP79tEn+/bRK//62Tf/+0pH//v37//7+/v/9+ff/6KOR/+OMdf/rrZ3/+/Dt//7+ - /v/+/v7//v7+//jk3v/oopD/4495/+OPef/jjnf/78C0//349v/+/v7//v7+//78/P/vv7P/6aSS//TW - zv79/Pz++/f3/urc1/z7+vr0/Pz84vz8/ML8/PyV/Pz8Yvr6+jTz8/MW1NTUBvT09Bf5+fkv/Pz8Sv39 - /Wv8/PyU/Pz8w/z8/Ob9+vX4/cuA/f20Sv79tEr//rRI//7Tk//++fH//v7+//7+/v/67+v/4412/+OP - ef/jkHr/66+f//z29f/+/v7//v7+//79/f/34dv/552K/+OPef/jj3n/5JJ8//DBtP/+/f3//v7+//7+ - /v/9+vr//Pb0//39/f/8+vr+v4+D/p5VQf7fyML8/Pz89Pz8/OL8/PzA+/v7kPz8/Fj5+fkq6+vrDfn5 - +S38/PxU/f39f/z8/KH8/PzA/Pz83Pz8/PH9+PL7/cRz/v20Sv/+tUv//rRH//7erv/+/fr//v7+//7+ - /v/++/r/6qyb/+OQef/jj3n/4494/+qqmf/89PL//v7+//7+/v/+/v7/+efi/+igjv/jkHn/4495/+ON - dv/wwbX//fv6//7+/v/+/v7//v7+//v49//ClYj/jjgg/pA9Jf6TQiv+4crE/Pr5+fT8/Pzf/Pz8tfv7 - +3v7+/tA9PT0GPv7+0b6+vp3/Pz8q/z8/M78/Pzj/f398P39/fn9/Pv9/eXC/v69Xf/+tkv//rVL//69 - Xv/+3av//v79//7+/v/+/v7/+u3q/+qsnP/jj3j/4495/+OOeP/rsKH/+/Lv//7+/v/+/v7//v7+//bc - 1f/klH7/4495/+OPef/lk37/9t3X//7+/v/+/v7//fv7/8SYi/+UQyz/kD0n/5A8Jv6QPCX+nFM+/tvC - u/r8/Pzt/Pz8y/z8/JT8/PxU+Pj4Jfz8/Fv9/f2S/Pz8yPz8/Of8/Pz1/f39+/39/f39/f3+/f38/v7o - x//+vVz//rVL//61S//+tEn//t6u//7+/f/+/v7//v7+//zz8f/no5D/4495/+OPef/jj3n/6qua//35 - +P/+/v7//v7+//XXz//lk33/4495/+OPef/kkn3/9+Da//7+/v/8+vn/v4+C/487I/+RPif/kT4n/5A9 - Jv+QPSb+kD0m/pVFMPzj0Mry/f391vz8/KX8/Pxo+vr6Nfr6+nX8/Pyo/fz81/zu2vH91p37/eS//v36 - 9P79/f3+/f39/v7+/v/+5L3//r9h//61S//+tUv//rVJ//7dq//+/Pr//v7+//7+/v/78O3/6qyb/+OP - ef/jj3n/4454/+uvn//67er/9dnR/+WZhP/jj3n/4495/+WWgf/wwrb//fv6//z7+v/ClYj/kD0m/5E+ - J/+RPSb/kT4o/5E+J/+QPSb/kD0m/pA8JfyYSzb13MW+3fr6+rP7+/t8/Pz8Sv39/Yb8/Py4/fv44fzG - e/X9s0r9/bdS//7Wm//+/f3//v7+//7+/v/+/fr//uXA//69Xf/+tUv//rVL//64UP/+3q7//v7+//7+ - /v/+/v7/+u7r/+ikk//jj3j/4495/+SQev/nm4j/5ZWA/+OPef/jj3n/5JV///TTyv/+/Pz/8+zp/7J4 - Z/+SQCn/kT0n/5E+J/+RPif/kT0m/5E+J/+RPif/kD0m/489Jv2POyT2tX5u4Pn4+Lz7+/uL/Pz8Wv39 - /Yz8/Py7/Pv44/3Fc/b9s0v9/bRK//60R//+1pv//vr1//7+/v/+/v7//v7+//7lwP/+vmD//rVL//61 - S//+tEb//t6u//78+f/+/v7//v7+//z18v/pqZj/45B6/+OPef/jj3n/4495/+OPef/klH7/8svC//78 - /P/7+fj/vo1//444If+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kD0m/489Jv2SQSv2yaGX4Pv7 - +739/f2N/Pz8XP39/YD8/Pyv/Pv73fznyvP9v2T8/bRK/v20Sv/+tkz//tab//79+//+/v7//v7+//79 - +v/+5L3//r1f//61S//+tUv//rlT//7nxP/+/v7//v7+//7+/v/66+j/6amY/+OPeP/jj3n/4495/+WX - g//008r//vz7//z6+v/El4v/lEMt/5E+Jv+RPif/kT0m/5E+J/+RPib/kT4n/5E+J/+QPSb/kD0m/pJA - Kfy8jH/19e/t3vz8/Lf7+/uD/Pz8UP39/Wv7+/ua/Pz80P39/e796s78/b1g/v21Sv79s0r//rRI//7X - nf/+/fv//v7+//7+/v/+/vz//s+K//61Sf/+tUv//rVK//7apP/+/v7//v7+//7+/v/+/v7/+/Ty/+ik - k//jj3n/45B6//PQx//+/f3//v7+//Xv7f+SQCj/kDwl/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5A9 - Jv+QPSb+kkAp/r2Nf/z8/Pzz/Pz82fz8/Kv8/Pxx+/v7Pvz8/FH7+/uD/Pz8v/39/eX9/f34/efJ/f3B - aP79tUr+/bRK//60SP/+153//vv2//78+P/+37H//rxc//61S//+tkz//sFo//7s0f/+/v7//v7+//7+ - /v/+/v7//v7+//vw7f/xyL3/9tnS//78+//++PT//t3O//7e0P/hy8b/nVM//5I/Kf+QPSb/kT4n/5E+ - J/+RPif/kD0m/5A9Jv6RPyj+vIt9/vXv7vr8/Pzt/Pz8zfv7+5j8/Pxb+fn5K/v7+z78/Pxp/Pz8pvz8 - /NT9/f3v/fz7+v3oy/79vV/+/bVK/v2zSv/+u1n//t2r//7gs//+vFz//rVL//62TP/+v2H//uXB//79 - /P/+/v7//vz6//7z7f/+/fz//v7+//7+/v/+/v7//v7+//76+P/+so7//o9d//6MWP/+xKn/4cvF/5A8 - JP+QPCT/kT4n/5E+J/+QPSb/kD0m/pE/KP69joD++PX0/Pz8/PT8/Pzf/Pz8tv39/X37+/tD9fX1G/j4 - +Cf7+/tJ/f39f/z8/LP8/Pza/f397/39/fr96Mv+/cFo/v21Sv79tEr//rVJ//60Sf/+tUv//rZM//7B - Z//+5cH//v7+//7+/v/+8Or//rGO//6LVv/+u5v//vby//7+/v/+/v7//v7+//7z7f/+mWv//oxY//6M - V//+ilX//sqy/+LMxv+cUDz/kDwl/5A9Jv+QPSb+kkAp/ruKfP749fT8+/v79Pz8/OL8/PzA+/v7kPz8 - /Fn5+fkr7e3tDvPz8xX5+fkq/Pz8U/v7+4b8/Py2/Pz82v39/fD9/Pv6/efH/v2+YP79tUr+/bRK//61 - S//+tkz//r5i//7lwP/+/fz//v7+//7v6P/+rIb//o5b//6MWP/+jlv//reW//76+P/+/v7//v7+//78 - /P/+yLD//pVl//6MWP/+jFf//o9b//7Irv/fyML/mU45/405If6QPSb+vIx9/vXv7fv8/Pz0/Pz84vz8 - /ML8/PyV/Pz8Yvr6+jTz8/MW1NTUBuPj4wnx8fES+fn5LPz8/FX7+/uH/Pz8tvz8/Nr8/Pzx/f39+v3p - zf79v2P+/bVK/v20S//+v2T//uS+//7+/v/+/v7//vHq//6sh//+jFj//oxY//6MWP/+jFj//otW//61 - kv/+9/T//v7+//7+/v/+/v7//sWq//6VZf/+jFj//oxX//6FTv/+zLb/9e7s/sOYjf7Rsaj+/f39+vz8 - /PL9/f3h/Pz8wvv7+5b8/Pxj+vr6OPT09Bjf398IAAAAAf///wHU1NQG8vLyE/n5+S38/PxV/f39hvz8 - /Lb8/Pza/f397/39/fr96Mn+/cZ1/v3Dbv795MD//f39//7+/v/+8er//rCM//6OW//+jFj//otX//6L - Vv/+jFf//oxY//6OW//+uZr//vv5//7+/v/+/v7//vj0//7GrP/+i1b//oxY//2LV//9n3P+/fHr/v39 - /f39/f35/f397/z8/Nr8/Py8+/v7kvr6+mP6+vo39fX1Gt/f3wj///8BAAAAAAAAAAAAAAAAzMzMBfLy - 8hP5+fks/Pz8Vfv7+4f8/Py3/Pz82v39/fD9/fz5/fv4/f379/79/f3+/f39/v3x6//+p3///oxY//6M - WP/+jFf//qd///7k2P/+mm3//oxX//6MWP/+jFf//rKN//77+f/+/v7//v7+//7g0v/+iVT//YtX//2L - V/79lWb+/erh/v39/fr9/f3v/Pz82Pz8/LX7+/uK/Pz8Xfr6+jX09PQY39/fCAAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAANTU1Aby8vIT+fn5Lfz8/Fb9/f2G/Pz8tPz8/Nf8/Pzq/Pz89f39/fv9/f3+/fv6/v21 - lf7+jVn//oxY//6LV//+pXz//uvi//7+/v/+4dT//pxv//6LV//+jFj//oxX//67m//+9/P//uPW//6j - ef/+i1j//YtX/v2RYP79xKv+/fj2+/z8/PH8/Pza/Pz8tP39/YP8/PxV+vr6MPT09Bff398I////AQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwF8vLyE/n5+S38/PxU+/v7gvz8/Kz8/PzM/Pz84/v7 - +/P8/Pz7/fby/v2RX/79ilf//oxY//6KVf/+49f//v7+//7+/v/+/f3//ubb//6Za//+i1f//oxY//6O - W//+oXf//php//2MWf/9i1f+/ZNi/v3Cp/799/X8/Pz89Pz8/OD8/Py8+/v7ivz8/FX5+fkr8vLyE9vb - 2wcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////BfHx8RL5+fkq+/v7Tfz8 - /HT7+/uc/Pz8wv39/eH8/Pz0/fr5/P2uiv79i1f+/YpX//6LWP/+pX3//u7m//7+/v/+/v7//v7+//7m - 2//+nG///oxX//6MWP/+i1f//otX//2LV/79kmH+/cCk/v37+vz8/Pzz/Pz84vz8/MH7+/uS/Pz8Xfr6 - +jDy8vITzMzMBQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU - 1Abv7+8Q+Pj4JPv7+z/8/Pxm+/v7l/z8/Mb8/Pzn/f39+P3t5f39p37+/YpV/v2LV//+jVj//qqD//7y - 7f/+/v7//v7+//79/f/+4dP//php//6MV//9i1f//YtX/v2TYv79v6T+/fXw+/z8/PT8/Pzi/Pz8wvz8 - /JX8/Pxj+vr6NfT09BfU1NQGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAC/v78E6OjoC/X19Rr7+/s7/f39a/z8/KT8/PzS/f397v39/fr9+Pb+/aZ9/v2L - V/79ilf//otX//6ec//+8+3//v7+//7+/v/+/v7//u3l//6Ya//9i1f+/ZJg/v2/pP79/fz8/Pz89Pz8 - /OP8/PzC+/v7lvz8/GP6+vo39PT0F9/f3wgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AuXl5Qr39/cf+/v7Rv39/Xv8/Pyx/Pz82f39 - /e/9/f36/e3m/v2pg/79ilb+/YtX//6LV//+q4X//u/n//7+/v/9/f3+/f39/v3i1v79tZX+/cqz/f31 - 8fv8/Pzz/f394fz8/ML8/PyV+vr6ZPr6+jj19fUa39/fCP///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLr6+sN+Pj4J/z8 - /FH7+/uF/Pz8tvz8/Nr8/Pzx/f39+v3x7P79pHr+/YpW/v2KV//+jFj//qV8//707//9/f3+/f39/v39 - /f39+vn7/fz79/39/fD8/Pzg/Pz8wfv7+5b6+vpk+vr6N/X19Rnf398IAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADMzMwF8fHxEvn5+Sz8/PxV+/v7h/z8/Lb8/Pza/f398P39/fr98ez+/aiC/v2LV/79i1f//opW//6n - f//97eb+/f39/f39/fn9/f3w/Pz85Pz8/NP8/Py5+/v7kvz8/GL6+vo49fX1Gd/f3wj///8BAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA////BfLy8hP5+fkt/Pz8Vf39/Yb8/Py2/Pz82v39/e/9/f35/e3l/P2j - ev79ilX+/YtX/v2LV/79vJ79/f39+v39/e/9/f3b/Pz8wPz8/KP9/f2C/Pz8XPr6+jX19fUZ39/fCAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzAXy8vIT+fn5LPz8/FX7+/uH/Pz8tfz8 - /Nf8/Pzr/Pz88/338/j9pX77/YtX/P2RYfv9yrP4/f398Pz8/N38/Py7/f39j/z8/Gn7+/tI////LPPz - 8xbf398IAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADU1NQG8vLyE/n5 - +S35+flV/f39gvz8/Kz8/PzI/Pz82f39/eX87eft/Miv8v3Xxu/89fLn/Pz82fz8/L37+/uT/Pz8Yfr6 - +jn39/cf7+/vENTU1Ab///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAzMzMBfHx8RL5+fkq+/v7Tvz8/HP7+/uT/Pz8rPz8/MH8/PzR/Pv72fz8/NT8/PzF/Pz8r/v7 - +5D8/Pxn+/v7O/X19Rvj4+MJqqqqAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU1Abw8PAR+Pj4JPv7+z38/PxW+vr6cf39/Yr7+/uf/Pz8qPz8 - /KP7+/uR/f39d/z8/Fn6+vo69vb2Hujo6At/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wHb29sH8PDwEff39x/6+voy+/v7Rvz8 - /F38/Pxs/Pz8cvz8/Gz8/Pxd+/v7RPr6+jD19fUb6urqDL+/vwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA///8P/// - AAD//+AH//8AAP//wAP//wAA//+AAP//AAD//wAAf/8AAP/+AAA//wAA//wAAB//AAD/+AAAD/8AAP/w - AAAH/wAA/8AAAAP/AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAD/AAD8AAAAAH8AAPwAAAAAPwAA+AAAAAAf - AAD4AAAAAA8AAPAAAAAABwAA4AAAAAAHAADAAAAAAAMAAIAAAAAAAwAAgAAAAAADAAAAAAAAAAEAAAAA - AAAAAQAAAAAAAAABAACAAAAAAAMAAIAAAAAAAwAAwAAAAAAHAADgAAAAAAcAAOAAAAAADwAA8AAAAAAf - AAD4AAAAAD8AAPwAAAAAfwAA/gAAAAD/AAD/AAAAAf8AAP/AAAAD/wAA/+AAAAf/AAD/8AAAD/8AAP/4 - AAAf/wAA//gAAD//AAD//AAAf/8AAP/+AAD//wAA//8AA///AAD//4AH//8AAP//4A///wAA///4P/// - AAD///////8AACgAAABAAAAAgAAAAAEAIAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAf39/AtTU1Abr6+sN9PT0F/j4+CT6+vo0+/v7Rfz8/FX8/Pxj/f39a/39 - /Wv8/Pxj/Pz8Vfv7+0X6+vo0+Pj4JPT09Bfr6+sN1NTUBn9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjw8PAR9vb2Hvn5+S/7+/tC/Pz8Vvr6 - +mn9/f15+/v7h/v7+477+/uO+/v7h/39/Xn6+vpp/Pz8Vvv7+0L6+vow9/f3H/Hx8RLj4+MJv7+/BAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjy8vIT+Pj4I/r6 - +jj8/PxQ/Pz8af39/X79/f2P+/v7nfv7+6f8/Pys/Pz8rPv7+6f7+/ud/f39j/39/X78/Pxp/Pz8U/v7 - +zz5+fko9fX1Ge3t7Q7U1NQGf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f - 3wjy8vIU+Pj4Jvf39z/8/Pxc/f39evz8/JT8/Pyo/Pz8t/z8/MD5+PfG69/bye3g3Mn49PPG/Pz8wPz8 - /Lf8/Pyo+/v7lv39/X78/Pxk/Pz8Svr6+jL39/cf8PDwEd/f3wh/f38CAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAf39/At/f3wjy8vIU+Pj4J/v7+0H8/Pxi/f39hPz8/KT8/Py8/Pz8zfz8/Nf69vbc2sG536ps - WeGrbl3h0rGo3/Xw7tz8/PzX/Pz8zfz8/L/8/Pyq+/v7kPr6+nP8/PxV+vr6Ofj4+CPx8fES39/fCH9/ - fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjy8vIU+Pj4J/v7+0L8/Pxj+/v7iPz8/Kr8/PzH/Pz82vz8 - /Ob59vbs2Ly075xUP/CMOSLxjTki8ZdJM/DNqp/v9e7t7Pz8/Of8/Pzd/Pz8zvz8/Lj7+/ud+/v7fvz8 - /F37+/s++Pj4JfLy8hPf398If39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjy8vIU+Pj4J/v7+0L8/Pxk+/v7ifz8 - /Kz8/PzK/Pz84Pz8/O349vX117mx+J5WQfmPPCX5jzwm+Y88JvmPPCX5m1E7+dzCu/j+/Pz1/f398Pz8 - /Ob8/PzX/Pz8wvz8/Kb7+/uE/Pz8YPv7+0D4+Pgl8vLyE9/f3wh/f38CAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqA+Pj4wny8vIU+Pj4J/v7 - +0L6+vpk+/v7ifz8/K38/PzL/f394f39/fD59vb41riw+6BaR/2PPCX9jzwl/ZA9Jv2PPSX9jzwl/apt - XP3izsj9/f39/P39/fr8/Pz0/Pz87Pz8/N38/PzH/Pz8qvv7+4f8/Pxh+/v7QPj4+CXy8vIT39/fCH9/ - fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv7+/BOPj - 4wnz8/MV+Pj4J/v7+0L6+vpk+/v7ifz8/K38/PzL/Pz84v39/fD69/b41beu/aFcSP6QPCb+kDwl/pA9 - Jv6QPSb/jTgg/59XRP7jzsn+/fz8/v39/f79/f39/f39+/39/ff9/f3v/Pz84Pz8/Mn8/Pyr+/v7h/z8 - /GH7+/tA+Pj4JfLy8hPf398If39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38CzMzMBerq6gz09PQX+fn5Kfv7+0P8/Pxk/f39ifz8/K38/PzL/Pz84v39/fD69/b41bat/aJd - Sv6QPSb+kDwl/pA9Jv6QPSb/jjcg/5tPOv/WubH//fz8/vv08v702NH+8s3E/vbd1/379vX8/f39+P39 - /fD9/f3h/Pz8yvz8/Kv7+/uH/Pz8Yfv7+z/4+Pgl8vLyE9/f3wh/f38CAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAB/f38C29vbB+7u7g/29vYc+fn5Lvv7+0j8/Pxo+/v7i/z8/K78/PzM/Pz84v39 - /fD6+Pf41bev/aJdSv6QPib+kDwl/pA9Jv6QPSb/jTcf/5pOOP/YurP/+vf1//fl4P/rs6X/5pyK/uWZ - hf7oppb+8tHJ/vv19Pz9/f34/f398P39/eH8/PzK/Pz8q/v7+4f8/Pxh+/v7P/j4+CXy8vIT39/fCH9/ - fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38C39/fCPHx8RL39/ch+vr6Nvz8/FD9/f1v+/v7kPz8 - /LH8/PzN/Pz84/z8/PH6+Pf41rmx/aJdSv6QPib+kDwl/pA9Jv6QPSb/jTgf/5pOOP/avrX/+/j3//fi - 2//pppT/4495/+KNd//ijnj+45B7/uijkv7z0cn+/Pb1/P39/fj9/f3w/f394fz8/Mr8/Pyr+/v7h/z8 - /GH7+/s/+Pj4JfLy8hPf398If39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38C39/fCPHx8RL4+Pgk+/v7PPz8 - /Fn7+/t5+/v7mfz8/Lf8/PzQ/Pz85Pz8/PH6+Pf52b21/aFcSP6QPSb+kDwl/pA9Jv6QPSb/jTgf/5pO - Of/avrb/+/j3//jk3v/ooY7/4413/+OOeP/jj3n/4o54/+KOeP7jkHv+56OR/vPSyv789/X8/f39+P39 - /fD9/f3h/Pz8yvz8/Kz7+/uH/Pz8Yff390D4+Pgl8vLyE9/f3wh/f38CAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38C39/fCPLy - 8hP4+Pgl+/v7P/z8/F/7+/uC/Pz8o/z8/L/9/f3W/Pz85/z8/PL8/Pz54MvE/aJeSv6QPSX+kDwl/pA9 - Jv6QPSb/jTgg/5pOOP/avbb/+vf2//jl4P/nnor/44x2/+OPeP/jj3n/4495/+OPef/ijnj/4o54/uOQ - ev7nopD+89TL/vz49vz9/f34/f398P39/eH8/PzL/Pz8rPv7+4f8/Pxh9/f3QPj4+CXx8fES39/fCH9/ - fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38C39/fCPLy8hP4+Pgl+/v7P/z8/GH7+/uG/Pz8qfz8/Mb8/Pzc/Pz86/z8/PT9/f36+PX0/c2o - nf6POyP+kD0l/pA9Jv6QPSb/jjkh/5xRPP/Zvrf/+vf2//nm4P/nnIf/44x2/+OPef/jj3n/4495/+OP - eP/jjXf/4454/+KOeP/ijnj+45B6/uegjv701s7++/j3/f39/fj8/Pzx/Pz84vz8/Mv8/Pys+/v7h/z8 - /GH39/c/+Pj4JPDw8BHb29sHf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAB/f38C39/fCPLy8hP4+Pgl+/v7P/z8/GH7+/uH/Pz8rPz8/Mr9/f3h/f397/39 - /ff9/f38/f39/vz7+/7XurL+k0Ms/o46I/6QPSf/jzoj/6hoVv/m1ND//fz8//nn4v/nnYn/44x1/+OP - ef/jj3n/4495/+WUf//uu67/9trT/+usnP/jjXf/4o54/+KOeP7ij3n+5p6M/vTY0P78+fj9/f39+fz8 - /PH8/Pzi/Pz8y/z8/Kv7+/uG/Pz8Xvv7+zv39/cg7u7uD8zMzAUAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38C39/fCPLy8hP4+Pgl+/v7P/z8/GH7+/uH/Pz8rPz8 - /Mv8/Pzi/f398P39/fn9/Pr8/fbq/v3y4P79+/f++PPy/sylmv6VRS//jzoj/6hnVf/m083//v39//77 - +v/qp5b/44x2/+OPef/jj3n/4495/+STfP/uuaz//PX0//7+/f/45N//6qmY/+SPeP/ijnj/4o54/uKP - ef7mnYv+9NnS/vz6+f39/f35/f398Pz8/OL8/PzJ/Pz8qfv7+4H8/PxY+vr6NfX19Rvo6OgLqqqqAwAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38C39/fCPHx8RL4+Pgl+/v7P/z8 - /GH7+/uH/Pz8q/z8/Mr9/f3h/Pz88f39/fn9+/j9/ebG/v2+Yf79tU3+/tCR/v369f/38vD/yaGV/7Bz - Yv/jzsf//v39//7+/v/45uH/5peC/+OOeP/jj3n/4495/+OPef/ppJH//Pb0//7+/v/+/v7//v79//fj - 3f/qqZj/5JB5/+KOeP/ijnj+4o95/uaei/712tP+/Pr5/f39/fn9/f3w/Pz83/z8/Mb7+/ui+/v7ePz8 - /E/5+fku9PT0F+Pj4wl/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1NTUBu/v - 7xD39/ci+/v7Pvz8/GD9/f2G/Pz8q/z8/Mr9/f3h/f398P39/fj9+/j9/ejI/v29YP79tEn+/bJI//29 - Yv/+6s3//v7+//r39v/59PP//f38//7+/v/+/v7/9+Tf/+ebh//jj3n/4495/+OPef/jjnj/6aeU//z0 - 8//+/v7//v7+//7+/v/+/f3/9+Da/+qpmP/kkXv/4o54/+GNeP/ij3n+5p6L/vTa0/78+fj9/f39+Pz8 - /O39/f3b/Pz8vvv7+5j8/Pxu+/v7R/n5+Snz8/MV4+PjCX9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAqqqqA+jo6Av29vYc+vr6N/z8/Fv7+/uD/Pz8qfz8/Mn9/f3h/f398P39/fj9+vb9/ebE/v29 - YP79tEn+/bNK//20Sf/+vmD//uXA//7+/v/+/v7//v7+//7+/v/+/v7//v7+//349v/vvrH/5ZeC/+OP - ef/jj3n/4495/+SSff/vv7L/+/Lv//7+/v/+/v7//v7+//79/f/339n/6qmY/+SRe//ijnj/4Y14/+KP - ef7mnor+89nR/v36+fv9/f32/Pz86vz8/NX8/Py1+/v7j/z8/Gf7+/tD+Pj4J/Ly8hTf398If39/AgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAdTU1Abx8fES+fn5Kvv7+079/f14/Pz8o/z8/Mb8/Pzg/f397/39 - /fj9+vb8/eTB/v2+Yf79tEn+/rRK/v20Sv/+tk7//sh5//7v2v/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7/+/Lv/+68sP/lloL/4495/+OPef/jj3n/5ZWA/+/As//78e7//v7+//7+/v/+/v7//v39//be - 2P/qqZj/5JF7/+KOeP/ijnj+4o94/uaejP72497+/f39+vz8/PT8/Pzm/Pz8z/v7+7D7+/uL/Pz8ZPv7 - +0L4+Pgn8vLyFN/f3wh/f38CAAAAAAAAAAAAAAAAAAAAAb+/vwTo6OgL9vb2HPr6+jn6+vpj/f39kf7+ - /rv9/f3b/f397v39/fj9+vX8/eS//v2/Zf79tEr+/bRK/v20Sv/+tk3//sZ0//7py//+/v3//v7+//33 - 9v/77+z//Pb0//7+/f/+/v7//v7+//7+/v/78e//7r2v/+WWgv/jj3n/4495/+OPeP/lloH/78C0//vw - 7f/+/v7//v7+//7+/v/+/f3/9t7Y/+qpmP/kkXv/4o54/+KOeP7ijXf+8czC/v39/f39/f35/Pz88fz8 - /OP8/PzM/Pz8rv39/Yn8/Pxk+/v7Qvj4+Cfy8vIU39/fCH9/fwIAAAAAqqqqA9TU1Abo6OgL8/PzFvn5 - +Sr8/PxK+/v7dvz8/KX8/PzM/Pz85/z8/PX9+vX7/eK9/v3BaP79tUv+/bRK/v20Sv/+tUv//sZ0//7q - y//+/vz//v7+//vy7//yzcT/7LWm//LKwP/78O3//v79//7+/v/+/v7//v7+//vy7//vvrH/5ZeC/+OP - ef/jj3n/4494/+aXg//vwbT/++/s//7+/v/+/v7//v7+//79/f/33tj/6qmY/+OPef/ijHb/5p+O/vfi - 3f79/f3+/Pz8/f39/Pj9/f3w/Pz84vz8/Mv8/Pyt+/v7ifz8/GP7+/tB+Pj4JvLy8hPb29sHf39/At/f - 3wjv7+8Q9fX1G/n5+Sn7+/tA/Pz8YPv7+4r8/Py1/Pz82P39/e79+vf5/eO9/f3Ba/79tUz+/bRK/v20 - Sv/+tUr//sVx//7qzP/+/vz//v7+//78+//01cz/5pmF/+ONdv/lmIT/8MK3//vw7f/+/v7//v7+//7+ - /v/+/v7/+/Hu/++/sv/lmIP/4495/+OPef/jj3j/5piE/+/Btf/67+z//v7+//7+/v/+/v7//v39//fh - 2v/ttab/7LSl//TZ0v79/Pv+/fz8/vLp5/7bw7r98+zq+P39/fD8/Pzi/Pz8y/z8/Kz7+/uI/Pz8Yfv7 - +z739/ci7u7uD8zMzAXx8fES9/f3Ifr6+jT7+/tI/Pz8YPv7+377+/ui/Pz8xf39/eH8/Pzz/e7Y+/3F - dP79tUz+/bRK/v20Sv/+tUn//sZ1//7rzv/+/vz//v7+//7+/v/9+Pf/8MW6/+ONd//jj3n/4454/+WY - hP/wwrb/+/Hv//7+/v/+/v7//v7+//7+/v/77+z/78C0/+WYg//jj3n/4495/+OPeP/mmIT/8MG1//vw - 7P/+/v7//v7+//7+/v/+/v3/+/Dt//vx7//9/fz//f39/vTt6/7Dlor+olxJ/sihlv3z6+n4/f398P39 - /eH8/PzK/Pz8qv39/YP8/Pxa+vr6NfX19Rrl5eUK9/f3H/r6+jf8/PxU/f39b/v7+4n7+/ui/Pz8vfz8 - /Nf8/Pzr/f399/3kv/z9vF/+/bRJ/v20Sv/+tUv//rRG//7Yov/+/v3//v7+//7+/v/+/v7//vv6//PS - yf/lmIP/4494/+OPef/jj3j/5ZiD//DBtv/88/H//v7+//7+/v/+/v7//v79//rv6//vwbT/5piE/+OP - ef/jj3n/4454/+aYg//wwrX/+/Hu//7+/v/+/v7//v7+//7+/v/+/v7//v7+//bw7v/Dl4v+l0gy/o88 - Jf6cUz7+yaGW/fPs6vj9/f3w/Pz84Pz8/Mb7+/ui+/v7dvz8/Er4+Pgn7+/vEPn5+S78/PxP/Pz8dPv7 - +5b7+/uw/Pz8xfz8/Nj8/Pzn/Pz88/39/fr97tj9/cd5/v22Tv/+tUv//rVL//61Sv/+yn///urM//7+ - /f/+/v7//v7+//7+/v/77+z/77+y/+WWgv/jj3n/4495/+OPeP/ll4L/78G1//z18//+/v7//v7+//7+ - /v/+/f3/+u7q//DBtf/mmYX/4495/+OPef/jjnj/5peD//HGuv/89PL//v7+//7+/v/+/v7//v7+//n1 - 8//Bk4b/lkgx/487JP6QPSb+kD0m/p5WQv7LpZv88uro+Pz8/O38/PzZ/Pz8uPv7+438/Pxc+vr6NPT0 - 9Bj7+/s9/Pz8ZPv7+5D8/Py1/Pz8z/z8/OD8/Pzr/Pz88/39/fn9/f38/fr3/v3lwv7+xXD//rdO//61 - S//+tUv//rlU//7Cav/+6Mj//v79//7+/v/+/v7//v39//rt6v/uvbD/5ZaB/+OPef/jj3n/4495/+WW - gf/vwLP//fj3//7+/v/+/v7//v7+//79/f/66ub/7LSl/+ONd//jj3n/4495/+OPeP/pp5b/+ejk//7+ - /v/+/v7//v7+//z5+f/AkYT/lUUv/5A8Jv+QPSb/kDwl/pA9Jv6QPSb+m1E8/smhl/vz7ev0/Pz85Pz8 - /Mf7+/ud/Pz8bfv7+0H39/ch+/v7Tv39/Xj8/Pyl/Pz8yfz8/OL9/f3v/f399v39/fr9/f38/f39/v39 - /f79+vX+/uXB//7Ebv/+t03//rVL//61S//+tUv//sFp//7pyP/+/v3//v7+//7+/v/+/f3/+u7r/+68 - rv/klYD/4495/+OPef/jj3n/5JR//+++sf/9+fj//v7+//7+/v/+/fz/+eXg/+qqmv/jj3j/4495/+OP - ef/jjXf/6qua//nq5//+/v7//v39//r39v+/kIP/lEMt/5A9Jv+RPif/kT4n/5A9Jv+QPSb+kDwl/pA9 - Jf6bUDz8yqSZ9/Pt6+r8/PzQ/Pz8qv39/Xz8/PxQ+fn5Lfz8/F/7+/uK/Pz8tf39/db8+vns/fPm9/3v - 3Pz9+PH+/f39/v39/f79/f3+/f39/v779//+5cL//sNr//62TP/+tUv//rVL//61S//+wmn//unJ//7+ - /f/+/v7//v7+//79/f/77+z/7bqs/+SUf//jj3n/4495/+OPef/kkn3/772w//35+P/+/f3/+ejk/+ut - nf/kkn3/4495/+OPef/jjnj/5JJ8//PPxv/9+vn//v7+//r39v+0e2v/kkEq/5A9Jv+RPif/kD0m/5E+ - J/+RPif/kD0m/5A9Jv6QPSb+kD0l/JlNOfjLpZzt9e/u1vz8/LT9/f2J/Pz8YPv7+zz9/f1v+/v7mvz8 - /MP8+vjg/OjJ8f3BbPr9u139/dCQ/v3v2v79/f3+/f39/v39/f7+/v7//v36//7mw//+wGf//rZL//61 - S//+tUv//rVL//7Caf/+6cr//v79//7+/v/+/v7//v7+//vx7v/tuKr/5JR+/+OPef/jj3n/4495/+SS - fP/vwbT/9+Lc/+uun//jkHr/4495/+OPef/jj3j/5p2J//TRyP/9+Pb//Pv6//r29f++joD/kUAp/5A9 - J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/o89Jv2PPCX5l0o07tW2rtr59fW8+/v7lvz8 - /HD7+/tL/f39e/z8/Kb8/PzL/fPj5fzHfPT9s0j7/bRK/v20Sf/+yXr//vDa//7+/v/+/v7//v7+//7+ - /v/+/v3//ufF//7AZf/+tkv//rVL//61S//+tUr//sNq//7qzf/+/v7//v7+//7+/v/+/v7//PPx/+y2 - p//jk3z/4495/+OPef/jj3n/5I95/+SPef/kkHn/4495/+OPef/jj3j/5puH//TRx//9+vj//v38/+3i - 3v+vc2L/kD0m/5E9J/+RPif/kT4n/5E+J/+RPib/kT0m/5E+J/+RPif/kT4n/5A9Jv+QPSb9jzwm+Y03 - IO+/koXd8+zqwfz8/J79/f16/Pz8Vv39/X78/Pyp/Pz8zfzw4Of8xHT1/bNJ+/20Sv79tEr//rRI//7J - fP/+8Nv//v79//7+/v/+/v7//v7+//7+/v/+58T//sBm//62S//+tUv//rVL//61SP/+w2z//uvO//7+ - /f/+/v7//v7+//7+/v/89fL/7LSl/+SSfP/jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/5puH//PO - xf/++vn//v7+//r29f+2fm7/kDwk/5A9Jf+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+ - J/+QPSb/kD0m/Y89JvmTQy7w0rGo3fj19ML8/Pyg/f39fPz8/Ff9/f12/Pz8ofz8/Mj8+fPj/OG38/29 - Yfv9tUv+/bRK/v20Sv/+tEf//sp9//7w2//+/fz//v7+//7+/v/+/v7//v79//7mwv/+wmr//rdN//61 - S//+tUv//rRJ//7Fcf/+7NL//v79//7+/v/+/v7//v7+//z08f/stKX/45J8/+OPef/jj3n/4495/+OP - ef/jkHn/5pyJ//LNxP/9+vn//v7+//jy8f/EmIv/lUYv/5A8Jf+RPif/kT4n/5E+J/+RPif/kD0m/5E+ - J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9Jv2URzH5v5CD7+/m5Nz8/Py//Pz8m/z8/HX8/PxQ/Pz8Z/v7 - +5L8/Py8/Pz83P347/D93K/6/b5l/f21TP79tEr+/bRK//60R//+y3///vDc//79/P/+/v7//v7+//7+ - /v/+/fr//ubB//7Baf/+tUv//rVL//61S//+tEj//tSU//758P/+/v7//v7+//7+/v/+/v7//PTx/+y0 - pf/kk3z/4495/+OPef/jkHr/556L//POxf/9+vn//v7+//v49//In5T/lkgy/5A8Jf+RPif/kT4n/5E+ - J/+RPSb/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9Jv6XSTT8vIx++O7i3+78/PzZ/Pz8ufv7 - +5H8/Pxp+/v7RPz8/FT9/f1//Pz8rvz8/NP8/Pzr/fft+P3drf39wGb+/bZN/v20Sv79tEr//rRH//7L - gP/+8Nz//v38//7+/v/+/v7//v79//7y3//+yHn//rVJ//61S//+tUv//rZM//7Skv/+9+v//v7+//7+ - /v/+/v7//v7+//7+/v/79PL/7LWn/+SVgP/kkXv/55+M//LNxP/9+fn//v7+//7+/v/59fP/wZOG/5RE - Lf+QPCX/kT4m/5E+Jv+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9Jv6YSjX+vIx+/O3h - 3vf8/Pzr/Pz80/z8/K/9/f2D/Pz8Wvr6+jb7+/tD/Pz8bfz8/J78/PzH/Pz85Pz8/PT99u37/dyu/v3B - aP79tk3+/bRK/v20Sv/+tEf//syB//7x3f/+/v3//v7+//705f/+1pv//r1e//61S//+tUv//rdP//7B - aP/+4bf//vv2//7+/v/+/v7//v7+//7+/v/+/v7//v7+//zz8P/wxLn/7LOj//XVzf/9+vn//v38//7z - 7v/+6eD//urh/+zY0v+4gnT/lEMt/5E+J/+QPSb/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9 - Jv6YSzb+vIx9/u3f3Pv8/Pz0/f395fz8/Mr7+/ui/Pz8c/v7+0n5+fko+vr6Nfz8/Fv7+/uL/Pz8t/z8 - /Nj8/Pzt/f399/327Pz93K3+/cFo/v22Tf79tEr+/bRK//60SP/+0Y3//vPh//705f/+1Zj//rxa//62 - S//+tUv//rdP//7BaP/+26f//vbp//7+/v/+/v7//v38//76+P/+/fz//v7+//7+/v/+/v7//v39//37 - +v/+/f3//v39//7t5P/+waT//qZ///6ngP/+zLX/7NbO/7eCc/+WRjD/kDwl/5E+Jv+RPif/kT4n/5E+ - J/+QPSb/kD0m/pA9Jv6YTDb+vIt8/uze2/z9/f34/Pz87fz8/Nn8/Py6/f39j/z8/GH6+vo59vb2HPj4 - +Cf7+/tI/Pz8c/v7+5/8/PzE/Pz83/39/e/9/f34/fbs/P3crf79wWj+/bZN/v20Sv79tUv//rxb//7N - hf/+z4r//rta//62S//+tUv//rdP//7BaP/+2qX//vXn//7+/v/+/v7//vfz//7dzv/+ybL//tnI//74 - 9f/+/v7//v7+//7+/v/+/v7//v7+//759//+zrf//pFe//6LVv/+iVT//pZm//7Ksv/s19D/toBx/5NC - Kv+QPCX/kT4n/5E+J/+QPSb/kD0m/pA9Jv6YSzb+vIt8/urd2f39/f34/f398Pz8/OD8/PzG+/v7ov39 - /Xf7+/tM+fn5KfHx8RL19fUa+vr6M/z8/Fj7+/uB/Pz8qPz8/Mj8/Pzg/f397/39/fj99uz8/dyt/v3B - Z/79tk3+/bRK/v21S//+tUn//rRJ//61S//+tUv//rdP//7BZ//+2qX//vXn//7+/v/+/v7//vby//7R - vP/+o3j//o1a//6bbf/+zrf//vn3//7+/v/+/v7//v7+//7+/v/++PX//sqy//6QXf/+jFj//oxY//6J - VP/+lmf//sqz/+3Y0v+4g3T/kj8o/487JP+QPSb/kD0m/pA9Jv6XSjX+u4p8/uvd2f39/f34/f398P39 - /eH8/PzK/Pz8qvv7+4T8/Pxb+vr6NvX19Rvo6OgL7u7uD/f39yD7+/s8/Pz8X/v7+4b8/Pyq/Pz8yfz8 - /OD9/f3w/f39+P327Pz93Kz+/cBm/v22TP79tEr+/bRK//61S//+tUv//rdO//7AZv/+2qX//vXo//7+ - /v/+/v7//vby//7Qu//+oXf//o5b//6MWP/+i1f//php//7Mtf/++vj//v7+//7+/v/+/v7//vz8//7i - 1f/+qoT//pFf//6MWP/+jFj//opU//6WZv/+yrL/7dvV/7iEdv+RPSb+jjoi/o87JP6WRzH+vIt8/uzf - 2/z9/f34/f398Pz8/OL8/PzL/Pz8rPv7+4j8/Pxh+/v7Pvf39yLu7u4P1NTUBt/f3wjx8fES+Pj4JPv7 - +z/8/Pxh+/v7h/z8/Kv8/PzJ/f394f39/fD9/f34/fbs/P3crf79v2X+/bVL/v20Sv79tEr//rZO//7A - Zf/+2qT//vXo//7+/v/+/v7//vby//7Qu//+onf//o5b//6MWP/+jFj//oxY//6LV//+l2j//suz//76 - +f/+/v7//v7+//7+/v/++PX//tfF//6pgv/+kV///oxY//6MWP/+ilT//pVk//7LtP/u39r/y6Wb/qlp - WP6mZVL+w5iM/u7g3fv9/f33/f397/39/eH8/PzL/Pz8rfv7+4n8/Pxj+/v7Qfj4+Cby8vIT29vbB39/ - fwJ/f38C39/fCPLy8hP4+Pgl+/v7QPz8/GH7+/uH/Pz8q/z8/Mn9/f3h/f398P39/fj99+78/d2t/v2+ - Yf79tEj+/bRK/v2+Yv/+2qT//vbp//7+/v/+/v7//vbz//7RvP/+oXf//o5b//6MWP/+jFj//oxY//6M - WP/+jFj//otX//6XZ//+ybH//vr4//7+/v/+/v7//v7+//739P/+1sP//qmB//6RX//+jFj//oxY//6K - VP/9lGX//uPX/vn29f7n19L+5NPN/vPr6fv9/f32/Pz87f39/d78/PzJ/Pz8rPv7+4n8/Pxk+/v7Qvj4 - +Cfy8vIU39/fCH9/fwIAAAAAAAAAAH9/fwLf398I8vLyE/j4+Cb7+/tA/Pz8Yfv7+4f8/Pyr/Pz8yv39 - /eH9/f3v/f39+P347/z94bj+/cd3/v3Dbv7+3Kr+/fbr//39/f/9/f3//vf0//7Svf/+oXb//o5b//6M - WP/+jFj//otX//6LVv/+jFf//oxY//6MWP/+jFj//pdp//7Jsf/++/j//v7+//7+/v/+/v7//vj1//7X - xP/+oHX//otX//6MWP/9i1f//olU/v23lv79+/n+/f39/v39/fv8/Pz1/Pz86vz8/Nr8/PzE/Pz8qPv7 - +4b8/Pxi+/v7Qfj4+Cfy8vIU39/fCH9/fwIAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjy8vIT+Pj4Jfv7 - +0D8/Pxh+/v7h/z8/Kv8/PzK/f394f39/fD9/f34/fn0/P3y4/798d/+/fjw/v39/f79/f3+/ff0//7T - wP/+oHX//o5a//6MWP/+jFj//opV//6qg//+zrj//qiB//6MWP/+jFj//oxY//6MWP/+mGn//sqx//77 - +P/+/v7//v7+//7+/v/+59z//qd///6LVv/9i1f//otX/v2KVv79pn7+/fn3/v39/fz9/f32/Pz86vz8 - /Nf8/Py+/Pz8of39/YD8/Pxe+/v7P/j4+Cby8vIU39/fCH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38C39/fCPLy8hP4+Pgl+/v7QPz8/GH7+/uH/Pz8q/z8/Mn8/Pzg/Pz87f39/fb9/f36/f38/f39 - /f79/f3+/fn3/v7Xxf79nnP//o5a//6MWP/+jFj//otV//6nfv/+4tX//vr3//7o3v/+pXv//otW//6M - WP/+jFj//oxY//6Yaf/+yrL//vv4//7+/v/+7+f//r+i//6WZv/9i1f//otX/v2MV/79lmf+/c23/v37 - +/z9/f33/Pz87Pz8/Nn8/Py9+/v7nP39/Xn8/PxY+/v7O/j4+CPy8vIT39/fCH9/fwIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLf398I8vLyE/j4+CX7+/tA/Pz8Yf39/YX8/Pyo/Pz8xfz8 - /Nr8/Pzo/Pz88v39/fj9/f38/fz8/v3s5P79p4D+/YpX//6MWP/+jFj//otX//6ogf/+4tb//vz7//7+ - /v/+/f3//uvi//6id//+ilX//oxY//6MWP/+jFj//php//7Ls//+7OP//sKl//6XaP/9jFn//otX/v2M - V/79l2f+/cat/v318v39/f35/f398P39/d78/PzC+/v7n/39/Xf8/PxT+vr6Nff39x/w8PAR39/fCH9/ - fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjy8vIT+Pj4Jfv7 - +z/8/Pxf+/v7gfz8/KH8/Py8/Pz80vz8/OP9/f3w/f39+P38/Pz949f+/ZBd/v2KVf79i1f//oxY//6K - Vv/+wKT//vby//7+/v/+/v7//v7+//7+/v/+7uf//qF1//6KVf/+jFj//oxY//6MWP/+jlv//pBf//6N - Wv/9i1j//YtX/v2MV/79l2j+/cKn/v308P39/f35/Pz88f39/eH8/PzJ/Pz8pv39/X38/PxV+vr6NPb2 - 9h3t7e0O1NTUBn9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38C39/fCPHx8RL4+Pgj+/v7O/z8/Fj9/f12/f39lPz8/LH8/PzM/f394fz8/PH9/f35/e7n/f2u - iv79iVX+/YtX/v2LV//+i1j//phq//7Svv/++fb//v7+//7+/v/+/v7//v7+//7u5//+oXf//oxW//6M - WP/+jFj//oxX//6LV//9i1f//YtX/v2MWP79mGn+/b+j/v3y7f39/f35/Pz88fz8/OP8/PzL/Pz8rPv7 - +4T8/Pxc+vr6OPb29h7t7e0OzMzMBQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLf398I8PDwEff39yD6+vo0+/v7Tfz8/Gn7+/uK/Pz8rfz8 - /M79/f3l/Pz89P38+/v95Nr+/ad//v2MV/79i1f+/YtX//6LV//+mGj//tO///749v/+/v7//v7+//7+ - /v/+/v7//uvh//6ke//+jVn//oxY//6MWP/+i1f//YtX/v2MWf79mWv+/cCk/v3w6v39/f35/Pz88fz8 - /OP8/PzM/Pz8rfv7+4j8/Pxh+/v7Pff39yLv7+8Q1NTUBgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/Atvb2wfu7u4P9fX1Gvn5 - +Sz7+/tF/Pz8Zfv7+438/Py1/Pz81fz8/Or9/f32/fv6/P3i1f79qID+/Y1Z/v2LV/79i1f//otX//6Y - af/+1MD//vj1//7+/v/+/v7//v7+//79/f/+59z//qZ+//6NWv/+i1f//YtX/v2NWf79mmz+/b+k/v3u - 5/39/fz5/Pz88fz8/OL8/PzM/Pz8rvv7+4n8/Pxj+/v7QPj4+CXx8fES29vbB39/fwIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38CzMzMBejo6Avz8/MW+fn5Kfv7+0b8/Pxu+/v7mfz8/L/8/Pzc/f397v39/fj9/Pv8/eDT/v2o - gv79jVr+/YtX/v2LV//+i1f//phq//7UwP/++fb//v7+//7+/v/+/v7//vz7//7k2P/+p4H//Y1b/v2M - WP79mmz+/b+k/v3s5f39/f34/Pz88fz8/OL8/PzM/Pz8rfv7+4n8/Pxj+/v7Qfj4+Cby8vIT39/fCP// - /wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGqqqoD5eXlCvT09Bf5+fku/Pz8UPv7+3r8/Pyk/Pz8x/z8 - /N/9/f3v/f39+P38+/z939H+/amD/v2OW/79i1f+/YtX//6LV//+mGr//tTB//769//+/v7//f39/v39 - /f79+/r+/eTY/v2zkv79p4D+/cSq/f3s5fz9/f34/f398Pz8/OL8/PzL/Pz8rfv7+4n8/Pxj+/v7Qfj4 - +Cby8vIU39/fCP///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqqgPo6OgL9vb2HPr6 - +jb8/Pxa+/v7g/z8/Kn8/PzJ/f394f39/e/9/f34/fv7/P3ez/79qYP+/Y5b/v2LV/79i1f//otX//6X - av/+07///vr3//39/f79/f3+/f39/v38+/799fH9/e/p/P349fr9/f32/f397v39/eH8/PzL/Pz8rfv7 - +4n8/Pxj+/v7Qfj4+Cby8vIU39/fCP///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABzMzMBe7u7g/39/ch+/v7Pfz8/F/9/f2G/Pz8q/z8/Mr9/f3h/f398P39/fj9+/r8/d3P/v2p - gv79jlv+/YtX/v2LV//+i1f//pdo//7Svf/9+Pb+/f39/v39/f79/f38/f39+v39/fb9/f3w/Pz86Pz8 - /Nz8/PzI/Pz8q/39/Yj8/Pxj+/v7Qfj4+Cby8vIU39/fCP///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLb29sH8fHxEvj4+CT7+/s//Pz8Yfv7+4f8/Pyr/Pz8yf39 - /eH9/f3v/f39+P37+vz93c7+/aiA/v2NWv79i1f+/YtX//6KVv/9l2n//c+6/v359/79/f38/f39+fz8 - /PL9/f3p/f393vz8/NH8/Py+/Pz8pf39/YX8/Pxi+/v7Qfj4+Cfy8vIU39/fCH9/fwIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjx8fES+Pj4Jfv7 - +0D8/Pxh+/v7h/z8/Kv8/PzJ/Pz84P39/e/9/f34/fv6+/3ez/39p3/+/Y1Z/v2LV/79i1f+/YpW/v2a - bf7949f9/f39+vz8/PL8/Pzm/Pz81fz8/ML8/Pyt+/v7lv39/Xv8/Pxd+/v7P/j4+Cby8vIU39/fCH9/ - fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38C39/fCPLy8hP4+Pgl+/v7QPz8/GH7+/uH/Pz8q/z8/Mn8/Pzf/Pz87fz8/PT9+/r4/d7Q+/2m - fvz9ilj9/YpX/f2LWP39mGz7/d7Q+fz8/PP8/Pzn/Pz81Pz8/Lr9/f2d+/v7g/z8/Gn8/PxR+vr6Ofj4 - +CPy8vIT39/fCH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLf398I8vLyE/j4+CX7+/tA/Pz8Yfv7+4b8/Pyp/Pz8xfz8 - /Nn8/Pzm/Pz87fz6+fL94NL2/aqD+P2LWPn9nXP4/MOq9f308fD8/Pzn/f391vz8/Lz8/Pyb/f39ePz8 - /Fr7+/tB+fn5Lvb29h7w8PAR39/fCH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjy8vIT+Pj4Jvv7 - +z/8/Pxf+/v7gvz8/KH8/Py5/Pz8yvz8/Nf9/f3h/Pv66P3o3+792Mbw/eHV7v3x7On8/Pzg/Pz80vz8 - /L38/Pyg/f39e/z8/Ff6+vo5+Pj4I/Pz8xXq6uoM1NTUBn9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38C39/fCPLy8hP4+Pgk+/v7Pfz8/Fn9/f12+/v7j/z8/KP8/Py1/Pz8xPz8/NH8/PzZ/Pr63fz7 - +9r8/PzR/Pz8w/z8/LH9/f2a/f39ffz8/Fv7+/s79/f3IvDw8BHf398Iv7+/BAAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLf398I8fHxEvf39yH6+vo1+/v7S/z8/GH9/f12+/v7ivv7 - +538/Pyt/Pz8ufz8/L78/Py6/Pz8rvv7+539/f2I/Pz8cfz8/Ff7+/s8+Pj4JPLy8hPf398If39/AgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/Atvb2wfu7u4P9fX1Gvn5 - +Sn6+vo5+/v7S/z8/F78/Pxx+/v7gvv7+477+/uS+/v7j/v7+4P8/Pxy/Pz8Xvv7+0n6+vo1+Pj4I/Ly - 8hPj4+MJqqqqAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38C1NTUBurq6gzy8vIU9vb2Hvn5+Sv6+vo6+/v7Sfz8/Fb8/Pxf/Pz8Yvz8/F/8/PxW+/v7Sfr6 - +jn5+fkq9vb2HPDw8BHj4+MJv7+/BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////// - ///////8P/////////AP////////wAP///////8AAP///////gAAf//////8AAAf//////gAAA////// - 8AAAB//////gAAAD/////8AAAAH/////gAAAAP////8AAAAAf////AAAAAA////4AAAAAB////AAAAAA - D///4AAAAAAH///AAAAAAAf//4AAAAAAA///AAAAAAAB//8AAAAAAAD//gAAAAAAAH/+AAAAAAAAP/wA - AAAAAAAf/AAAAAAAAA/wAAAAAAAAD+AAAAAAAAAHwAAAAAAAAAfAAAAAAAAAB4AAAAAAAAADgAAAAAAA - AAOAAAAAAAAAA4AAAAAAAAADgAAAAAAAAAOAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAfAAAAAAAAAB+AA - AAAAAAAP4AAAAAAAAA/wAAAAAAAAH/gAAAAAAAA//AAAAAAAAH/+AAAAAAAA//8AAAAAAAH//4AAAAAA - B///wAAAAAAP///gAAAAAB////gAAAAAH////AAAAAA////+AAAAAH////8AAAAA/////4AAAAH///// - gAAAA//////AAAAH/////+AAAA//////8AAAP//////4AAB///////wAAf///////gAD////////gAf/ - ///////gD/////////g///////////////8oAAAAYAAAAMAAAAABACAAAAAAAAAgAQAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAaqqqgPb29sH6OjoC+/v7xD09PQY9/f3Ifn5+Sv6+vo2+/v7Qfv7 - +0v8/PxW/Pz8X/z8/Gb8/Pxq/Pz8avz8/Gb8/Pxf/Pz8Vvv7+0v7+/tB+vr6Nvn5+Sv39/ch9PT0GPDw - 8BHo6OgL29vbB6qqqgN/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8Bv7+/BNvb2wfr6+sN8vLyE/X1 - 9Rv4+Pgl+vr6MPv7+zv7+/tI/Pz8VPz8/F/8/Pxp+vr6c/39/Xn7+/t9+/v7ff39/Xn6+vpz/Pz8avz8 - /F/8/PxU+/v7SPv7+zz6+vow+Pj4Jvb29hzy8vIU6+vrDd/f3wjMzMwFqqqqAwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAG/v78E39/fCO3t7Q7z8/MW9/f3H/n5+Sr6+vo3+/v7Rfz8/FL8/Pxg/Pz8bP39/Xf9/f2B+/v7ivv7 - +5D7+/uT+/v7k/v7+5D7+/uK/f39gf39/Xf8/Pxs/Pz8YPz8/FP7+/tG+vr6Ofn5+Sz39/ch9PT0GO/v - 7xDl5eUK1NTUBr+/vwR/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+/vwTf398I7e3tDvT09Bf39/ci+fn5L/v7+z77+/tO/Pz8Xvz8 - /G39/f16+/v7hvv7+5D7+/uZ/Pz8oPz8/KX8/Pyo/Pz8qPz8/KX8/Pyg+/v7mfv7+5D9/f2G/f39evz8 - /G38/Pxe/Pz8UPv7+0H6+voz+Pj4JvX19Rvy8vIT6+vrDd/f3wi/v78Ef39/AgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8Bv7+/BN/f3wju7u4P9PT0GPj4 - +CT6+vo0+/v7Rfz8/Ff8/Pxq+/v7e/v7+4r7+/uX/Pz8ofz8/Kr8/Pyx/Pz8tvz8/Lr8/Py8/Pz8vPz8 - /Lr8/Py2/Pz8sfz8/Kr9/f2h+/v7l/v7+4v9/f18/Pz8bfz8/F37+/tM+/v7PPn5+S739/ci9PT0GO7u - 7g/j4+MJzMzMBX9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// - /wG/v78E39/fCO7u7g/19fUZ+Pj4Jvr6+jb7+/tJ+fn5Xvz8/HL7+/uG+/v7l/z8/Kb8/Pyy/Pz8uvz8 - /MH8/PzG+fb1yuzh3czdxb/O3sfBzuvc2Mz28O7K+/v7x/z8/MH8/Py6/Pz8svv7+6f7+/ua/f39iv39 - /Xn8/Pxn/Pz8Vfv7+0P6+vo0+Pj4JvX19Rrw8PAR6OjoC9TU1AZ/f38CAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+/vwTf398I7u7uD/X19Rn4+Pgn+vr6N/v7+0v8/Pxh/f39ePv7 - +4/7+/ui/Pz8s/z8/MD8/PzL/Pz80f37+9b6+fja7N/c3M+tot2xdmbesnlq3sqimd3k0c3c+PX02vv7 - +tb8/PzR/Pz8y/z8/ML8/Py2/Pz8qPv7+5f9/f2E+vr6cfz8/F38/PxK+vr6OPn5+Sn29vYc8fHxEujo - 6AvMzMwFf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv7+/BN/f3wju7u4P9fX1Gfj4 - +Cb6+vo4+/v7TPr6+mP7+/t7+/v7k/z8/Kn8/Py7/Pz8yvz8/NX8/Pzd/Pz84vr39+Xx6OXovY6B6Z9a - R+qTQi3qlEMu6ptRPeqzfGzp5NLM6Pbw7uX8/Pzi/f393vz8/Nf8/PzN/Pz8wfz8/LP8/Pyh+/v7jvv7 - +3r8/Pxk/Pz8UPv7+zz5+fkr9vb2HvLy8hPl5eUK1NTUBn9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// - /wG/v78E39/fCO7u7g/19fUa+Pj4J/r6+jj7+/tM+vr6ZPv7+3z8/PyU/Pz8q/z8/MD8/PzP/f392/z8 - /OT8/Pzr+PX07ufU0PDBlIjyoFtH8pFAKfKNOiPzjToj8489JvKaUTzyt4Jz8t3FvfD07eru/Pz86/z8 - /Ob8/Pzf/f391vz8/Mr8/Py6/Pz8qfv7+5b7+/uA/Pz8afz8/FP7+/s/+fn5Lff39x/y8vIT6OjoC9TU - 1AZ/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+/vwTf398I7u7uD/X19Rn4+Pgn+vr6N/v7+0z6+vpk/f39fPv7 - +5b6+vqt/Pz8wfz8/NP8/Pzg/f396f38/PD6+Pf06NjT9saekviWSjX5kD4o+Y47JPmPPCb5jzwm+Y47 - JfmPPCb5kUEq+cKViPjm1ND3/Pz89fz8/PL8/Pzt/Pz85vz8/N38/PzQ/Pz8wfv7+7D8/Pyb/f39g/z8 - /Gz8/PxV+/v7QPn5+S729vYe8vLyE+jo6AvMzMwFf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38Cv7+/BN/f3wju7u4P6+vrGfj4 - +Cb6+vo3+/v7TPz8/GP7+/t9+/v7lvz8/K78/PzC/Pz81Pz8/OP8/Pzs/Pz88/v6+ffz6uf6wZKF+5tQ - PPyOOiL8jzwk/JA+JfyQPib8kD4m/JA+JvyPPCT8jDYd/K5yYvzWurL8/fz8+/39/fj8/Pz1/Pz88fz8 - /Ov8/Pzi/f391vz8/Mf8/Py0/Pz8nvv7+4f8/Pxu/Pz8Vvv7+0D5+fks9vb2HvLy8hPl5eUKzMzMBX9/ - fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ - fwK/v78E4+PjCe/v7xD19fUZ+Pj4Jvr6+jj7+/tM/Pz8Y/39/Xz8/PyV/Pz8rfz8/ML8/PzT/Pz84vz8 - /Oz8/Pzz+ff2+Ovc2PvAkoX8oV1K/ZE/KP6POyT+jzwl/pA9Jv6QPSb+kD0m/o46Iv6URS/+qmpZ/tKz - qv7u4+H+/f39/f39/fz9/f36/f399/z8/PP8/Pzt/Pz85Pz8/Nn8/PzI/Pz8tfz8/KD7+/uH/Pz8bvz8 - /Fb7+/s/+fn5Lvf39x/y8vIT6OjoC9TU1AZ/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABqqqqA8zMzAXj4+MJ7+/vEPX19Rr4+Pgn+vr6OPv7+0z6+vpk/f39fP39 - /ZX8/Pyt/Pz8wvz8/NT8/Pzi/Pz87Pv7+/T6+Pf459XQ+8iflP2dVED+kj8p/o86I/6QPSb+kD0m/o89 - Jv+PPSX/jjoi/5E/KP+lYU/+0bCn/u/k4v79/Pz+/f39/v38/P79/Pz9/f39+/38/Pn8/Pz1/f397/z8 - /Ob8/PzZ/Pz8yfz8/Lf8/Pyg+/v7h/z8/G78/PxW+/v7QPn5+S739/cf8vLyE+jo6AvU1NQGf39/AgAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGqqqoD1NTUBuXl5Qrw8PAR9fX1Gvn5 - +Sj6+vo4////TPz8/GT7+/t9+/v7lvz8/K78/PzC/Pz81Pz8/OP8/Pzt/Pz89Pv6+vnv5eL8xpuO/ZlN - N/6POyT+jzsk/pA9Jv6QPSb+jz0m/5A9Jv+QPCX/jTcf/5xTP/++kIT/+vb2/v38/P79/Pv+/Pn4/vz3 - 9f789vX+/Pj3/fz7+vz9/Pz6/f399v39/fD8/Pzn/f392/z8/Mv8/Py3/Pz8oP39/Yf8/Pxu/Pz8Vvv7 - +0D5+fkt9vb2HvLy8hPo6OgLzMzMBX9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/Ar+/ - vwTb29sH6urqDPLy8hP29vYd+fn5Kvv7+zv7+/tO/Pz8ZP39/X37+/uW/Pz8rfz8/ML8/PzU/Pz84vz8 - /O38/Pz0+ff2+fDn5Py/kYP9oVtH/pA+J/6PPCX+kDwl/pA9Jv6QPSb+kD0m/486Iv+POSL/m086/8OW - if/o2NP//Pv7/v37+v756uf+8tHI/u/Ctv7uwLT+8cvC/vjp5f389/b8/f39+v39/fb9/f3w/Pz85/v7 - +9v8/PzK/Pz8tvz8/KD9/f2H/Pz8bvz8/Fb7+/tA+fn5Lff39x/y8vIT5eXlCtTU1AZ/f38CAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAB/f38CzMzMBePj4wnu7u4P9PT0F/f39yH5+fkt+/v7Pvz8/FH8/Pxn+/v7f/v7 - +5f8/Pyu/Pz8w/z8/NT8/Pzi/Pz87fz8/PT69/f46NbS+8ackP2hW0f+kkEq/o87JP6QPCX+kD0m/o89 - Jv+QPSb/jzoi/5I/KP+eVD//wpOH/+PPyf/58/H/+vHu//TWz//tvLD/6KeX/uafjf7mnoz+6KiY/u/D - t/724dv++/X0/P39/fr9/f32/f398Pz8/Of8/Pza/Pz8yvz8/Lb8/Pyg+/v7h/z8/G78/PxW+/v7QPn5 - +S739/cf8vLyE+jo6AvU1NQGf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLMzMwF5eXlCvDw8BH19fUZ+Pj4Jfr6 - +jL7+/tC/Pz8Vf39/Wv9/f2B+/v7mfz8/K/8/PzD/Pz81fz8/OL8/Pzt/Pv79Pv5+fnq3Nn8yKCV/ZlN - OP6QPif+jzsk/pA9Jv6QPSb+jz0m/5A9Jf+QPCT/kDsk/59VQf+8iHr/69vY//nz8v/67+v/9NXN/+qq - mv/jkXz/4Yp0/+KNd/7ijnj+45F8/uadiv7vwrf+9+Ld/vz49/39/Pz6/f399vz8/PH8/Pzn/Pz82vz8 - /Mr8/Py3/Pz8oP39/Yf8/Pxu/Pz8Vvv7+0D5+fkt9vb2HvLy8hPo6OgLzMzMBX9/fwIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AszM - zAXl5eUK8fHxEvX19Rv4+Pgn+vr6N/v7+0j8/Pxb/Pz8cf39/Yb7+/uc/Pz8svz8/MX8/PzV/Pz85Pz8 - /O38/Pz0+vn4+fTt6/zBlIj9nlVB/o88JP6PPCX+kD0l/pA9Jv6QPSb+kD0m/487I/+MNRz/mk44/8CQ - gv/t39v/+vf2//rt6v/zz8X/552J/+SRfP/jjXf/4454/+KNeP/ijnj+4o55/uOQe/7noI7+7r+y/vjo - 5P779/b9/f39+v39/fb8/Pzx/Pz85/39/dv8/PzL/Pz8t/z8/KD9/f2H/Pz8bvz8/Fb7+/tA+fn5LPb2 - 9h7y8vIT5eXlCszMzAV/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAB/f38C1NTUBujo6Avx8fES9vb2Hvn5+Sv7+/s7+/v7Tvz8/GL7+/t4+/v7jf39 - /aH8/Py1/Pz8x/39/db8/Pzj/Pz87fz8/PT6+Pf46tvW/MOWiv2jXkv+kkAq/o87JP6QPCX+kD0m/o89 - Jv+QPSb/jzoi/5E+Jv+aTTj/w5WI/+PPyP/69PP/+u3p//LKwP/pp5X/4495/+OOeP/jjnj/4495/+OO - ef/ijnj/4o54/uKOeP7kk37+6KSS/u6/sv724tz++/X0/P39/fr9/f32/f398Pz8/Of9/f3b/Pz8yvz8 - /Lb8/Pyg+/v7h/z8/G78/PxW+/v7QPn5+S739/cf8vLyE+jo6AvU1NQGf39/AgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLU1NQG6OjoC/Ly8hP29vYe+fn5Lfv7 - +z75+flS/Pz8aPv7+378/PyU/Pz8qPz8/Lr8/PzL/Pz82v39/eX9/f3u+/v79fz7+/nq29f7y6SZ/Z1U - QP6SQSr+jzsj/pA9Jv6QPSb+jz0m/5A9Jf+POyP/kT4m/59WQf+8iXz/5tPN//jx7//67uv/8s3D/+mo - l//jj3n/44x2/+OOeP/jj3n/4495/+OPef/jjnn/4o54/+KOeP7ijnj+5JN+/uafjP7vw7j+9uHb/vv2 - 9f39/Pz6/f399v39/fD8/Pzo/Pz82vz8/Mr8/Py3/Pz8oP39/Yf8/Pxu/Pz8Vvv7+0D5+fku9vb2HvLy - 8hPo6OgL1NTUBn9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AszM - zAXl5eUK8vLyE/b29h75+fks+/v7P/z8/FP8/Pxq+/v7g/v7+5n8/Pyv/Pz8wfz8/ND9/f3e/Pz86P39 - /e/8/Pz1/Pz8+vn49/zMqJ3+nlZA/o87JP6POyT+kD0m/pA9Jv6QPSb+kD0m/5A8Jf+MNh7/mk44/7uI - ev/y5+X/+/j3//vw7f/008r/552J/+OOeP/jjHb/4495/+OPef/jj3n/4495/+OPef/jj3n/4495/+KN - eP/ijnj+4o54/uOQev7mnYr+78G1/vjn4/78+fn9/f39+v39/fb8/Pzx/Pz85/39/dv8/PzL/Pz8t/z8 - /KD9/f2H/Pz8bvz8/Fb7+/tA+fn5LPb29h3x8fES5eXlCszMzAV/f38CAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAB/f38C1NTUBuXl5Qry8vIT9/f3H/n5+S37+/s//Pz8Vvz8/G39/f2F+/v7nfz8 - /LL8/PzF/Pz81Pz8/OD8/Pzq/Pz88f39/fb9/f35/Pr6/PPq6P2/kYP+kUAo/o88Jf6QPCX+kD0m/o89 - Jv+QPSb/jzsj/5A9Jv+cUDz/w5aK/+XSzf/7+Pf/+u3p//LMwv/oo5H/5JF7/+ONd//jjnj/4495/+OP - ef/jj3n/4495/+OOd//jjnf/4454/+OOef/ijnj/4o54/uKPef7jk33+56OS/u6+sf735eD+/Pb1/P39 - /fr9/f32/f398Pz8/Of9/f3b/Pz8yvz8/Lb8/Pyg/f39h/z8/G78/PxW+/v7P/n5+Sz29vYe8fHxEuXl - 5QrMzMwFf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLU1NQG6OjoC/Ly8hP39/cf+fn5Lvv7 - +0D8/PxW/Pz8bvv7+4f7+/uf/Pz8tPz8/Mf8/PzX/Pz84/z8/Oz8/Pzz/f399/39/fr9/f38/Pv7/fTt - 6/7AkoX+kD4n/o87I/6QPCX+jz0m/5A9Jv+POyT/l0kz/6dmVP/Gm5D/5dPO//jy8P/78e7/8szB/+qq - mP/jj3j/4413/+OOeP/jj3n/4495/+OPef/llH//556L/+yxof/rrp7/56CO/+SPef/jjnj/4o54/+KO - eP7ijnj+5JR//ueikP7vwrf+9uHb/vz29Pz9/f36/f399v39/fD8/Pzn/Pz82vz8/Mr8/Py2/Pz8oPv7 - +4f8/Pxt/Pz8VPv7+z75+fkr7e3tHO/v7xDj4+MJv7+/BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AszM - zAXo6OgL8vLyE/b29h75+fkt+/v7QPz8/FX8/Pxt+/v7h/v7+5/8/Py3/Pz8yfz8/Nn8/Pzm/f397/z8 - /PT9/f34/fz7/P38+f39/Pr+/fz8/vr39/7NqZ/+n1hE/pA9Jv6PPCT/kD0m/5E9J/+TQSv/qmpY/82o - nf/27+7//fz8//vy8P/11s7/6aWS/+OPef/jjHX/4494/+OPef/jj3n/4495/+SRe//ooI3/7ruu//ji - 3P/23NX/78Cz/+aYg//kkHr/4454/+KNeP/ijnj+4o54/uOSfP7mnYv+78O4/vfk3/78+fj9/fz8+v39 - /fb8/Pzx/Pz85/z8/Nr8/PzK/Pz8tvv7+5/7+/uF/Pz8avz8/FH7+/s7+Pj4J/T09Bjt7e0O29vbB6qq - qgMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAB/f38CzMzMBeXl5Qry8vIT9vb2Hvn5+Sz39/dA/Pz8Vvr6+m77+/uH/Pz8oPz8 - /Lb8/PzL/Pz82vz8/Ob9/f3w/f399v39/fn9/Pv7/fr0/f316P799uz+/fz6/v38/P7u49/+0K2j/pxQ - O/6RPyn/jzoj/5A7Jf+qaVf/0a6k//Xt6//9/Pv//vz8//fg2v/popD/5JJ9/+ONd//jj3j/4495/+OP - ef/jj3j/4453/+edif/vvrL/+urm//349v/9+Pb/+Ofi/+68r//nnYj/4453/+OPef/ijXj/4o54/uKP - ef7jkXz+56GP/u6+sv746eX++/f2/f39/fr9/f32/f398Pz8/Of8/Pza/Pz8yvz8/LX7+/ud/f39gvz8 - /Gf4+PhO+vr6Nvj4+CPz8/MW6urqDMzMzAV/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLU1NQG6OjoC/Hx8RL39/cf+fn5Lvv7 - +z/8/PxW/Pz8bvv7+4f8/Pyg/Pz8tvz8/Mr9/f3b/Pz85/39/fD9/f32/f39+v348vz97tf9/dqm/v3R - kP7905X+/d6z/v326v769vT+693Z/8ukmf+mY1H/mk04/6hnVP/Sr6X/7uHd//79/f/+/v7/+/Pw//PQ - xv/kj3r/4454/+OOeP/jj3n/4495/+OPef/kj3n/5JJ7/+++sP/34dv//fn5//79/f/+/v7//Pf2//fk - 3v/uvrH/56CN/+ONd//jjnj/4o54/+KOeP7ijnj+5JR+/uejkv7uwLP+9uLd/vv29Pz9/f36/f399v39 - /e/8/Pzm/Pz82fz8/Mj8/Pyy+/v7mf39/X38/Pxi+/v7SPr6+jH39/cg8vLyE+Xl5QrMzMwFf39/AgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AszM - zAXl5eUK8fHxEvb29h35+fkt+/v7QPz8/FX6+vpu+/v7h/v7+5/8/Py2/Pz8yvz8/Nr8/Pzn/f398P39 - /fb9/fz6/fr2/P3t1f392KP+/b9j/v22Tv79t1D+/sNv/v3pzP/9+PL/+vj3//Lp5v/InpL/uYR1/82n - m//x5+P//v39//7+/v/+/v7/+evn//DEuP/jinP/4453/+OPef/jj3n/4495/+OOeP/kkHr/5peB//XX - zv/9+ff//v7+//7+/v/+/v7//v7+//79/P/34Nr/7r2w/+aZhf/kkXv/4454/+KNeP/ijnj+4o54/uOT - fv7mnov+78W5/vbi3f779/b9/fz8+v39/fb9/f3v/f395fz8/Nf8/PzE/Pz8rfv7+5P6+vp3/Pz8W/v7 - +0H5+fkt9vb2HfDw8BHj4+MJv7+/BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAB/f38Cv7+/BN/f3wjv7+8Q9fX1G/n5+Sr7+/s+/Pz8VPz8/Gz7+/uH/Pz8oPz8 - /Lf8/PzL/f392/z8/Of8/Pzx/f399v39/fr9+/j9/fLi/v3Wnf79vmD+/bVK/v20Sv79s0f+/bVO//7Y - ov/+8d3//v7+//7+/v/28O7/9e3r//v49//9/f3//v7+//7+/v/+/v7/+Ojj/+/Btf/ji3T/4454/+OP - ef/jj3n/4495/+OOeP/jkXv/5puG//bc1v/+/f3//v7+//7+/v/+/v7//v7+//7+/v/+/Pz/+OXg/+67 - rf/mmIT/4453/+OPef/ijXj/4o54/uKOeP7jkHr+5p6L/u7AtP746ub+/Pn5/f39/fr9/f32/f397vz8 - /OP8/PzU/Pz8wPz8/Kj7+/uM/Pz8cPz8/FT7+/s9+fn5KfX19Rrv7+8Q4+PjCb+/vwQAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGqqqoD29vbB+3t7Q719fUZ+fn5KPv7 - +zv8/PxS/f39a/39/YX7+/uf/Pz8tvz8/Mr8/Pza/Pz85/39/fD9/f32/f39+v358/z97tn+/dSa/v3C - a/79t1D+/bRK/v20Sv79s0j//rdP//7Skf/+7NL//v7+//7+/v/8+/r//Pr5//79/f/+/v7//v7+//7+ - /v/+/v7/+/Px//TTy//nnIn/5JN9/+OPef/jj3n/4495/+OPef/jj3n/5JF7/+67rv/34dv//v38//7+ - /v/+/v7//v7+//7+/v/+/v7//Pb1//jm4f/uvK//55+M/+OOd//jjnj/4o54/+KOeP7ijnj+45N+/uek - kv7uv7L+9+bh/fv29Pz9/f35/Pz89Pz8/Oz8/Pzg/Pz80Pz8/Lr8/Pyh+/v7hvz8/Gr8/PxR+/v7O/// - /yf19fUa7+/vEN/f3wi/v78E////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAG/v78E5eXlCvLy8hT4+Pgj+vr6Nfv7+0z6+vpn+/v7gvv7+538/Py0/Pz8yfz8/Nr8/Pzn/f398P39 - /fb9/f36/fn0/P3r0/792KL+/cBo/v23Uf79tEn+/bRK/v20Sv/+tEn//rdQ//7Skf/+7NL//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//fr6//nn4v/vv7P/6KOQ/+SUf//jj3n/4495/+OP - ef/jj3j/4413/+igjv/vwLP/+OXg//349//+/v7//v7+//7+/v/+/v7//v7+//37+v/339r/7ryv/+ed - if/kkHr/4454/+KOeP/ijnj+4o54/uSUfv7noo/+78S5/vfj3v38+Pf7/f39+Pz8/PL9/f3p/Pz83fz8 - /Mr8/Py0+/v7nP39/YH8/Pxn+/v7Tvr6+jn4+Pgn9fX1Gu7u7g/f398Iv7+/BP///wEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLb29sH7e3tDvX19Rr5+fkt+/v7Q/z8/F77+/t7+/v7mPz8 - /LL7+/vI/Pz82fz8/Of9/f3w/f399v39/Pr9+/n9/e/b/v3Yov79vWD+/bZN/v20Sf7+tEr+/bNK//60 - Sv/+tUz//rpZ//7apf/+8d3//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//35 - +P/66+f/7ryw/+egjv/kknz/45B6/+OPef/jj3n/4495/+OOd//nnor/776w//np5P/9+vj//v7+//7+ - /v/+/v7//v7+//7+/v/+/Pz/9+Hc/+67rv/mmIP/5JB6/+OOeP/ijXj/4o54/uKOeP7jkXv+5p6L/vDI - vf757er9/fz8+/39/ff9/f3w/Pz85/z8/Nn8/PzH/Pz8sfv7+5n9/f1+/Pz8Zfv7+036+vo4+Pj4J/X1 - 9Rnu7u4P39/fCL+/vwQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+/vwTl5eUK8vLyE/f3 - 9yL6+vo4/Pz8Uf39/W/7+/uO/Pz8qvz8/MP9/f3W/f395f39/fD9/f32/f39+v369fz98uH+/dSZ/v3B - aP79tk7+/bRK/v20Sv79tEr//rVL//60SP/+vmD//tKR//7v2f/++/b//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//79/f/9+vn/+OTg//DCtv/nnYr/5JJ9/+OPef/jj3n/4495/+OP - ef/kkXv/55uG/+++sf/4497//v39//7+/v/+/v7//v7+//7+/v/+/v7//ff2//jl4f/uuq7/552J/+OO - d//jj3n/4o14/+KOeP7ijnj+4496/uuwov702NH+/fz8/f39/fr8/Pz1/f397/39/eX8/PzX/Pz8xfv7 - +7D7+/uX+/v7fvz8/GT4+PhN+vr6OPj4+Cf19fUZ7u7uD9/f3wi/v78EAAAAAQAAAAAAAAAAAAAAAQAA - AAF/f38Cv7+/BN/f3wju7u4P9fX1Gfn5+Sv7+/tC/Pz8Xv39/X39/f2c/Pz8uPz8/ND9/f3h/Pz87fz8 - /PX9/f35/fnz/P3s1f7915/+/cJr/v23Uf79tEn+/bRK/v20Sv/+tEr//rRJ//6/Y//+0pP//uvP//75 - 8//+/v7//v7+//79/P/78O3/+ejj//jm4f/89vT//v38//7+/v/+/v7//v7+//7+/v/+/v7//Pf1//fh - 2//vwbX/6KGO/+WUf//jj3n/4495/+OPef/jj3j/5JB6/+igjP/vwLT/9+Pd//36+v/+/v7//v7+//7+ - /v/+/v7//v7+//339v/34dv/7ryv/+eei//jjnf/4454/+KOeP/ijnf+4ot1/uqtnv701s/+/fz8/v39 - /fz9/f35/Pz89f39/e78/Pzj/Pz81fz8/MT8/Pyu+/v7lvv7+338/Pxk+/v7Tfr6+jj4+Pgn9fX1Ge7u - 7g/f398Iv7+/BP///wEAAAAAf39/AqqqqgPMzMwF39/fCOvr6w3z8/MW9/f3Ivr6+jX7+/tO/Pz8avv7 - +4v8/Pyp/Pz8xP39/dv9/f3p/Pz88/38/Pn9+vf8/e7X/f3Zpf79vWD+/bdP/v20Sf79s0r//bRK//60 - Sv/+tk7//rtY//7Skv/+6cv//v37//7+/v/+/v7//fr5//rt6f/008r/8MK2/+/AtP/23db/+/Hu//79 - /f/+/v7//v7+//7+/v/+/v7//v7+//z39v/45eD/7ryv/+iikP/kk37/4495/+OPef/jj3n/4495/+OO - d//ooI3/77+z//np5f/9+Pf//v7+//7+/v/+/v7//v7+//7+/v/+/Pz/99/Y/+68rv/mmIT/5JF7/+KN - d//ijnj/5JR//u26rf724tz+/f38/v39/f38/Pz8/Pz8+fz8/PT8/Pzt/Pz84vz8/NX8/PzD/Pz8rfv7 - +5b7+/t9/Pz8ZPv7+0z6+vo3+Pj4JvT09Bjt7e0O39/fCL+/vwQAAAABv7+/BNvb2wfo6OgL7+/vEPT0 - 9Bf39/cg+fn5Lvv7+0H8/Pxa/f39d/v7+5f8/Py0/Pz8zfz8/OL9/f3u/f399v37+Pv98+X9/dWd/v2/ - ZP79tUr+/bRK/v20Sv79s0r//rVL//60SP/+u1n//tGN//7t1P/+/Pj//v7+//7+/v/+/f3/+u/r/+/D - t//noI3/4495/+SSe//qq5r/9NPL//349//+/v3//v7+//7+/v/+/v7//v7+//7+/v/9+vn/+ejj/+/A - s//nnYr/45B6/+OPef/jj3n/4495/+OPef/kj3n/55uH/+69sf/45uL//v39//7+/v/+/v7//v7+//7+ - /v/+/v7//fv5//jm4P/uu63/5piD/+KLc//kkXv/6q+g//Xa1P78+fj+/f39/v39/f78+/r++/r5/Pz8 - /Pn8/Pz0/Pz87fz8/OP8/PzU/Pz8w/z8/K77+/uW/f39fPz8/GP7+/tL+vr6Nvj4+CTz8/MW6+vrDdvb - 2weqqqoD4+PjCe3t7Q7y8vIU9vb2HPj4+CX6+vox+/v7P/z8/FP9/f1r+/v7hvz8/KP8/Py++/v71fz8 - /Of8/Pzx/fv4+P3x4fz91p79/cJt/v23Uf79tEn+/bRK/v20Sv/+tEr//rRI//6/Yv/+0pD//u3T//75 - 8P/+/v3//v7+//7+/v/9+ff/9+DZ/+iikP/kk33/4453/+OPeP/lloL/66+g//TQyP/89PL//vz8//7+ - /v/+/v7//v7+//7+/v/+/f3//fj2//fh2//wwrb/556K/+SUf//jj3n/4495/+OPef/jj3j/5JJ8/+ed - if/vwLT/9+Ld//79/f/+/v7//v7+//7+/v/+/v7//v7+//z29f/45uH/8srA//DBtf/xyL3/9d7Y//rx - 7/79/Pz+/f39/vv49/7l0s3+yqKX/eLMxvzz6+n4/Pz89Pz8/O38/Pzi/Pz81Pz8/MP8/Pyt/f39lP39 - /Xv8/Pxh+/v7Sfr6+jP39/ch8vLyFOjo6AvMzMwF7u7uD/Pz8xb39/cg+fn5LPr6+jj7+/tG/Pz8Vfz8 - /Gj9/f1++/v7l/z8/LH8/PzI/Pz83Pz8/Ov8/Pz0/fTn+v3ivP39wGj+/bdQ/v20Sf79tEr+/bRK//60 - Sv/+tk3//r5g//7Skv/+6cn//v36//7+/f/+/v7//v7+//7+/v/89vT/9dfP/+SSff/jjnf/4495/+OP - ef/jjnj/5ZiE/+utnf/11s//++/t//78/P/+/v7//v7+//7+/v/+/v7//v7+//z29P/34tz/7r2w/+ij - kP/klH//4495/+OPef/jj3n/4495/+OOd//ooY//78C0//nn4//9+Pf//v7+//7+/v/+/v7//v7+//7+ - /v/+/fz/++7r//rq5//67+z//Pr5//z8/P/9/f3+/Pv7/ubUz/7EmIz+ol1K/ruLff3bwrr79Ozr+fz7 - +/T8/Pzs/Pz84vz8/NT8/PzB/Pz8q/v7+5P9/f13/Pz8XPv7+0P5+fkt9vb2HO/v7xDf398I9PT0F/f3 - 9yH5+fkv+/v7P/z8/E/8/Pxf/f39b/v7+4H8/PyU/Pz8qf39/b/8/PzT/Pz84/39/e/9/f32/e3T+v3S - k/39tk7+/bNH/v60Sv79s0r//rVL//61Sf/+uVL//tCN//7r0P/+/vz//v7+//7+/v/+/v7//v7+//7+ - /v/89fP/9dfP/+WVgP/jj3j/4495/+OPef/jj3n/4494/+SUfv/qqZj/9dbO//z19P/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/9+fj/+enl/+69sP/nn4z/5JF7/+OQev/jj3n/4495/+OPef/jjXf/552K/++/ - sv/56uX//fv6//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//39/f/69/f/9Ozr/sCS - hv6dVED+jTgh/pJBK/63g3T94MrE/Pn19Pn7+vr0+/v77fz8/OP8/PzT/Pz8v/z8/Kn7+/uN/Pz8cPz8 - /FT6+vo6+Pj4JfPz8xbq6uoM9/f3IPn5+S77+/tA/Pz8Vfz8/Gj7+/t7+/v7jPv7+5z8/Pyt/Pz8vvz8 - /M/8/Pzd/Pz86vz8/PP9/f34/erP/P3Qjv39tlD+/bNI/v20Sv/+tUv//rVL//61Sf/+uVP//tOU//7t - 1P/+/v3//v7+//7+/v/+/v7//v7+//7+/v/9+vn/+OTf/+qsnP/ll4L/4494/+OPef/jj3n/4495/+OQ - ev/klX//66+f//PRyP/9+Pj//v39//7+/v/+/v7//v7+//7+/v/+/f3//fn4//fi3P/vwbX/552K/+ST - ff/jj3n/4495/+OPef/jj3n/5JJ8/+ebhv/wwbT/+OTf//79/f/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//z6+f/p2tX/vo+A/qFaRv6SQCn+jzwl/pA9Jv6bUDv+s3ts/eLLxvz17uz4/Pz88/z8 - /Oz8/Pzg/Pz8z/z8/Lr8/Pyg+/v7gvz8/GT7+/tG+fn5L/b29h3v7+8Q+fn5Kfr6+jr8/PxR/Pz8av39 - /YD8/PyV+/v7p/z8/LX8/PzD/Pz80Pz8/N38/Pzn/f398P39/ff9/f36/e/d/f3aqP79vWH+/bZP//61 - Sv/+tUv//rVL//61Sv/+uFH//sp+//7gsv/+8uD//v79//7+/v/+/v7//v7+//7+/v/+/f3/+/Lv//PS - yv/qrp3/5ZaC/+OPeP/jj3n/4495/+OPef/jj3j/5ZiE/+uvoP/01c3/+/Du//78/P/+/v7//v7+//7+ - /v/+/v7//v7+//z29P/34Nr/77+z/+iikP/llYD/4495/+OPef/jj3n/4454/+SPef/ooY7/8MS4//no - 5P/+/Pv//v7+//7+/v/+/v7//v7+//7+/v/+/v7//Pr6/+XSzP/FmY3/nlVB/5JCK/+POyT+kD0m/pA8 - Jf6RPif+nFE8/ruIev3cw7z78uro+Pz8/PP9/f3p/Pz82vz8/Mj8/Pyv+/v7kfz8/HL8/PxS+vr6OPj4 - +CTz8/MV+vr6M/v7+0f8/Pxh/f39ffv7+5b8/Pys/Pz8vvz8/Mv8/PzX/f394f39/en9/f3w/Pz89f39 - /fn9/f38/ffv/v3qz/79zIb+/r5h//63T//+tUv//rVL//61S//+t0///r5f//7Lf//+3a3//vbq//78 - +P/+/v7//v7+//7+/v/+/v7//vz8//z19P/yzcP/6qqZ/+STfv/jkHr/4495/+OPef/jj3n/4454/+WW - gf/qqpn/9dfQ//vx7//+/f3//v7+//7+/v/+/v7//v7+//7+/v/99/X/+OXg/+67rf/nnov/4494/+OP - ef/jj3n/4495/+OPef/jjXf/6aeV//LOxP/99/b//v7+//7+/v/+/v7//v7+//7+/v/7+Pf/7d/b/8SX - i/+fV0P/jzoi/488Jf+PPSb/kD0l/pA9Jv6QPCX+kT8o/phKNP66iHr93MS9+vfz8ff8+/vv/Pz84/z8 - /NL8/Py7/Pz8nv39/X78/Pxd+/v7Qvn5+Sv19fUb+/v7Pfz8/FP9/f1v+/v7jvz8/Kj8/Py+/Pz80Pz8 - /N39/f3l/Pz87Pz8/PL9/f32/f39+f39/fz9/f39/fz7/v348P7958b+/s6I//69XP/+tkv//rVL//61 - S//+tUv//rdO//63T//+wmn//t2t//7z5P/+/v3//v7+//7+/v/+/v7//v7+//79/f/78e//9NLJ/+ik - kv/klH//4494/+OPef/jj3n/4495/+OPef/jkXz/6q2c//TTyv/9+fj//v79//7+/v/+/v7//v7+//7+ - /v/+/v3//fj2//Xa0v/rrZ7/44x2/+OPef/jj3n/4495/+OPef/jj3n/556L/+68r//78/L//v39//7+ - /v/+/v7//v7+//37+//x5uT/vo2A/6BYRf+QPSb/kT0n/5E9J/+QPSb/jzwl/pA9Jv6QPSb+jzwl/o45 - Iv6WSDL+s3xs/OHOyfr18O/0/f396fz8/Nr8/PzE+/v7p/v7+4n8/Pxo+/v7S/r6+jP39/ci+/v7SPz8 - /F/9/f18/Pz8m/z8/LX8/PzL/Pz83fz8/Of9/f3v/Pz89P39/ff9/f36/f39/P39/f39/f3+/f39/v38 - +v799uz+/uS+//7Qjf/+vVz//rhP//62S//+tUv//rZL//61Sv/+uFL//sJq//7cqv/+8d3//v79//7+ - /v/+/v7//v7+//7+/v/++/v/+u3p//TSyf/pqpn/5JaB/+OPeP/jj3n/4495/+OPef/jjnj/5ZeD/+uw - oP/00sr//PPx//79/P/+/v7//v7+//7+/v/+/Pz//PPw//LLwf/pppT/4453/+OPef/jj3n/4495/+OP - ef/jjXf/56GP//DEuP/89fT//v7+//7+/v/+/f3//Pr5/+bUz//EmIz/oVlG/5RDLf+QPCX/kT4n/5E+ - J/+RPSb/kD0m/489Jv+QPSb+kDwl/o87JP6QPSb+m1M9/bR8bfvcxL318+vp7P39/d78/PzK/Pz8r/v7 - +5L8/Pxy/Pz8Vfv7+zz5+fkq/Pz8VP39/Wv7+/uJ+/v7p/z8/MD8/PzV/f395f37+O/8+PL1/ffu+f35 - 9Pv+/Pv8/f39/f39/f79/f3+/f39/v39/f79/f3+/vXo//7lwP/+zYX//r9h//64UP/+tUv//rVL//61 - S//+tUr//rNH//7Gc//+3av//vTk//78+P/+/v7//v7+//7+/v/+/v7//vv7//zz8f/yzML/6qub/+SV - gP/jkHr/4495/+OPef/jj3n/4454/+WYg//rrZ3/9djQ//vw7f/+/f3//v7+//78/P/78Oz/9djQ/+yx - of/mmob/4494/+OPef/jj3n/4495/+OOeP/jj3n/666e//XZ0f/9+fj//v7+//79/f/7+fn/5dHL/8OW - if+fWET/kT8o/5A8Jf+RPif/kT0m/5E+J/+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9Jv6QPSX+kD0m/ZVG - Mfu6h3n328K67vTt7OL7+vrP/Pz8tvv7+5r7+/t8/Pz8X/v7+0b6+voz/Pz8X/39/Xb8/PyU/Pz8svz8 - /Mn8/Pzc/Pv66/z37/P97tn5/erO/P3w3/39+PH+/f38/v39/f79/f3+/f39/v39/f79/f3+/v7+//74 - 7v/+58f//syD//69XP/+tkv//rVL//61S//+tUv//rVL//60Rv/+w2r//t6u//726v/+/vz//v7+//7+ - /v/+/v7//v7+//7+/v/89fP/88/G/+ikkv/jkXz/4495/+OPef/jj3n/4495/+OOeP/kkn3/6qqZ//XW - z//9+Pf//v7+//329f/118//6aiX/+SUf//jj3j/4495/+OPef/jj3n/4494/+OOeP/ll4H/8ca6//34 - 9v/+/f3//v7+//z6+v/17+3/t4Bw/5dIMv+NOCD/kD0m/5E+J/+RPSb/kD0m/5E9J/+RPif/kT4n/5E+ - J/+QPSb/kD0m/pA9Jv6QPSb+jzwl/Y87JfuSQiv4toFy8OLPyuT59fTT/Pz8vPv7+6L7+/uF+vr6avz8 - /FH7+/s+/Pz8afv7+4H7+/uf/Pz8u/z8/ND8+fXi/fLk7/3Xofb9yHv6/cNv/P3Mg/393Kz+/e3X/v39 - /P79/f3+/f39/v39/f79/f3+/v7+//79+v/++O///uW///7QjP/+vFz//rdO//62S//+tUv//rVL//61 - Sf/+uFL//sJp//7dq//+8d7//v79//7+/v/+/v7//v7+//7+/v/+/Pv/+u3p//TTyf/pp5X/5JaB/+OP - eP/jj3n/4495/+OPef/jkHr/5ZWA/+uyov/z0sn/+u3p//PQx//rsaL/5JWA/+OQev/jj3n/4495/+OP - ef/jj3j/5ZaB/+mnlv/zz8X/+uvn//78+//8+/r/+/n3/+jY0//AkIP/nlZB/5A+J/+QPCX/kT0n/5E+ - J/+RPif/kT0m/5E+J/+RPif/kT4n/5E+J/+RPib/kD0m/489Jv+QPSb+kDwl/ZA9JfyQPSb4m1I98LN9 - bebo2NPW+PPzwPz8/Kj7+/uN+vr6dPz8/Fv7+/tH/Pz8cvv7+4r7+/un/Pz8wv39+9b+8+Tl/N+18f3D - b/f9tlH7/bNL/f25Vv79w3D//dac//3u1//9+fP//f39//39/f/9/f3//v7+//7+/v/+/v7//vXo//7k - vv/+zon//r5g//64UP/+tkv//rVL//61S//+tUn//rZN//7Fcf/+3av//vLg//79+//+/v7//v7+//7+ - /v/+/v7//vv6//vv6//yzcP/6qyb/+SWgf/jj3n/4495/+OPef/jj3n/4454/+aahv/qq5v/776x/+qr - mv/mmob/4494/+OPef/jj3n/4495/+OPeP/lloH/6qyc//PPxf/77+v//vv6//z6+f/z7On/3cW9/8CS - hP+eVUH/k0Er/487Jf+RPif/kT4n/5E+J/+RPif/kT4n/5E9J/+RPSf/kT4n/5E+J/+RPif/kT4n/5A9 - Jv+PPSb/kD0m/pA+JvyPPCX4jzwl8Z5WQefYvbTY8enlxPz8/K78/PyU/f39e/z8/GP8/PxP/f39ef39 - /ZD8/Pyt/Pz8x/z8/Nn86s7o/MyF8v24VPj9skj8/bNK/v20S/7+s0f//r9i//7WnP/+8Nv//vv2//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//726v/+5sL//syC//6+YP/+t07//rVL//61S//+tUv//rVK//60 - Rv/+xXH//t6u//726//+/Pr//v7+//7+/v/+/v7//v7+//78/P/89fL/8szC/+mol//jknz/45B6/+OP - ef/jj3n/4495/+OPeP/jjnj/4412/+OOeP/jj3j/4495/+OPef/jj3n/45B5/+SSfP/qqZj/88zC//33 - 9f/+/fz//v39//fx7//fycL/tHxs/5ZHMf+NOCD/kDwl/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E9 - Jv+RPSb/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA+JvyPPCb5jToj8plNOOjPrqTa7OLexvz8 - /LH7+/uZ+/v7gfz8/Gn8/PxV/f39ev39/ZL8/Pyv/Pz8yP39+9v96cvp/Ml/8/23U/n9s0n8/bNK/v20 - Sv7+tEr//rZN//67V//+1pr//u3V//7+/f/+/v7//v7+//7+/v/+/v7//v7+//79+//++O7//ubB//7O - iP/+vFz//rZL//61S//+tUv//rVL//61Sv/+t07//sJp//7er//+8+T//v7+//7+/v/+/v7//v7+//7+ - /v/+/fz/+/Ds//TSyf/no5H/5ZR//+OPeP/jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/4495/+OP - ef/jj3j/5JR+/+mkk//00sn/+/Hu//79/f/+/v7//Pv6/+vc2P+wdGT/mEs1/487I/+QPSb/kT0m/5E+ - J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA+ - JvyPPCb5kD4o8p9aR+jex8Da8+3qx/z8/LL7+/ua/f39gvz8/Gr8/PxV/f39d/v7+4/8/Pys/Pz8xvz8 - /Nn8793o/Nmm8/3Aafj9tlH8/bRK/v20Sv79tEr//rRJ//61Sv/+wGT//tWZ//7t0//+/Pj//v7+//7+ - /v/+/v7//v7+//7+/v/+/fv//vbq//7kvf/+z4v//r1c//64UP/+tkv//rVL//61S//+tUn//rhR//7E - bf/+3a3//vLg//7+/v/+/v7//v7+//7+/v/+/v7//vv6//rt6f/z0Mb/6qua/+WXgv/jj3j/4495/+OP - ef/jj3n/4495/+OPef/jj3n/4495/+OPeP/ll4L/6qua//PRyP/67en//vz7//7+/v/9+/v/5tTP/8SY - i/+aTTj/kT0m/5A7JP+RPif/kT4n/5E+J/+RPif/kT4n/5E9Jv+RPSb/kT4n/5E+J/+RPif/kT4n/5E+ - J/+RPif/kT4m/5A9Jv+PPSb/kD0m/pA+JvyQPyn5oV5L8r+Shujt4t/Z+PX1xvv7+7D7+/uY/f39f/z8 - /Gb8/PxS/Pz8cPv7+4j8/Pyl/Pz8wPz8/NX9+PDl/OzT8f3QkPf9wGj7/bZQ/f20Sv79tEr+/bRK//61 - Sv/+tEf//sFm//7Wmv/+8Nv//vr0//7+/v/+/v7//v7+//7+/v/+/v7//v7+//715//+5b7//syC//6/ - Yv/+uFD//rVL//61S//+tUv//rVK//60R//+x3b//uC0//779f/+/vz//v7+//7+/v/+/v7//v7+//77 - +//88/H/8srA/+mrmv/klH//45B6/+OPef/jj3n/4495/+OPef/jj3n/45B6/+SVgP/qrJv/8szC//vz - 8f/+/Pv//v79//z5+f/r3Nf/x52Q/6FaRv+QPSX/kDsk/5E+J/+RPif/kT4n/5E+J/+RPSb/kT4n/5E9 - Jv+QPSb/kT4n/5E+J/+RPif/kT4n/5E+J/+RPib/kD0m/489Jv+QPSb+kD0m/ZJBKfyeVkT4vIyA8eHM - xuf49fTY/Pz8w/z8/K37+/uT+/v7evz8/GH7+/tN/Pz8Zvv7+377+/uc/Pz8uPz8/M/9/f3h/fr27/3q - 0Pb90ZP7/bxf/f21Tf39tEr+/bRK/v2zSv/+tUr//rVI//67V//+15z//vDa//7+/f/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/++O///ujH//7OiP/+vV///rVM//61S//+tUv//rVL//61S//+tEj//sp8//7y - 4P/++/f//v7+//7+/v/+/v7//v7+//7+/v/+/v7//PPx//PQxv/oo5H/5JJ8/+OPef/jj3n/4495/+OP - ef/jj3n/45F8/+qnlv/00sn//ff1//7+/f/+/v7//Pv7//Tt6/+/j4L/nlZB/445Iv+RPSb/kT4n/5E+ - J/+RPif/kT4n/5E9Jv+RPSb/kT4m/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9 - Jv6QPSb+kT4o/ZZIM/u9joD44c3I8P39/OX9/f3W/Pz8wPz8/Kj7+/uN/Pz8cvz8/Fn7+/tF/Pz8Wfz8 - /HH7+/uQ/Pz8rvz8/Mf8/Pzc/Pz76/z38PT958n6/dSX/f29Yv39t1D+/bVK/v20Sv79tEr//rRJ//62 - Tf/+vl///tab//7t0//+/v3//v7+//7+/v/+/v7//v7+//7+/v/+/fr//vjt//7apf/+w23//rVJ//61 - Sv/+tUv//rVL//61S//+tEf//sd2//7t0//++vT//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vv7//rs - 6f/z0sn/6aiX/+WWgf/jj3j/4495/+OOeP/lloH/6aqZ//TTy//77uv//vz8//7+/v/+/v7/+vj3/+7j - 3/+tcF//k0Ir/487I/+RPSb/kT4n/5E+J/+RPif/kT4n/5E+J/+RPSb/kT4n/5E+J/+RPif/kT4n/5E+ - J/+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9Jv6RPyn+oFpH/b2Mf/vhzMf39O/t7/z8/OP8/PzS/Pz8u/39 - /aD9/f2D/Pz8aPz8/E/7+/s8+/v7Tfz8/GX9/f2E/Pz8pPz8/L/8/PzV/Pz85/z8/PL99uz4/ejJ/P3R - kf39wWj+/bhR/v21Sv79tEr+/bRK//60Sv/+tEj//sJp//7Wm//+8Nv//vr0//7+/v/+/v7//v7+//7+ - /v/+/Pj//vTl//7YoP/+wmv//rVJ//61Sv/+tUv//rVL//62S//+uFD//suA//7u1f/++vT//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//37+v/67+z/8svB/+qunv/lmYT/45B6/+aahf/rr5//88/F//vv - 7f/+/Pv//v7+//7+/v/+/v7/+/n4//Lp5/+8i37/nVRA/487I/+QPCX/kT0m/5E+J/+RPSb/kT4n/5E+ - J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPib/kD0m/489Jv+QPSb+kD0m/pE/KP6hW0f+u4t+/eDL - xfv18O72/Pz87fz8/OD8/PzN/Pz8tPv7+5j9/f15/Pz8Xvv7+0X6+voy+/v7Qvz8/Fr9/f14+/v7mfz8 - /Lb8/PzO/Pz84v39/e79/f32/fjy+/3qz/390JL+/b9k/v22Tf79tUr+/bRK/v20Sv/+tUv//rRI//6+ - YP/+157//vDc//78+P/+/v7//v7+//79+v/+9OX//uG2//7Lgf/+vF3//rVM//61S//+tUv//rZM//63 - T//+wGT//tWZ//705f/+/Pj//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/fz//PTy//TT - yv/ssqP/5p2J/+y0pf/11c3//ff2//79/f/+/v3//vv6//739P/+9fL//vXy//z08f/iy8f/uYV4/5VF - Lv+QOyT/kDwl/5E+J/+QPSb/kT0m/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9 - Jv6QPSb+kkEq/plMN/69jH7+4crE/P39/fr8/Pz0/f396f39/dv8/PzH/Pz8rP39/Y79/f1v/Pz8U/v7 - +zv5+fkp+vr6OPv7+078/Pxs+/v7jfz8/Kv8/PzF/f392/v7++r8/Pzz/fz7+f358/z96Mv+/dOY/v29 - YP79t0/+/bVK/v60Sv79tEr//rRK//63Tv/+u1n//tif//7v1//+/v7//v7+//7y4P/+37L//sh3//69 - Xf/+t0///rVL//61S//+tkz//rhR//6/Yf/+0ZD//ufG//78+f/+/v3//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//vz8//z18//67en/+Obh//rt6v/89fP//v39//7+/v/+9/T//ubb//7H - rv/+wqb//sOo//7Ks//56OH/4MrE/72Mf/+URC7/kT4n/5JAKf+QPSb/kT0m/5E+J/+RPif/kT4n/5E+ - J/+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9Jv6RPyn+nVRA/r6Of/7hzcf9+PPy+v39/ff9/f3w/Pz85Pz8 - /NP8/Py9/Pz8ofv7+4P8/Pxj+/v7SPr6+jH39/ch+fn5L/v7+0T8/Pxg/f39f/z8/J78/Py5/Pz80f39 - /eH8/Pzt/Pz89f39/fn99uz8/efI/v3Slf79wGf+/bhR/v21Sv79tEr+/bRK//60Sv/+tUr//sh3//7c - qv/+7tb//vDa//7fsf/+y4D//rtZ//63T//+tUv//rVL//62TP/+uVP//sFn//7QjP/+5cH//vXp//7+ - /v/+/v7//v7+//7+/v/+/Pr//vn2//759//+/fz//v7+//7+/v/+/v7//v7+//7+/v/+/f3//vz7//79 - /f/+/v7//v7+//76+P/+3c7//ryd//6ieP/+nnP//p5z//6ieP/+yrL/9dnO/+DKw/+5hXf/nlRA/5A7 - JP+QPCT/kT0m/5E+J/+RPif/kT4n/5E+J/+RPib/kD0m/489Jv+QPSb+kD0m/pFAKf6hXEj+vIt9/uLN - x/317uz7/f39+Pz8/PP9/f3p/f392/z8/Mj7+/uw/f39k/z8/HX8/PxW+/v7Pfn5+Sj19fUZ+Pj4Jvr6 - +jn8/PxS/Pz8cPv7+478/Pyq/Pz8w/39/db9/f3l/f397/39/fb9/f36/ffu/P3pzf790ZH+/cBn/v23 - T/79tUr+/bRK/v20Sv/+tkz//rxb//7Ief/+1pr//tif//7JfP/+vFr//rZM//61S//+tUv//rZM//64 - Uf/+wWf//tCL//7lwf/+9ur//v7+//7+/v/+/v7//vv6//707//+5tv//t3O//7ez//+6uH//vf0//79 - /f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v38//7y7P/+wqf//pVl//6LVv/+ilb//olU//6I - Uf/+oHX//smw//nm3v/iy8X/t4Fy/5lLNv+POiL/kDwl/5E9Jv+RPif/kT4n/5E+J/+QPSb/kD0m/pA9 - Jv6QPSb+kkEq/p1UQP68i3z+38nD/fr49/z9/f34/Pz88/z8/Oz8/Pzg/Pz8z/z8/Lr8/Pyh+/v7hPz8 - /Gb7+/tJ+vr6Mff39x/y8vIT9vb2Hfn5+S37+/tE/Pz8Xv39/Xv7+/uY/Pz8s/z8/Mj8/PzZ/Pz85/39 - /fD9/f32/f38+v369v396c3+/dOV/v2+YP79tk3+/bVK/v20Sv79s0r//rZM//63Tf/+tk3//rZN//62 - Tf/+tk3//rVL//61S//+tkv//rdP//6+Yf/+0Iz//uXB//779f/+/v3//v7+//7+/v/+/v7//vHr//7Y - xv/+rIf//php//6abP/+tZP//uXY//76+P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vv6//7m - 2//+s5L//opV//6MV//+jFj//oxX//6LVv/+iFL//p5z//7Eqv/88+//4czH/7yKff+POiL/jzoj/5A8 - JP+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9Jv6RPyj+mEw3/r2Mfv7izcf9+/n4/P39/fn8/Pz0/Pz87Pz8 - /OP8/PzT/Pz8v/z8/Kn7+/uO+vr6cfz8/FX6+vo6+Pj4J/T09Bfr6+sN8/PzFvj4+CP6+vo1+/v7TPr6 - +mf7+/uC+/v7nfz8/LT8/PzJ/Pz82vz8/Of9/f3w/f399v39/Pr99+78/efI/v3Ul/79v2P+/bhR/v21 - Sv79tEr+/bRK//61Sv/+tUr//rVJ//61Sv/+tUv//rVL//62TP/+uVP//r9k//7Qjf/+5cD//vbq//7+ - /f/+/v7//v7+//79/f/+7+j//tG8//6uif/+l2f//o5b//6PXP/+mGn//rmY//7by//++vj//v79//7+ - /v/+/v7//v7+//7+/v/+/v7//vz7//7u5v/+vqH//pRj//6NWf/+jFj//oxY//6MV//+ilT//o9c//6g - dP/+yLD/9dzS/9/Jw/+7iHr/m086/446I/+POyT/kD0m/489Jv+QPSb+kD0m/pE/Kf6gWkb+u4t8/uHM - xv317uz7/Pz8+fz8/PT8/Pzs/Pz84vz8/NT8/PzB/Pz8q/39/ZL9/f13/Pz8Xfv7+0T5+fkt9vb2HfDw - 8BHj4+MJ7u7uD/X19Rn5+fko+vr6Ovz8/FL9/f1r+/v7hfz8/J78/Py1/Pz8yvz8/Nr8/Pzm/f398P39 - /fb9/f36/fbs/P3oyv790ZD+/cFo/v23Uf79tUr+/bRK/v20Sv/+tUr//rVL//61S//+tUv//rZL//64 - U//+wWf//s+K//7lwP/+9ef//v7+//7+/v/+/v7//vv5//7x6//+0r3//rCM//6UZP/+jVn//oxY//6M - V//+i1b//plr//65mP/+4NH//vfz//79/f/+/v7//v7+//7+/v/+/v7//v39//738//+0bz//qmC//6V - ZP/+j1z//oxY//6MWP/+jFf//opU//6MWP/+oHX//sqy//be1P/izcj/t4J0/5xTP/+POyP+jzsj/o87 - JP6QPCX+kT4n/qBZRf67inz+38nD/ffy8fv9/f34/Pz88/z8/O38/Pzi/Pz80/z8/ML6+vqt/Pz8lPv7 - +3v8/Pxh+/v7Sfr6+jT39/ch8vLyFOjo6AvU1NQG4+PjCe/v7xD19fUb+fn5Kvv7+z78/PxU/Pz8bP39 - /Yb7+/uf/Pz8tvz8/Mr8/Pza/Pz85/z8/PH9/f32/f39+v358/396c3+/dGQ/v2+Yf79tk3+/bVL/v20 - Sv79s0r//rVL//61S//+tkz//rdP//6/Y//+z4r//uTA//758f/+/v7//v7+//7+/v/+/fz//vDq//7X - xf/+qoP//pRj//6MWP/+jFj//oxY//6MWP/+jFj//otW//6XaP/+so///ubb//749f/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+6N7//sev//6ke//+lWT//o1a//6MWP/+jFj//oxX//6LVf/+hk///qB0//7I - rv/++fb/4czF/7yLfP6XSDL+kT8o/pA9Jv6SQSr+l0kz/ryMff7hysT8/f39+/39/fj8/Pzz/Pz87Pz8 - /OP8/PzU/Pz8wvz8/K77+/uW+/v7fPr6+mP7+/tL+vr6Nvj4+CTz8/MW6+vrDdvb2weqqqoD1NTUBuXl - 5Qrx8fES9vb2Hfn5+Sz7+/s//Pz8Vfz8/G39/f2G+/v7n/z8/Lb8/PzK/Pz82vz8/Of9/f3w/f399v38 - +/r9+PH9/efI/v3Tlv79vV/+/bdQ/v21Sv7+tEr+/bRK//61S//+uFL//r5g//7Qjf/+5L///vjv//79 - +//+/v7//v7+//7+/v/+8On//tK+//6qg//+lmb//o5b//6MWP/+jFj//oxY//6MWP/+jFj//oxX//6O - W//+l2n//rWT//7dzv/++vj//v7+//7+/v/+/v7//v7+//7+/v/++fb//uje//7Fq//+qID//pVl//6N - Wf/+jFj//oxY//6MV//+i1X//o1Z//6gdv/+ybD/9uLa/+rb1/7WuLD+uIR2/q5yYv6ze2v+yKKX/uXS - zfz28e/6/f399/z8/PP8/Pzr/f394fz8/NT8/PzC/Pz8rfv7+5b9/f18+vr6ZPv7+0z6+vo3+Pj4JvT0 - 9Bjt7e0O39/fCL+/vwQAAAABqqqqA9TU1Abo6OgL8fHxEvb29h75+fkt+/v7P/z8/FX6+vpu/f39hvv7 - +5/8/Py2/Pz8yfz8/Nr8/Pzn/f398P39/fb9/f36/fbr/P3nx/790ZL+/cBm/v23UP79tEj+/bRK/v23 - Uv/+wGb//s+K//7kv//+9eb//v7+//7+/v/+/v7//vv6//7x6//+0bz//rCM//6UY//+jlv//oxY//6M - WP/+jFj//oxY//6MWP/+jFj//oxY//6MV//+jVr//phq//65mf/+3M3//vr4//79/f/+/v7//v7+//7+ - /v/+/v7//vn1//7m2//+xav//qmC//6VZP/+jlv//oxY//6MWP/+jFf//opU//6PXP/9oHf//dnJ//vx - 7f7z7Or+4MrF/tm/t/7dxLz96t3Z/Pfz8fr9/f32/Pz88f39/en8/Pzf/Pz80fz8/MH8/Pys/Pz8lfv7 - +336+vpk+/v7TPr6+jj4+Pgn9fX1Ge7u7g/f398Iv7+/BP///wEAAAAAAAAAAH9/fwLMzMwF5eXlCvLy - 8hP29vYe+fn5LPv7+z/8/PxV/Pz8bf39/Yb7+/uf/Pz8tvz8/Mr8/Pza/Pz85/39/fD9/f32/f39+v33 - 7/z96cz+/dGQ/v3BaP79uFP+/bhT/v3AZv79zon//uS///726v/+/v7//v7+//7+/v/+/Pr//vDq//7W - xP/+ron//pRk//6MWP/+jFj//oxY//6MWP/+jFf//oxX//6MV//+jFj//oxY//6MWP/+jFj//otW//6Z - av/+tpX//ubc//728//+/v3//v7+//7+/v/+/v7//v7+//7+/v/+5Nj//sWr//6mff/+kmH//oxY//6M - WP/+jFj//oxX//6KVf/9h1P+/cGl/v3o3f79/f3+/f39/v39/f39/f38/f39+fz8/PX9/f3v/Pz85/z8 - /Nz8/PzO/Pz8vvz8/Kv8/PyU/f39e/z8/GP7+/tM+vr6OPj4+Cb19fUZ7u7uD9/f3wi/v78EAAAAAQAA - AAAAAAAAAAAAAAAAAAB/f38CzMzMBeXl5Qry8vIT9vb2Hvn5+Sz7+/s//Pz8Vfz8/G37+/uH+/v7n/z8 - /Lf8/PzK/Pz82vz8/Of9/f3w/f399v38+/r9+vb9/e3U/f3bqf79yn/+/cd3/v3UmP7+58T+/fnz//38 - +v/9/f3//f39//7+/v/+8er//tbC//6ogP/+lWX//o1Z//6MWP/+jFj//oxY//6MWP/+ilb//opV//6L - Vv/+jFf//oxY//6MWP/+jFj//oxY//6NWf/+l2n//rGP//7i1P/++/j//v7+//7+/v/+/v7//v7+//7+ - /v/++/r//uje//7Fq//+mGr//otW//6MWP/+jFj//YtX//2KVv/9ilX+/ad+/v3Svv79/fz+/f38/v39 - /fz9/f35/Pz89f39/e/8/Pzm/Pz82vz8/Mz8/Py7+/v7p/v7+5H9/f15/Pz8Yfv7+0v6+vo3+Pj4J/X1 - 9Rnu7u4P39/fCL+/vwQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AtTU1Abo6OgL8vLyE/b2 - 9h75+fkt+/v7QPz8/FX8/Pxt/f39hvv7+5/8/Py2/Pz8yfz8/Nr7+/vn/f397/z8/PX9/f35/fnx+/3x - 3/396c7+/ejJ/v3u2P799ur+/f39/v39/f79/f3+/fv6//7w6v/+0b3//q+K//6VZf/+jlv//oxY//6M - WP/+jFj//otW//6QXv/+qYL//ruc//64mP/+m27//o9d//6LV//+jFj//oxY//6MV//+jlv//pZn//65 - mf/+3cz//vv4//7+/f/+/v7//v7+//7+/v/+/v7//u7n//7Nt//+mmz//opW//6MWP/9i1f//YpX//2L - Vv79i1b+/aF2/v3Nt/79/Pv+/f39/P39/fr8/Pz1/f397/z8/OT8/PzX/Pz8yPz8/Lb7+/ui+/v7jf39 - /Xb8/Pxf/Pz8Svr6+jb4+Pgm9fX1Ge7u7g/f398Iv7+/BP///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAH9/fwLU1NQG5eXlCvLy8hP29vYe+fn5Lfv7+z/8/PxV/Pz8bf39/Yb7+/uf/Pz8tfz8 - /Mn8/Pza/f395f39/e78/Pz0/f39+P38/Pv9/f38/fz7/v39/P79/f3+/f39/v39/f79+/n+/fHr//7T - wP/+sI3//pRk//6NWf/+jFj//oxY//6MWP/+i1f//pJg//6le//+z7n//uba//7h0//+vZ///p5x//6P - XP/+i1f//oxY//6MWP/+jFf//otW//6aa//+uZn//uLV//738//+/f3//v7+//7+/v/+9vL//uHT//6/ - ov/+l2j//otW//6LV//9ilf//YtX/v2NWf79kF7+/a2J/v3Vw/79/fz8/f39+v39/fb9/f3v/Pz85vz8 - /Nf8/PzG/Pz8s/z8/J77+/uI/Pz8cfz8/Fv7+/tH9fX1Nfj4+CX09PQY7u7uD9/f3wi/v78E////AQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CzMzMBeXl5Qry8vIT9vb2Hvn5 - +Sz7+/s//Pz8Vfz8/G37+/uH+/v7n/z8/LX8/PzJ/Pz82fz8/OT8/Pzt/Pz88/39/ff9/f36/f39/P39 - /f39/f3+/f39/v39/f799O/+/d3P/v2phP79k2P//oxY//6MWP/+jFj//oxY//6MWP/+i1X//qR6//7L - sv/+9vL//v79//76+P/+8On//rmZ//6Zav/+i1b//oxX//6MWP/+jFj//oxY//6LVv/+l2j//rOQ//7n - 3P/++vj//v7+//7+/f/+5Nf//sGk//6bbf/+kF7//YtY//2LV/79i1f+/YxY/v2RX/79nHD+/cqy/v3q - 4f39/f37/f399/z8/PH8/Pzn/Pz82vz8/Mj8/Pyz+/v7nP39/YT8/Pxt/Pz8Vvv7+0L6+vox9/f3IvT0 - 9Bft7e0O39/fCL+/vwQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAf39/AszMzAXo6OgL8vLyE/b29h75+fkt+/v7QPz8/FX8/Pxt/f39hfv7+538/Pyz/Pz8xfz8 - /NT8/Pzg/f396f39/e/8/Pz0/f39+P39/fv9/f38/f39/v38/P7949f+/biY/v2Xaf7+jFr//oxY//6M - WP/+jFj//oxX//6NWf/+qYL//s64//7v6P/+/Pv//v7+//79/f/++vj//uTY//7Ao//+mWr//o1Z//6L - V//+jFj//oxY//6MV//+jlv//php//64mP/+3c7//vPu//7l2f/+wKP//qJ4//6RXv/9jFn//YpX//2L - V/79jFf+/ZNh/v2lfP79xav+/efd/f349vv9/f34/Pz88v39/en8/Pzc/Pz8y/z8/Lb9/f2d/f39g/z8 - /Gr8/PxU+/v7P/n5+S739/cg8/PzFu3t7Q7f398Iv7+/BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLU1NQG6OjoC/Ly8hP29vYe+fn5Lfv7 - +z/8/PxV/Pz8bP39/YP7+/ua/Pz8rvz8/MD8/PzP/f392/z8/OT8/Pzs/Pz88/39/ff9/f36/Pz8/f37 - +v7918b+/Z5y/v2OW/79ilb//otX//6MWP/+jFj//otX//6OW//+wab//ufc//7+/f/+/v7//v7+//7+ - /v/+/v7//vn2//7h1P/+vqD//pxu//6PXP/+i1f//oxY//6MWP/+jFf//o1Z//6abP/+s5H//sSp//64 - mP/+oXf//pJg//6MWP/9ilf//YtX/v2NWf79kmH+/aZ9/v3Cp/795tv+/ff0+/39/fj8/Pzz/Pz86/z8 - /N/8/PzP/Pz8uvv7+6L9/f2H/Pz8bPz8/FP7+/s++fn5LPb29h7y8vIU6urqDNvb2we/v78E////AQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38CzMzMBeXl5Qry8vIT9vb2Hvn5+Sz7+/s+/Pz8U/z8/Gn7+/uA/Pz8lfz8/Kj8/Py6/Pz8yf39 - /db8/Pzi/Pz86/z8/PL9/f34/f39+/37+v3908D+/ZZm/v2MWP79ilb+/YpX//6MWP/+jFj//otX//6O - W//+ybH//uzj//79/P/+/v7//v7+//7+/v/+/v7//v7+//759//+6d7//riX//6cbv/+jVn//oxX//6M - WP/+jFj//oxY//6LVv/+jVn//o5b//6LV//+jFj//otY//2LV/79i1f+/Y1Z/v2SYf79oXb+/cGm/v3i - 1f39/f38/f39+fz8/PP8/Pzs/f394fz8/NL8/Py/+/v7p/39/Yz8/Pxx/Pz8Vvv7+z/5+fks9vb2HfHx - 8RLo6OgL1NTUBqqqqgMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AszMzAXo6OgL8fHxEvb29h35+fkr+/v7PPz8 - /E/8/Pxj/f39eP39/Yz8/Pyg/Pz8svz8/MP8/PzT/f394fz8/Ov8/Pzz/f39+f39/Pv94NP9/bGN/v2Q - X/79iVX+/otX/v2KV//+i1j//oxY//6NWv/+pHv//s22//7z7v/+/fz//v7+//7+/v/+/v7//v7+//7+ - /f/++ff//une//6+oP/+mWr//oxW//6MV//+jFj//oxY//6MWP/+jFj//oxY//6MWP/9i1f//YpX//2L - V/79jFf+/ZNi/v2id/79wKT+/ePX/f349vz9/f35/Pz89Pz8/Oz8/Pzi/Pz80/z8/MH8/Pyq+/v7kPv7 - +3b8/Pxb+/v7Qvn5+S729vYe8fHxEuXl5QrMzMwFf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ - fwLU1NQG6OjoC/Hx8RL29vYc+fn5Kfr6+jj8/PxK/Pz8XP39/W/9/f2D+/v7mPz8/Kz8/PzB/Pz80/z8 - /OL8/Pzt/Pz89f39/fn98ev8/dfF/v2qhP79k2L+/YpV/v2LV/79i1f//otX//6MWf/+k2L//qqE//7L - tP/+8Or//vv5//7+/v/+/v7//v7+//7+/v/+/v3//vn3//7h0//+wKP//plq//6PXP/+jFf//oxY//6M - WP/+jFj//otX//2LV//9ilf//YtX/v2MWP79k2L+/aV9/v3ApP7949b9/fXx+/39/fj8/Pz0/Pz87P39 - /eH8/PzU/Pz8wfr6+qz9/f2T/f39efz8/F/7+/tH+vr6Mff39yDy8vIU6OjoC8zMzAWqqqoDAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38C1NTUBuXl5Qrw8PAR9fX1Gvj4+Cb6+voz+/v7Q/z8 - /FT8/Pxo+/v7fvz8/JX8/Pyt/Pz8xP39/db9/f3l/Pz88f39/ff9+/r7/fPv/f3Mtv79qoP+/ZFf/v2L - V/79i1f+/YtX//6LV//+i1f//pJh//6mff/+07///u3l//78+v/+/v7//v7+//7+/v/+/v7//v7+//75 - 9v/+5Nf//riY//6dcP/+j1z//oxX//6MWP/+jFj//otX//2KV//9i1f+/Y1a/v2SYP79o3r+/b+k/v3g - 0v39+ff8/f39+Pz8/PT8/Pzt/Pz84vz8/NT8/PzC/Pz8rfz8/JX7+/t8/Pz8Yvz8/Er6+vo09/f3IvPz - 8xXq6uoM1NTUBn9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AszM - zAXj4+MJ7u7uD/Pz8xb39/cg+fn5Lfv7+zz7+/tO/Pz8Zfv7+377+/uZ/Pz8s/z8/Mn8/Pzc/Pz86vz8 - /PP9/f34/fz7/P339P390Lv+/aV7/v2MV/79ilb+/YtX/v2KV//+jFj//oxX//6PXP/+n3P//tC7//70 - 7//+/v7//v7+//7+/v/+/v7//v7+//7+/v/++vj//u/n//65mv/+mGn//otW//6MV//9i1f//YtX/v2L - V/79jFf+/ZJg/v2ec/79v6T+/eHV/v38+/z9/f35/Pz89Pz8/O38/Pzj/Pz81Pz8/MP8/Pyu+/v7lvv7 - +338/Pxj/Pz8Svr6+jb4+Pgl////Fuvr6w3b29sHqqqqAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E39/fCOvr6w3y8vIT9vb2Hfn5+Sr6+vo6/Pz8T/z8 - /Gj7+/uE/Pz8oPz8/Ln8/PzP/f394fz8/Oz8/Pz0/f38+v38+/z97eb+/dO//v2nfv79kmH+/YpV/v2L - V/79ilf//otX//6NWf/+kV7//qmC//7Ks//+9O///vz6//7+/v/+/v7//v7+//7+/v/+/f3//vr4//7i - 1v/+v6P//phq//2MWv/9ilb//YtX/v2MV/79k2L+/aR8/v2/o/794tb9/fXx+/39/Pn8/Pz0/Pz87Pz8 - /OL8/PzU/Pz8wvz8/K39/f2V/f39fPr6+mT7+/tM+vr6N/j4+Cb19fUZ7e3tDt/f3wi/v78EAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38Cv7+/BNTU - 1Abl5eUK8fHxEvb29hz5+fkp+/v7Pfz8/FT9/f1v/f39jPv7+6f8/PzA/Pz81fz8/OP9/f3u/f399v39 - /fr9+/r8/e/o/v3OuP79qoT+/ZNi/v2KVv79i1f+/YtX//6LV//+i1f//pNi//6pgv/+0bz//u7m//77 - +v/+/v7//v7+//7+/v/+/v7//v7+//749f/+4NL//rud//2ccf/9j13+/YtX/v2RX/79pHz+/b+k/v3f - 0/789fL8/f39+Pz8/PT8/Pzt/Pz84vz8/NT8/PzD/Pz8rfv7+5b7+/t9+vr6ZPv7+036+vo4+Pj4JvX1 - 9Rnu7u4P39/fCL+/vwT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF5eXlCvDw8BH29vYc+fn5Lfv7+0L5+flc+/v7ePz8 - /JT8/Pyv/Pz8x/z8/Nj9/f3l/f398P39/fb9/f36/fv7/f349v79zbf+/aZ//v2NWf79i1f+/YtX/v2K - V//+jFj//otX//6RX//+oHX//tTA//7x6v/+/fz//v7+//39/f/9/f3+/f39/v39/f79+fb+/erh/v27 - nv79n3T+/ZVm/v2hd/79wKX+/eDU/f39/fz9/f35/Pz88/z8/Oz8/Pzj/Pz81Pz8/ML8/Pyu/f39lfv7 - +338/Pxj+/v7TPr6+jj4+Pgm////GO7u7g/f398Iv7+/BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CzMzMBeXl - 5Qrx8fES9/f3Ifr6+jP7+/tJ/Pz8Y/v7+3/7+/ua/Pz8s/z8/Mj8/PzZ/Pz85/39/e/9/f32/f39+v38 - +/398Or+/dK+/v2ke/79kF7+/YpW/v6LV/79ilf//otX//6NWf/+j13//qZ+//7Mtf/+9fD//v38//39 - /f/9/f3+/f39/v39/f79/Pz+/fn3/v3s5P793c/+/dbF/f3e0P397eX8/ff0+/39/fj8/Pzz/Pz87Pz8 - /OL8/PzU/Pz8wvz8/K37+/uW/f39fPr6+mT7+/tM+vr6N/j4+Cf19fUZ7e3tDt/f3wi/v78EAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAf39/AtTU1Abq6uoM9PT0F/j4+CX6+vo4/Pz8T/z8/Gj7+/uD+/v7nfz8 - /LT8/PzJ/Pz82vz8/Ob9/f3v/f399v39/fr9+/v8/ezk/v3Qu/79qIL+/ZNi/v2KVv79i1f+/YtX//6L - V//+jFf//pJi//6qhP/+zrf//vDp//36+P/9/f3+/f39/v39/f79/f3+/f38/v36+f799fH9/fPu+/31 - 8vr9+/n4/Pz89fz8/PH8/Pzq/Pz84Pz8/NP8/PzC/Pz8rfv7+5b7+/t9+vr6ZPv7+036+vo4+Pj4J/X1 - 9Rru7u4P39/fCL+/vwT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaqqqgPb29sH7e3tDvX1 - 9Rr5+fko+/v7PPz8/FL9/f1r+/v7hvz8/J78/Py1/Pz8yvz8/Nr8/Pzn/f398P39/fb9/f36/fv7/P30 - 8f79y7T+/aiC/v2QXf79i1f+/YtX/v2KV//+jFj//otX//6SYf/+pXz//tTA//3t5f/9+/r+/f39/v39 - /f79/f3+/f39/f39/fz9/f36/f39+Pz8/PX8/Pzy/Pz87fz8/Of9/f3e/Pz80fz8/MH8/Pys/Pz8lfv7 - +338/Pxj+/v7TPr6+jj4+Pgm9fX1Ge7u7g/f398Iv7+/BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAH9/fwK/v78E4+PjCfDw8BH29vYc+fn5K/v7+z78/PxU/Pz8bf39/Yb7+/uf/Pz8t/z8 - /Mr8/Pza/Pz85/z8/PH9/f32/f39+v38+/399PH+/dC6/v2jef79jVn+/YpW/v2LV/79ilf//otX//6M - V//+j1z//qJ3//3Puf/99PD+/f39/v39/f79/f39/f39/P39/fn9/f32/Pz88vz8/O38/Pzo/f394fz8 - /Nj8/PzN/Pz8vfz8/Kr7+/uT+/v7e/z8/GP7+/tL+vr6N/j4+Cb19fUZ7e3tDt/f3wi/v78EAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CzMzMBejo6Avx8fES9vb2Hfn5 - +S37+/s//Pz8Vfz8/G39/f2G+/v7n/z8/Lb8/PzJ/Pz82vz8/Of9/f3v/f399v39/fr9+/v8/ezk/f3Q - vP79pn3+/ZJh/v2KVf79i1f+/YtX//2KV//9i1j//ZBf//2pg//9zLX+/fXx/v37+v39/f38/f39+fz8 - /PX9/f3v/Pz86P39/eH8/PzY/Pz8zvz8/MP8/Py1/Pz8o/v7+5D7+/t5/Pz8Yvv7+0z6+vo3+Pj4J/X1 - 9Rru7u4P39/fCL+/vwT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAf39/AtTU1Abo6OgL8fHxEvb29h75+fkt+/v7P/z8/FX8/Pxt+/v7h/v7+5/8/Py2/Pz8yvz8 - /Nr8/Pzm/f397/39/fb9/f35/fv6+/3v6f39y7T+/aiC/v2SYP79ilb+/YtX/v2LV/79i1f+/YpV/v2R - YP79rIf+/ePX/v318vz9/f35/Pz89f39/e/8/Pzm/Pz83Pz8/ND8/PzE/Pz8t/z8/Kr9/f2Z/f39h/r6 - +nT6+vpf/Pz8Svr6+jf4+Pgm9fX1Ge/v7xDf398Iv7+/BP///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLMzMwF5eXlCvLy8hP29vYe+fn5LPv7 - +z/8/PxV/Pz8bf39/Yb7+/uf/Pz8tvz8/Mr8/Pza/Pz85/39/fD8/Pz1/f39+P38+/r99/T8/cy0/f2k - fP39i1j9/YtX/v2LV/79i1f+/YtX/v2JVf79mm/9/cy2/P3u5vr9/f32/f398Pz8/Of9/f3b/Pz8zPz8 - /Lz8/Pys/f39nPv7+437+/t8/Pz8avz8/Fj7+/tF+vr6NPj4+CX09PQX7e3tDt/f3wi/v78EAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38CzMzMBejo6Avy8vIT9vb2Hvn5+S37+/tA/Pz8Vfz8/G39/f2G+/v7n/z8/Lb8/PzJ+/v72f39 - /eX8/Pzs/Pz88v38/Pb8+/r4/e3m+f3QvPv9onn8/Y9e/f2JVf39ilf9/YpX/f2RX/z9qIH6/drK+fzy - 7fX9/f3w/Pz86Pz8/Nz8/PzM/Pz8uvz8/Kb7+/uS/f39f/z8/G78/Pxe+/v7Tvv7+z76+vow+Pj4I/T0 - 9Bft7e0O39/fCL+/vwQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AtTU1Abo6OgL8vLyE/b29h75+fkt+/v7P/z8 - /FX8/Pxt+/v7hvz8/J78/Pyz/Pz8xvz8/NX8/Pzf/Pz85/z8/O39/f3w/Pr58/zs5fX9zLj4/aqF+f2V - Zfr9jVr6/ZVn+v2ngfj9xKv2/O3l8/349u78/Pzn/Pz83fz8/M/8/Py8/Pz8pv39/Y79/f14/Pz8ZPz8 - /FP7+/tD+vr6Nvn5+Sr39/cf8/PzFe3t7Q7f398Iv7+/BP///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ - fwLMzMwF5eXlCvLy8hP29vYe+fn5LPv7+z/8/PxV/Pz8bPv7+4T8/Pyb+/v7sPz8/MH8/PzO/Pz82Pz8 - /N/9/f3l/f396fz7+u389fLx/M+68/yyj/X8onn1/LKR9PzKtPL949jv/Pv76/z8/OT9/f3b/Pz8z/z8 - /L78/Pyp+/v7kf39/Xj8/Pxh+/v7TPr6+jr5+fkt9/f3IvX19Rnw8PAR6OjoC9vb2we/v78EAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CzMzMBeXl5Qry8vIT9vb2Hvn5+Sz7+/s//Pz8U/r6 - +mr9/f2A/Pz8lfz8/Kj8/Py3/Pz8wvz8/Mz8/PzU/f392/v7++L8+/vn/Pby6/zw6e396uPu/O7p7f31 - 8un8+ffl/f393v39/db8/PzL/Pz8vfz8/Kv8/PyV+/v7ffz8/GL7+/tM+vr6OPn5+Sj29vYc8vLyFOvr - 6w3f398I1NTUBqqqqgMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AtTU - 1Abo6OgL8vLyE/b29h75+fks+/v7Pfz8/FH6+vpl/f39ePv7+4v7+/ua+/v7p/z8/LP8/Py9/Pz8x/z8 - /M/8/PzX/Pz73Pz7+t/8+vng/fz63vz7+9r8/PzT/Pz8y/z8/MD8/Py0/Pz8pfv7+5P7+/t++vr6Z/z8 - /E/6+vo6+fn5KfX19Rvx8fES6OjoC9vb2we/v78Ef39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLU1NQG5eXlCvHx8RL29vYd+fn5Kvr6+jr8/PxK/Pz8XPz8 - /G37+/t8+/v7iv39/Zb8/Pyj/Pz8rv39/bj8/PzC/Pz8yfz8/Mz8/PzO/Pz8zPz8/Mb8/Py+/Pz8tPv7 - +6f7+/ua/f39iv39/Xn8/Pxl/Pz8Ufv7+zz5+fkr9vb2HPDw8BHl5eUK1NTUBqqqqgMAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CzMzMBeXl - 5Qrw8PAR9fX1Gvj4+CX6+voy+/v7QPz8/E/8/Pxd/f39a/39/Xj7+/uG+/v7k/v7+5/8/Pyp/Pz8sfz8 - /Lb8/Py4/Pz8tfz8/K78/Pyl/f39mfv7+4z9/f19/Pz8bvz8/F77+/tN+/v7PPn5+Sv29vYe8vLyE+Xl - 5QrMzMwFf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAf39/AszMzAXl5eUK7u7uD/T09Bf39/ch+fn5K/r6+jf7+/tC+/v7Tvz8 - /Fv6+vpp/Pz8dfv7+4H7+/uM+/v7k/v7+5j7+/uZ+/v7l/r6+pH7+/uI/f39fP39/W/8/Pxh/Pz8U/v7 - +0X6+vo3+fn5Kvb29h7y8vIU6urqDNTU1AZ/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLMzMwF39/fCOvr - 6w3y8vIU9fX1G/j4+CP5+fks+vr6N/v7+0L7+/tO/Pz8Wfz8/GP6+vpt/Pz8c/39/Xf9/f14/f39dvr6 - +nH8/Pxp/Pz8X/z8/FT7+/tH+/v7O/r6+jD4+Pgl9fX1G/Ly8hPq6uoM29vbB6qqqgMAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAB/f38Cv7+/BNvb2wfo6OgL7+/vEPPz8xb29vYd+Pj4Jvn5+S/6+vo5+/v7Q/v7 - +0z8/PxU/Pz8Wfz8/F38/Pxe/Pz8XPz8/Ff8/PxQ+/v7Sfv7+z76+vo0+fn5Kvf39yH19fUZ8PDwEejo - 6Avb29sHv7+/BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////////////////////w - D//////////////AA/////////////8AAP////////////wAAD////////////gAAA////////////AA - AAf//////////+AAAAH//////////8AAAAD//////////4AAAAB//////////wAAAAA//////////gAA - AAAf/////////AAAAAAP////////+AAAAAAH////////8AAAAAAD////////wAAAAAAB////////gAAA - AAAA////////AAAAAAAAf//////+AAAAAAAAP//////4AAAAAAAAH//////wAAAAAAAAD//////gAAAA - AAAAB//////AAAAAAAAAA/////+AAAAAAAAAAf////8AAAAAAAAAAf////4AAAAAAAAAAP////wAAAAA - AAAAAH////gAAAAAAAAAAD////AAAAAAAAAAAB////AAAAAAAAAAAB///+AAAAAAAAAAAA///+AAAAAA - AAAAAAf//8AAAAAAAAAAAAP//8AAAAAAAAAAAAH//4AAAAAAAAAAAAD//4AAAAAAAAAAAAB//gAAAAAA - AAAAAAA//AAAAAAAAAAAAAAf8AAAAAAAAAAAAAAf8AAAAAAAAAAAAAAf4AAAAAAAAAAAAAAP4AAAAAAA - AAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAA - AAAAAAADgAAAAAAAAAAAAAADgAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAA - AAAAAAAHwAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAP4AAAAAAAAAAAAAAP8AAAAAAAAAAAAAAf8AAAAAAA - AAAAAAAf+AAAAAAAAAAAAAA/+AAAAAAAAAAAAAB//AAAAAAAAAAAAAD//gAAAAAAAAAAAAH//wAAAAAA - AAAAAAP//4AAAAAAAAAAAAf//8AAAAAAAAAAAA///+AAAAAAAAAAAB////AAAAAAAAAAAD////gAAAAA - AAAAAH////wAAAAAAAAAAP////4AAAAAAAAAAf////8AAAAAAAAAA/////+AAAAAAAAAB//////gAAAA - AAAAD//////wAAAAAAAAH//////8AAAAAAAAP//////+AAAAAAAAf//////+AAAAAAAA////////AAAA - AAAB////////gAAAAAAD////////wAAAAAAH////////wAAAAAAP////////4AAAAAAf////////8AAA - AAA/////////+AAAAAB//////////AAAAAD//////////gAAAAP//////////wAAAA///////////4AA - AB///////////8AAAD///////////+AAAH////////////gAAP////////////4AAf////////////+A - B//////////////gH///////////////////////////////////////KAAAAIAAAAAAAQAAAQAgAAAA - AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAaqqqgPMzMwF29vbB+Xl5Qrt7e0O8vLyE/X19Rn39/cg+Pj4J/n5 - +S/6+vo3+/v7P/v7+0f8/PxP/Pz8V/z8/F78/Pxk/Pz8Z/z8/Gr8/Pxq/Pz8Z/z8/GT8/Pxe/Pz8V/z8 - /E/7+/tH+/v7P/r6+jf5+fkv+Pj4Jvf39yD19fUZ8vLyFO7u7g/o6OgL29vbB7+/vwSqqqoDf39/AgAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/f38Cv7+/BNvb - 2wfl5eUK7e3tDvLy8hP19fUZ9/f3IPj4+Cf5+fkv+vr6OPv7+0H7+/tJ/Pz8Uvz8/Fr8/Pxh/Pz8aPz8 - /G76+vpy+vr6dPr6+nT6+vpy/Pz8bvz8/Gj8/Pxh/Pz8Wvz8/FL7+/tJ+/v7Qfr6+jj5+fkv+fn5KPf3 - 9yD19fUa8vLyFO7u7g/o6OgL29vbB8zMzAWqqqoDf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAB////AszMzAXf398I6OjoC+/v7xDz8/MW9vb2HPj4+CT5+fks+vr6Nfv7 - +z77+/tI/Pz8Uvz8/Fv8/Pxk/Pz8bPz8/HP9/f16+/v7gP39/YP7+/uF+/v7hf39/YP7+/uA/f39evz8 - /HP8/Pxs/Pz8ZPz8/Fv8/PxS+/v7SPv7+z76+vo2+fn5Lfj4+CX29vYd9PT0F/Dw8BHq6uoM39/fCNTU - 1Aa/v78Ef39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr - 6w3x8fES9PT0GPf39yD5+fko+vr6Mvv7+zz7+/tG/Pz8Ufz8/Fv8/Pxl/Pz8bvr6+nf9/f1+/f39hfv7 - +4z7+/uR/Pz8lPz8/JX8/PyV/Pz8lPv7+5H7+/uM/f39hf39/X76+vp3/Pz8bvz8/GX8/Pxb/Pz8Ufv7 - +0f7+/s9+vr6M/n5+Sr39/ci9fX1G/Ly8hTu7u4P6OjoC9/f3wjMzMwFqqqqA39/fwIAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAB/f38CzMzMBd/f3wjq6uoM8fHxEvX19Rn39/ci+fn5LPr6+jb7+/tB+/v7Tfz8 - /Fn8/Pxk/Pz8bv39/Xn9/f2B+/v7ivv7+5D7+/uX+/v7nPz8/KH8/Pyj/Pz8pfz8/KX8/Pyj/Pz8ofv7 - +5z7+/uX+/v7kPv7+4r9/f2B/f39efz8/G78/Pxk/Pz8Wfv7+077+/tD+vr6Ofn5+S/4+Pgm9vb2HfPz - 8xbw8PAR6urqDN/f3wjU1NQGqqqqA39/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf39/AszMzAXf398I6+vrDfLy - 8hP19fUb+Pj4JPn5+S/7+/s7+/v7R/z8/FT8/Pxh+vr6bv39/Xn7+/uE+/v7jvv7+5b7+/ud/Pz8o/z8 - /Kj8/Pyt/Pz8sfz8/LP8/Py0/Pz8tPz8/LP8/Pyx/Pz8rfz8/Kj8/Pyj+/v7nfv7+5b7+/uO/f39hP39 - /Xr9/f1v/Pz8Y/z8/Fj7+/tM+/v7QPr6+jX5+fkr9/f3IvX19Rvy8vIU7e3tDuXl5Qrb29sHv7+/BH9/ - fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAH9/fwK/v78E39/fCOrq6gzy8vIT9fX1G/j4+CX6+vow+/v7Pfv7+0v8/Pxa/Pz8aP39 - /Xb9/f2D+/v7j/v7+5n8/Pyj/Pz8qvz8/LH8/Py2/Pz8uvz8/L78/PzA/Pz8wvz8/MP8/PzD/Pz8wvz8 - /MD8/Py+/Pz8uvz8/Lb8/Pyx/Pz8qvz8/KP7+/ua/f39kP39/YX9/f16/Pz8bfz8/GD8/PxT+/v7Rvr6 - +jr5+fkv+Pj4Jfb29h3z8/MV7+/vEOXl5Qrb29sHv7+/BH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/f38CzMzMBd/f3wjt7e0O8vLyFPb2 - 9hz4+Pgm+vr6Mvv7+0D8/PxP/Pz8Xvz8/G79/f19/f39jPv7+5n8/Pyk/Pz8rvz8/Lb8/Py8/Pz8wvz8 - /Mb8+/vJ+fX1zPHo5s7hy8bP17u00Ne8tdDgysXP7eHdzvXv78z7+/nJ/Pz8xvz8/ML8/Py8/Pz8tvz8 - /K78/Pym/f39m/39/ZD9/f2D/f39dvz8/Gj8/Pxa+/v7Tfv7+0D6+vo0+fn5Kvf39yD09PQY8PDwEerq - 6gzf398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAf39/Ar+/vwTf398I6urqDPLy8hP19fUb+Pj4Jvr6+jL7+/tA/Pz8UPz8/GH8/Pxy+/v7g/v7 - +5P7+/ui/Pz8rvz8/Ln8/PzB/Pz8yfz8/M78/PzT+/v71vv6+djz7eva5dTO28Wcj9y0fm/dtX9x3cOZ - jdzdxb/b7eHf2vn399j7+/vW/Pz80/z8/M78/PzJ/Pz8w/z8/Lv8/Pyx/Pz8pvv7+5r7+/uM+/v7fv39 - /W/8/Pxg/Pz8Uvv7+0T6+vo3+fn5K/f39yH09PQY8fHxEujo6Avf398Iv7+/BH9/fwIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCO3t7Q7y8vIT9vb2Hfj4 - +Cb6+voz+/v7Qfz8/FH8/Pxi/Pz8dPv7+4b7+/uX/Pz8pvz8/LT8/Py//Pz8yfz8/NH8/PzX/f392/v7 - +9/49fTh7+Xi49O0q+S7iXvkqGhW5Z1WQuaeV0Pmp2RS5bR8bOTKpJrk59bS4/Tt6uH7+vrf/f392/z8 - /Nf8/PzS/Pz8y/z8/MP8/Py5/Pz8rvz8/KH9/f2T+/v7hfv7+3b6+vpn+fn5WPv7+0n7+/s7+fn5L/j4 - +CP19fUb8fHxEuvr6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAF/f38CzMzMBd/f3wjq6uoM8vLyFPX19Rv4+Pgm+vr6Mvv7+0H8/PxR/Pz8Y/z8/HX9/f2H+/v7mfz8 - /Kr8/Py5/Pz8xvz8/ND8/PzZ/Pz83/z8/OT8+/vn+vj46vHo5evhy8Xst4Jz7ZdMN+2QPijujDgf7ow4 - IO6OOyPukkIq7a1wX+3TtKrs6NjU6/j09Or7+vrn/Pz85Pz8/OD9/f3b/Pz81Pz8/Mv8/PzB/Pz8tvz8 - /Kj8/Pyb+/v7jPv7+3z9/f1r/Pz8W/v7+0v7+/s9+fn5L/j4+CT19fUa8fHxEurq6gzf398Iv7+/BH9/ - fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////AszMzAXf398I7e3tDvLy8hT29vYd+Pj4Jvr6 - +jP7+/tB/Pz8Uvz8/GP9/f12/f39iP39/Zr8/Pyr/Pz8u/z8/Mj8/PzU/Pz83Pz8/OP8/Pzo/Pz87fj1 - 9O/z6+nw07Oq8raBcvOhXEjzkkEr8489JvOOOiP0jjoj9I48JfOPPifznFM/865yYfPKo5fy6NjU8fTt - 6+/8/Pzt/Pz86vz8/Ob8/Pzg/Pz82fz8/NH8/PzH/Pz8u/z8/K78/Pyg+/v7kfv7+4D9/f1v/Pz8Xvv7 - +077+/s++vr6Mfj4+CX19fUb8vLyE+vr6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ - fwLMzMwF39/fCOvr6w3y8vIU9vb2HPj4+Cf6+voy+/v7Qfz8/FH6+vpk/f39dvv7+4n8/Pyb/Pz8rfz8 - /Lz8/PzL/f391vz8/OD8/Pzn/Pz87fv7+vH7+fn07+Xh9eDKxPe5hXb3l0s1+JJBKviOOyP4jzwl+I89 - JviPPSb4jz0l+I88JPiQPif4k0Mr+LJ4aPjZvLT3697a9vz8/PT8/Pzy/f397/z8/Ov9/f3l/f393v39 - /db8/PzM/Pz8wfz8/LT8/Pyl/Pz8lPv7+4P8/Pxx+vr6YPv7+077+/s/+vr6Mfj4+CX19fUb8vLyE+rq - 6gzf398Iv7+/BH9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wGqqqoDzMzMBd/f3wjr6+sN8vLyFPb29h34+Pgm+vr6M/v7 - +0H8/PxS/Pz8Y/39/Xb7+/uJ+/v7nPz8/K38/Py9/Pz8y/z8/Nf9/f3h/f396f39/e/8/Pzz+PX09vXu - 7PjVtq75tX5v+qBbSPuQQCn7jz0n+448JfuPPSb7jz0m+489JvuPPSb7jz0m+448JfuNOiP7p2VS+8Wb - kPvhzcf6/fz8+f39/ff8/Pz1/Pz88fz8/O38/Pzo/Pz84vz8/Nr8/PzQ/Pz8xPz8/Lb7+/un/f39lvv7 - +4X8/Pxz/Pz8Yfz8/FD7+/s/+vr6Mvj4+CX19fUb8vLyE+vr6w3f398IzMzMBX9/fwIAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8BqqqqA8zM - zAXj4+MJ6+vrDfLy8hT29vYc+Pj4J/r6+jL7+/tC/Pz8Ufr6+mT9/f12+/v7ifv7+5z8/Pyt/Pz8vfz8 - /Mv8/PzY/Pz84vz8/Or9/f3w+/r69fv5+fju4t/638nD+7qJevyYTDb9kkIr/Y05Iv2OOyT9jz0m/Y89 - Jv2PPSb9jz0m/Y88Jf2OPCX9kD8o/ZRFLv2rbVz9yJ6T/ePOyfz9/Pz8/fz8+/39/fn9/f33/Pz89P39 - /fD8/Pzr/f395fz8/N38/PzT/Pz8x/z8/Ln8/Pyp+/v7mf39/Yb8/Px0/Pz8Yfz8/E/7+/tA+vr6Mfj4 - +CX19fUb8vLyE+rq6gzf398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA////AaqqqgPMzMwF4+PjCe3t7Q7y8vIU9vb2HPj4+Cb6+voz+/v7Qfz8 - /FL8/Pxj/f39dvv7+4n7+/uc/Pz8rfz8/L38/PzL/Pz82Pz8/OL8/Pzq/f398Pz8/PX69/f49e7t+9W4 - sfyze2z9oVxI/ZE+KP6QPSb+jzwk/o88Jf6QPSb+kD0m/pA9Jv6QPSb+jzsk/o03IP6ZTDf+q2xc/sig - lv7o2NT+8+zq/v38/P79/f39/f39/P39/fr9/f34/Pz89fz8/PL8/Pzt/Pz85/z8/N/8/PzV/Pz8yPz8 - /Lr8/Pyr+/v7mfv7+4f8/Px0/Pz8Yfz8/FD7+/s/+vr6Mvj4+CX19fUb8vLyE+vr6w3f398IzMzMBX9/ - fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E1NTUBuPj - 4wnt7e0O8/PzFfb29h34+Pgn+vr6M/v7+0L8/PxR+vr6ZP39/Xb7+/uJ+/v7nPz8/K38/Py9/Pz8y/z8 - /Nj8/Pzi/Pz86v39/fD7+vr1+vj3+e7h3vvdxb39vIt+/ZlNOP6TQiz+jjki/o87JP6QPSb+kD0m/pA9 - Jv6PPSb/jzwl/447I/+PPCX/kT8o/qdlU/7HnZL+4cvG/vr39/79/Pz+/f39/v39/f79/Pz+/fz8/f39 - /fv9/f35/f399/z8/PP9/f3v/Pz86Pz8/OD9/f3W/Pz8yfz8/Lz8/Pyr+/v7mvv7+4f8/Px0/Pz8Yfz8 - /FD7+/tA+vr6Mfj4+CX19fUb8vLyE+vr6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAF/f38Cv7+/BNvb2wfl5eUK7e3tDvPz8xX29vYd+Pj4J/r6+jT7+/tC/Pz8Uvz8 - /GP9/f12+/v7ifv7+5z8/Pyu/Pz8vfz8/Mz8/PzY/Pz84vz8/Or8/Pzx/Pz89fv49/j17+372Lyz/bN7 - av6gWkb+kT4n/pA8Jv6PPCX+kDwl/pA9Jv6QPSb+jz0m/5A9Jv+POyT/jTcf/5E/Kf+bUj7/vIp8/ubU - z/717uz+/Pz8/v39/f79/f3+/fz8/v38/P79+/v+/fz8/f39/fv9/f36/f39+Pz8/PT9/f3v/f396f39 - /eH9/f3W/Pz8yvz8/Lv8/Pys/f39mfv7+4f8/Px0/Pz8Yfz8/FD7+/tA+vr6Mfj4+CX19fUb8vLyE+rq - 6gzf398Iv7+/BH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/f38CqqqqA8zMzAXf398I6OjoC+/v - 7xDz8/MW9/f3H/n5+Sn6+vo1+/v7Q/z8/FP8/Pxk/f39dvv7+4n7+/uc/Pz8rfz8/L38/PzL/Pz82Pz8 - /OL8/Pzq/Pz88fv7+vX69/f57uHd+9u/uP29jX7+nVM+/pNDLP6OOiP+jzsk/pA9Jv6QPSb+jz0m/489 - Jv+QPSX/jzsk/5A8JP+SPyj/n1hE/7aBcv/Ttaz/9O7t//37+/79/Pv++/Ty/vnr6P745uH+9+Hc/vfi - 3f735eH++e/t/fv39vz9+/v6/f39+Pz8/PT9/f3v/Pz86v39/eH8/PzX+/v7yvz8/Lz8/Pyr+/v7mvv7 - +4f8/Px0/Pz8Yfz8/FD7+/tA+vr6Mvj4+CX19fUb8vLyE+vr6w3f398IzMzMBX9/fwIAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAf39/AqqqqgPU1NQG39/fCOrq6gzw8PAR9PT0GPf39yD5+fkq+vr6Nvv7+0T8/PxU/Pz8Zf39 - /Xf7+/uK+/v7nPz8/K78/Py9/Pz8zPz8/Nj7+/vj+/v76/z8/PH8/Pz1+vj4+fXv7vvbv7j9s3pq/p9X - Qv6RQCn+jzwl/pA8Jf6QPCX+kD0m/pA9Jv6PPSb/kD0m/5A8Jf+NNx//kTwl/5tPOv+1fW7/28G5/+/k - 4f/6+Pf//fv7/v35+f735N/+8c7E/u/Btf7st6n+7bqs/u7Ctv702tT++e7r/fz49/z9/f37/f39+Pz8 - /PX8/Pzx/Pz86vz8/OL9/f3W/Pz8y/z8/Lv8/Pys/f39mfv7+4f8/Px0/Pz8Yfz8/FD39/dA+vr6Mfj4 - +CX19fUb8vLyE+rq6gzf398Iv7+/BH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E29vbB+Xl5Qrt7e0O8vLyFPX1 - 9Rv4+Pgj+fn5Lfr6+jn7+/tH/Pz8Vvz8/Gf9/f14/f39ivv7+538/Pyt/Pz8vvz8/Mv8/PzY/Pz84vz8 - /Or9/f3w+/v79fr49/ju4t/72Ly0/b2Nf/6fV0L+k0Ms/o87JP6POyT+kD0m/pA9Jv6QPSb+jz0m/5A9 - Jv+POyP/kDsk/5NAKf+fVkL/t4Fy/9Kwpv/u4t7/+PPx//rz8f/35eH/89TM/+7Btf/qrp/+6KaW/ueg - jv7nopD+6KmY/u6+sv7z08z++enl/fz29fz8+/r7/f39+Pz8/PX9/f3w/Pz86v39/eH8/PzX/Pz8yfz8 - /Lz8/Pyr+/v7mvv7+4f8/Px0/Pz8Yfz8/FD7+/tA+vr6Mvj4+CX29vYc8vLyE+vr6w3f398IzMzMBX9/ - fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38Cv7+/BNvb2wfl5eUK7+/vEPPz8xX29vYd+Pj4Jfr6+jD7+/s8+/v7Sfz8/Fj8/Pxp/f39ev39 - /Yz8/Pye/Pz8r/z8/L78/PzN/Pz82Pz8/OP8/Pzr/Pz88fz8/PX7+fn59vDv+93Gv/2ze2z+nVM//pFA - Kf6POyT+kDwl/pA9Jf6QPSb+kD0m/o89Jv+QPSb/kD0l/403H/+POiP/m045/7N4aP/bv7f/8efk//v3 - 9//79fP/+Onl//HJvv/opJL/5JeE/+KOef7jj3r+45B7/uKQev7jk37+5qCO/uy0pv701c7++evo/vv4 - 9/39/f37/f39+Pz8/PX8/Pzx/Pz86vz8/OL8/PzX/Pz8y/z8/Lz8/Pys+/v7mvv7+4f8/Px0/Pz8Yfz8 - /E/7+/s/+vr6Mfj4+CX19fUb8vLyE+rq6gzf398Iv7+/BH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf39/AszMzAXf398I6urqDPDw8BH09PQY9/f3IPn5 - +Sr6+vo0+/v7Qfv7+078/Pxd/Pz8bf39/X39/f2O+/v7n/z8/K/8/Py//Pz8zPz8/Nn8/Pzi/Pz86/39 - /fD8+/v1+vj3+O/j4fvXubL9vY1//qFaR/6TQy3+jzwl/o87JP6QPSX+kD0m/pA9Jv6PPSb/kD0m/487 - I/+POiP/k0Eq/55UQP+4gnP/0rCn/+ze2v/58vD/+vDt//ff2P/wxbn/6q2c/+WVgP/jj3r/4ot2/+KM - d//ijnj+4o54/uKPef7klYL+56KR/u26rf7z0cn++Ojk/vz29Pz8+/v7/f39+Pz8/PX9/f3w/Pz86vv7 - ++H8/PzX/Pz8yfz8/Lv8/Pyr/f39mfv7+4f8/Px0/Pz8Yfz8/FD7+/tA+vr6Mvj4+CX29vYc8vLyE+vr - 6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ - fwK/v78E39/fCOjo6Avx8fES9PT0GPf39yH5+fkr+vr6N/v7+0T8/PxS/Pz8Yfz8/HH7+/uC+/v7kvv7 - +6L8/Pyy/Pz8wfz8/M/8/Pza/Pz85Pz8/Ov8/Pzy/f399vv6+vn28O/74czG/bR9bv6aTjn+kT8o/o46 - I/6QPCX+kD0m/pA9Jv6QPSb+kD0m/pA9Jv+RPSb/jjgg/444IP+aTTf/r3Ni/9q9tf/07On/+/n4//z1 - 8//45N7/8MS4/+eciP/kkHv/44x2/+ONd//jj3n/4o54/+KOeP7ijnj+4o54/uKOef7jk37+5p6L/uy1 - pv7019D++ezp/vz5+f39/f37/f39+fz8/PX8/Pzx/Pz86vz8/OL8/PzX/Pz8y/z8/Lz8/Pys+/v7mvv7 - +4f8/Px0/Pz8Yfz8/E/7+/s/+vr6MPj4+CX19fUa8vLyE+jo6Avf398Iv7+/BH9/fwIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/f38CzMzMBd/f3wjr6+sN8fHxEvX19Rv4+Pgj+fn5L/v7 - +zv7+/tJ/Pz8V/z8/Gf6+vp3+/v7h/39/Zb8/Pym/Pz8tPz8/ML8/PzO/Pz82vz8/OP8/Pzr/Pz88fz8 - /PX6+Pf48ejl+9a5sf28jH3+ol1K/pNDLP6QPSb+jzsk/pA8Jf6QPSb+kD0m/o89Jv+QPSb/jzsj/445 - If+TQSv/nVI9/7iDdP/Tsqj/69zY//nz8f/68O3/9t7X/+/BtP/qqZf/5JN+/+OOeP/jjXf/4454/+OP - ef/jjnn/4o54/+KNeP/ijnj+4o54/uOQe/7kloL+6KOS/u26rP7z0cj++Onl/vv19Pz8/Pz7/f39+Pz8 - /PX9/f3w/Pz86v39/eH9/f3W/Pz8yfz8/Lv8/Pyr/f39mfv7+4f8/Px0/Pz8Yfz8/FD7+/tA+vr6Mvj4 - +CX29vYc8vLyE+vr6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/Ar+/ - vwTf398I6urqDPHx8RL19fUZ+Pj4JPn5+S/7+/s9+/v7S/z8/Fv9/f1r+/v7fPv7+4z7+/uc/Pz8q/z8 - /Ln8/PzG/Pz80vz8/Nz9/f3l/Pz87Pz8/PL8/Pz2/Pv6+fXu7Pvj0Mv9uIR0/ppPOv6RQCn+jjoi/o88 - Jf6QPSb+kD0m/pA9Jv6PPSb/kD0m/5E9Jv+OOSH/jTgf/5tPOv+ucGD/17iw//Ts6v/79/b//PXz//jk - 3v/wxrr/556L/+SPef/jjHb/4413/+OPef/jj3n/4495/+OPef/jj3n/4o54/+GNeP/ijnj+4o54/uKP - ef7klH/+5p6L/uy2qP712NH++Ovo/vz5+f39/Pz7/f39+fz8/PX8/Pzx/Pz86vz8/OL8/PzX/Pz8yvz8 - /Lz8/Pys+/v7mvv7+4f8/Px0/Pz8Yfz8/E/7+/s/+vr6MPj4+CX19fUa8vLyE+rq6gzf398Iv7+/BH9/ - fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9fX1G/Hx8SX6+vox+/v7Pvv7 - +078/Pxe+vr6b/v7+4D7+/uQ/Pz8oPz8/K/8/Py8/Pz8yfz8/NT8/Pzd/f395fz8/Oz8/Pzx/f399vv7 - +vn28vH72b62/b2Of/6kYU3+k0Ms/pA+Jv6POyT+kDwl/pA9Jv6QPSb+jz0m/5A9Jv+POyT/jjgg/5NB - Kv+aTzn/uIN0/9Szq//q2tb/+fPy//rv7P/339n/78Cz/+molv/llH//4454/+ONd//jjnj/4495/+OP - ef/jj3n/4495/+OPef/jj3n/4o54/+KNeP/ijnj+4o54/uORe/7klYD+6KSS/u25q/7y0cj++Orn/vv1 - 9Pz9/f37/f39+Pz8/PX9/f3w/Pz86v39/eH9/f3W/Pz8yvz8/Lv8/Pyr/f39mfv7+4f8/Px0/Pz8Yfz8 - /FD7+/s/+vr6Mvj4+CX19fUb8fHxEuvr6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/f38Cv7+/BN/f - 3wjq6uoM8vLyE/X19Rv4+Pgl+vr6MPv7+z/7+/tO/Pz8X/z8/HH7+/uD/Pz8lPz8/KX8/Py0/Pz8wfz8 - /M38/PzY/f394fz8/Oj9/f3u/Pz88/39/fb9/f36+vn4+/Ho5f3Cl4r+nlZB/pRELf6OOiL+jzwk/pA9 - Jv6QPSb+jz0m/489Jv+QPSb/kD0m/487JP+OOCH/nFI9/61wX//Us6v/9Ovp//r19P/89fP/9+Lc//HH - u//ooo//5JB5/+OMdv/jjXf/4495/+OPef/jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/4o54/+KN - eP/ijnj+4o54/uKPef7klX/+5p6L/u24qv712NH++Orm/vz6+f38+/v7/f39+fz8/PX8/Pzx/Pz86v39 - /eH8/PzX/Pz8yvz8/Lz8/Pyr+/v7mvv7+4f8/Px0/Pz8Yfz8/E/7+/tA+vr6MPj4+CX19fUa8fHxEurq - 6gzf398Iv7+/BH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABf39/AszMzAXf398I6+vrDfLy8hP29vYc+Pj4Jfr6+jL7+/s//Pz8UPz8 - /GH8/Pxz+/v7hfv7+5b7+/un/Pz8tvz8/MT8/PzQ/Pz82vz8/OP9/f3p/f397/z8/PP9/f33/f39+f39 - /fv28e/96dvW/riFdf6URCz+kT4n/o88JP6QPCX+kD0m/pA9Jv6PPSb/kD0m/488JP+OOSH/lEMt/5tP - O/+4hHX/1riv/+ra1v/69fT/+u/s//fh2v/vwLP/6aaV/+WVgP/jjnf/4454/+OOeP/jj3n/4495/+OP - ef/jj3n/4495/+OOeP/jjnf/4454/+OOeP/jjnj/4o54/+KNeP/ijnj+4o54/uORe/7klYD+6KST/uy3 - qf7y0cj++ezp/vv29Pz9/f37/f39+Pz8/PX9/f3w/Pz86v39/eH9/f3W/Pz8yvz8/Lv8/Pyr+/v7mfv7 - +4f8/Px0/Pz8Yfz8/FD7+/s/+vr6Mfj4+CT19fUa8fHxEurq6gzb29sHv7+/BH9/fwIAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOrq - 6gzy8vIT9fX1G/j4+CX6+vox+/v7QPz8/E/8/Pxh/Pz8dP39/Yb7+/uY/Pz8qfz8/Ln8/PzH/Pz80/z8 - /N39/f3l/Pz87Pz8/PH8/Pz1/f39+P39/fr9/f37/fz8/fTu7P7n1tH+tHxr/o46Iv6POyT+kDwl/pA8 - Jf6QPSb+jz0m/5A9Jv+QPSb/kj8o/5NDLP+iXEn/s3lp/9S0rP/z7Or/+fTy//z18//34dr/8ci8/+ml - kv/kkHn/4413/+ONd//jjnj/4495/+OPef/jj3n/4495/+SRfP/llH//5pmE/+ecif/mmYX/5ZWC/+SR - fP/jjnj/4o54/+KNeP/hjXj/4o54/uKPef7klYD+5p6L/u26rP702dH++Onl/vz5+P38+/v7/f39+Pz8 - /PX9/f3w/Pz86v39/eH8/PzX/Pz8yvz8/Lz8/Pyr+/v7mfv7+4f6+vp0/Pz8Yfv7+077+/s++fn5L/j4 - +CPr6+sZ8PDwEejo6AvU1NQGqqqqA39/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAF/f38CzMzMBd/f3wjr6+sN8vLyE/X19Rv4+Pgl+vr6Mvv7+z/8/PxQ/Pz8Yfz8 - /HT7+/uH+/v7mfz8/Kv8/Py6/Pz8yPz8/NT8/Pzf/Pz85/z8/O38/Pzy/f399v39/fn9/f37/f39/P39 - /f39/f3++PX0/u3h3v66iHj+k0Ms/pA9Jf6OOiL+jzwk/o89Jv+QPSf/kDwl/485Iv+aTTj/qWlX/8SY - jP/hysX/7uLf//r39v/68O3/+OTe//DBtP/ppZP/5ZaA/+ONd//jjnf/4454/+OPef/jj3n/4495/+OP - ef/jjnj/5piE/+ijkv/uuq3/8szC/+++sv/rrp//5pqG/+ONd//jjnj/4o54/+KNeP/ijnj+4o54/uOR - e/7klH/+6KSS/uy2p/7z0sn++e3p/vz29fz9/f37/f39+Pz8/PX9/f3w/f396f39/eH9/f3W/Pz8yvz8 - /Lv8/Pyr+/v7mf39/Yb6+vpz/Pz8X/v7+037+/s8+fn5Lvf39yH09PQX7u7uD+Xl5QrU1NQGqqqqAwAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf39/AszMzAXf398I6+vrDfLy - 8hP19fUb+Pj4Jfr6+jH7+/tA/Pz8T/z8/GH8/Px0+/v7h/v7+5r8/Pyr/Pz8vPz8/Mn9/f3W/Pz84Pz8 - /Oj9/f3v/Pz88/39/ff9/fz5/f37+/37+P39+vb+/fv5/v39/P77+fn+8+zr/sqkmf6nZlT+mUw2/pA8 - JP6PPCX/jzwl/5A8Jv+SQCr/lkcx/6prWf/EmYz/4MnD//v5+f/9/Pz//vv7//jk3v/yyr//6aiW/+SQ - ev/jjnf/4412/+OOeP/jj3n/4495/+OPef/jj3n/5JF7/+WUf//pp5b/77yw//XX0P/67On/9t3W//LJ - v//qq5r/5ZaB/+SRe//jjnj/4o54/+KNeP/hjXj/4o54/uKPef7kloD+5p2L/u27rf7018/++Ojk/vv3 - 9v38+/r7/f39+Pz8/PX9/f3w/f396f39/eH8/PzX/Pz8yfz8/Lv8/Pyq+/v7mP39/YT8/Pxw/Pz8Xfz8 - /Er6+vo6+fn5K/f39x/z8/MV7e3tDt/f3wjMzMwFf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAX9/fwK/v78E39/fCOrq6gzy8vIT9fX1G/j4+CX6+voy9/f3QPz8/FD8/Pxh/Pz8dPv7 - +4f9/f2Z/Pz8rPz8/Lv8/PzK/f391v39/eH9/f3p/f397/z8/PT9/f33/f39+v38+vv9+vX9/ffu/v30 - 5v79+PD+/fz6/v38+/759vb+5tXQ/s+sov6rbFr+k0Mt/5A+J/+POiP/jjki/5lLNv+qaVf/xpyQ/+jW - 0f/07er//f39//78/P/9+Pb/88zC/+qmlf/ml4L/4412/+OOd//jjnj/4495/+OPef/jj3n/4494/+OO - eP/lloH/6KCO/+/AtP/44dz/++7r//35+P/88/H/+Ofi//HHu//qrJr/5piC/+OOd//jjnj/4o54/+KN - eP/ijnj+4o54/uORe/7kk37+56OS/uy1pv7z08r++ezp/vz39fz9/f37/f39+Pz8/PX9/f3w/f396f39 - /eH9/f3W/Pz8yfz8/Lr8/Pyq+/v7lv39/YL8/Pxu/Pz8Wvv7+0j6+vo3+fn5Kfb29h3y8vIT6urqDNvb - 2we/v78Ef39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/f38CzMzMBd/f3wjY2NgN8vLyE/X1 - 9Rv4+Pgl+vr6Mfv7+0D8/PxQ/Pz8Yfz8/HT7+/uH+/v7mvz8/Kv8/Py8/Pz8yvz8/Nf9/f3h/f396f39 - /e/8/Pz0/f39+P38+vr9+fT8/fPk/f3qzv795L/+/d+y/v3kwP7969H+/fXo/v37+v728O7+59fT/8Wb - j/+qa1n/mk04/5RCLP+YSjT/qmpZ/8Wajv/fyMH/+fXz//79/f/+/v7//fj3//ru6//vvK7/5ZN+/+SP - ef/jjXb/4454/+OPef/jj3n/4495/+OPef/kj3n/5JB5/+mjkf/uu67/9dnR//z19P/++vr//v7+//7+ - /f/89/X/9uDZ//DHu//qqpn/5piD/+SRe//jjnj/4o54/+KNeP/ijnj+4o54/uKPef7kloL+5p+M/u27 - rv701c3++Ojk/vz49/z8+/r7/f39+Pz8/PT9/f3v/f396fz8/OD8/PzV/Pz8yPz8/Ln7+/un/Pz8lPv7 - +3/8/Pxq/Pz8Vvv7+0T6+voz+Pj4JfX19Rrw8PAR5eXlCtTU1AaqqqoD////AQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAf39/Ar+/vwTf398I6urqDPHx8RL19fUa+Pj4Jfr6+jH7+/tA/Pz8UPz8/GH8/Px0+/v7h/39 - /Zn8/Pys/Pz8u/z8/Mr9/f3W/f394fz8/Or9/f3w/Pz89f39/fj9/f37/fr1/P3z5f39477+/c+M/v3F - cv79vmD+/cRx/v3NiP795sX+/fz4/vz6+P728O//59XQ/8+rof+pZ1X/nVI9/6trWP/Fmo3/6NbR//bv - 7f/9/Pv//v7+//7+/v/78e7/9+Ha/+yxov/jjHX/4413/+OOeP/jj3n/4495/+OPef/jj3n/4454/+SQ - ev/lk33/7ban//fi2//78e7//vz8//79/f/+/v7//v7+//78/P/89vT/+Obh//DGu//qq5v/5ZWA/+ON - d//jjnj/4o54/+GNeP/ijnj+4o54/uOQe/7klH7+56KQ/uy0pv7z1Mz++e3p/vz49/z9/f37/f39+Pz8 - /PT9/f3w/Pz86Pz8/OD8/PzU/Pz8yPz8/Lb8/Pyk+/v7j/v7+3v6+vpm/Pz8Ufv7+z/5+fkv9/f3IvT0 - 9Bfu7u4P4+PjCczMzAWqqqoDAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E29vbB+rq6gzx8fES9fX1Gvj4 - +CT6+vox+/v7P/z8/FD8/Pxh/Pz8dPv7+4f7+/ua/Pz8q/z8/Lz8/PzJ/Pz81/39/eH8/Pzq/f398Pz8 - /PX9/f34/fz6+/369fz98d/9/eK8/v3SlP79wGf+/bhU/v2zR/79t1L+/b1g/v3Zpf/98uL//fny//z6 - +v/28O7/59XQ/8iekv++jYD/y6SY/9/Gv//38e///v38//7+/v/+/v7//v7+//rt6v/12tL/662d/+OK - c//jjXf/4495/+OPef/jj3n/4495/+OPef/jjnj/5JF7/+WWgP/vv7L/+/Hu//36+f/+/v7//v7+//7+ - /v/+/v7//v7+//7+/f/89fP/9uDa//HGu//qqZj/5pmE/+SRe//jjnj/4o54/+KNeP/ijnj+4o54/uKP - ef7kloL+56GP/u28r/7z1Mz++Onl/vz39vz8+/r7/f39+Pz8/PT9/f3v+/v76P39/d78/PzT/Pz8w/z8 - /LP7+/uf+/v7i/z8/HX8/Pxh+/v7Tfv7+zv5+fks9/f3IPPz8xbu7u4P4+PjCczMzAV/f38CAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38CqqqqA9TU1Abl5eUK8PDwEfT09Bj4+Pgj+fn5L/v7+z78/PxP/Pz8YPz8/HP7+/uH+/v7mvz8 - /Kz8/Py7/Pz8y/39/db8/Pzi/Pz86vz8/PH8/Pz1/f39+P39/fv9+vb9/fTn/v3kwP79zYf+/cBl/v23 - Uf79tUv+/bRJ/v2zSP79s0j+/c2I//7mxP/+9Ob//v7+//38/P/59PP/7uLf/+ze2v/y6OX/9/Lw//38 - +//+/v7//v7+//7+/v/+/v7/+evo//TWzv/rrJz/44t0/+OOd//jj3n/4495/+OPef/jj3n/4454/+ON - d//kknz/5pmE//DDt//89vX//vz8//7+/v/+/v7//v7+//7+/v/+/v7//v7+//78/P/89/b/+OXg//DF - uf/qqpn/5ZN+/+OOd//jj3n/4o54/+KOeP7ijnj+4o54/uOQev7klH7+56GP/uy0pv701s7++e3q/vv4 - 9/39/f37/f39+Pz8/PT9/f3u/Pz85vz8/N38/PzP/Pz8wfz8/K78/Pyb/f39hfz8/HD8/Pxc+/v7Sfr6 - +jj5+fkq9vb2HvPz8xXt7e0O4+PjCczMzAV/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaqqqgPMzMwF4+PjCe7u7g/09PQX9/f3Ifn5 - +S77+/s8+/v7Tfz8/F/8/Pxy+/v7hvv7+5n8/Pyr/Pz8vPz8/Mn8/PzX/f394fz8/Or9/f3w/Pz89f39 - /fj9/Pr7/fn0/P3w3/794rz+/dKU/v3BaP79uVT+/bVL/v20Sf79tEr+/bJH//2yRv/+yX3//t+y//7x - 3v/+/v7//v7+//38/P/69vX/+fX0//z6+f/9/fz//v7+//7+/v/+/v7//v7+//7+/v/78e7/9+Da/+23 - qf/llYD/5JJ8/+OPef/jj3n/4495/+OPef/jj3n/4454/+OQev/klH7/7LWm//bd1//67+v//v39//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//79/f/78/H/99/Z//HGu//qqZj/5pqG/+SQef/jjnj/4o54/+KN - eP/ijnj+4o54/uOQev7kloL+56KR/u28r/7z08v++Orm/fv29fz9/Pv6/f399/z8/PP8/Pzs/f395fz8 - /Nn8/PzN/Pz8u/z8/Kr8/PyV+/v7gfz8/Gz8/PxY+/v7Rvr6+jb5+fko9vb2HfLy8hTt7e0O39/fCMzM - zAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABv7+/BNvb2wfr6+sN8vLyFPb29h75+fkq+vr6Ofz8/Er8/Pxd+vr6cfv7+4X7+/uY/Pz8q/z8 - /Lv8/PzL/Pz81/z8/OL8/Pzq/Pz88fz8/PX9/f35/f39+/369/398+f+/eXE/v3NiP79vmP+/bdQ/v21 - Sv79tEr+/bRK/v20Sv79tEn//rRJ//7Gdf/+2aP//u/Y//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//349//67uv/8MS5/+ihj//ll4L/45B5/+OPef/jj3n/4495/+OP - ef/jj3n/4454/+ONd//oopD/772w//bc1v/+/Pv//v39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79 - /f/9+vn/+OTg//DEuf/qqZj/5JF6/+OOd//jj3n/4o54/+KOeP7ijnj+4o54/uKPef7klH7+5qCM/uy2 - pv7z2ND++e7r/fz5+Pz9/f35/f399/z8/PL8/Pzs/Pz84vz8/Nj8/PzI/Pz8uPz8/KX7+/uR/f39fPz8 - /Gj8/PxV+/v7RPr6+jT4+Pgn9vb2HPLy8hTq6uoM39/fCL+/vwR/f38CAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF4+PjCfDw8BH19fUZ+Pj4Jvr6 - +jT7+/tG/Pz8WPr6+m39/f2B+/v7lvz8/Kj8/Py6/Pz8yf39/db8/Pzg/f396f39/e/8/Pz1/f39+P38 - +/v9+fP8/fHg/v3huf790ZP+/cFq/v25VP79tUz+/bRJ/v20Sv79tEr//bRK//60SP/+tEj//sl7//7d - rf/+8Nz//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vz7//z2 - 9f/229X/78G1/+qpmP/lmIP/5JJ9/+OPef/jj3n/4495/+OPef/jjnj/4454/+WYg//ppJL/78C0//be - 1//67+v//v39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/78vD/9+Db//HGu//qqZf/5pqG/+OO - eP/jjnj/4o54/+KNeP/ijnj+4o54/uOQev7kloD+56SR/u27rv7y08v++ezp/fz49/v9/Pz5/Pz89fz8 - /PH9/f3p/Pz84Pz8/NP8/PzF/Pz8s/z8/KH7+/uO/f39evz8/Gb8/PxU+/v7Q/r6+jT4+Pgn9vb2HfLy - 8hTt7e0O39/fCMzMzAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABf39/Atvb2wfq6uoM8/PzFff39x/5+fku+/v7Pvz8/FL6+vpn/f39fPv7+5L7+/un/Pz8uPz8 - /Mj9/f3W/Pz84v39/en9/f3w/Pz89f39/fn9/f37/fv4/f3z5v7958f+/c6K/v29X/79t1D+/bRJ/v20 - Sv79tEr+/bRK/v20Sv/+tUv//rRI//6zSP/+y4L//uK5//7y4f/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v39//zy8P/44t3/772x/+ihj//lloL/45B6/+OP - ef/jj3n/4495/+OPef/jj3n/4454/+ONdv/ppJH/7r2v//be1//9+/r//v38//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//79/f/+/Pz/+OTf//DDt//qqJf/5I94/+OOeP/jj3n/4o54/+KOeP7ijnj+4o54/uKP - eP7klH3+5p6L/uy4qv713tn++/Lw/Pz7+/v9/f34/Pz89f39/e/8/Pzo/Pz83fz8/NH8/PzC/Pz8svv7 - +5/7+/uM+/v7ePz8/GT8/PxS+/v7Qvr6+jL4+Pgm9fX1G/Ly8hPq6uoM39/fCL+/vwR/f38CAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wLMzMwF5eXlCu7u7g/19fUa+Pj4Jvr6 - +jb7+/tI/Pz8Xvr6+nT9/f2K/Pz8oPz8/LT8/PzE/Pz80/z8/N/9/f3p/f397/z8/PX9/f34/fz8+/35 - 8/z98uL+/eG5/v3Rkf79wmv+/bhT/v21TP79tEn+/bRK/v20Sv/9tEr//rRK//60Sf/+vFz//sVy//7c - qv/+8N3//vnw//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//fn4//vw7f/12dL/78G1/+mol//lmIT/5JJ9/+OPef/jj3n/4495/+OPef/jj3j/4454/+aY - g//ppJD/78G0//bc1f/77+z//v39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/78e//9+Lc//HG - u//qqJf/5pqG/+OOd//jjnj/4o54/+KNeP/ijnj+4o54/uOQev7klH/+6amZ/vHLwf735N/9/Pn4/P39 - /fr9/f33/Pz88/39/e79/f3l/f392/z8/M78/PzA/Pz8r/v7+539/f2K/f39d/z8/GT8/PxS9/f3Qvr6 - +jP4+Pgm9vb2HfLy8hPt7e0O39/fCMzMzAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38Cv7+/BNvb2wfq6uoM8vLyE/f39x/5+fks+/v7P/z8/FL8/Pxp/f39gPv7+5j8/Pyt/Pz8wPz8 - /ND9/f3e/Pz85/39/fD8/Pz0/f39+f38+/v9+/j9/fPk/v3oyP790I3+/b1g/v23Uf79tEn+/bRK/v60 - Sv79s0r//bRK//61Sv/+tUv//rZN//7GdP/+157//uvQ//79+//+/v3//v7+//7+/v/+/v3//vz8//77 - +//++/r//vz7//79/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vz8//vx7//239n/7ryv/+ij - kf/ll4L/5JF7/+OQev/jj3n/4495/+OPef/jj3n/4453/+SOdv/ppZP/776x//ff2f/9+Pf//vz7//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//79/f/+/Pz/9+Hc//DCt//qqJf/5JF6/+SQef/jj3n/4o54/+GN - eP/ijnj+4o13/uKMdv7mnIr+7bqu/vTY0f779vX+/f39/P39/fr9/f32/Pz88/z8/Oz9/f3l/Pz82vz8 - /M78/Py//Pz8r/v7+537+/uK/f39dvz8/GP8/PxR+/v7Qfr6+jL4+Pgm9fX1G/Ly8hTq6uoM39/fCMzM - zAV/f38CAAAAAQAAAAAAAAAAAAAAAQAAAAH///8B////Ar+/vwTb29sH5eXlCvDw8BH09PQY+Pj4Jfr6 - +jP7+/tH/Pz8W/z8/HP7+/uL+/v7ovz8/Lf8/PzK/Pz82Pz8/OT8/Pzt/Pz89P39/ff9/f36/fnz/P3z - 5f794bn+/dCP/v3CbP79uFP+/bZN/v20Sf79tEr+/bRK//20Sv/+tEr//rRJ//68XP/+xnT//tmj//7t - 0//+9ur//v79//7+/v/+/v7//v38//349v/67Oj/+OXf//fi3P/56eX//Pf1//78+//+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v3//fn4//rv7P/12dL/78K1/+mnlv/mmIT/5JJ8/+OPef/jj3n/4495/+OP - ef/jj3j/4494/+aYg//ppJL/78G0//bb1P/78O3//v39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79 - /f/78e//+OPe//HFuv/qqJf/5pqF/+OOd//jjnj/4o54/+KNeP/ijXf+4ot1/uadi/7uv7P+9dzW/vz3 - 9v79/f39/f39+/39/fn9/f32/Pz88fz8/Ov8/Pzi/Pz82fz8/Mz8/Py+/Pz8rfv7+5z7+/uJ/f39dvr6 - +mT8/PxS+/v7Qfr6+jP4+Pgm9vb2HPLy8hPr6+sN39/fCMzMzAX///8CAAAAAQAAAAB/f38Cf39/Aqqq - qgPMzMwF29vbB+Xl5Qrt7e0O8/PzFvb29h75+fks+/v7O/z8/E/8/Pxl/f39ffz8/JX8/Pys/Pz8wPz8 - /NL8/Pzf/Pz86vz8/PH9/f33/fz7+v37+fz98uL9/ejI/v3Rkf79vWH+/bhS/v20Sf79tEr+/bNK//2z - Sv/9tEr//rVK//62Tf/+t1H//sZ0//7Yn//+6s3//v36//7+/f/+/v7//v7+//78/P/89vT/+erm//TW - zv/xyr//8ca7//PSyf/55+P//PTx//78/P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vv6//vx - 7v/23db/7ryu/+mlk//ll4P/5JF8/+OQev/jj3n/4495/+OPef/jj3n/4454/+SRev/pppX/77+y//ff - 2f/89fT//vv7//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/+/Pv/9+DZ//DDt//qqZf/5ZN+/+SQ - ev/jjnj/4o13/+KNeP/ij3v/6KSU/vDIvv73497+/Pn4/v39/f79/f39/f39+/38/Pn8/Pz1/Pz88fz8 - /Or8/Pzj/Pz82Pz8/Mz8/Py+/Pz8rfv7+5z7+/uJ/f39dvz8/GP8/PxR+/v7Qfr6+jL4+Pgm9fX1G/Ly - 8hPq6uoM39/fCL+/vwR/f38CAAAAAb+/vwTMzMwF29vbB+Pj4wnq6uoM8PDwEfPz8xb29vYe+Pj4J/r6 - +jX7+/tF/Pz8Wfz8/G77+/uH/Pz8nvz8/LT8/PzH/Pz82Pz8/OT9/f3u/Pz89P39/fn9+fT7/fXq/f3h - u/79z43+/cJs/v24Uv79tk3+/bRK/v20Sv79tEr//bRK//60Sv/+tEj//rta//7GdP/+2aL//u3U//72 - 6v/+/v3//v7+//7+/v/+/v3//Pf1//bf2P/xx7z/66+g/+ijkf/ooo//666d//DCtv/22tP//PXz//78 - +//+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/f3//fn4//ru6//22tP/8MK2/+mmlP/mmIT/5JF7/+OP - ef/jj3n/4495/+OPef/jj3j/5JB5/+aXgv/ppJL/78C0//Xa1P/78e///v39//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//79/f/78u//+OTf//HGuv/qqpn/5piE/+OMdf/ijHX/45J9/+aikP/uvbH+9uDa/vvy - 7/79+/v+/f39/v38/P78+/v9/Pv6+/38/Pj8/Pz1/f398Pz8/Ov8/Pzi/Pz82Pz8/Mv8/Py9/Pz8rfv7 - +5z7+/uJ/f39dvz8/GP8/PxR+/v7QPr6+jL4+Pgl9fX1G/Hx8RLq6uoM29vbB7+/vwSqqqoD1NTUBt/f - 3wjo6OgL7u7uD/Ly8hP19fUZ9/f3H/n5+Sj6+vox+/v7QPz8/FD8/Pxk+/v7efv7+5D8/Pym/Pz8u/z8 - /M38/Pzd/Pz86Pz8/PH9/fz2/fz6+v3y4/z96Mr9/dKU/v29Yf79uFT+/bRJ/v20Sf79s0r//bNK//20 - Sv/+tEr//rZN//65U//+xnP//tif//7qy//++/f//v78//7+/v/+/v7//v7+//37+//67+z/8cm+/+mq - mf/llYH/44t1/+OMdf/lloD/6aST//DBtf/4493/+/Hv//79/P/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//vr5//vx7v/229T/7ruu/+mnlf/ll4L/5JJ8/+OPef/jj3n/4495/+OPef/jj3n/4453/+WT - ff/pp5b/78C0//ff2f/78/H//fv6//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/9+vj/9+DZ//DG - uv/qrJz/5puH/+eciP/pppT/7byv//TWzv768e/+/fv7/v39/f79/Pz+/Pr6/vPr6f7q3dj98ejl+/fz - 8fn6+Pf1/Pz88fz8/Or8/Pzi/Pz82Pz8/Mv8/Py9/Pz8rfz8/Jv9/f2I/Pz8dfz8/GL8/PxQ+/v7P/n5 - +S/4+Pgj9PT0GPDw8BHl5eUK1NTUBr+/vwTl5eUK6urqDPDw8BHz8/MW9vb2Hfj4+CT5+fkr+vr6Nfv7 - +z/7+/tO/Pz8Xfr6+nH7+/uF+/v7mvz8/K/8/PzC/Pz80/39/eH8/Pzr/Pz88/37+Pj9+PH7/eTA/f3P - i/39wmz+/bdR/v22Tf79tEr+/bRK/v2zSv/9tEr//rRK//60SP/+ulj//sZ0//7YoP/+7dT//vfr//79 - /P/+/v7//v7+//7+/v/+/v3//ff1//jl4P/staf/5ZaB/+SQe//jjnj/4454/+SRe//llYD/6aeW/+++ - sv/22tT//fj3//78+//+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/f3//fr5//ru6//229T/78G1/+ik - kv/lmIT/5JB6/+OPef/jj3n/4495/+OPef/jj3j/5JB6/+WWgf/ppZP/78C0//Xb1P/78/H//v39//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//79/P/78/H/+ejj//TUzP/xx73/8srA//PSyf/24tz/+u/s/vz5 - +P79/f3+/f39/vz6+f759fT+3cS9/r+Rg/7UtKv96NfT+/Xt6/j8/Pz1/Pz88fz8/Or8/Pzi/Pz82Pz8 - /Mv8/Py9/Pz8rf39/Zr9/f2H+vr6dPz8/GD7+/tO+/v7PPn5+S739/cg9PT0F+3t7Q7j4+MJ1NTUBu3t - 7Q7x8fES9PT0GPf39yD5+fko+vr6Mfr6+jr7+/tF/Pz8UPz8/F76+vpt+/v7f/v7+5H8/Pyl/Pz8uPz8 - /Mr8/PzZ/f395f39/e78/Pz1/ffu+f3v2/z92KH9/b1h/v24VP79tEn+/bRJ/v60Sv79tEr//bRK//61 - Sv/+t07//rpY//7GdP/+2J///unJ//768v/+/vz//v7+//7+/v/+/v7//v7+//79/f/89PL/9+DZ/+qs - m//jjHb/4454/+OPef/jj3n/4494/+OOeP/ll4P/6KSS//DCtv/4493/+/Du//78/P/+/v3//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//fn4//vw7f/12dL/7ruu/+molv/ll4L/5JJ9/+OPef/jj3n/4495/+OP - ef/jj3n/4453/+WVf//pqJb/78C0//fg2v/78u///vv7//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ - /f/9+vn/+u7r//nm4v/56OX/+u7r//z39v/8/Pv//f39/v39/f79/Pz+8ujm/uTQy/7Dl4v+olxJ/reD - c/7NqZ/949DL+/bv7vn6+Pf1/Pz88fz8/Or8/Pzi/Pz82Pz8/Mv8/Py8/Pz8q/v7+5n7+/uF+vr6cfz8 - /F37+/tJ+vr6Ofn5+Sn29vYd8vLyE+rq6gzf398I8vLyFPX19Rn39/ch+fn5K/r6+jb7+/tB+/v7S/z8 - /Ff8/Pxj/Pz8cP39/X77+/uP+/v7n/z8/LH8/PzC/Pz80f39/d79/f3p/Pz88f39/ff98d/6/eK5/P3M - hP39tk3+/bVK/v20Sv79tEr+/bNK//20Sv/+tUr//rRI//66V//+yHn//tmk//7u1v/++O7//v37//7+ - /v/+/v7//v7+//7+/v/+/v7//v39//zz8f/23tj/6qub/+OMdv/jjnj/4495/+OPef/jj3n/4495/+SR - e//klH//6aeW/++9sP/23NX//fj4//78+//+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/f3//fv6//ru - 6//23db/78G1/+iikP/lmIP/45B6/+OPef/jj3n/4495/+OPef/jj3n/5JB6/+WUf//ppJP/8MG0//bc - 1P/89vT//v39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/9+vn//fj3//349//9+vn//v38//39 - /f/9/f3//Pv7/vv4+P7fyML+vYx+/qdkUv6SQSv+m1E8/qhnVf7KpJn96NfT+/Tt7Pn8/Pz1/f398Pz8 - /Or8/Pzi/Pz81/z8/Mr8/Py7/Pz8qvv7+5b7+/uB/Pz8bPz8/Ff7+/tE+vr6Mvj4+CT09PQY7u7uD+Xl - 5Qr19fUa9/f3IPn5+Sv6+vo4+/v7Rfz8/FL8/Pxf/f39a/v7+3j7+/uF+/v7kvz8/KD8/Pyu/Pz8vvz8 - /Mz8/PzZ/Pz85Pz8/O38/Pzz/f39+P3u2Pv826j9/cZ3/v2zRv79s0f+/bRK/v20Sv/9tEr//rVL//61 - Sv/+tEj//rxa//7OiP/+4rn//vfs//7+/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/f3//Pb0//jk - 3v/stKX/5ZWA/+SRe//jj3j/4495/+OPef/jj3n/4494/+OOeP/lmIT/6KSS//DDt//34Nv/+/Dt//78 - /P/+/v3//v7+//7+/v/+/v7//v7+//7+/v/+/v7//fn4//vx7v/12NH/7ryu/+mol//lloH/5JN9/+OP - ef/jj3n/4495/+OPef/jj3n/4453/+aWgf/qqJb/8MK1//fh2v/78e7//vz7//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f39//z7+v/x6OX/4s3I/8Waj/6kX0z+l0o0/o04 - If6QPSf+lkkz/rF4aP7Mppz949HL+/bv7fj59/f1/f398Pz8/Or9/f3h/f391vz8/Mj8/Py4/Pz8pfv7 - +5D9/f16/Pz8ZPz8/E/7+/s7+fn5K/b29h3y8vIT6+vrDff39yH5+fko+vr6Nvv7+0X8/PxV/Pz8ZPz8 - /HP9/f2A+/v7jvv7+5r8/Pym/Pz8svz8/L78/PzL/f391v39/eH9/f3p/Pz88f39/fb9/f35/e7X+/3Z - pP39xXX+/bNI/v2zSP79s0r//bRK//61S//+tUv//rVK//60R//+vVz//tCN//7kvf/++O7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/++vn/+uzp//DDt//opJL/5JWA/+OOeP/jj3n/4495/+OP - ef/jj3n/4495/+ORev/kk33/6aeV/++8sP/23df//fj4//78/P/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/f3//vz7//ru6//33tj/78Cz/+igjv/ll4P/45B6/+OPef/jj3n/4495/+OPef/jj3n/5JB6/+WS - ff/ppZL/8MG0//bd1v/9+ff//v79//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/9/Pv/+vf2/+HLxf+9jX//p2RR/pNBKv6QPSb+jz0l/pA9Jf6RPyf+mUw3/qhnVf7Np5396djU+/bx - 7vn8/Pz1/f398P39/en8/Pzg/Pz80/z8/MX8/Pyy+/v7n/v7+4j8/Pxx/Pz8Wvv7+0X6+voz+Pj4I/T0 - 9Bfw8PAR+fn5KPr6+jH7+/tB/Pz8Uvz8/GT8/Px1+/v7hvz8/JT6+vqi/Pz8rfz8/Lj8/PzC/Pz8zP39 - /db8/Pzf/Pz85/39/e78/Pz0/f39+P39/fv98eH8/eG6/v3Nif79uFT+/bVO//20Sv/+tUv//rVL//61 - S//+tUr//rVJ//67WP/+yX3//tqk//7rz//+9un//v36//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79 - /P/89PL/9dnS/++/sv/opZP/5ZaB/+ORe//jj3n/4495/+OPef/jj3n/4494/+OOeP/lmIT/6aWT//DD - t//339j/+/Dt//78/P/+/v3//v7+//7+/v/+/v7//v7+//7+/v/+/v7//fj3//vw7v/119D/772w/+qp - mP/mmIP/5JN9/+OPef/jj3n/4495/+OPef/jj3j/4453/+aXg//qqJb/8MS3//jk3v/78vD//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v3//fv7//Lp5v/gycP/xZqO/6ZjUP+YSzX/jzsj/o87 - JP6QPSb+kD0l/pA8Jf6RPyj+mU04/rR7bP7NqJ7949HM+/Ps6vj6+Pf0/f397vz8/Of9/f3b/Pz8zvz8 - /L38/Pyq+/v7k/v7+3z8/Pxk+/v7Tfr6+jr5+fkp9vb2HPPz8xX5+fkv+vr6Ofv7+0v8/Pxf/Pz8c/39 - /YX7+/uY/f39pvz8/LX8/Py//Pz8yfz8/NL8/Pza/f394fz8/Oj9/f3u/Pz88/39/ff9/f35/f39/P32 - 7v397tj+/dei/v2/Zf79uVf//rZL//62S//+tUv//rVL//61S//+tUv//rhT//7AZf/+y4H//tql//7q - zP/++vT//v79//7+/v/+/v7//v7+//7+/v/+/v7//v7+//78+//88/H/99/Z/+25q//noI3/5JN+/+OO - eP/jj3n/4495/+OPef/jj3n/4495/+OPev/kkXz/6aaU/+69r//34Nr//fj4//78/P/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v38//vv7P/34Nr/77+z/+iikP/mmIP/45B5/+OPef/jj3n/4495/+OP - ef/jj3n/5I95/+SQev/qqJf/8ci9//jk3v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//38 - /P/69/b/5NDK/76Mf/+lYU//lEIr/5A8Jf+PPCb/kD0m/pA9Jv6QPSb+kD0l/pA8Jf6SQCn+m086/q1v - Xv7Oq6H85tbR+vfx8Pj8/Pzz/Pz87Pz8/OL8/PzX/Pz8xvz8/LT7+/ud+/v7hvz8/G38/PxV+/v7Qfn5 - +S/39/ch9fX1Gfr6+jf7+/tC/Pz8Vfz8/Gr9/f1/+/v7k/z8/Kb8/Py1/Pz8w/z8/M39/f3W/Pz83fz8 - /OT9/f3p/f397vz8/PP9/f32/f39+f39/fv9/f39/Pn1/v327P795cP+/dKV/v3GdP/+u1f//rhQ//62 - S//+tUv//rVL//61S//+t0///rtX//7AZf/+x3f//tec//7qzP/+9eb//v38//7+/v/+/v7//v7+//7+ - /v/+/v7//v79//36+f/77uv/9dbO/+69sP/opJL/5ZaC/+OQev/jj3n/4495/+OPef/jj3n/4454/+OP - ef/lmYT/6aaV//DDt//23db/+/Du//78/P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//fj3//vw - 7v/01Mv/7riq/+egjf/jjnf/4494/+OPef/jj3n/4495/+OPef/jj3j/4454/+efjf/tuKr/9dnS//78 - /P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/9/Pz/9Ovp/9/HwP/Fmo3/p2VT/5hLNv+RPSb/kDwl/5A9 - Jv+PPSb/kDwl/pA9Jv6QPSb+kDwl/pA9Jv6TQSv+nFI+/rB3Z/3JoZb749HM+vPs6vX7+vnw/Pz85/z8 - /Nz8/PzM/Pz8vPz8/KX7+/uO/Pz8dfz8/F37+/tI+vr6Nfj4+Cb29vYe+/v7Pvz8/Er8/Pxf/Pz8dfv7 - +4z8/Pyg/Pz8tPz8/MP8/PzR/Pz82vz8/OP8/Pzo/Pz87fz8/PH8/Pz0/f399/39/fn9/f38/f39/f39 - /f39/f3+/f39/v305f796Mr+/dOW//7BZf/+u1b//rZL//62S//+tUv//rVL//61S//+tkz//rZK//60 - R//+wmn//ted//7py//+/Pn//v79//7+/v/+/v7//v7+//7+/v/+/v7//v7+//77+//89PL/9t3X/+22 - qP/nn43/45J8/+OOeP/jj3n/4495/+OPef/jj3n/4495/+OOeP/kkXz/6KSS/++9sP/4493//fn4//79 - /f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v39//no4//z0Mb/6aiY/+OMdv/jjnj/4495/+OP - ef/jj3n/4495/+OPef/jj3n/5pqG/+mpmf/z0Mf//fr6//79/f/+/v7//v7+//7+/v/+/v7//v39//z5 - +f/o19P/v4+C/6RfTP+TQiv/jzoj/5E9J/+RPif/kT4n/5A9Jv+PPCX+kDwm/pA9J/6QPSb+jzwl/o04 - If6OOSL+kkIr/qdoV/3OraT759nV+Pj19PP8/Pzr/Pz84vz8/NP6+vrD/Pz8rPv7+5b9/f19/Pz8Zfz8 - /E/7+/s7+fn5K/f39yL7+/tH/Pz8U/z8/Gj7+/t/+/v7lvz8/Kr8/Py9/Pz8zPz8/Nr8/Pzi/Pz86v39 - /e78/Pzy/Pz89f39/fj9/f36/f39+/39/fz9/f39/f39/v39/f79/f3+/fny/v3z5f79473//tSW//7H - dP/+u1j//rhQ//62S//+tUv//rVL//62S//+tUr//rRI//66WP/+xG///tab//7qzP/+9eb//v79//7+ - /v/+/v7//v7+//7+/v/+/v7//v39//36+f/67er/9dfP/+69sP/nopD/5JaB/+OPev/jj3n/4495/+OP - ef/jj3n/4454/+OQev/lmIT/6aeW//DDt//23NX/+/Hv//78/P/+/v7//v7+//7+/v/+/v7//v7+//78 - +//9+Pf/9tzV/++/sv/oopD/4413/+OOeP/jj3n/4495/+OPef/jj3n/4454/+ONd//mnYr/67Kj//TW - zv/++/v//v39//7+/v/+/v7//v39//z7+v/07er/3sbA/8Waj/+paFb/mEs1/5E/KP+QPCX/kT0n/5E+ - J/+RPif/kD0m/5A9Jv+PPSb/kD0m/pA9Jv6QPCX+jzsk/o87JP6QPif+m1I8/bB2ZvvJoZb55dPO9fPr - 6e37+vrk/f391vz8/Mf8/Pyy+/v7nP39/YT8/Pxt/Pz8V/v7+0P6+voy+fn5Kfz8/E/8/Pxc/Pz8cf39 - /Yj7+/uf/Pz8s/z8/Mb8/PzU/Pz84v39/en9/fzw/Pv69P38+/f9/fz5/f38+/39/fz9/f39/f39/f39 - /f79/f3+/f39/v39/f79/f3+/f39/v3z4//+6Mb//tOU//7CaP/+u1f//rZM//62S//+tUv//rVL//61 - S//+tUv//rRJ//6zRv/+w2z//tie//7qzP/+/Pn//v38//7+/v/+/v7//v7+//7+/v/+/v7//v7+//77 - +//89fP/9tvU/+y1pv/noI3/45F8/+OPef/jj3n/4495/+OPef/jj3n/4495/+OOeP/kk37/6KWT/++/ - sv/45N///Pf2//78/P/+/v7//v7+//7+/v/+/v7//fj2//vw7f/zzcT/662d/+eciP/jj3j/4495/+OP - ef/jj3n/4495/+OPef/jjnj/44x2/+ehjv/uvrD/9t3W//79/P/+/v7//v7+//79/f/8+vr/9/Lx/+jX - 0f/BkoX/pGBN/5RELv+OOiL/kD0m/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9 - Jv6QPSb+kD0m/o88JP6QPSb9k0Is/KtsW/nRsKb15tfS7/j18+f8+/vZ/Pz8y/z8/Lf8/Pyj/f39i/z8 - /HT8/Pxf+/v7S/r6+jn5+fkv/Pz8WPz8/GT9/f16+/v7kfv7+6f8/Py6/Pz8zfz8/Nr8/Pzm/Pr47fz5 - 8/P99Oj3/fLi+v316vv9+PH8/fz5/f39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/fny//70 - 5P/+5L3//tSX//7Gc//+u1j//rhQ//62S//+tUv//rVL//61S//+tUr//rRJ//67WP/+w2z//tab//7q - zP/+9ef//v79//7+/v/+/v7//v7+//7+/v/+/v7//v39//36+f/67On/9djQ/+69sP/noY7/5JaB/+OP - ef/jj3n/4495/+OPef/jj3n/4454/+ORe//lmIP/6aiW//DCtv/229T/+/Px//78+//+/v7//vz8//35 - +P/44t3/8sq//+yyov/mnIj/5ZR//+OPef/jj3n/4495/+OPef/jj3j/4454/+OPef/kkXz/67Cg//XZ - 0f/67er//v79//7+/v/+/v7//Pv6//Xt6//Yu7L/vYx+/6ZkUv+XSjT/kkAp/5A8Jf+RPSf/kT4n/5E9 - Jv+RPSf/kT4n/5E+J/+RPif/kT0m/5A9Jv+PPSb/kD0m/pA9Jv6QPSb+kD0l/pA9Jv2RPif8nFM++q9z - YvbJoZbw59bT6PLr6Nz8/PzO/Pz8u/z8/Kj9/f2R/f39e/r6+mf8/PxT+/v7Qfr6+jf8/Pxg+vr6bfv7 - +4P7+/uZ/Pz8r/z8/MH8/PzT/Pv73/z7+ur99u3w/fDf9v3pzPn95cD8/enN/f3v2/799uz+/fv3/v39 - /P79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3//v78//7z4v/+5sP//tOS//7Da//+u1j//rdN//62 - S//+tUv//rVL//61S//+tUv//rRI//6zRf/+xW///tef//7qzP/++vT//v36//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//77+v/89PP/9djR/+y1pf/noY//45F8/+OQev/jj3n/4495/+OPef/jj3n/4495/+OO - eP/klYD/6aWT/+/BtP/45eD//PTz//37+v/89vT/++7q//LMwv/pqJf/5pqG/+OOeP/jj3n/4495/+OP - ef/jj3n/4495/+OPef/jkHr/5ZaB/+efi//ww7f/+/Ht//36+f/+/v7//v79//38/P/28O7/59bR/7uH - ef+aTjj/kT8o/445If+QPCb/kT4n/5E+J/+RPSb/kD0m/5E9J/+RPij/kT4n/5E+J/+RPif/kT4n/5A9 - Jv+PPSb/jz0m/5A9Jv6QPSb+kDwl/ZA8JPyRPif6kkMr96xwX/HQsKfq5tbR3vr599H8+vq//Pz8rfv7 - +5f7+/uC/Pz8bvz8/Fv7+/tJ+/v7P/z8/Gj6+vp1+/v7i/z8/KH8/Py2/Pz8x/z8/Nj8+fbj/Pfu7fzj - wfP91Jn4/cyF+v3Hefz9zYj9/dWc/v3iu/797tf+/fny/v39/f79/f3+/f39/v39/f79/f3+/f39/v7+ - /v/+/v7//vrz//7z4//+5L3//tWY//7Fcv/+u1n//rdP//62S//+tUv//rVL//61S//+tUr//rRI//67 - WP/+wmr//tac//7pyv/+9ej//v79//7+/v/+/v7//v7+//7+/v/+/v7//v39//76+v/67Oj/9dnS/+69 - sP/mn4z/5JaB/+OPeP/jj3n/4495/+OPef/jj3n/4494/+SRe//ll4L/6amY//DFuf/12tP/+uzo//ff - 2f/yy8D/7LKi/+WZhP/kk37/4495/+OPef/jj3n/4495/+OPef/jj3j/5JN+/+ediv/ssaL/8szC//jj - 3f/9+Pf//fv7//37+//8+vn/+PTy/93Evf/ClIj/pmNQ/5JBKv+QPSb/kDwl/5E9Jv+RPif/kT4n/5E+ - Jv+RPSb/kT4n/5E+KP+RPif/kT4n/5E+J/+RPif/kT4m/5A9Jv+PPSb/kD0m/pA9Jv6QPCX+jzwl/ZA9 - JvqQPif3nFI+8axvXuvLp5zf8ejl0/fx8MP8/Pyx+/v7nfv7+4n7+/t2/Pz8Y/z8/FD7+/tG/f39b/39 - /Xz7+/uS/Pz8qPz8/Lz8/PzN/Pz83Pz06ub97dfw/NOa9f2+Zfn9t1L7/bJJ/f25V/39wmr+/c+L/v3d - sP/979v//fjx//38+v/9/f3//f39//39/f/9/f3//v7+//7+/v/+/v7//vz5//7y4f/+5cH//tKS//7D - bv/+u1n//rdO//62TP/+tUv//rVL//61S//+tUv//rRI//60R//+xnL//ted//7qzP/++fD//vz5//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//36+f/89fL/9dfO/+y1pv/no5D/45N9/+ORe//jj3n/4495/+OP - ef/jj3n/4494/+OOd//ll4P/6amZ/+6+sf/008r/8MW5/+utnf/mnYn/4453/+OPeP/jj3n/4495/+OP - ef/jj3n/45B6/+SSfP/mnYn/7LGi//PNw//77ur//fn4//7+/f/7+fj/+PTy//Dm4v/l083/wpWJ/6Rg - Tf+WSDL/jjkh/5A8Jf+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+ - J/+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9Jv6PPSb9jz0m+488JPeQPifykkIq7LiCdOHn1tHV8urnxfz8 - /LX7+/ui+/v7j/39/Xz8/Pxp/Pz8V/v7+0z8/Px1/f39gvv7+5j8/Pyt/Pz8wfz8/ND8/Pvf/OvS6PzZ - qPH8xnn1/bdS+f20TPz9s0r9/bZO/v65Vf79vV7//sl7//7drP/+7NP//vr0//79/f/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v3//vr0//7z4v/+5L7//tWY//7EcP/+u1n//rdO//62S//+tUv//rVL//61 - S//+tUr//rVJ//66Vv/+wmn//tec//7qyv/+9ur//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v39//77 - +v/67On/9tzU/+68r//mnov/5JaB/+OPeP/jj3n/4495/+OPef/jj3n/4494/+SSfP/mmIT/55+M/+mm - lP/ooY//5pqF/+SUfv/jj3j/4495/+OPef/jj3n/4495/+OPeP/kknz/552J/+yyo//008r/+enk//34 - 9v/+/Pv//v38//bw7v/t4d3/0bCm/7Z/cP+kYE3/lUYw/5JAKf+QPCX/kT0m/5E+J/+RPif/kT4n/5E+ - J/+RPif/kT4n/5E9Jv+RPSb/kT0m/5E+J/+RPif/kT4n/5E+J/+RPif/kT4m/5A9Jv+PPSb/kD0m/o89 - Jv2PPSb7jzwl+I47JPKNOiHsrnVk4trBudfq39rI/Pz8uPz8/KX7+/uT+/v7gfz8/G78/Pxc/Pz8Uf39 - /Xn7+/uG+/v7nPz8/LH8/PzE/Pz70/39++H95sTp/M2L8v2+Zfb9skf6/bNJ/P2zSv79tEr+/bNJ//60 - R//+u1n//suA//7drP/+8Nv//vnw//7+/P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vv3//7y - 4P/+5L///tKR//7EcP/+u1n//rdP//62S//+tUv//rVL//61S//+tUv//rRI//62S//+x3T//tie//7q - zf/+9+7//vz5//7+/v/+/v7//v7+//7+/v/+/v7//v7+//36+f/89fL/9NXN/+y2qP/oo5H/5JR+/+SR - e//jj3n/4495/+OPef/jj3n/4495/+OOeP/jjnj/4413/+OOd//jj3j/4495/+OPef/jj3n/4495/+OP - ef/jkHn/5JN9/+adif/ssaL/8svC//rr5//9+vj//v39//79/f/9+/r/69zY/9a4sP+2gHD/mEo0/5JA - Kf+OOSH/kDwl/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT0m/5E9Jv+RPSb/kT4n/5E+ - J/+RPif/kT4n/5E+J/+RPif/kT4m/5A9Jv+QPSb+jz0m/Y89JvuPPSb4jTsk84w4IOyuc2Li2b+32Ord - 2Mn8/Py6/Pz8qPv7+5b7+/uE/Pz8cfz8/F/8/PxV/f39ev39/Yf8/Pye/Pz8svz8/MX8/PvU/Pz74vzk - wOr8zITy/b5j9/2ySPr9s0n8/bNK/v20Sv79s0r//rRJ//63Tv/+u1j//sl6//7drP/+7dP//vz4//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/vz//vv1//7z4v/+5L///tWX//7Dbf/+u1j//rdN//62 - S//+tUv//rVL//61S//+tUr//rVL//66VP/+wmn//ted//7py//+9+3//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v39//77+//67er/9t3W/+67rv/nn4z/5ZWA/+OPeP/jj3n/4495/+OPef/jj3n/4495/+OP - ef/jjnj/4494/+OPef/jj3n/4495/+OPef/jj3n/4494/+ORe//nnYn/7LCh//TSyv/66ub//ff2//79 - /f/+/v7//fz7//v49//YurL/r3Ni/59WQf+QPCX/kDwl/5A8Jf+RPSb/kT4n/5E+J/+RPif/kT4n/5E+ - J/+RPif/kT4n/5E+J/+RPif/kT0n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPib/kD0m/5A9 - Jv6PPSb9jz0m+489JviPPifzkEAp7LWAcuLl083Y8Ojlyfz8/Lr8/Pyp+/v7l/v7+4X8/Pxy/Pz8YPz8 - /FX9/f14/f39hfv7+5z8/Pyx/Pz8xPz8/NP9/f3h/OjK6vzUmfL8w3D3/bVQ+v20Tfz9tEr+/bRK/v2z - Sv/9tEr//rRJ//60R//+vFz//sp+//7cq//+8Nv//vjv//7+/f/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//vv1//7y4P/+5L3//tKR//7Fcf/+u1j//rhP//62S//+tUv//rVL//61S//+tUr//rRI//64 - UP/+x3X//tee//7qzv/+9+z//vz5//7+/v/+/v7//v7+//7+/v/+/v7//v7+//36+f/88/D/9NTM/+24 - qv/opJH/5ZV//+SRe//jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/4495/+OP - ef/klH7/5p2J/+yzpP/yy8L/+enl//35+P/+/f3//v7+//39/P/z6uj/5dLM/8GShf+ZTDb/k0Aq/444 - If+QOyT/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E9Jv+RPib/kT4n/5E+J/+RPif/kT4n/5E+ - J/+RPif/kT4n/5E+J/+RPif/kT4m/5A9Jv+PPSb/kD0m/o89Jv2PPif7kD8o+JhLN/OjYE7sxZuQ4u/m - 4tf28O/J/Pz8uvz8/Kj7+/uW+/v7hPz8/HH8/Pxe/Pz8VPz8/HX7+/uC+/v7mfz8/K78/PzB/Pz80fz8 - ++D98uDp/OXB8v3PjPb9vF36/bdS/P20Sv79tEr+/bNK//2zSv/9tEr//rVK//62Tf/+uVP//sl5//7d - rP/+7dX//v38//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/vz//vv3//7z4v/+5cD//tSX//7C - av/+u1j//rZM//62S//+tUv//rVL//61S//+tUr//rZL//64Uv/+wmv//tig//7qzf/++fD//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v39//77+v/77uv/9tzW/+26rP/nn4z/5JV//+OPeP/jj3n/4495/+OP - ef/jj3n/4495/+OPef/jj3n/4495/+OPef/jj3j/45B6/+adif/rr6D/89LK//rs6P/99/b//v39//7+ - /v/9/fz//Pn5/+LNxv/AkYP/p2VS/5A8JP+QOyT/kDwl/5E9Jv+RPif/kT4n/5E+J/+RPif/kT4n/5E+ - J/+RPSb/kD0m/5E9Jv+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/jz0m/5A9 - Jv6QPSb+jz0m/ZA/KPuSQSv4pGNS88CUh+zaw7vi+fX01/r6+Mj8/Py4/Pz8pvv7+5P7+/uB/Pz8bvz8 - /Fv8/PxR/f39b/39/Xv7+/uS/Pz8qPz8/Lz8/PzN/Pz83Pz37uf98d/w/Nyv9f3Mg/n9v2f8/bdT/f21 - Tf79tEr+/bRK/v20Sv/9tEr//rRJ//60R//+vV3//sp9//7cq//+8Nz//vju//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//vr0//7y4P/+5L3//tKS//7GdP/+u1n//rhR//61S//+tUv//rVL//61 - S//+tUr//rRI//65VP/+x3b//tqk//7x3P/++/b//v79//7+/v/+/v7//v7+//7+/v/+/v7//v7+//35 - +P/78O3/9NTL/+26rP/opJH/5JWA/+SRe//jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/4495/+SV - f//mnYn/7LWm//PNw//56OP//fn4//79/P/+/v3//fz7//Lq5//jzcj/x52R/6dlUv+ZTTf/jjkh/487 - JP+RPif/kT4n/5E+J/+RPif/kT4n/5E9Jv+RPSb/kT4n/5E+Jv+RPSb/kT0m/5E+J/+RPif/kT4n/5E+ - J/+RPif/kT4n/5E+J/+RPib/kD0m/489Jv+QPSb+kD0m/pA9Jv6QPij9mEw3+qNhT/i8jH/y2sG57Ozf - 3OH7+/vW/Pz8xvz8/LX7+/ui+/v7j/v7+3z8/Pxp/Pz8Vvv7+0z8/Pxn/Pz8dPv7+4v8/Pyh/Pz8tvz8 - /Mj8/PzZ/Pv55P369+787Nb0/d+1+f3Mhfv9vF/9/bdS/f20Sv79tEr+/rRK/v2zSv/9tEr//rVK//62 - TP/+t07//sl6//7erf/+7tf//v79//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v3//vz5//7z - 4//+58P//tWZ//7DbP/+u1r//rVM//61S//+tUv//rVL//61S//+tUr//rZL//63T//+x3f//ufD//73 - 6//+/fr//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v79//77+v/78O3/9tzW/+24qv/nn4z/5JR+/+OP - eP/jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/556L/+ywoP/008v/+/Ds//349//+/v3//v7+//38 - /P/69/f/487I/76Ogf+nZFL/k0Ms/5E+Jv+RPSb/kT0m/5E+J/+RPif/kT4n/5E+J/+RPib/kT0m/5E9 - Jv+RPib/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5A9Jv+PPSb/jz0m/5A9 - Jv6QPSb+kD4n/ZJBLPyjX0z6vo+C99e8tfLy7Orr+ff34Pz8/NT8/PzD/Pz8svz8/J77+/uK/f39dvz8 - /GP8/PxQ+/v7Rvz8/F79/f1r+/v7gv39/Zj8/Pyv/Pz8wvv7+9T8/Pzg/Pz86/z16vL97dj4/dut+/3N - hv39wGj9/bhT/v22Tf79tEr+/bRK/v20Sv/9tEr//rRJ//60R//+vl///sl8//7drP/+79r//vju//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vrz//7z4v/+4LT//sp///6/Y//+tUr//rVK//61 - S//+tUv//rVL//61S//+tUr//rRG//7Da//+4rj//vPj//78+f/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v79//35+P/77uv/9NTM/+67rv/oo5H/5ZaB/+OQev/jj3j/4495/+OPeP/jjnj/5JR//+ac - if/ttqj/88/G//nn4//9+vn//v38//7+/v/+/v7//Pr6//fy8f/Zvbb/rG1c/5lMNv+POyT/jzsj/5E+ - J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPSb/kT0m/5E+Jv+RPif/kT4n/5E+J/+RPif/kT4n/5E+ - J/+RPif/kT4n/5E9Jv+QPSb/jz0m/5A9Jv6QPSb+kD0m/pE/KP6YTDb9pWNR/LyLffrYvbX36tzZ8fr4 - +On9/f3e/Pz80fz8/MD9/f2t/f39mP39/YP9/f1v/Pz8XPz8/Er7+/s//Pz8VPz8/GH9/f14+/v7kPv7 - +6f8/Py7/Pz8zvz8/Nz9/f3p/f388P369ff97tf6/d+0/f3Lgv39vF7+/bdQ/v21Sv79tEr+/bRK/v2z - Sv/9tEr//rVK//61Sv/+tUn//sl7//7erv/+79r//v79//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v3//v77//7qzP/+0pL//sJr//60SP/+tUn//rVL//61S//+tUv//rVL//61Sv/+tEb//sJo//7f - sP/+8dz//vz3//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//77+v/78u//9tzV/+y2 - qP/mnov/45J8/+OOeP/jj3n/4454/+KNdv/mnIj/6q2d//TSyf/88vH//fn4//7+/v/+/v7//v7+//7+ - /v/7+Pj/9O3q/9Gwpv+eVUD/kDwk/487I/+QPCT/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+ - J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kD0m/489Jv+QPSb+kD0m/pA9 - Jv6RPif+kkEr/qFcSf29joD82b22+fPs6vb7+vrw/Pv76P39/dv8/PzO/Pz8u/z8/Kn9/f2S/f39fPz8 - /Gj8/PxV+/v7Qvr6+jj7+/tM/Pz8Wf39/W/9/f2H+/v7n/z8/LT8/PzI/Pz81/39/eX8/Pzt/Pv69f32 - 6/n97dX8/dys/f3MiP79wGf+/blU/v22Tf79tEr+/bRK/v20Sv/9tEr//rRJ//60SP/+vmD//sl7//7d - rP/+79j//vju//7+/v/+/v7//v7+//7+/v/+/v7//v7+//768//+8+L//uG2//7Lgv/+v2T//rVK//61 - Sv/+tUv//rVL//61S//+tkv//rdO//65U//+yHf//uO7//7z4//+/Pn//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v39//35+P/67en/9NXM/+69sP/pppX/5pqF/+SSfP/lmIP/6KGO/+24 - qv/z0cj/+efi//76+f/+/Pz//v7+//7+/v/+/v7//v7+//37+v/59fT/4MrE/7uIe/+jX0z/kj8o/487 - I/+QPCX/kT0m/5E+J/+RPSb/kT0m/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+ - J/+RPif/kT0m/5A9Jv+PPSb/kD0m/pA9Jv6QPSb+kT8o/pdKNf6nZVP+vIt+/di9tvvr3tr5+Pb19f39 - /e79/f3l/Pz82Pz8/Mr8/Py2+/v7ov39/Yv8/Px0/Pz8YPv7+0z7+/s7+vr6Mfv7+0P8/PxQ/Pz8Zv39 - /X77+/uX/Pz8rfz8/ML8/PzS/f394fz8/Ov8/Pzz/f399/369fv97tn8/d6z/v3KgP79vWD+/bdQ/v21 - Sv79tEr+/bRK/v20Sv79tEr//rVL//60SP/+tUn//sp9//7er//+8dz//v38//7+/f/+/v7//v7+//7+ - /v/+/v7//vXm//7nxP/+1pr//sRv//68XP/+tUz//rVL//61S//+tUv//rVL//62TP/+uVP//r9h//7P - iP/+6cj//vfr//79+v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//77 - +//89PL/997Y/+69sP/pp5b/5ZaB/+ijkf/tt6n/9dbO//329P/++vr//v7+//7+/v/+/v7//v79//79 - /P/+/Pv//vz7//79/f/x5uT/28G8/7qHev+VRS//kDsj/486I/+QPCX/kT4n/5A9Jv+QPSb/kT0m/5E+ - J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9Jv6QPSb+kD0m/pE+ - J/6TQiz+n1hF/r2Nf/7Zvbb98+zq+/39/fj8/Pzz/Pz87Pz8/OP8/PzU/Pz8xfz8/LH7+/uc+/v7hPz8 - /Gz8/PxY+/v7RPr6+jT5+fkq+/v7PPv7+0j8/Pxd/Pz8dfv7+478/Pyk/Pz8u/z8/Mz8/Pzc/Pz85v39 - /fD8/Pz1/fz6+f327Pv97NX9/dyu/v3Oiv79wGb+/blU/v22TP79tUr+/bRK/v20Sv/9tEr//rRJ//61 - Sv/+vmD//sp8//7er//+79j//vnw//7+/v/+/v7//vr0//7y4P/+5L///tSW//7IeP/+vV3//rlT//61 - S//+tUv//rVL//62S//+t07//rpW//7BZv/+zYT//t2s//7x3v/++/X//v79//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v39//36+f/77+z/99/a//TUzP/yy8H/89LJ//bd - 1v/66+j//vr6//79/P/+/v3//vn2//7x6//+4dT//tfF//7Vw//+1sT//tnI//jbz//u3dn/1riw/7mE - dv+jXkv/jzoj/5E9Jv+TQCn/kT4n/5A9Jv+RPSb/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+ - J/+RPSb/kD0m/489Jv+QPSb+kD0m/pA9Jv6RPyj+lkgy/qdmU/68jH3+2Ly0/e3g3Pv49fT6/f399v39 - /fD8/Pzo/Pz83fz8/M78/Py+/Pz8qfv7+5P9/f17/Pz8ZPz8/E/7+/s8+fn5Lfj4+CT6+vo1+/v7QPz8 - /FX8/Pxs/f39hPv7+5z8/Pyz/Pz8xf39/db8/Pzi/Pz87Pz8/PL8/Pz4/f39+v358vz97tj9/d6y/v3K - gP79vmL+/bhR/v21S/79tEr+/bRK/v20Sv79tEr//rVK//60SP/+uFH//s2E//7htf/+8uD//vz4//78 - +f/+9OX//uXB//7VmP/+w2z//rxZ//63Tf/+tkv//rVL//61S//+tUv//rZN//65U//+wGP//sp9//7b - qP/+68///vnx//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/f/+/f3//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/f3//vv7//35+P/9+vr//vz8//7+/v/+/v7//v7+//78+//+8On//uDS//7F - qv/+s5H//rGO//6yj//+tpX//s23//7v6f/v4Nz/2r+4/7iEdv+VRC//k0Is/5NBKv+RPij/kD0m/5E9 - Jv+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9Jv6QPSb+kT4n/pVF - L/6fWET+vYx9/ti8tP7x5+X8/f39+v39/fj8/Pzz/Pz87fz8/OP8/PzY/Pz8x/z8/Lb8/Pyg/f39ifz8 - /HL8/Pxb+/v7R/r6+jX4+Pgm9vb2Hvn5+S76+vo5+/v7TPz8/GL9/f16+/v7kfz8/Kj8/Py7/Pz8zfz8 - /Nr8/Pzm/f397vz8/PT8/Pz4/fz5+v337fz97NT+/d2v/v3Oiv79v2X+/blU/v21S/79tUr+/bRK/v20 - Sv/9tEr//rVK//64UP/+xG7//tKQ//7iuP/+7ND//u3U//7kvv/+05X//sd2//68W//+uFH//rZM//61 - S//+tUv//rZL//62Tf/+ulb//sBl//7NhP/+2qb//uvP//726v/+/Pn//v7+//7+/v/+/v7//v7+//79 - /P/++/n//vj1//728//++vj//v38//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/f3//vz8//79 - /f/+/v7//v7+//7+/v/++/n//vPu//7UwP/+uJj//qZ+//6bbv/+mm7//ppt//6abP/+rIb//smx//jX - yf/v4Nv/1riv/7qHef+jXkz/jzoj/487I/+QPCT/kD0m/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+ - Jv+QPSb/jz0m/5A9Jv6QPSb+kD0m/pE/KP6VRi/+p2ZU/ryLff7YvLT+7eHe/ffz8vv9/f34/Pz89P39 - /e/8/Pzn/Pz83Pz8/M/8/Py++vr6rP39/ZX7+/t/+vr6aPz8/FH7+/s++fn5Lff39yD09PQY+Pj4J/r6 - +jH7+/tD/Pz8WP39/W/7+/uG+/v7nPv7+7D8/PzD/Pz80fz8/N/8/Pzo/f398Pz8/PT9/f34/f39+/z3 - 8P397db+/d2w/v3KgP79v2X+/bhR/v22TP79tEr+/bRK/v2zSv/9tUv//rdO//68W//+xG///tKQ//7a - pP/+3Kn//tSV//7Eb//+vFr//rdO//62S//+tUv//rVL//61S//+t07//rlT//7AZf/+yn3//tqm//7q - zP/++O7//v7+//7+/v/+/v7//v7+//79/P/++/n//vTv//7s5P/+59z//uPW//7r4v/+8u3//vn2//7+ - /f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//738//+6uD//rye//6Z - af/+j1z//opV//6KVv/+iVT//oZP//6SYP/+p3///siw//7u5v/u3db/28G6/7eCc/+WRjD/kkAp/487 - I/+QPCX/kT0m/5E+Jv+RPif/kT4n/5E+J/+RPif/kD0m/489Jv+QPSb+kD0m/pA9Jv6RPif+lkgy/p9Y - RP68jH3+17uz/u7j4f39/f37/f39+fz8/PX9/f3w/f396fz8/OD8/PzT/Pz8xfz8/LP8/Pyg+/v7ivz8 - /HP8/Pxd+/v7R/r6+jb4+Pgm9fX1GvLy8hP39/cg+fn5Kvr6+jr7+/tN/Pz8Yvv7+3j7+/uO+/v7ovz8 - /Lf8/PzG/Pz81Pz8/OD9/f3p/f397/z8/PT9/f34/fv4+/337/z97NT+/d2w/v3Oiv79v2L+/blU/v21 - Sv79tEr+/bRK/v20Sv/9tUz//rhR//67Wf/+wGT//sNr//7DbP/+wGb//rtZ//64Uf/+tkz//rVL//61 - S//+tkv//rZM//66Vv/+v2P//syD//7apf/+687//vfr//78+P/+/v7//v7+//7+/v/+/v7//vfz//7s - 5P/+1sT//r6h//60kv/+rIf//rye//7Ot//+6N3//vr4//79/P/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//vHr//7f0f/+sY7//o9c//6MWf/+i1f//otX//6LVv/+ilT//o1Y//6S - Yf/+qoP//siv//jYy//x5uP/1bev/7qHef+iXEn/jzoi/487I/+QOyT/kT0m/5E+J/+RPif/kT4m/5A9 - Jv+PPSb/jz0m/5A9Jv6QPSb+kT8o/pNCK/6nZVP+vIt8/te7tP7u4+H99/Py+/39/fj8/Pz1/f398Pz8 - /Or9/f3h/f391vz8/Mj8/Py4/Pz8pfv7+5H7+/t8/Pz8Zvz8/FH7+/s9+fn5Le/v7yDz8/MV7u7uD/X1 - 9Rv39/ci+vr6MPv7+0L8/PxV/Pz8afv7+3/8/PyU/Pz8qPz8/Ln8/PzJ/f391v39/eH9/f3p/f398Pz8 - /PX9/f34/f39+/337/z97db+/d2v/v3LgP79wGb+/bdQ/v22Tf79tEr+/bRK/v2zSv/9tUv//rVL//61 - Sf/+tEj//rRI//60Sf/+tUv//rVL//61S//+tUv//rVL//63T//+uFP//sBm//7Jff/+2qX//urM//73 - 6//+/v7//v7+//7+/v/+/v7//vz7//759//+6uD//tbD//66m//+nXH//pNi//6LV//+m27//q+K//7Q - u//+6+H//vby//79/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+7+j//tzM//6u - iv/+jFn//oxY//6MWP/+jFj//oxY//6MV//+ilT//odQ//6UZP/+qID//sqy//7u5//t2dP/2b64/7iC - dP+bUDv/lEMs/486I/+QPCX/kD0m/5E9Jv+QPSb/jz0m/5A9Jv6QPSb+kD0m/pE+J/6XSjT+n1hE/ryK - fP7XurL+7eDd/f39/fv9/f35/Pz89f39/fD8/Pzq/Pz84vz8/Nf8/PzK/Pz8u/z8/Kr7+/uW+/v7gvz8 - /G38/PxY+/v7Rfr6+jP4+Pgl9fX1Ge/v7xDq6uoM8/PzFfb29hz5+fko+vr6N/v7+0f8/Pxa/Pz8bvv7 - +4P7+/uX/Pz8qfz8/Lv8/PzJ/Pz81/39/eH9/f3p/f398Pz8/PX9/f34/fv4+/z38P397NP+/d6x/v3O - if79vV/+/blU/v21Sv79tEr+/rRK/v20Sv/9tEr//rVK//61Sv/+tUr//rVK//61S//+tUv//rVL//61 - S//+tkz//rpW//6+Yf/+zIP//tqm//7qzf/++O7//vz4//7+/v/+/v7//v7+//7+/v/+9/T//uvi//7R - vf/+s5D//qF2//6SYP/+jlv//oxX//6QXv/+mWr//q+L//7Ir//+59z//vr4//79/P/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//707//+5dn//riY//6WZ//+kF7//o1Y//6MWP/+jFj//oxY//6L - Vv/+ilX//o1Y//6RXv/+qoT//seu//nazf/x5+T/1riw/7yKfP+hWkb/jjki/446I/+OOyT/jzwl/489 - Jv+QPSb+kD0m/pA9Jv6RPyj+kkEr/qZkUv68i3z+2Luz/fDn5P348/L7/f39+fz8/PX8/Pzx/Pz86vz8 - /OL8/PzY/Pz8y/z8/Lz8/Pyr+/v7mf39/YX8/Pxx/Pz8Xfz8/Er6+vo5+fn5Kfb29h7y8vIU6+vrDePj - 4wnv7+8Q8/PzFvf39x/5+fks+vr6Ovv7+0z8/Pxe+vr6cv39/YX7+/uY/Pz8q/z8/Lv8/PzK/f391v39 - /eH9/f3p/f398Pz8/PX9/f34/f39+/337fz97db+/dyt/v3Kf/79wGf+/bhR/v22Tf79tEr+/bRK/v2z - Sv/9tEr//rVL//61S//+tUv//rVL//61S//+tUv//rdP//65U//+wGf//sl8//7apf/+6sz//vbp//7+ - /v/+/v7//v7+//7+/v/+/Pv//vj1//7p3//+07///rmZ//6cb//+kmH//oxX//6MV//+jFj//otX//6N - Wf/+mWv//q2H//7Puf/+6N7//vby//79/P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vj2//7u - 5v/+x67//qd///6abP/+kF7//o5a//6MWP/+jFj//oxY//6MV//+ilT//odQ//6WZv/+p4D//sqz//3p - 4P/s18//2Ly1/7eBc/+dVEH/k0Mu/486I/6POyT+jzsk/o88JP6QPCX+kD4m/phLNf6hW0j+u4p8/ti7 - s/3s39z8/f39+/39/fj8/Pz1+/v78fz8/Or8/Pzi/Pz82Pz8/Mv8/Py9/Pz8rf39/Zr9/f2H+vr6dPz8 - /GD7+/tO+/v7Pfn5+S739/cg9PT0F+3t7Q7j4+MJ1NTUBujo6Avv7+8Q9PT0F/f39yL5+fku+/v7Pfv7 - +078/Pxg+vr6c/v7+4b7+/uZ/Pz8q/z8/Lz8/PzK/Pz81/39/eH8/Pzq/f398Pz8/PX9/f34/fv4+/34 - 8v397NP+/d6x/v3Nh/79vV7+/bhT/v21Sv79tEr+/bNK//2zSv/9tEr//rVL//61S//+tUv//rVL//62 - TP/+uVX//r5h//7Lgv/+2qX//urN//758f/+/Pn//v7+//7+/v/+/v7//v7+//749f/+6+L//tK+//6y - j//+n3T//pFg//6OWv/+jFj//oxY//6MWP/+jFf//oxY//6PXP/+mGn//q2I//7Ir//+6d///vr4//79 - /f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/fz//vf0//7ay//+v6P//qiB//6XaP/+kF7//o1Y//6M - WP/+jFj//oxY//6LVv/+i1X//oxY//6PW//+qoP//sas//nd0f/w5uT/17qy/7yMfv+fWUX/kDwk/o45 - If6NOCH+jjki/pA8Jf6RPyj+pWFP/r2Nfv7Yu7P98+vp/Pn19Pr9/f35/Pz89f39/fD8/Pzq/Pz84vz8 - /Nj8/PzL/Pz8vfz8/K38/Pyb/f39iPz8/HX8/Pxi/Pz8UPv7+z/6+vow+Pj4I/T09Bjw8PAR5eXlCtTU - 1Aa/v78E39/fCOjo6Avw8PAR9fX1Gvj4+CP6+vox+/v7P/z8/E/8/Pxh+vr6dPv7+4f9/f2Z/Pz8q/z8 - /Lv8/PzK/f391v39/eH9/f3p/f398Pz8/PX9/f34/f39+/327Pz97db+/dyr/v3Lgv79wWf+/bhS/v22 - Tf79tEr+/bRK/v20Sv/9tEr//rVL//61S//+t0///rlU//7BZ//+yn7//tql//7qzf/+9ej//v7+//7+ - /v/+/v7//v7+//78/P/+9/T//unf//7Svv/+uZn//p5y//6TYf/+jVn//oxY//6MWP/+jFj//oxY//6M - WP/+jFj//otX//6OXP/+mWv//q6J//7Puf/+5tv//vfz//79/P/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/Pv//uvj//7Yx//+vZ///qd///6Za//+kV7//o5a//6MWP/+jFj//oxY//6MV//+ilT//odQ//6X - Z//+qIH//su0//vk2v/r1s//2b+3/r+Qg/6sbVz+oVtI/pxSPf6bTzv+oFlF/qhnVf6+j4L+2by1/eze - 2vv9/f36/f399/z8/PX9/f3w/Pz86v39/eH8/PzX/Pz8y/z8/L38/Pyt+/v7nPv7+4n9/f12/Pz8Y/z8 - /FH7+/tA+vr6Mvj4+CX19fUb8fHxEurq6gzb29sHv7+/BKqqqgPMzMwF39/fCOrq6gzx8fES9fX1Gvj4 - +CX6+vow9/f3QPz8/E/8/Pxh/Pz8dPv7+4f7+/ua/Pz8q/z8/Lz8/PzK/Pz81/39/eH8/Pzq/Pz88fz8 - /PX9/f34/fv5+/359f397NT+/d6y/v3Mhv79vV/+/bhS/v21Sv79tEr+/bNK//2zSv/9tEv//rZM//65 - Vf/+vmH//suA//7apP/+6s3//vr0//78+v/+/v7//v7+//7+/v/+/v7//vn3//7r4//+1MD//rKP//6e - cv/+kmD//o1a//6MWP/+jFj//oxY//6MWP/+jFj//oxY//6MWP/+jFj//oxY//6OW//+l2n//qyG//7J - sP/+7OT//vr4//7+/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/++vj//vHq//7Ww//+vZ///qZ+//6X - aP/+kF3//o1Y//6MWP/+jFj//oxY//6MV//+i1X//otW//6NWv/+q4X//sev//nh1v/07ez+6tvX/tm+ - t/7BlIj+tHxt/q91ZP66iHn+zKed/uDKxP307ev8+fb1+v39/ff8/Pz0/f398P39/en8/Pzi/Pz81/z8 - /Mv8/Py9/Pz8rfv7+5z7+/uJ/f39dvz8/GP8/PxR+/v7Qfr6+jL4+Pgm9fX1G/Ly8hPq6uoM39/fCL+/ - vwR/f38CAAAAAaqqqgPMzMwF39/fCOvr6w3x8fES9fX1G/j4+CX6+voy+/v7P/z8/FD8/Pxh/Pz8dPv7 - +4f9/f2Z/Pz8q/z8/Lv8/PzK/f391v39/eH8/Pzq/f398Pz8/PX9/f34/f39+/326/z97dX+/dyr/v3M - hP79wGf+/bhS/v21TP79tEn+/bRJ/v21Tf/9uFT//sBn//7Kf//+2qT//urM//715v/+/v7//v7+//7+ - /v/+/v7//v38//738//+6uD//tK9//65mf/+oHT//pNh//6NWv/+jFj//oxY//6MWP/+jFj//oxY//6M - WP/+jFj//oxY//6MWP/+jFj//otX//6PXf/+mWv//q+L//7Ouf/+5dr//vj1//79/P/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/++vj//urg//7Ww//+vJ7//qiA//6Za//+kV///o1a//6MWP/+jFj//oxY//6M - V//+iVT//ohT//6Yav/+rIj//dbE//zy7f748e/+7+Th/t7GwP7Utq7+0bGn/tm9tf3l08788efl+/z7 - +/n9/f32/Pz88vz8/O38/Pzo/Pz83/39/db8/PzJ/Pz8vPz8/Kz8/Pyb+/v7if39/Xb6+vpk/Pz8Uvv7 - +0H6+voz+Pj4Jvb29hzy8vIT6+vrDd/f3wjMzMwF////AgAAAAEAAAAAAAAAAX9/fwK/v78E39/fCOrq - 6gzy8vIT9fX1Gvj4+CX6+vow+/v7P/z8/E/8/Pxh/Pz8dPv7+4f7+/ua/Pz8q/z8/Lz8/PzK/Pz81/z8 - /OL8/Pzq/Pz88fz8/PX9/f35/fz6+/369f397NT+/d6x/v3Lgv79vFz+/bZP/v2zSP79tEn+/rdR/v28 - X//9yX3//tmk//7qzP/++/T//v37//7+/v/+/v7//v7+//7+/v/++/n//uzk//7Vw//+s5D//pxv//6R - YP/+jVn//oxY//6MWP/+jFj//oxY//6MWP/+jFj//oxY//6MWP/+jFj//oxY//6MWP/+jFj//oxY//6M - Wf/+l2j//qqD//7Ksf/+7+n//vr5//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/f/+/Pr//vDp//7V - wv/+vJ7//qV8//6XaP/+jlz//oxY//6MWP/+jFj//oxY//6MV//+i1b//YlW//2SY//+w6n+/ejd/v31 - 8f78+vr++fb2/vj08/738/L++PTz/fr49/v7+vr5/f399vz8/PL8/Pzt/Pz85v39/d78/PzU/Pz8yfz8 - /Lv8/Pys+/v7mv39/Yj9/f12/Pz8Y/z8/FH7+/tB+vr6Mvj4+Cb19fUb8vLyFOrq6gzf398IzMzMBX9/ - fwIAAAABAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9vb2HPj4+CX6+voy+/v7P/z8 - /FD8/Pxh/Pz8dPv7+4f9/f2Z/Pz8q/z8/Lv7+/vK/f391v39/eH8/Pzq/f397/z8/PX9/f34/fz7+/32 - 6/z97NT+/d2v/v3Pjf79xXL+/b9j/v2+Yf79w23+/cyF/v3Zpv/96cz//vTl//79+//+/v3//v7+//7+ - /v/+/f3//vbz//7r4f/+0bz//riZ//6hdv/+kmH//o5a//6MWP/+jFj//oxY//6MWP/+jFf//otX//6L - V//+i1b//oxX//6MV//+jFj//oxY//6MWP/+jFj//otX//6QXv/+mWr//rCM//7OuP/+5dn//vn3//79 - /P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/++fb//urg//7Ww//+vZ///qZ+//6QX//+i1f//oxY//6M - WP/+jFj//oxX//6LV//9iFT//Y9c/v2yj/790r7+/e7m/v39/f79/f3+/f39/f39/fz9/f37/f39+Pz8 - /PX8/Pzx+/v76/z8/OT9/f3b/Pz80fz8/MX8/Py4/Pz8qf39/Zj7+/uH+vr6dfz8/GP8/PxS+/v7Qfr6 - +jP4+Pgm9vb2HfLy8hPt7e0O39/fCMzMzAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ - fwK/v78E39/fCOjo6Avy8vIT9fX1Gvj4+CX6+vow+/v7P/z8/E/8/Pxh/Pz8dPv7+4f7+/ua/Pz8rPz8 - /Lz8/PzL/Pz81/z8/OL9/f3p/f398Pz8/PX9/f35/f38+/369/398uD9/ebD/v3Wnf79zIT+/cl8/v3Q - jf793q/+/ezS/v369f79/f3+/f39/v39/f7+/v7+/v7+//78+//+7eX//tjG//60kf/+mmz//pFf//6M - WP/+jFj//oxY//6MWP/+jFj//oxY//6LV//+ilb//opV//6KVf/+i1b//oxX//6MV//+jFj//oxY//6M - WP/+jFj//oxX//6LV//+lmj//qiB//7Ltf/+9O///vv5//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//vHq//7Xxf/+tpb//pNi//6KVf/+jFj//oxY//6MWP/9i1f//YtX/v2KVv79jlr+/aF1/v27 - nP795dn+/fz8/v38/P79/f39/f39+/39/fj8/Pz1/f398Pz8/Ov8/Pzj/Pz82vz8/M/8/PzE/Pz8tvv7 - +6f7+/uW+/v7hfr6+nP8/Pxh/Pz8UPv7+0D6+voy+Pj4JvX19Rvy8vIT6urqDN/f3wi/v78Ef39/AgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9vb2HPj4 - +CX6+voy+/v7QPz8/FD8/Pxh/Pz8dPv7+4f9/f2Z/Pz8q/z8/Lv8/PzJ/Pz81/z8/OD9/f3p/f397/z8 - /PX9/f34/fz7+v337/z98uL9/OnO/v3lwv795L7+/efG/v3u2P799en+/fz6/v39/f79/f3+/f39/v39 - /f7+9vL//uzk//7RvP/+uJf//qJ3//6SYf/+jlv//oxY//6MWP/+jFj//oxY//6LV//+i1X//php//6n - gP/+so///rqa//6ngP/+l2j//pBe//6LV//+jFf//oxY//6MWP/+jFj//otX//6QXv/+mGr//rGN//7O - t//+5dn//vv5//79/P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+8u3//trJ//65mv/+k2L//opV//6M - WP/+jFj//YtX//2KV//9i1f+/YpW/v2OWv79n3P+/bmZ/v3k2P79/Pv+/f38/f39/fv9/f35/Pz89f39 - /fD9/f3p/Pz84vz8/Nf8/PzM/Pz8v/z8/LL8/Pyj+/v7k/v7+4L6+vpx/Pz8X/z8/E/7+/tA+vr6M/j4 - +Cb29vYc8vLyFO3t7Q7f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAH9/fwK/v78E39/fCOjo6Avy8vIT9fX1Gvj4+CX6+vox+/v7P/z8/E/8/Pxh/Pz8dPv7 - +4f7+/ua/Pz8rPz8/Lz8/PzL/Pz81/z8/OL9/f3p/f398Pz8/PT9/f33/f39+v38/Pz9/Pz9/fz7/v38 - +/79/fv+/f39/v39/f79/f3+/f39/v39/f79/f3+/fz7/v7s5P/+2sn//raU//6Za//+kV///oxY//6M - WP/+jFj//oxY//6MWP/+jFj//oxX//6MV//+pn3//sWr//7ZyP/+593//sSq//6lff/+lmb//otX//6M - V//+jFj//oxY//6MWP/+jFj//otX//6KVf/+mGj//qmB//7Ot//+9O///vn3//7+/v/+/v7//v7+//7+ - /v/+/v7//v38//7x6//+2sn//rma//6TY//+ilb//oxX//6LV//9i1f+/YtX/v2LV/79i1f+/Y5c/v2f - dP79uJn+/ePY/v38+/39/Pz8/f39+f39/fb8/Pzx/Pz86/z8/OL8/PzY/Pz8y/z8/L78/Pyv/Pz8oPv7 - +4/7+/t/+vr6bvz8/F37+/tN+/v7Pvr6+jH4+Pgl9fX1G/Ly8hPq6uoM39/fCL+/vwR/f38CAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr - 6w3y8vIT9vb2HPj4+CX6+voy+/v7QPz8/FD8/Pxh/Pz8dPv7+4f9/f2Z/Pz8q/z8/Lv8/PzJ/f391vz8 - /N/8/Pzo/Pz87fz8/PL9/f32/fz8+f39/fr9/Pz8/fz8/f39/f39/f3+/f39/v39/f79/f3+/f39/v33 - 9P797+j+/dG+//22lv/+onj//pJg//6OW//+jFj//oxY//6MWP/+jFj//otX//6LVf/+lmb//qV8//7D - qP/+49f//u3l//707//+4NP//sqz//6sh//+lmX//o9c//6LV//+jFf//oxY//6MWP/+jFf//otX//6R - Xv/+mGj//rGN//7Ntf/+5dn//vv5//79/P/+/v7//v7+//76+P/+7eX//tnI//6+oP/+pn7//pBf//6L - V//9i1f//YpX//2LV/79i1f+/YxY/v2QXv79mWv+/bOS/v3Ouf797OT9/f39+/39/fn9/f32/Pz88vz8 - /Ov8/Pzj/Pz82Pz8/Mv8/Py8/Pz8rf39/Zz7+/uM+/v7e/z8/Gr8/Pxa/Pz8Svv7+zz5+fkv+Pj4JfX1 - 9Rvy8vIT6+vrDd/f3wjMzMwFf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E39/fCOrq6gzy8vIT9fX1G/j4+CX6+vox+/v7P/z8 - /FD8/Pxh/Pz8dPv7+4f7+/uZ/Pz8q/z8/Lr8/PzJ/Pz81fz8/N/8/Pzm/Pz87Pz8/PH8/Pz1/f399/39 - /fn9/f37/f39/P39/f39/f3+/f39/v39/f79/f3+/e/o/v3f0f79uZv+/Zdq//6RYP/+jFj//oxY//6M - WP/+jFj//oxY//6MWP/+jVn//o9b//6kev/+waT//t7P//78+//+/v3//v7+//739P/+6uH//sSp//6m - fP/+lmX//oxY//6MWP/+jFj//oxY//6MWP/+jFj//otX//6KVf/+mWr//qqC//7Puf/+8On//vj1//79 - /P/++/r//vLs//7by//+wqX//qV8//6WZv/+jlv//otY//2KV//9i1f+/YtX/v2MWf79j1z+/Zhq/v2n - gP79yLD+/eTY/f308Pz9/f36/f399/39/fL8/Pzt/Pz85Pz8/Nr8/PzN/Pz8vvz8/K37+/uc+/v7iv39 - /Xj8/Pxn/Pz8Vvv7+0f6+vo5+fn5Lff39yL19fUZ8fHxEurq6gzf398IzMzMBX9/fwIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ - fwLMzMwF39/fCOvr6w3y8vIT9fX1G/j4+CX6+voy+/v7QPz8/FD8/Pxh/Pz8c/v7+4b7+/uY/Pz8qfz8 - /Ln8/PzG/Pz80v39/dv8/Pzj/f396f39/e78/Pzy/Pz89f39/fj9/f36/f39/P39/f39/f3+/f38/v38 - /P794NL+/cGl/v2mf/79jl7//o1a//6MWP/+jFj//oxY//6MWP/+jFf//otX//6WZ//+qIH//sOo//7i - 1P/+8er//v39//7+/v/+/v7//vz6//718f/+4tT//sqy//6rhP/+lmb//o5b//6LVv/+jFf//oxY//6M - WP/+jFf//otX//6RXv/+l2j//rGO//7MtP/+5dr//vby//7t5f/+3Mz//r+i//6pgf/+mWr//pBe//2M - Wf/9ilf//otX/v2LV/79jFf+/ZFf/v2Yaf79rYn+/cSq/v3f0f398+78/Pn3+/39/fj8/Pz0/f397vz8 - /Ob8/Pzc/Pz8z/z8/MD7+/uw+/v7nfv7+4r9/f13/Pz8ZPz8/FT7+/tE+vr6N/n5+Sv39/ch9PT0GPHx - 8RLr6+sN39/fCMzMzAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E39/fCOrq6gzy8vIT9fX1G/j4 - +CX6+vox+/v7QPz8/E/8/Pxh+vr6c/v7+4X7+/uW+/v7p/z8/LX8/PzD/Pz8zvz8/Nj8/Pzg/Pz85/z8 - /Oz8/Pzx/Pz89P39/ff9/f36/f39/P39/f39/Pv+/fv6/v3TwP79qID+/Zdp/v2IVf/9ilf//oxY//6M - WP/+jFj//oxY//6LV//+ilb//p5z//6/o//+3M3//vn2//7+/f/+/v7//v7+//7+/v/+/v7//v39//73 - 9P/+593//sSo//6of//+lmb//o1a//6MWP/+jFf//oxY//6MWP/+jFj//otX//6LVv/+mmz//qyG//7M - tf/+4NL//tTB//7Cpv/+p3///pZm//6PXP/+jFj//YpX//2LV/79i1f+/Y1Z/v2PXP79mmz+/aZ+/v3D - qf793tD+/fDq/f39/fv9/f34/Pz89f39/e/8/Pzo/Pz83/z8/NL8/PzE/Pz8svz8/KD9/f2M/f39ePz8 - /GX8/PxS+/v7Q/r6+jT5+fkp9vb2HvPz8xbv7+8Q6OjoC9/f3wjMzMwF////AgAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9fX1G/j4+CX6+vox+/v7P/z8/E/8/Pxg/Pz8cf39 - /YL8/PyU/Pz8o/z8/LH8/Py+/Pz8yvz8/NP8/Pzc/Pz84/z8/Or9/f3v/Pz89P39/ff9/f36/f39/P38 - +/39+vj+/cu0/v2Za/79kV/+/opV/v2KVv/9i1f//oxY//6MWP/+jFj//otX//6KVf/+pHz//tC7//7p - 4P/++/r//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vz7//718P/+49b//suy//6qgv/+lmb//o1a//6L - Vv/+jFj//oxY//6MWP/+jFf//oxX//6RXv/+l2j//qR7//6shv/+pn7//p90//6WZv/+j13//YxZ//2L - V//9ilf//YtX/v2MV/79kV/+/Zdo/v2sh/79wab+/dvM/v3y7P39+Pb7/f39+Pz8/PX9/f3w/f396fz8 - /N/8/PzV/Pz8xvz8/Lb8/Pyj+/v7kP39/Xv8/Pxn/Pz8VPv7+0P6+vo0+fn5KPb29h7z8/MW7u7uD+Xl - 5Qrb29sHv7+/BH9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E39/fCOrq - 6gzy8vIT9fX1G/j4+CX6+vox+/v7Pvv7+078/Pxe+vr6b/v7+3/7+/uP/Pz8nvz8/Kz8/Py5/Pz8xPz8 - /M/8/PzZ/f394f39/en9/f3v/Pz89P39/fj9/f36/fz7/P37+f39zLX+/Ztt/v2RX/79iVT+/YpW/v2K - V//9i1f//oxY//6MWP/+i1f//opV//6jev/+zLX//uXZ//749f/+/Pz//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v38//738//+5dn//sOn//6pgv/+lmb//o5b//6MWP/+jFf//oxY//6MWP/+jFj//oxX//6L - V//+jVn//o5b//6MWP/+i1f//otY//6LWP/9ilf//YtX/v2LV/79jVr+/Y9d/v2abf79p37+/cGl/v3a - y/797ef9/f39+/39/fj8/Pz1/f398P39/en9/f3h/f391vz8/Mn8/Py5+/v7p/z8/JT7+/t/+vr6a/z8 - /Ff7+/tF+vr6NPn5+Sj29vYd8/PzFe3t7Q7j4+MJ1NTUBr+/vwR/f38CAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9fX1G/j4+CT6+vow+/v7Pfv7 - +0v8/Pxa/Pz8av39/Xn7+/uJ/f39l/z8/KX8/Pyz/Pz8v/z8/Mz8/PzX/Pz84P39/en9/f3w/Pz89f39 - /fj9/Pz7/fv7/f3Xxv79sY3+/Ztt/v2IU/79ilX+/YpX//2KV//9i1f//oxY//6MWP/+i1f//php//6t - iP/+y7T//u3m//749f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vz7//707//+5dn//sqy//6n - f//+lmb//o1Y//6MV//+jFj//oxY//6MWP/+jFj//oxX//6MWP/+jFj//oxY//6MWP/9i1f//YpX//6L - V/79i1f+/YxX/v2RX/79l2n+/aqF/v3Ao/792cn+/fLu/f349vv9/f35/Pz89f39/fD8/Pzq/Pz84vz8 - /Nf8/PzK/Pz8u/z8/Kr7+/uW/f39gvz8/G75+flb+/v7R/r6+jf5+fko9vb2HvPz8xXt7e0O4+PjCdTU - 1AaqqqoDf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ - fwLMzMwF39/fCOrq6gzx8fES9fX1Gvj4+CP5+fku+vr6Ovv7+0j8/PxW/Pz8ZPz8/HP9/f2C+/v7kfz8 - /KD8/Pyu/Pz8vfz8/Mr8/PzX/f394fz8/Or8/Pzx/f399v39/fn9/Pz8/eXa/f3Mtf79rYn+/ZJh/v2O - W/79i1b+/YtW/v2KV//9i1f//otY//6LWP/+kV///plr//6zkP/+0r///ufc//759//+/Pv//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//vz7//738//+49b//sOo//6rhP/+lmX//o9c//6MWP/+jFj//oxY//6M - WP/+jFj//oxX//6LV//+i1f//otX//2KV//9i1f+/YtX/v2NWv79kF7+/Ztt/v2ogv79wKT+/dnI/v3r - 5P39/f37/f39+Pz8/PX9/f3w/Pz86vz8/OL8/PzX/Pz8y/z8/Lz8/Pys+/v7mf39/YX8/Pxx/Pz8Xfv7 - +0v6+vo5+fn5LPf39x/z8/MW7e3tDuPj4wnMzMwFqqqqA////wEAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOrq6gzx8fES9PT0GPf3 - 9yH5+fkr+vr6N/v7+0P8/PxQ/Pz8Xfz8/Gz9/f17/f39i/v7+5z8/Pyt/Pz8vfz8/Mz8/PzZ/Pz85Pz8 - /Oz8/Pzz/f399/z8/Pv99fL8/evk/v3Hrv79pXz+/ZVl/v2KVP79ilb+/YpX//2KV//9i1f//oxY//6N - Wf/+j1v//ptt//6rhf/+zbb//vHr//749v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v38//71 - 8P/+59z//sqy//6lfP/+lmb//oxX//6MV//+jFj//oxY//6MWP/+jFj//oxY//2LV//9ilf//otX/v2L - V/79jFf+/ZBe/v2Xaf79qoT+/cCk/v3Zyf798+/9/fn3+/39/fn8/Pz1/Pz88fz8/Or8/Pzi/Pz82Pz8 - /Mv8/Py9/Pz8rPv7+5r9/f2H+vr6dPz8/GD7+/tN+/v7PPn5+Sz39/ch8/PzFu7u7g/j4+MJ1NTUBqqq - qgN/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAX9/fwLMzMwF39/fCOrq6gzw8PAR9PT0GPf39x/5+fkp+vr6Mvv7+z78/PxK/Pz8Wfz8 - /Gf9/f14/f39ifv7+5z8/Pyu/Pz8v/z8/M78/Pzc/Pz85v39/e78/Pz0/f39+f37+vv9+Pb9/d/R/f3E - qv79qoP+/ZRj/v2OW/79ilb+/YtX/v2KV//9i1f//otX//6LV//+kV7//pdo//6zkP/+0r7//ufc//75 - 9//+/Pv//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vz6//738//+4dT//sOp//6rhf/+lWT//o9c//6M - V//+jFf//oxY//6MWP/+i1f//YpX//2LV/79i1f+/Y1a/v2QX/79m23+/amE/v2/pP792cj+/Ovj/f39 - /Pv9/f34/Pz89f39/fD8/Pzr/Pz84vz8/Nj8/PzL/Pz8vfr6+q38/Pyb/f39iPz8/HX8/Pxi/Pz8UPv7 - +z76+vow9/f3IvX19Rnv7+8Q6OjoC9TU1AaqqqoD////AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E29vbB+Xl - 5Qru7u4P8/PzFfb29hz4+Pgj+fn5Lvb29jn7+/tG/Pz8VPz8/GX9/f13+/v7i/v7+5/8/Pyy/Pz8w/z8 - /NP8/Pzf/f396f39/fD9/f32/f39+f38/Pz99fH9/eng/v3Eqv79pXv+/ZRj/v2KVf79i1b+/otX/v2K - V//9i1f//oxY//6MWP/+jVn//ppr//6ogf/+zrj//vLs//759v/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v39//718f/+6d///siv//6hd//+lWX//otW//6MV//+jFj//YtX//2KV//9ilf//YtX/v2M - V/79kF3+/Zdp/v2og/79v6T+/djI/v3z7v39+vj7/f39+fz8/PX8/Pzy+/v76/z8/OP8/PzY/Pz8zPz8 - /L38/Pyt+/v7nPv7+4n9/f12/Pz8Y/z8/FD7+/tA+vr6Mfj4+CX19fUZ8fHxEujo6Avb29sHv7+/BH9/ - fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E1NTUBuXl5Qrt7e0O8vLyE/X19Rn39/ch+fn5K/r6 - +jf7+/tE/Pz8Vfz8/Gb7+/t7/f39j/z8/KT8/Py3/Pz8yP39/db8/Pzi/Pz86/z8/PL8/Pz3/f39+v37 - +vz99vP9/d7P/v3Fq/79qYP+/ZVl/v2OW/79ilb+/YtX/v2KV//9i1f//otX//6LV//+kV7//pdo//6z - kf/+0Lv//ubb//759v/+/Pv//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vv6//738//+4NL//sSq//6r - hv/+lGP//o9c//6KV//9ilf//YtX/v2LV/79jVn+/ZFf/v2abf79qoX+/b+k/v3YyP796uL9/fv5+/39 - /fj9/f32/f398Pz8/Ov8/Pzi/Pz82Pz8/Mv8/Py9/Pz8rfv7+5z7+/uJ/f39dvr6+mT8/PxS+/v7Qfr6 - +jP4+Pgl9vb2HPHx8RLr6+sN39/fCL+/vwR/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ - fwKqqqoDzMzMBd/f3wjo6OgL7u7uD/Pz8xb29vYe+fn5Kfr6+jX7+/tF/Pz8Vv39/Wv9/f2A+/v7lvz8 - /Kr8/Py9/Pz8zf39/dv9/f3l/f397vz8/PT9/f35/f38+/38+/399/T+/erg/v3DqP79pHv+/ZJh/v2K - Vf79i1b+/YtX/v2KV//9i1f//oxY//6MWP/+jFf//phq//6ngP/+0Lv//vLs//759//+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//728v/+7eT//set//6fdP/9k2P//YhV//2KVv79i1f+/YxX/v2P - XP79l2n+/aeA/v2/pP792Mj+/fPu/f38+vv9/f35/Pz89vz8/PL8/Pzr/Pz84/z8/Nj8/PzM/Pz8vfz8 - /K77+/uc+/v7if39/Xb8/Pxj/Pz8Ufv7+0H6+voy+Pj4JvX19Rvy8vIT6urqDN/f3wi/v78Ef39/AgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwKqqqoDv7+/BNvb2wfl5eUK7+/vEPPz - 8xb39/cf+fn5Kvr6+jj4+PhJ/Pz8XPz8/HH9/f2G/Pz8m/v7+7D8/PzB/Pz80fz8/N38/Pzn/f397vz8 - /PX9/f34/fz8+/37+vz99O/+/d7Q/v3GrP79qYP+/ZZm/v2NWv79ilb+/YtX/v2KV//9i1f//otX//6L - V//+kV///phq//60kv/+z7n//ufc//759v/+/Pv//v7+//7+/v/+/v7//v7+//7+/v/9/f3//fr5//32 - 8//939H//cWs//2sh//9lmf+/Y5c/v2KVv79j13+/Zlr/v2qhf79v6T+/dnJ/v3r4/39+ff7/f39+Pz8 - /PX9/f3w/Pz86/z8/OL8/PzY/Pz8y/z8/L38/Pyt+/v7nPv7+4n9/f12+vr6ZPz8/FL7+/tC+vr6M/j4 - +Cf29vYc8vLyE+vr6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAABqqqqA8zMzAXl5eUK7e3tDvPz8xb39/cf+fn5LPv7+zv7+/tO/Pz8Yvr6 - +nf7+/uM+/v7ovz8/LX8/PzG/Pz81Pz8/OD8/Pzo/f398Pz8/PX9/f35/f39+/38+/39+ff+/ejf/v3B - pv79pHv+/ZFf/v2KVf79i1b+/YtX/v2LV/79i1f//oxY//6LV//+jFf//php//6pg//+07///vLr//76 - 9//+/v7//v7+//7+/v/9/f3//f39/v39/f79/f3+/f39/v338/797uf+/civ/v2ke/79lGX+/YtY/v2U - Zf79pHz+/b+j/v3ayv398+79/f39+/39/fn8/Pz1/Pz88fz8/Or8/Pzj/Pz82Pz8/M38/Py+/Pz8rvv7 - +5z7+/uJ/f39dvz8/GP8/PxR+/v7Qfr6+jL4+Pgm9vb2HPLy8hPq6uoM39/fCL+/vwR/f38CAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CqqqqA9TU - 1Abl5eUK7+/vEPT09Bj4+Pgj+vr6Mfv7+0H8/PxT+vr6aP39/Xz7+/uS/Pz8pfz8/Lj8/PzH/Pz81fz8 - /OD9/f3p/f397/z8/PX9/f34/fz8+/38+/z98u7+/d/R/v3Grf79qID+/ZZn/v2MWf79ilb+/YtX/v2K - V//9i1f//otX//6MWP/+kV///pps//6zkv/+zbf//uje//759v/+/fz//v7+//39/f/9/f3+/f39/v39 - /f79/f3+/fr5/v338/7949f+/dC8/v3Dqf79u57+/cKp/v3OuP393tD9/ezl/P359/r9/f34/Pz89f39 - /fD8/Pzq/f394fz8/Nj8/PzL/Pz8vfz8/K37+/uc+/v7if39/Xb8/Pxk/Pz8Uvv7+0L6+voz+Pj4J/b2 - 9h3y8vIU7e3tDt/f3wjMzMwFf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqqqqA9TU1Abo6OgL8PDwEfX19Rv4+Pgm+vr6Nfv7 - +0X8/PxY/Pz8bPv7+4L8/PyV/Pz8qfz8/Ln8/PzK/f391vz8/OL9/f3p/f398Pz8/PX9/f34/f39+/37 - +/39+ff+/eXa/v3ApP79pX3+/ZFf/v2LV/79i1f+/YtX/v2LV/79i1f//oxY//6LV//+jVn//pdp//6r - h//+1MD//u/n//759v/+/f3//f39//39/f79/f3+/f39/v39/f79/f3+/f39/v36+P799vL+/ezl/v3n - 3v397eX8/fLt/P35+Pv9/f36/f399/z8/PT9/f3w/Pz86vz8/OP8/PzY/Pz8zPz8/L38/Pyu+/v7nPv7 - +4n9/f12/Pz8Y/z8/FL7+/tB+vr6M/j4+Cb29vYc8vLyFOrq6gzf398ImZmZBX9/fwIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB/f38CqqqqA9vb2wfq6uoM8vLyFPb29h75+fkq+vr6Ofz8/Er8/Pxc/Pz8cPv7+4T9/f2X/Pz8qfz8 - /Lv8/PzJ/Pz81/z8/OD9/f3p/f398Pz8/PX9/f34/fz8+/38+/z98ez+/eDT/v3Grf79p37+/ZZn/v2L - V/79ilb+/YtX/v2KV//9i1f//otX//6MWP/+kF///ppu//6zkP/+zbb//unf//749f/9+/v//f39/v39 - /f79/f3+/f39/v39/f79/f3+/Pv6/v36+P399vP8/fTw+/328/r9+Pb5/fz79/z8/PX8/Pzy/Pz87fz8 - /Oj8/Pzg/Pz81/z8/Mr8/Py9/Pz8rPv7+5z7+/uJ/f39dvr6+mT8/PxS+/v7Qvr6+jP4+Pgn9vb2HfLy - 8hTb29sO39/fCMzMzAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CzMzMBd/f3wjt7e0O8/PzFvf3 - 9yD5+fkt+/v7PPv7+0z6+vpf/Pz8cvv7+4b7+/uZ/Pz8q/z8/Lv8/PzL/f391vz8/OL8/Pzq/Pz88fz8 - /PX9/f34/f39+/z7+v39+Pb+/eLW/v3ApP79p37+/ZFf/v2MWf79i1b+/YtX/v2KV//9i1f//oxY//6L - V//+jlv//phq//6viv/+1cH//uzj//339P/9/Pz+/f39/v39/f79/f3+/f39/v39/f39/f39/f39/P39 - /fr9/f35/f399/z8/PX8/Pzz/f397/z8/Ov9/f3l/Pz83/z8/NX8/PzK/Pz8vPz8/K38/Pyb+/v7if39 - /Xb8/Pxj/Pz8Uvv7+0H6+voz+Pj4Jvb29hzy8vIU6+vrDd/f3wjMzMwFf39/AgAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAGqqqoD1NTUBuXl5Qrv7+8Q9fX1Gfj4+CP5+fkv+/v7Pvv7+078/Pxg/Pz8c/39 - /Yb7+/uZ/Pz8q/z8/Lz7+/vK/Pz81/39/eH8/Pzq/f398Pz8/PX9/f34/fz8+/38+/z98ev+/eLW/v3G - rP79pXv+/ZZm/v2KVf79ilb+/YtX/v2KV//9i1f//otX//6MWf/+kF3//ptu//6yjv/+zLX//erh//33 - 9f79/Pz+/f39/v39/f79/f39/f39/f39/fv9/f35/f399/z8/PX8/Pzy/f397/z8/Ov8/Pzn/f394fz8 - /Nr8/PzS/Pz8xvz8/Lr8/Pyq+/v7mvv7+4j8/Px1/Pz8Y/z8/FL7+/tC+vr6M/j4+Cf29vYc8vLyFOvr - 6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E29vbB+jo - 6Avx8fES9fX1Gvj4+CT6+vow+/v7P/z8/E/8/Pxh/Pz8dPv7+4f9/f2Z/Pz8rPz8/Lv8/PzK/f391v39 - /eH9/f3p/f398Pz8/PX9/f34/f39+/38+/z9+Pb+/eDS/v2/ov79p3/+/ZFf/v2NWv79i1b+/YtX/v2K - V//9i1f//otX//6KVv/+jlv//phq//6wjf/908D//enh/v349v79/Pv+/f39/f39/fz9/f38/f39+f39 - /ff8/Pzz/f398Pz8/Ov8/Pzn/Pz84vz8/Nz8/PzV/Pz8zPz8/ML8/Py2/Pz8qPv7+5j7+/uH+vr6dfz8 - /GL8/PxS+/v7Qfr6+jP4+Pgm9vb2HPLy8hTr6+sN39/fCMzMzAX///8CAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E39/fCOrq6gzx8fES9fX1Gvj4+CX6+vox+/v7QPz8 - /FD8/Pxh/Pz8dPv7+4f7+/ua/Pz8q/z8/Lz8/PzK/Pz81/39/eH9/f3p/Pz88Pz8/PT9/f34/fz8+/z7 - +v398uz9/eTY/v3Fq/79o3n+/ZVl/v2KVf79ilb+/otX/v2KV//9ilf//YpX//2LWP/9jlz//Zpu//6v - jP79zbf+/e7o/v349v79/Pz9/f39+/39/fn9/f32/Pz88/39/e78/Pzo/Pz84vz8/Nz8/PzV/Pz8zvz8 - /MX8/Py7+/v7sPv7+6L8/PyU+/v7hPr6+nP8/Pxh/Pz8UPv7+0H6+voz+Pj4J/b29hzy8vIU6+vrDd/f - 3wjMzMwFf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ - fwLMzMwF39/fCOrq6gzx8fES9fX1G/j4+CX6+voy+/v7P/z8/FD8/Pxh/Pz8dPv7+4f9/f2Z/Pz8q/z8 - /Lv8/PzK/f391v39/eH9/f3p/f397/z8/PT9/f34/f39+v37+vz9+Pb9/d7Q/f2/o/79qID+/ZFg/v2O - Wv79i1b+/YtX/v2LV/79i1f+/YtW/v2KVf79jlz+/Zdo/v22lv794NL+/fHr/f38+/z9/f35/f399/z8 - /PL8/Pzt/Pz85vz8/N/8/PzX/Pz8z/z8/Mb8/Py9/Pz8svv7+6f8/Pyb/f39jfv7+3/9/f1v/Pz8X/z8 - /E/7+/tA+vr6M/j4+Cb29vYc8vLyFOvr6w3f398IzMzMBf///wIAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOrq6gzy8vIT9fX1G/j4 - +CX6+vox+/v7QPz8/E/8/Pxh/Pz8dPv7+4f7+/ua/Pz8q/z8/Lz8/PzK+/v71/39/eH9/f3p/f398Pz8 - /PT9/f34/f39+f38+/v98u38/efc/f3Eqf39onj+/ZRk/v2KVf79ilb+/YtX/v2LV/79i1f+/YtW/v2L - V/79jFn+/aZ//f3Mtf395dr8/fv6+v39/ff8/Pzz/Pz87fz8/Of9/f3e/Pz81Pz8/Mr8/Py//Pz8tPz8 - /Kn8/Pye/f39kf39/YX9/f13/Pz8afz8/Fv7+/tM+/v7Pvr6+jH4+Pgm9fX1G/Ly8hTr6+sN39/fCMzM - zAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9fX1G/j4+CX6+voy+/v7P/z8/FD8/Pxh/Pz8dPv7 - +4f9/f2Z/Pz8q/z8/Lv8/PzJ/f391vz8/OD8/Pzo/f397vz8/PP8/Pz2/f39+P37+vn9+fb6/dzN+/3A - pfz9p4H9/ZJj/f2NW/39ilX+/YpW/v2LVv79i1b+/YtZ/f2MWv39pn78/cu1+/3k2fn9+/r3/Pz88/39 - /e/8/Pzn/f393vz8/NP8/PzI/Pz8u/z8/K39/f2g/Pz8lPv7+4j9/f17/Pz8bvz8/GL8/PxV+/v7SPv7 - +zv5+fkv+Pj4JPX19Rvy8vIT6+vrDd/f3wjMzMwF////AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E39/fCOrq - 6gzy8vIT9fX1G/j4+CX6+vox+/v7QPz8/E/8/Pxh/Pz8dPv7+4f7+/uZ/Pz8q/z8/Lv8/PzJ/Pz81fz8 - /N/8/Pzm/Pz87P39/fD8/Pz0/fz89v38/Pf98+35/efd+v3Dqfv9onr8/ZNj/P2IVP39iVb9/YpX/f2K - V/39j1z8/ZVm+/2wjvr918T4/evi9vz6+vT9/f3u/f396fz8/N/9/f3W/Pz8yPz8/Lr8/Pyr/Pz8m/39 - /Yz9/f1+/Pz8cfz8/GT8/PxY+/v7TPv7+0H6+vo2+fn5K/f39yL19fUZ8fHxEtjY2A3f398IzMzMBX9/ - fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9vb2HPj4+CX6+voy+/v7P/z8 - /FD8/Pxh+vr6dP39/Yb7+/uY/Pz8qfz8/Ln8/PzH/Pz80v39/dv8/Pzj/Pz86Pz8/Oz9/f3v/Pz88vz5 - +PT99fL2/dzN9/zBqPn9qYT5/ZZo+v2PXfr9jlv6/ZNj+v2dcvn9q4f4/cWs9vzk2vT88+3x/fz67vz8 - /Of8/Pzg/f391vz8/Mr8/Py7/Pz8rPv7+5r7+/uJ/f39efz8/Gr8/Pxd/Pz8UPv7+0X6+vo6+vr6Mfn5 - +Sj39/cf9PT0GPDw8BHq6uoM39/fCMzMzAX///8CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ - fwK/v78E39/fCOrq6gzy8vIT9fX1Gvj4+CX6+vow+/v7P/z8/E/8/Pxh/Pz8c/39/YX7+/uX/Pz8qPz8 - /Lf8/PzE/Pz8z/z8/Nj9/f3e/Pz85Pz8/Oj8/Pzr/f387v38/PD89fHy/Onf9P3Grvb9qYP3/ZZn+P2R - X/j9nnP3/bCO9vzHr/T83tDy/fXy8Pz7++v8/Pzn/Pz83/z8/Nf8/PzL/Pz8vvz8/K77+/uc/f39if39 - /Xf8/Pxm/Pz8V/v7+0n7+/s9+vr6Mvn5+Sr39/ci9fX1G/Ly8hTu7u4P5eXlCtvb2wfMzMwFf39/AgAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9vb2HPj4 - +CX6+voy+/v7P/z8/FD8/Pxg+vr6cv39/YP8/PyU/Pz8pPz8/LL8/Py9/Pz8x/z8/M/9/f3W/f392/z8 - /OD8/Pzk+/v76Pz5+Ov99PDu/eDT8PzOufL8waby/L2g8/zGrfL90sDw/eDU7vzt5uv8+vnn/Pz84vz8 - /Nz8/PzT/Pz8y/z8/L77+/uw+/v7n/v7+439/f15/Pz8Z/z8/Fb7+/tH+vr6Ovn5+S/4+Pgl9vb2HvT0 - 9Bfx8fES6+vrDeXl5Qrb29sHv7+/BH9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAH9/fwK/v78E39/fCOjo6Avy8vIT9fX1Gvj4+CX6+vow+/v7P/v7+078/Pxe/f39b/v7 - +4D7+/uQ/Pz8nvz8/Kv8/Py2/Pz8v/z8/Mf8/PzN/Pz80/z8/Nn9/f3e/Pz84vz8/Ob9/Prp/Pn37Pz1 - 8u389PHt/Pb07Pz49+r8+vrn/Pz84v39/d78/PzX/Pz80Pz8/Mf8/Py9/Pz8r/z8/KH7+/uP+/v7ffz8 - /Gn8/PxX+/v7Rvr6+jj5+fkr9/f3IfX19Rny8vIT7e3tDuXl5Qrb29sHzMzMBaqqqgN/f38CAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr - 6w3y8vIT9fX1G/j4+CX6+vox+/v7Pvv7+038/Pxc/f39a/v7+3r7+/uI/f39lPz8/KD8/Pyp/Pz8svz8 - /Lr8/PzC/Pz8yPz8/M/8/PzU/Pz82vz8/N38+/vg/Pn34vz59+L9+fnh/fr63vz7+9r8/PzU/Pz8z/z8 - /Mf8/Py//Pz8tfz8/Kv7+/ud+/v7j/v7+376+vpt/Pz8Wvv7+0n6+vo6+fn5Lff39yH19fUZ8fHxEuvr - 6w3j4+MJ1NTUBr+/vwSqqqoDf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E39/fCOjo6Avx8fES9fX1Gfj4+CP5+fku+/v7O/v7 - +0n8/PxW/Pz8ZPz8/HL9/f1++/v7ivz8/JT8/Pye+/v7p/v7+7D8/Py4/Pz8v/z8/Mb8/PzN/Pz80fz8 - /NT9/f3W/f391vz8/NX8/PzR/Pz8zPz8/Mb8/Py//Pz8tvz8/K38/Pyj+/v7mP39/Yr9/f18/Pz8bPz8 - /Fz7+/tL+/v7O/n5+S739/ci9PT0GPDw8BHo6OgL29vbB8zMzAWqqqoDAAAAAQAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ - fwLMzMwF39/fCOvr6w3x8fES9fX1Gvf39yL5+fkt+vr6OPv7+0T8/PxQ/Pz8XPz8/Gf6+vpz+/v7ffv7 - +4f9/f2Q+/v7mvz8/KP8/Pyr/Pz8s/z8/Lr8/Py//Pz8w/z8/MX8/PzF/Pz8xPz8/MD8/Py6/Pz8s/z8 - /Kv7+/ui+/v7mP39/Y37+/uC/Pz8dfz8/Gj8/Pxa+/v7S/v7+z35+fkv+Pj4JPX19Rrx8fES6urqDNvb - 2wfMzMwFf39/Av///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E39/fCOrq6gzw8PAR9PT0F/f3 - 9x/5+fko+vr6Mvv7+zz7+/tH/Pz8Ufz8/Fz8/Pxm/Pz8cP39/Xr7+/uE+/v7jvv7+5f7+/uf+/v7p/z8 - /K38/Pyx/Pz8s/z8/LT8/Pyx/Pz8rfz8/Kj8/Pyg+/v7l/v7+477+/uE/f39ePz8/Gz8/Pxg/Pz8VPv7 - +0j7+/s8+fn5L/j4+CT19fUb8vLyE+rq6gzf398Iv7+/BH9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAX9/fwLMzMwF39/fCOjo6Avv7+8Q8/PzFvb29h34+Pgk+fn5Lfr6+jb7+/s++/v7R/z8 - /FH8/Pxa/Pz8ZPz8/G77+/t4+/v7gfv7+4n7+/uR+/v7lvz8/Jv7+/ud+/v7nfz8/Jv7+/uX+/v7kvv7 - +4r9/f2B/f39ePz8/G78/Pxj/Pz8WPv7+077+/tD+vr6OPn5+S74+Pgk9fX1G/Ly8hTr6+sN4+PjCczM - zAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E29vbB+Xl - 5Qrt7e0O8vLyE/X19Rn39/cf+Pj4Jvn5+S36+vo1+/v7Pfv7+0b8/PxP/Pz8Wfz8/GL9/f1r+vr6c/v7 - +3r7+/t/+/v7g/v7+4X7+/uF+/v7g/v7+4D7+/t7/Pz8c/39/Wv8/Pxi/Pz8Wfz8/E/7+/tF+/v7PPr6 - +jP5+fkq9/f3IfX19Rry8vIT6+vrDePj4wnMzMwFqqqqAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E1NTUBuPj4wnq6uoM8PDwEfPz8xX19fUa9/f3IPj4 - +Cb5+fku+vr6Nfv7+z37+/tF+/v7Tfz8/FX8/Pxc/Pz8Yvr6+mf8/Pxq+vr6bPz8/Gz8/Pxq/Pz8Z/z8 - /GL8/Pxc/Pz8Vvv7+077+/tF+/v7Pfr6+jX5+fkt+Pj4Jfb29h709PQY8fHxEuvr6w3j4+MJ1NTUBqqq - qgN/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ - fwK/v78E1NTUBuPj4wnq6uoM7+/vEPLy8hT19fUZ9vb2Hvj4+CX5+fks+vr6M/r6+jr7+/tC+/v7Sfz8 - /E/8/PxU/Pz8Wfz8/Fz8/Pxe/Pz8Xvz8/Fz8/PxZ/Pz8Vfz8/FD8/PxK+/v7Qvr6+jr6+voz+fn5K/j4 - +CT29vYe9PT0GPHx8RLr6+sN4+PjCdvb2we/v78Ef39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////// - ///////////////////////4H///////////////////4Af//////////////////wAA//////////// - //////wAAD/////////////////wAAAP////////////////4AAAA////////////////4AAAAH///// - //////////8AAAAAf//////////////+AAAAAD///////////////AAAAAAP//////////////gAAAAA - B//////////////wAAAAAAP/////////////4AAAAAAB/////////////8AAAAAAAP////////////+A - AAAAAAB/////////////AAAAAAAAP////////////gAAAAAAAB////////////wAAAAAAAAP//////// - ///4AAAAAAAAB///////////8AAAAAAAAAP//////////+AAAAAAAAAB//////////+AAAAAAAAAAP// - ////////AAAAAAAAAAB//////////gAAAAAAAAAAP/////////gAAAAAAAAAAB/////////wAAAAAAAA - AAAP////////4AAAAAAAAAAAB////////8AAAAAAAAAAAAP///////+AAAAAAAAAAAAB////////AAAA - AAAAAAAAAP///////gAAAAAAAAAAAAB///////wAAAAAAAAAAAAAf//////4AAAAAAAAAAAAAD////// - 8AAAAAAAAAAAAAAf/////+AAAAAAAAAAAAAAD//////AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAH - /////wAAAAAAAAAAAAAAA/////8AAAAAAAAAAAAAAAH////+AAAAAAAAAAAAAAAA/////AAAAAAAAAAA - AAAAAH////wAAAAAAAAAAAAAAAA////8AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAA////gAAAAA - AAAAAAAAAAAH///wAAAAAAAAAAAAAAAAA///8AAAAAAAAAAAAAAAAAH//+AAAAAAAAAAAAAAAAAA//+A - AAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAB//AAAAAAAAAAAAAAAAAAAf/gAAAAAAAAAAAAAAAAA - AD/4AAAAAAAAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAB/gAAAAAAAAAAAA - AAAAAAAf4AAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAA/AAAAAAAAAAAAAAAAAAAAPwAAAAAAA - AAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAAAB4AA - AAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAAAAA - AA/AAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAH+AAAAAAAAAAAAAAAAAAAB/wAAAAAAAAAAAA - AAAAAAAf8AAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAB/+AAAAAAA - AAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAB//8A - AAAAAAAAAAAAAAAAA///gAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA - H///8AAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAB////8AAAAAAAAAAAAAAAA/////gAAAAAAAAAA - AAAAAf////8AAAAAAAAAAAAAAAP/////gAAAAAAAAAAAAAAP/////8AAAAAAAAAAAAAAH//////gAAAA - AAAAAAAAAD//////8AAAAAAAAAAAAAB///////gAAAAAAAAAAAAA///////8AAAAAAAAAAAAAf////// - /wAAAAAAAAAAAAP///////+AAAAAAAAAAAAD////////wAAAAAAAAAAAB/////////AAAAAAAAAAAA// - ///////4AAAAAAAAAAAf/////////AAAAAAAAAAAP/////////4AAAAAAAAAAH/////////+AAAAAAAA - AAD//////////wAAAAAAAAAB//////////+AAAAAAAAAA///////////wAAAAAAAAAf//////////8AA - AAAAAAAP///////////gAAAAAAAAH///////////8AAAAAAAAD////////////gAAAAAAAB///////// - ///8AAAAAAAA/////////////gAAAAAAAf////////////8AAAAAAAf/////////////gAAAAAAP//// - /////////8AAAAAAP//////////////gAAAAAP//////////////8AAAAAH///////////////gAAAAD - ///////////////8AAAAB////////////////gAAAA////////////////+AAAAf//////////////// - 4AAAP/////////////////gAAH/////////////////+AAH//////////////////4AH//////////// - ///////4P////////////////////////////////////////////////////w== - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAcAEBAAAAAAIABoBAAAdgAAABgYAAAAACAAiAkAAN4EAAAgIAAAAAAgAKgQAABmDgAAMDAAAAAA + IACoJQAADh8AAEBAAAAAACAAKEIAALZEAABgYAAAAAAgAKiUAADehgAAgIAAAAAAIAAoCAEAhhsBACgA + AAAQAAAAIAAAAAEAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /wv7+/tN+/v7j/v7+4/8/PxP7+/vEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjo + 6Av8/Pxl/Pv717F3Z/Kvdmbz/Pz83Pv7+4Hz8/MWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/v + 7xD8/Pxn/fz83q90ZP6RPib/5crD/+28r/77+/rt+/v7h/Pz8xUAAAAAAAAAAAAAAAAAAAAAAAAAAPPz + 8xX9/f2E/Pz8576OgP6RPif/5srB/+SQe//jjnj/6qyc/v39/e/9/f2H8/PzFQAAAAAAAAAAAAAAAPPz + 8xX7+/uH/f397/3Hd/747eH/8unm/+mlk//rrZz//v7+/+abh//pqpr+/Pv77fr6+nTo6OgLAAAAAP// + /wz5+flb/Pz75/3Iev7+vV7//fn3//no5P/88/D/5piD//HIvP/+/v7/55yJ//jp5f77+vnf/Pz8Zf// + /wv5+flT/Pz8vf3x4Pr+tUz//vTj//rs6P/kknz/9+Da//vx7//ml4P/8svA//7+/v/Kopf/qWtZ/fv6 + +db7+/tE/Pjxtv3esPj9+vb//uCx//62Tf/+8t7/9t3X/+SSff/00cf/5ZaB//LLwP/EmIz/kT0n/5A9 + Jv+tcWDw+/v7fPzt19D9yX77/sFp//79+//+4bX//rhR//779v/23NX/5JF6//PMw//GnI//kT4n/5E9 + Jv+QPSb/wJOH8fv7+4L8/Pqp/fr56f3Iev7+wmr//sRv//7Ief/+9/P//ung//zz8f/+w6f/8rKW/5NA + Kf+QPSb/wZSH/fz8/Nf7+/tH+/v7Tf39/Yb8+/rt/cVz/v7Fcv/+9/P//php//6PXP/+49f//uzj//6Q + Xf/1vqf/1bWt/fz8/Nz8/Pxl////C+Pj4wnz8/MW+/v7hv39/en9+/n+/pJh//6xjf/+18T//o5Z//7i + 1f/+kV///cqz/vz8/Nn8/PxX////CgAAAAAAAAAAAAAAAPHx8RL6+vpo/Pz85v2zkP7+lmb//vr4//7T + v//+jFj//cOp/v39/eH8/Pxj39/fCAAAAAAAAAAAAAAAAAAAAAAAAAAA7u7uD/v7+4X8/Pzs/bST/v6Y + af/99fH//fbz+vz8/Nr8/Pxl5eXlCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADz8/MW+/v7hvz8 + ++T9tpb4/M259Pz8/Lf7+/tN////CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjCfv7 + +0j8/Pyb/O/ow/z496H7+/tE////CQAAAAAAAAAAAAAAAAAAAAAAAAAA/n8AAPwfAAD4DwAA4AcAAMAH + AADAAwAAgAEAAAABAAAAAAAAAAEAAIADAADABwAA8A8AAPAfAAD4PwAA/H8AACgAAAAYAAAAMAAAAAEA + IAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjo + 6Av5+fkr/Pz8Wv39/X/9/f1//Pz8Wvn5+Szr6+sN////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////C/f39z37+/uJ+/v7vdS1rNDRr6bQ+/n5vfv7 + +5D4+PhM8/PzFn9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADo6OgL+vr6Ov39/ZP8/Pzf2r+395VGMPqVSDP74MrE+Pz8/Of8/Pyu/Pz8VvPz8xb///8BAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AvDw8BH7+/tA/f39k/v6+tzYvLT6mU45/5E+ + J//DlIf/8dfQ//Xb1P38+/rq/Pz8svz8/Fr19fUZf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8B8/PzFfj4+E77+/ud/Pz84NW4sPqVRS/+kT4n/8mglP/wx7z/5JR//+SUf/7z1Mv9/fz87vz8 + /LT5+flZ8/PzFX9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAP///wH19fUZ+fn5Wfz8/K78/Pzm9/Hu+6tu + XP+TQSr/w5SH/+7Dt//jj3n/55+M/+ediv/kl4T/9NrT/fv6+uz8/Pyy/Pz8V+np6RcAAAAAAAAAAAAA + AAAAAAAAf39/AvPz8xX8/PxZ/Pz8tPz8++v94rr8+82K/9zAtf/Tsqj/9uHc/+aZhf/ml4L/99/Z//rr + 5//oopD/5JWC//PSyvz7+vrr/Pz8rfz8/Erq6uoMAAAAAAAAAAAAAAAA6urqDPv7+0j8/Pyu/Pz77f3m + xv39uVf//r9j//727P/+/fz//PXz/+utnP/kkXz/8ce7//78/P/55uH/5puH/+SVgv/24Nr8/f395f39 + /Zf6+vo6////CwAAAADj4+MJ+fn5Kvv7+4H9/Pre/eO8/P26Wv/+wWj//u7W//bd1v/vv7P//fb1//zz + 8P/ttKT/5ZN+//DCtv/9+fj/+ebh/+utnv/13Nb/8ufl+vr599z8/PyU+/v7Pf///wr6+vox/Pz8dfz8 + /L389Ofx/bta/v66Vv/+7NH//v7+//DDuP/kkHr/7beo//36+f/89vT/66+e/+SQev/wwrb//v38//78 + /P/u4t7/mk45/tGwp/r7+/vg+/v7h/j4+CX7+/t5/Pz8xf369fD9/Pv8/d6v//67WP/+xnP//vPh//z1 + 8//stab/5JJ8/+++sf/99/b/99/Z/+OOeP/nnIj//PTy/+jX0v+kXkv/kD0m/5dJM/7Utaz2+vn3tPv7 + +0b8/Pyk/eO+5f3Ecf397tb//v38//7juv/+ulX//sFn//7x3f/9+fj/7rut/+SRe//rrJz/6aaT/+SQ + ev/yy8H/6NXP/59YRP+RPif/kT0n/5A9Jv+TQy7607Wsyfr6+mv9/f2z/OC46P24Uv7+wWn//vLg//79 + +//+3q7//rdP//7Fcf/++/X//Pb0/+yzpP/kkHr/5ZR///HHvP/s3dn/mk44/5E+J/+RPSb/kT4n/5A9 + Jv+bUj7649POy/r6+m/7+/uY/Pv51f3jvfz9uln//sBm//7u1//+8dv//rtY//67WP/+9+z//v7+//z2 + 9P/xxbn/9NLK//7w6f/eua3/lkUw/5E9Jv+RPif/kD0m/6RfTP7m1dD3/f39t/v7+079/f1r/f39qv39 + /e794rr9/bhS/v69Xv/+vV7//rhS//7iuP/+/Pv//tO///7u5//+/v7//vj1//6QXf/+n3P/1aqd/5I/ + KP+QPSb/m086/uXUz/r8/Pzf/f39h/j4+Cb5+fkr+fn5Wfz8/LP8+/nq/eC1/f25WP/+ulj//uG0//7z + 7P/+uJn//o1Z//6ecf/+4tb//v38//7Hrv/+kmD//qF3/9eomP+3gHL+49HL+Pz8/Nr9/f2T+/v7PP// + /wrj4+MJ9PT0F/z8/Fb8/Pyy/Pv67f3s0/396s///fj1//64mP/+jVn//p1w//6RX//+mmz//ubb//78 + +//+uZn//otX//25m/76+Pf4/Pz81fv7+436+vo5////CwAAAAAAAAAAf39/AvPz8xb8/PxY/Pz8rfz8 + /OL9/f35/dPA//6NWf/+nG///vXx//7SvP/+lGP//p9z//7Tv//+lmf//Z5z//3m3Pn8/PzY+/v7hvr6 + +jTl5eUKAAAAAAAAAAAAAAAAAAAAAP///wH09PQX+/v7Sfz8/JX8/Pzf/efc/P2Za//+k2L//trI//79 + /f/+2Mf//pVl//6LWP/9oXn//eje+/z8/Nz7+/uR+vr6N+Xl5QoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAB6urqDPv7+0P8/Pyo/Pz87P3ay/39k2H+/pdo//7j1v/+/f3//dG9//2ccP795Nr5/Pz83/z8 + /JX7+/s85eXlCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPPz8xX8/PxX+vr6svz7 + ++r93c/9/Zlr//6Yaf/92cn//fz8/P359vD8/PzT+/v7kfv7+z7r6+sNAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wHz8/MW/Pz8Vvz8/LL8/Pzs/d3Q+v2SYv39oHf9/PXy7fz8 + /Lr8/Px1+vr6M+Xl5QoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38C9PT0F/z8/Fb9/f2e/Pz8yPzh1eD86uHa/Pz8svz8/Gb4+Pgj////BwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjCfj4+Cb8/Pxc/f39iP39 + /aH7+/uO/Pz8X/f39yL///8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A/4H/AP8A + /wD+AH8A/AA/APgAHwDwAA8A4AAHAMAAAwDAAAEAgAABAAAAAQAAAAEAAAABAIAAAQDAAAMA4AAHAPAA + DwD4AB8A/AA/AP4AfwD/Af8A/4P/AP/H/wAoAAAAIAAAAEAAAAABACAAAAAAAAAgAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj4+MJ9vb2Hfv7 + +zz8/Pxe/f39eP39/Xj8/Pxe+/v7PPb29h3j4+MJ////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8B6OjoC/n5 + +Sj5+flY+/v7iPz8/Kjz7uu48+zruPz6+qj7+/uJ/Pz8Xfr6+jDx8fESv7+/BAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Aerq + 6gz5+fks+vr6Zfz8/KX8/PvQ7eLf4q1yYuiqbFvo697a4vz8/NL8/Pyu+/v7ePf390D09PQX////BAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ + fwLr6+sN+fn5LPz8/Gb8/Pyp/Pv73Ove2vSsbl76kD0l/JE/KfzClon7/f399v39/eX8/PzA+/v7hfv7 + +0T09PQYzMzMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8D7+/vEPn5+S78/Pxm/Pz8qfv7+93p2dX2rnNi/pE/KP+RPSb/q2xa/+/e2v/35N/++ezn+vz7 + +uv8/PzE+/v7hvv7+0Xr6+sZzMzMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAzMzMBfPz8xb6+vo4/Pz8bfz8/Kv8+/vc59bR9rB1Zf6SQSv/kT4n/61uXP/pz8f/7r6y/+ac + iv/rsqP+9+Xg+/z7+uv8/PzE+/v7hvv7+0X19fUZzMzMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAMzMzAX09PQY9/f3Q/v7+338/Py1/Pz83+zg2/azfW79k0Ms/5E+J/+vc2H/58zE/+22 + qP/jjnj/4494/+OSff/rsaH+9uPe+/v6+uv8/PzE+/v7hvv7+0X09PQYzMzMBQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADMzMwF6+vrGfv7+0X7+/uF/Pz8wfz8/Ob9/Pr34MrD/aFdSf+TQiz/t4Bx/+bM + xf/stKX/4495/+WVgP/ss6T/6KGP/+OSff/rsaP+9+Pf+vz7++r8/PzD+/v7hfv7+0Lz8/MV////AwAA + AAAAAAAAAAAAAAAAAAAAAAAA////BPT09Bj7+/tF+/v7hvz8/MT8+/rq/e3V+v3aqP7z3ML/yJ+S/8KV + iP/u4t7/8svA/+SQev/kkHr/7ban//vv7P/11s7/6KGP/+OTfv/rsqP+9+Pe+vv6+ur8/PzA+/v7fPr6 + +jf///8O////AQAAAAAAAAAAAAAAAAAAAAHw8PAR+/v7Pvv7+4T8/PzE/Pz76v3t1fr9zIT+/bhT//7c + qv/16uL/9e/t//38/P/008r/5ZR//+SQev/ss6T//Pb0//35+P/01s3/6KKQ/+OTfv/rsqP+9+Tf+fz7 + ++b8/Py0/Pz8bPn5+S7q6uoM////AQAAAAAAAAAA29vbB/j4+Cb6+vpt/Pz8u/z7+ur97db6/cuE/v23 + Uv/+wWn//unI//749P/99vT//v39//z18//xxrr/5ZN9/+WWgf/wwLP//Pb0//359//01c3/6KGP/+OS + ff/vw7j+/PXz9/z8/N/8/Pyr/Pz8Zvn5+Szo6OgLAAAAAOPj4wn29vYc+/v7SPz8/JX8/Pva/e7a+P3L + g/79t1H//sFo//7ju//++fL/8ce7/+ywoP/45N///v39//z19P/xx7v/5ZN9/+WXgv/vwLP//Pb0//34 + 9//118//7bep//TY0P/z6eb98+vp9vr5+d38/Pyp/Pz8ZPj4+Cff398I+Pj4Jfz8/FH9/f2E/Pz8vvz4 + 8ev926r8/bZQ//67Wf/+3az//vv1//77+v/ssqP/5JJ8/+mlkv/55uH//v7+//z29P/xx7z/5ZN9/+WX + g//vwLP//Pb0//36+f/88/D/8+fk/8KVif+wdmb+5NHM9vv6+tz8/Pyj/Pz8VPT09Bf8/PxQ/f39kvz8 + /Mj8/Pzm/fz5+P3mw/7+vmH//rhR//7OiP/+8t///v7+//ji3P/oo5D/5JF7/+ihj//66eX//v7+//z1 + 8//wxLj/4495/+aZhf/yy8D//v7+//Xv7f/FmIz/l0o1/5FAKv+oalj95dbR9Pv6+s37+/t8+fn5K/v7 + +3j8/Py9/Pr37P348Pr9/f3+/fn0//7ht//+v2H//rdP//7OiP/+8+L//v38//fi3f/noIz/5JB6/+ed + i//66uf//ff0/+y0pv/jj3n/5pqF//POxP/07ev/xJiL/5dIM/+RPif/kD0m/5E/KP+nZVP56NnW3vv6 + +pj7+/tH+/v7mPz38NT9y4P2/b9m/v3kv//+/v7//vz3//7htf/+vl///rZL//7PiP/+9eb//v7+//jl + 3//mnIf/4495/+abiP/rrZz/5JB5/+WXgv/yyL7/8+jl/8KVh/+VRC7/kT4n/5E9J/+RPSf/kD0m/489 + J/uxeWjk8+3rrPz8/GL9/f2k/Pbv1/3Gefj9tEv//r5h//7lv//+/v3//vz4//7gsv/+vl///rVK//7Q + iv/+9ur//v7+//jm4f/mmoX/4495/+OPef/ll4H/8se8//fx7v/JoJT/kj4n/5E+J/+RPSb/kT0m/5E+ + J/+QPSb/kUAp/MeflOX28/Kv/Pz8Zfv7+5D8/PvF/PHe8v3Fdf79tU3//sBl//7lwP/+/fr//vv0//7W + mf/+uFP//rZM//7pyP/+/fv//v7+//jl4f/mnYj/5pmE//HHvf/9+fj/38a+/5hKM/+RPif/kT0m/5E9 + Jv+RPif/kD0m/5RELv/BlIj68+7s4Pv7+5/8/PxP/Pz8bvz8/Kj9/fzl/e7Z+/3Hef79tU7//sFp//7l + v//+6Mf//sd1//64Uv/+yHj//vLg//769//+9vP//v7+//rq5//229P//vbz//7Yxv/zxbH/wYt7/5dG + Mf+RPSb/kT4n/5A9Jv+WSDL/wZSI/fLr6fT8/PzO/f39gPr6+jH7+/tJ/f39evz8/MP8+/ns/e3W+/3J + e/79t1L//r5h//6/Yf/+uFL//sl6//7u1f/+9vH//tTA//69oP/+6+P//v7+//7+/f/+59v//pJg//6V + ZP/xrpL/wId3/5dIMv+QPSb/l0o1/8GTh/3w6OX2/Pz83Pz8/KT8/PxV9fX1Gfj4+CT7+/tB+/v7hvz8 + /MX8+/ns/ezS+/3JfP79t1D//rdQ//7Je//+7dL//vXv//7Nt//+l2f//oxY//6pgf/+6d///v7+//7y + 7P/+s5D//pFf//6XZ//wr5P/w45//6hmVP7DmIz87+Xi9Pz8/Nz8/Pyp/Pz8ZPj4+Cff398I6OjoC/T0 + 9Bf7+/tE+/v7hvz8/MX8+/nr/ezR+v3Oiv79zYj//uvP//707f/+zbb//plr//6QXv/+lmb//oxX//6p + gv/+59z//v38//7q4P/+ror//otX//6ccP/3zbv/7uLf/PXv7fH9/f3W/Pz8pvz8/GX5+fks6OjoCwAA + AAAAAAABv7+/BOrq6hj7+/tE+/v7hvz8/MP8+/ro/fXn+P305v399vD+/s63//6bbf/+kF7//rWT//7J + sP/+nG7//o1Y//6rhP/+5dn//vDq//67m//+jFf//Ztu//3UwP38/Pzy/Pz80vv7+5z8/Pxe+fn5K+rq + 6gz///8BAAAAAAAAAAAAAAAA////BPT09Bj7+/tE/f39gvz8/Lr8/Pzf/Pz89P3o3v39p4D//oxY//6b + bv/+5tz//vz7//7Vwf/+nG///o5a//6ogP/+upv//pZn//2Xaf/9w6j9/PDq9Pz8/Nj8/Pye/Pz8WPj4 + +CXo6OgL////AQAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMBfT09Bj7+/s+/Pz8cfz8/Kv8/Pzd/e/p9/25 + mv79kWD//pVm//7Jsf/++fb//v38//7Ww//+nXD//oxX//6MWP/9l2j//cGn/fzu6PX9/f3b/f39pvz8 + /GH4+Pgn4+PjCQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////BPHx8RL19fUy+vr6bf39 + /bT8/Pzm/ejf+v21lP79kF7//pdo//7Jsf/++/n//vz7//7WxP/+nnL//ZVl//3Bp/387+n1/Pz83P39 + /aj6+vpm+fn5LOrq6gz///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Au/v + 7xD6+vo5+/v7fvz8/MH8/Pzq/erh+/20k/79j13//pZn//7Ir//+/Pv//fn3//3f0f791cP8/PDq9P39 + /dv9/f2o/Pz8Zvn5+S3r6+sN////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA////A/Pz8xb7+/tD+/v7hvz8/MT8/Pzr/ezj+/2zkf79jVr//pVl//3FrP/9+/r+/fz8+Pz5 + +Or8/PzR/Pz8pPz8/GX5+fkt6+vrDf///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAzMzMBfT09Bj7+/tE+/v7hvz8/MX8/Pzq/e7n+P2wjv39i1f+/Zdo/v3u + 6Pj8/Pzk/f39uv39/Yr5+flZ+fn5Kv///wz///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////BOrq6hj7+/tE/f39g/z8/Lz9/f3b/PDr6/zB + pvT8z7vx/fn44fz8/Lr9/f16+/v7QPb29h3l5eUK////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv7+/BPPz8xb7+/s8/f39a/v7 + +5b8/Py3/Pbzy/z498T8/Pym/f39d/v7+z/z8/MWzMzMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4+PjCfb2 + 9h77+/s8/Pz8X/39/YD7+/uP+/v7gfz8/F/6+vo49PT0F8zMzAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////+B////AP///gA///wAH//4AA//8AAH/8AAA/+AAAP/AA + AB/wAAAP4AAAB8AAAAOAAAADgAAAAQAAAAEAAAABAAAAAYAAAAHAAAADwAAAB+AAAA/wAAAf+AAAP/4A + AH//AAD//4AB//+AA///wAf//+Af///4P////H//KAAAADAAAABgAAAAAQAgAAAAAAAASAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAB29vbB/Dw8BH39/ch+vr6N/v7+038/Pxi/f39b/r6+nD8/Pxi+/v7Tfr6 + +jf39/ci8fHxEtvb2wd/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wHf398I9PT0F/n5+S38/PxK/Pz8Zvv7+3/7+/uR+/v7nPv7 + +5z7+/uR+/v7f/z8/Gb7+/tL+vr6MPX19Rrq6uoMv7+/BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd/f3wj09PQY+vr6NPz8/Fr9/f2B+/v7n/z8 + /LP8+vq/+Pf2xfj29sX6+vq//Pz8s/v7+5/7+/uE/Pz8Yvv7+z/4+Pgj7+/vEMzMzAUAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8B39/fCPX19Rr6+vo4/Pz8Yvv7 + +5H8/Py3/Pz8z/z8/Nzm1M7hqWpY5KloVuTexb7h/Pz83Pz8/ND8/Py7+/v7nPz8/HX7+/tN+fn5K/Hx + 8RLU1NQGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHf398I9fX1Gfr6 + +jf8/Pxj/Pz8lfz8/MH8/Pzf/f397vLq6PScVD/2jzwl9o88JfaYTDf25dLN9f39/e/8/Pzj/Pz8zfz8 + /K37+/uC/Pz8VPn5+Szy8vITzMzMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AuPj + 4wn19fUa+vr6N/z8/GT7+/uW/Pz8wvz8/OL7+/v059bS+ppQOv2OOyP9jz0m/Y88Jf2VRzH90rCn/f39 + /fv9/f32/Pz86/z8/Nf8/Py0+/v7h/z8/Fb5+fku8vLyE9TU1AYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACqqqoD5eXlCvX19Rr6+vo5/Pz8Y/z8/JX8/PzC/Pz84vv7+/Tt4Nz8olxJ/o87JP6QPSb+kD0m/488 + Jf/NqJ7+/f39/v39/f79/Pz9/f39+f39/e/8/Pza/Pz8tvv7+4f8/PxW+fn5LfLy8hPU1NQGAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAL+/vwTr6+sN9vb2Hvv7+zv6+vpm+/v7l/z8/ML8/Pzj/Pz79O3h3vyZTTf+jzsk/pA9 + Jv6QPSb/jzkh/7uIev/59fP/+Orm/+u0pv7prJz++Ofi/f38/Pr8/Pzx/Pz82vz8/Lf7+/uH/Pz8Vfn5 + +S3y8vITzMzMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA1NTUBvDw8BH4+Pgn+/v7Rvr6+m77+/ua/Pz8xPz8/OL8/Pz06djU+6Jd + Sv6POyT+kD0m/pA9Jv+RPyf/w5WI//nz8f/yzMH/5JF8/+KMd//ijnj+6KOS/vbh2/79/f36/f398P39 + /dv8/Py2+/v7h/z8/Fb5+fku8vLyE9TU1AYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwF8fHxEvn5+Sv8/PxQ+/v7e/z8/KX8/PzJ/f395fz8 + /PT07uz8nFI9/o88JP6QPSb+kD0m/4w1HP++jX//+/j3//PRx//jj3n/4495/+OPef/ijXj/4o95/uae + jP746OT+/f39+vz8/PH9/f3b/Pz8t/39/Yf8/PxV+fn5LPLy8hPMzMwFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU1Aby8vIT+fn5Lvz8/FX7+/uE+/v7sPz8 + /NL8/Pzo/Pz89fn29fymY1D+jzsj/pA9Jv6QPSb/kkAp/72Mfv/48e//8s3D/+OPef/jjnj/4495/+OP + eP/jjnj/4o54/+KOeP7noY/+9uHb/v39/fr9/f3w/Pz82vz8/Lb7+/uH/Pz8Vfn5+S3x8fESzMzMBQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1NTUBvLy8hP5+fkt/Pz8Vvv7 + +4f8/Py2/Pz82f39/e79/f34/f39/fr39/6hXEj+jjoi/pA9J/+SQCn/z6uh//v4+P/zzsT/5JF7/+OO + eP/jj3n/5I95/+68r//uvbD/4413/+KNeP/ij3n+56KR/vjn4/79/f36/f398Pv7+9v8/Py2/f39hvz8 + /FP5+fkp7u7uD7+/vwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwF8vLyE/n5 + +S38/PxV+/v7h/z8/Lf8/Pza/f398P38+/r98uL9/eW//v326/7y6eb+ol1J/5RELv/NqJ3//v39//z1 + 8//kknz/4454/+OPef/kj3n/7rms//35+P/+/fz/7r2v/+SRe//ijXj/4o54/uadi/73497+/fz8+v39 + /fD8/PzZ/Pz8tPv7+4D8/PxK9/f3Iujo6At/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzM + zAXw8PAR+fn5LPz8/FX7+/uH/Pz8tvz8/Nr9/f3w/f39+v3t1/79wmz+/bRI/v3Oi//++/j/7N7b/93D + vP/+/f3//v7+//bd1v/jjHX/4495/+OPef/llX///fj3//7+/v/+/v7//Pf1/+68r//jjnf/4o54/+KO + eP7opJP+9+Tf/v39/fr9/f3u/f391vz8/Kr8/Pxz+/v7P/b29hzj4+MJ////AQAAAAAAAAAAAAAAAAAA + AAAAAAAAf39/Aurq6gz4+Pgl/Pz8T/v7+4T8/Py2/Pz82vz8/PH9/f36/fDe/v29YP79tEn+/bNK//7D + bf/++fL//v7+//7+/v/+/v7//v7+//z08//nn4z/4495/+OPef/jjXf/7ryv//77+v/+/v7//v7+//78 + /P/uuq3/5I95/+KNeP/ijnj+5p6L/vjp5P39/f34/Pz87Pz8/M38/Pye/Pz8aPr6+jn19fUZ39/fCAAA + AAEAAAAAAAAAAAAAAAAAAAAAzMzMBfT09Bf7+/s9/Pz8dfz8/K78/PzY/f397/39/fr97NP+/cFp/v20 + Sf79tEr//rVK//7Vmv/+/Pn//v7+//7+/v/+/v7//v7+//7+/v/34dz/6KKP/+OPef/jj3n/5I94/+/A + s//9+fj//v7+//7+/v/9+Pj/7ryv/+SPef/ijnj/4o54/uillP757+39/f399v39/eX8/PzF/f39l/r6 + +mX6+vo49fX1Gt/f3wj///8BAAAAAAAAAAG/v78E6urqDPj4+Cb8/PxV/Pz8lPz8/Mv8/Pzs/f39+f3y + 4v79wGf+/bRK/v20Sv/+tEn//tGP//769f/+/v7/+/Lv//TWzv/9+fj//v7+//7+/v/+/f3/+Obg/+ed + iv/jj3n/4495/+SRe//vv7L//v39//7+/v/+/v7//fj3/+65q//jjnf/4o14/+WYhf756+f+/f39/Pz8 + /PT8/Pzj/Pz8w/v7+5b8/Pxj+vr6OPT09Bjf398IAAAAAd/f3wjy8vIT9/f3Ivv7+0D8/Pxw/Pz8q/39 + /dv8+/v1/e7Z/P2+ZP79tEn+/bRK//62Tf/+0pH//v37//7+/v/9+ff/6KOR/+OMdf/rrZ3/+/Dt//7+ + /v/+/v7//v7+//jk3v/oopD/4495/+OPef/jjnf/78C0//349v/+/v7//v7+//78/P/vv7P/6aSS//TW + zv79/Pz++/f3/urc1/z7+vr0/Pz84vz8/ML8/PyV/Pz8Yvr6+jTz8/MW1NTUBvT09Bf5+fkv/Pz8Sv39 + /Wv8/PyU/Pz8w/z8/Ob9+vX4/cuA/f20Sv79tEr//rRI//7Tk//++fH//v7+//7+/v/67+v/4412/+OP + ef/jkHr/66+f//z29f/+/v7//v7+//79/f/34dv/552K/+OPef/jj3n/5JJ8//DBtP/+/f3//v7+//7+ + /v/9+vr//Pb0//39/f/8+vr+v4+D/p5VQf7fyML8/Pz89Pz8/OL8/PzA+/v7kPz8/Fj5+fkq6+vrDfn5 + +S38/PxU/f39f/z8/KH8/PzA/Pz83Pz8/PH9+PL7/cRz/v20Sv/+tUv//rRH//7erv/+/fr//v7+//7+ + /v/++/r/6qyb/+OQef/jj3n/4494/+qqmf/89PL//v7+//7+/v/+/v7/+efi/+igjv/jkHn/4495/+ON + dv/wwbX//fv6//7+/v/+/v7//v7+//v49//ClYj/jjgg/pA9Jf6TQiv+4crE/Pr5+fT8/Pzf/Pz8tfv7 + +3v7+/tA9PT0GPv7+0b6+vp3/Pz8q/z8/M78/Pzj/f398P39/fn9/Pv9/eXC/v69Xf/+tkv//rVL//69 + Xv/+3av//v79//7+/v/+/v7/+u3q/+qsnP/jj3j/4495/+OOeP/rsKH/+/Lv//7+/v/+/v7//v7+//bc + 1f/klH7/4495/+OPef/lk37/9t3X//7+/v/+/v7//fv7/8SYi/+UQyz/kD0n/5A8Jv6QPCX+nFM+/tvC + u/r8/Pzt/Pz8y/z8/JT8/PxU+Pj4Jfz8/Fv9/f2S/Pz8yPz8/Of8/Pz1/f39+/39/f39/f3+/f38/v7o + x//+vVz//rVL//61S//+tEn//t6u//7+/f/+/v7//v7+//zz8f/no5D/4495/+OPef/jj3n/6qua//35 + +P/+/v7//v7+//XXz//lk33/4495/+OPef/kkn3/9+Da//7+/v/8+vn/v4+C/487I/+RPif/kT4n/5A9 + Jv+QPSb+kD0m/pVFMPzj0Mry/f391vz8/KX8/Pxo+vr6Nfr6+nX8/Pyo/fz81/zu2vH91p37/eS//v36 + 9P79/f3+/f39/v7+/v/+5L3//r9h//61S//+tUv//rVJ//7dq//+/Pr//v7+//7+/v/78O3/6qyb/+OP + ef/jj3n/4454/+uvn//67er/9dnR/+WZhP/jj3n/4495/+WWgf/wwrb//fv6//z7+v/ClYj/kD0m/5E+ + J/+RPSb/kT4o/5E+J/+QPSb/kD0m/pA8JfyYSzb13MW+3fr6+rP7+/t8/Pz8Sv39/Yb8/Py4/fv44fzG + e/X9s0r9/bdS//7Wm//+/f3//v7+//7+/v/+/fr//uXA//69Xf/+tUv//rVL//64UP/+3q7//v7+//7+ + /v/+/v7/+u7r/+ikk//jj3j/4495/+SQev/nm4j/5ZWA/+OPef/jj3n/5JV///TTyv/+/Pz/8+zp/7J4 + Z/+SQCn/kT0n/5E+J/+RPif/kT0m/5E+J/+RPif/kD0m/489Jv2POyT2tX5u4Pn4+Lz7+/uL/Pz8Wv39 + /Yz8/Py7/Pv44/3Fc/b9s0v9/bRK//60R//+1pv//vr1//7+/v/+/v7//v7+//7lwP/+vmD//rVL//61 + S//+tEb//t6u//78+f/+/v7//v7+//z18v/pqZj/45B6/+OPef/jj3n/4495/+OPef/klH7/8svC//78 + /P/7+fj/vo1//444If+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kD0m/489Jv2SQSv2yaGX4Pv7 + +739/f2N/Pz8XP39/YD8/Pyv/Pv73fznyvP9v2T8/bRK/v20Sv/+tkz//tab//79+//+/v7//v7+//79 + +v/+5L3//r1f//61S//+tUv//rlT//7nxP/+/v7//v7+//7+/v/66+j/6amY/+OPeP/jj3n/4495/+WX + g//008r//vz7//z6+v/El4v/lEMt/5E+Jv+RPif/kT0m/5E+J/+RPib/kT4n/5E+J/+QPSb/kD0m/pJA + Kfy8jH/19e/t3vz8/Lf7+/uD/Pz8UP39/Wv7+/ua/Pz80P39/e796s78/b1g/v21Sv79s0r//rRI//7X + nf/+/fv//v7+//7+/v/+/vz//s+K//61Sf/+tUv//rVK//7apP/+/v7//v7+//7+/v/+/v7/+/Ty/+ik + k//jj3n/45B6//PQx//+/f3//v7+//Xv7f+SQCj/kDwl/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5A9 + Jv+QPSb+kkAp/r2Nf/z8/Pzz/Pz82fz8/Kv8/Pxx+/v7Pvz8/FH7+/uD/Pz8v/39/eX9/f34/efJ/f3B + aP79tUr+/bRK//60SP/+153//vv2//78+P/+37H//rxc//61S//+tkz//sFo//7s0f/+/v7//v7+//7+ + /v/+/v7//v7+//vw7f/xyL3/9tnS//78+//++PT//t3O//7e0P/hy8b/nVM//5I/Kf+QPSb/kT4n/5E+ + J/+RPif/kD0m/5A9Jv6RPyj+vIt9/vXv7vr8/Pzt/Pz8zfv7+5j8/Pxb+fn5K/v7+z78/Pxp/Pz8pvz8 + /NT9/f3v/fz7+v3oy/79vV/+/bVK/v2zSv/+u1n//t2r//7gs//+vFz//rVL//62TP/+v2H//uXB//79 + /P/+/v7//vz6//7z7f/+/fz//v7+//7+/v/+/v7//v7+//76+P/+so7//o9d//6MWP/+xKn/4cvF/5A8 + JP+QPCT/kT4n/5E+J/+QPSb/kD0m/pE/KP69joD++PX0/Pz8/PT8/Pzf/Pz8tv39/X37+/tD9fX1G/j4 + +Cf7+/tJ/f39f/z8/LP8/Pza/f397/39/fr96Mv+/cFo/v21Sv79tEr//rVJ//60Sf/+tUv//rZM//7B + Z//+5cH//v7+//7+/v/+8Or//rGO//6LVv/+u5v//vby//7+/v/+/v7//v7+//7z7f/+mWv//oxY//6M + V//+ilX//sqy/+LMxv+cUDz/kDwl/5A9Jv+QPSb+kkAp/ruKfP749fT8+/v79Pz8/OL8/PzA+/v7kPz8 + /Fn5+fkr7e3tDvPz8xX5+fkq/Pz8U/v7+4b8/Py2/Pz82v39/fD9/Pv6/efH/v2+YP79tUr+/bRK//61 + S//+tkz//r5i//7lwP/+/fz//v7+//7v6P/+rIb//o5b//6MWP/+jlv//reW//76+P/+/v7//v7+//78 + /P/+yLD//pVl//6MWP/+jFf//o9b//7Irv/fyML/mU45/405If6QPSb+vIx9/vXv7fv8/Pz0/Pz84vz8 + /ML8/PyV/Pz8Yvr6+jTz8/MW1NTUBuPj4wnx8fES+fn5LPz8/FX7+/uH/Pz8tvz8/Nr8/Pzx/f39+v3p + zf79v2P+/bVK/v20S//+v2T//uS+//7+/v/+/v7//vHq//6sh//+jFj//oxY//6MWP/+jFj//otW//61 + kv/+9/T//v7+//7+/v/+/v7//sWq//6VZf/+jFj//oxX//6FTv/+zLb/9e7s/sOYjf7Rsaj+/f39+vz8 + /PL9/f3h/Pz8wvv7+5b8/Pxj+vr6OPT09Bjf398IAAAAAf///wHU1NQG8vLyE/n5+S38/PxV/f39hvz8 + /Lb8/Pza/f397/39/fr96Mn+/cZ1/v3Dbv795MD//f39//7+/v/+8er//rCM//6OW//+jFj//otX//6L + Vv/+jFf//oxY//6OW//+uZr//vv5//7+/v/+/v7//vj0//7GrP/+i1b//oxY//2LV//9n3P+/fHr/v39 + /f39/f35/f397/z8/Nr8/Py8+/v7kvr6+mP6+vo39fX1Gt/f3wj///8BAAAAAAAAAAAAAAAAzMzMBfLy + 8hP5+fks/Pz8Vfv7+4f8/Py3/Pz82v39/fD9/fz5/fv4/f379/79/f3+/f39/v3x6//+p3///oxY//6M + WP/+jFf//qd///7k2P/+mm3//oxX//6MWP/+jFf//rKN//77+f/+/v7//v7+//7g0v/+iVT//YtX//2L + V/79lWb+/erh/v39/fr9/f3v/Pz82Pz8/LX7+/uK/Pz8Xfr6+jX09PQY39/fCAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAANTU1Aby8vIT+fn5Lfz8/Fb9/f2G/Pz8tPz8/Nf8/Pzq/Pz89f39/fv9/f3+/fv6/v21 + lf7+jVn//oxY//6LV//+pXz//uvi//7+/v/+4dT//pxv//6LV//+jFj//oxX//67m//+9/P//uPW//6j + ef/+i1j//YtX/v2RYP79xKv+/fj2+/z8/PH8/Pza/Pz8tP39/YP8/PxV+vr6MPT09Bff398I////AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwF8vLyE/n5+S38/PxU+/v7gvz8/Kz8/PzM/Pz84/v7 + +/P8/Pz7/fby/v2RX/79ilf//oxY//6KVf/+49f//v7+//7+/v/+/f3//ubb//6Za//+i1f//oxY//6O + W//+oXf//php//2MWf/9i1f+/ZNi/v3Cp/799/X8/Pz89Pz8/OD8/Py8+/v7ivz8/FX5+fkr8vLyE9vb + 2wcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////BfHx8RL5+fkq+/v7Tfz8 + /HT7+/uc/Pz8wv39/eH8/Pz0/fr5/P2uiv79i1f+/YpX//6LWP/+pX3//u7m//7+/v/+/v7//v7+//7m + 2//+nG///oxX//6MWP/+i1f//otX//2LV/79kmH+/cCk/v37+vz8/Pzz/Pz84vz8/MH7+/uS/Pz8Xfr6 + +jDy8vITzMzMBQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU + 1Abv7+8Q+Pj4JPv7+z/8/Pxm+/v7l/z8/Mb8/Pzn/f39+P3t5f39p37+/YpV/v2LV//+jVj//qqD//7y + 7f/+/v7//v7+//79/f/+4dP//php//6MV//9i1f//YtX/v2TYv79v6T+/fXw+/z8/PT8/Pzi/Pz8wvz8 + /JX8/Pxj+vr6NfT09BfU1NQGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC/v78E6OjoC/X19Rr7+/s7/f39a/z8/KT8/PzS/f397v39/fr9+Pb+/aZ9/v2L + V/79ilf//otX//6ec//+8+3//v7+//7+/v/+/v7//u3l//6Ya//9i1f+/ZJg/v2/pP79/fz8/Pz89Pz8 + /OP8/PzC+/v7lvz8/GP6+vo39PT0F9/f3wgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AuXl5Qr39/cf+/v7Rv39/Xv8/Pyx/Pz82f39 + /e/9/f36/e3m/v2pg/79ilb+/YtX//6LV//+q4X//u/n//7+/v/9/f3+/f39/v3i1v79tZX+/cqz/f31 + 8fv8/Pzz/f394fz8/ML8/PyV+vr6ZPr6+jj19fUa39/fCP///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLr6+sN+Pj4J/z8 + /FH7+/uF/Pz8tvz8/Nr8/Pzx/f39+v3x7P79pHr+/YpW/v2KV//+jFj//qV8//707//9/f3+/f39/v39 + /f39+vn7/fz79/39/fD8/Pzg/Pz8wfv7+5b6+vpk+vr6N/X19Rnf398IAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADMzMwF8fHxEvn5+Sz8/PxV+/v7h/z8/Lb8/Pza/f398P39/fr98ez+/aiC/v2LV/79i1f//opW//6n + f//97eb+/f39/f39/fn9/f3w/Pz85Pz8/NP8/Py5+/v7kvz8/GL6+vo49fX1Gd/f3wj///8BAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////BfLy8hP5+fkt/Pz8Vf39/Yb8/Py2/Pz82v39/e/9/f35/e3l/P2j + ev79ilX+/YtX/v2LV/79vJ79/f39+v39/e/9/f3b/Pz8wPz8/KP9/f2C/Pz8XPr6+jX19fUZ39/fCAAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzAXy8vIT+fn5LPz8/FX7+/uH/Pz8tfz8 + /Nf8/Pzr/Pz88/338/j9pX77/YtX/P2RYfv9yrP4/f398Pz8/N38/Py7/f39j/z8/Gn7+/tI////LPPz + 8xbf398IAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADU1NQG8vLyE/n5 + +S35+flV/f39gvz8/Kz8/PzI/Pz82f39/eX87eft/Miv8v3Xxu/89fLn/Pz82fz8/L37+/uT/Pz8Yfr6 + +jn39/cf7+/vENTU1Ab///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAzMzMBfHx8RL5+fkq+/v7Tvz8/HP7+/uT/Pz8rPz8/MH8/PzR/Pv72fz8/NT8/PzF/Pz8r/v7 + +5D8/Pxn+/v7O/X19Rvj4+MJqqqqAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU1Abw8PAR+Pj4JPv7+z38/PxW+vr6cf39/Yr7+/uf/Pz8qPz8 + /KP7+/uR/f39d/z8/Fn6+vo69vb2Hujo6At/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wHb29sH8PDwEff39x/6+voy+/v7Rvz8 + /F38/Pxs/Pz8cvz8/Gz8/Pxd+/v7RPr6+jD19fUb6urqDL+/vwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA///8P/// + AAD//+AH//8AAP//wAP//wAA//+AAP//AAD//wAAf/8AAP/+AAA//wAA//wAAB//AAD/+AAAD/8AAP/w + AAAH/wAA/8AAAAP/AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAD/AAD8AAAAAH8AAPwAAAAAPwAA+AAAAAAf + AAD4AAAAAA8AAPAAAAAABwAA4AAAAAAHAADAAAAAAAMAAIAAAAAAAwAAgAAAAAADAAAAAAAAAAEAAAAA + AAAAAQAAAAAAAAABAACAAAAAAAMAAIAAAAAAAwAAwAAAAAAHAADgAAAAAAcAAOAAAAAADwAA8AAAAAAf + AAD4AAAAAD8AAPwAAAAAfwAA/gAAAAD/AAD/AAAAAf8AAP/AAAAD/wAA/+AAAAf/AAD/8AAAD/8AAP/4 + AAAf/wAA//gAAD//AAD//AAAf/8AAP/+AAD//wAA//8AA///AAD//4AH//8AAP//4A///wAA///4P/// + AAD///////8AACgAAABAAAAAgAAAAAEAIAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAf39/AtTU1Abr6+sN9PT0F/j4+CT6+vo0+/v7Rfz8/FX8/Pxj/f39a/39 + /Wv8/Pxj/Pz8Vfv7+0X6+vo0+Pj4JPT09Bfr6+sN1NTUBn9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjw8PAR9vb2Hvn5+S/7+/tC/Pz8Vvr6 + +mn9/f15+/v7h/v7+477+/uO+/v7h/39/Xn6+vpp/Pz8Vvv7+0L6+vow9/f3H/Hx8RLj4+MJv7+/BAAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjy8vIT+Pj4I/r6 + +jj8/PxQ/Pz8af39/X79/f2P+/v7nfv7+6f8/Pys/Pz8rPv7+6f7+/ud/f39j/39/X78/Pxp/Pz8U/v7 + +zz5+fko9fX1Ge3t7Q7U1NQGf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f + 3wjy8vIU+Pj4Jvf39z/8/Pxc/f39evz8/JT8/Pyo/Pz8t/z8/MD5+PfG69/bye3g3Mn49PPG/Pz8wPz8 + /Lf8/Pyo+/v7lv39/X78/Pxk/Pz8Svr6+jL39/cf8PDwEd/f3wh/f38CAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAf39/At/f3wjy8vIU+Pj4J/v7+0H8/Pxi/f39hPz8/KT8/Py8/Pz8zfz8/Nf69vbc2sG536ps + WeGrbl3h0rGo3/Xw7tz8/PzX/Pz8zfz8/L/8/Pyq+/v7kPr6+nP8/PxV+vr6Ofj4+CPx8fES39/fCH9/ + fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjy8vIU+Pj4J/v7+0L8/Pxj+/v7iPz8/Kr8/PzH/Pz82vz8 + /Ob59vbs2Ly075xUP/CMOSLxjTki8ZdJM/DNqp/v9e7t7Pz8/Of8/Pzd/Pz8zvz8/Lj7+/ud+/v7fvz8 + /F37+/s++Pj4JfLy8hPf398If39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjy8vIU+Pj4J/v7+0L8/Pxk+/v7ifz8 + /Kz8/PzK/Pz84Pz8/O349vX117mx+J5WQfmPPCX5jzwm+Y88JvmPPCX5m1E7+dzCu/j+/Pz1/f398Pz8 + /Ob8/PzX/Pz8wvz8/Kb7+/uE/Pz8YPv7+0D4+Pgl8vLyE9/f3wh/f38CAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqA+Pj4wny8vIU+Pj4J/v7 + +0L6+vpk+/v7ifz8/K38/PzL/f394f39/fD59vb41riw+6BaR/2PPCX9jzwl/ZA9Jv2PPSX9jzwl/apt + XP3izsj9/f39/P39/fr8/Pz0/Pz87Pz8/N38/PzH/Pz8qvv7+4f8/Pxh+/v7QPj4+CXy8vIT39/fCH9/ + fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv7+/BOPj + 4wnz8/MV+Pj4J/v7+0L6+vpk+/v7ifz8/K38/PzL/Pz84v39/fD69/b41beu/aFcSP6QPCb+kDwl/pA9 + Jv6QPSb/jTgg/59XRP7jzsn+/fz8/v39/f79/f39/f39+/39/ff9/f3v/Pz84Pz8/Mn8/Pyr+/v7h/z8 + /GH7+/tA+Pj4JfLy8hPf398If39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38CzMzMBerq6gz09PQX+fn5Kfv7+0P8/Pxk/f39ifz8/K38/PzL/Pz84v39/fD69/b41bat/aJd + Sv6QPSb+kDwl/pA9Jv6QPSb/jjcg/5tPOv/WubH//fz8/vv08v702NH+8s3E/vbd1/379vX8/f39+P39 + /fD9/f3h/Pz8yvz8/Kv7+/uH/Pz8Yfv7+z/4+Pgl8vLyE9/f3wh/f38CAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAB/f38C29vbB+7u7g/29vYc+fn5Lvv7+0j8/Pxo+/v7i/z8/K78/PzM/Pz84v39 + /fD6+Pf41bev/aJdSv6QPib+kDwl/pA9Jv6QPSb/jTcf/5pOOP/YurP/+vf1//fl4P/rs6X/5pyK/uWZ + hf7oppb+8tHJ/vv19Pz9/f34/f398P39/eH8/PzK/Pz8q/v7+4f8/Pxh+/v7P/j4+CXy8vIT39/fCH9/ + fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38C39/fCPHx8RL39/ch+vr6Nvz8/FD9/f1v+/v7kPz8 + /LH8/PzN/Pz84/z8/PH6+Pf41rmx/aJdSv6QPib+kDwl/pA9Jv6QPSb/jTgf/5pOOP/avrX/+/j3//fi + 2//pppT/4495/+KNd//ijnj+45B7/uijkv7z0cn+/Pb1/P39/fj9/f3w/f394fz8/Mr8/Pyr+/v7h/z8 + /GH7+/s/+Pj4JfLy8hPf398If39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38C39/fCPHx8RL4+Pgk+/v7PPz8 + /Fn7+/t5+/v7mfz8/Lf8/PzQ/Pz85Pz8/PH6+Pf52b21/aFcSP6QPSb+kDwl/pA9Jv6QPSb/jTgf/5pO + Of/avrb/+/j3//jk3v/ooY7/4413/+OOeP/jj3n/4o54/+KOeP7jkHv+56OR/vPSyv789/X8/f39+P39 + /fD9/f3h/Pz8yvz8/Kz7+/uH/Pz8Yff390D4+Pgl8vLyE9/f3wh/f38CAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38C39/fCPLy + 8hP4+Pgl+/v7P/z8/F/7+/uC/Pz8o/z8/L/9/f3W/Pz85/z8/PL8/Pz54MvE/aJeSv6QPSX+kDwl/pA9 + Jv6QPSb/jTgg/5pOOP/avbb/+vf2//jl4P/nnor/44x2/+OPeP/jj3n/4495/+OPef/ijnj/4o54/uOQ + ev7nopD+89TL/vz49vz9/f34/f398P39/eH8/PzL/Pz8rPv7+4f8/Pxh9/f3QPj4+CXx8fES39/fCH9/ + fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38C39/fCPLy8hP4+Pgl+/v7P/z8/GH7+/uG/Pz8qfz8/Mb8/Pzc/Pz86/z8/PT9/f36+PX0/c2o + nf6POyP+kD0l/pA9Jv6QPSb/jjkh/5xRPP/Zvrf/+vf2//nm4P/nnIf/44x2/+OPef/jj3n/4495/+OP + eP/jjXf/4454/+KOeP/ijnj+45B6/uegjv701s7++/j3/f39/fj8/Pzx/Pz84vz8/Mv8/Pys+/v7h/z8 + /GH39/c/+Pj4JPDw8BHb29sHf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAB/f38C39/fCPLy8hP4+Pgl+/v7P/z8/GH7+/uH/Pz8rPz8/Mr9/f3h/f397/39 + /ff9/f38/f39/vz7+/7XurL+k0Ms/o46I/6QPSf/jzoj/6hoVv/m1ND//fz8//nn4v/nnYn/44x1/+OP + ef/jj3n/4495/+WUf//uu67/9trT/+usnP/jjXf/4o54/+KOeP7ij3n+5p6M/vTY0P78+fj9/f39+fz8 + /PH8/Pzi/Pz8y/z8/Kv7+/uG/Pz8Xvv7+zv39/cg7u7uD8zMzAUAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38C39/fCPLy8hP4+Pgl+/v7P/z8/GH7+/uH/Pz8rPz8 + /Mv8/Pzi/f398P39/fn9/Pr8/fbq/v3y4P79+/f++PPy/sylmv6VRS//jzoj/6hnVf/m083//v39//77 + +v/qp5b/44x2/+OPef/jj3n/4495/+STfP/uuaz//PX0//7+/f/45N//6qmY/+SPeP/ijnj/4o54/uKP + ef7mnYv+9NnS/vz6+f39/f35/f398Pz8/OL8/PzJ/Pz8qfv7+4H8/PxY+vr6NfX19Rvo6OgLqqqqAwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38C39/fCPHx8RL4+Pgl+/v7P/z8 + /GH7+/uH/Pz8q/z8/Mr9/f3h/Pz88f39/fn9+/j9/ebG/v2+Yf79tU3+/tCR/v369f/38vD/yaGV/7Bz + Yv/jzsf//v39//7+/v/45uH/5peC/+OOeP/jj3n/4495/+OPef/ppJH//Pb0//7+/v/+/v7//v79//fj + 3f/qqZj/5JB5/+KOeP/ijnj+4o95/uaei/712tP+/Pr5/f39/fn9/f3w/Pz83/z8/Mb7+/ui+/v7ePz8 + /E/5+fku9PT0F+Pj4wl/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1NTUBu/v + 7xD39/ci+/v7Pvz8/GD9/f2G/Pz8q/z8/Mr9/f3h/f398P39/fj9+/j9/ejI/v29YP79tEn+/bJI//29 + Yv/+6s3//v7+//r39v/59PP//f38//7+/v/+/v7/9+Tf/+ebh//jj3n/4495/+OPef/jjnj/6aeU//z0 + 8//+/v7//v7+//7+/v/+/f3/9+Da/+qpmP/kkXv/4o54/+GNeP/ij3n+5p6L/vTa0/78+fj9/f39+Pz8 + /O39/f3b/Pz8vvv7+5j8/Pxu+/v7R/n5+Snz8/MV4+PjCX9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAqqqqA+jo6Av29vYc+vr6N/z8/Fv7+/uD/Pz8qfz8/Mn9/f3h/f398P39/fj9+vb9/ebE/v29 + YP79tEn+/bNK//20Sf/+vmD//uXA//7+/v/+/v7//v7+//7+/v/+/v7//v7+//349v/vvrH/5ZeC/+OP + ef/jj3n/4495/+SSff/vv7L/+/Lv//7+/v/+/v7//v7+//79/f/339n/6qmY/+SRe//ijnj/4Y14/+KP + ef7mnor+89nR/v36+fv9/f32/Pz86vz8/NX8/Py1+/v7j/z8/Gf7+/tD+Pj4J/Ly8hTf398If39/AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAdTU1Abx8fES+fn5Kvv7+079/f14/Pz8o/z8/Mb8/Pzg/f397/39 + /fj9+vb8/eTB/v2+Yf79tEn+/rRK/v20Sv/+tk7//sh5//7v2v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7/+/Lv/+68sP/lloL/4495/+OPef/jj3n/5ZWA/+/As//78e7//v7+//7+/v/+/v7//v39//be + 2P/qqZj/5JF7/+KOeP/ijnj+4o94/uaejP72497+/f39+vz8/PT8/Pzm/Pz8z/v7+7D7+/uL/Pz8ZPv7 + +0L4+Pgn8vLyFN/f3wh/f38CAAAAAAAAAAAAAAAAAAAAAb+/vwTo6OgL9vb2HPr6+jn6+vpj/f39kf7+ + /rv9/f3b/f397v39/fj9+vX8/eS//v2/Zf79tEr+/bRK/v20Sv/+tk3//sZ0//7py//+/v3//v7+//33 + 9v/77+z//Pb0//7+/f/+/v7//v7+//7+/v/78e//7r2v/+WWgv/jj3n/4495/+OPeP/lloH/78C0//vw + 7f/+/v7//v7+//7+/v/+/f3/9t7Y/+qpmP/kkXv/4o54/+KOeP7ijXf+8czC/v39/f39/f35/Pz88fz8 + /OP8/PzM/Pz8rv39/Yn8/Pxk+/v7Qvj4+Cfy8vIU39/fCH9/fwIAAAAAqqqqA9TU1Abo6OgL8/PzFvn5 + +Sr8/PxK+/v7dvz8/KX8/PzM/Pz85/z8/PX9+vX7/eK9/v3BaP79tUv+/bRK/v20Sv/+tUv//sZ0//7q + y//+/vz//v7+//vy7//yzcT/7LWm//LKwP/78O3//v79//7+/v/+/v7//v7+//vy7//vvrH/5ZeC/+OP + ef/jj3n/4494/+aXg//vwbT/++/s//7+/v/+/v7//v7+//79/f/33tj/6qmY/+OPef/ijHb/5p+O/vfi + 3f79/f3+/Pz8/f39/Pj9/f3w/Pz84vz8/Mv8/Pyt+/v7ifz8/GP7+/tB+Pj4JvLy8hPb29sHf39/At/f + 3wjv7+8Q9fX1G/n5+Sn7+/tA/Pz8YPv7+4r8/Py1/Pz82P39/e79+vf5/eO9/f3Ba/79tUz+/bRK/v20 + Sv/+tUr//sVx//7qzP/+/vz//v7+//78+//01cz/5pmF/+ONdv/lmIT/8MK3//vw7f/+/v7//v7+//7+ + /v/+/v7/+/Hu/++/sv/lmIP/4495/+OPef/jj3j/5piE/+/Btf/67+z//v7+//7+/v/+/v7//v39//fh + 2v/ttab/7LSl//TZ0v79/Pv+/fz8/vLp5/7bw7r98+zq+P39/fD8/Pzi/Pz8y/z8/Kz7+/uI/Pz8Yfv7 + +z739/ci7u7uD8zMzAXx8fES9/f3Ifr6+jT7+/tI/Pz8YPv7+377+/ui/Pz8xf39/eH8/Pzz/e7Y+/3F + dP79tUz+/bRK/v20Sv/+tUn//sZ1//7rzv/+/vz//v7+//7+/v/9+Pf/8MW6/+ONd//jj3n/4454/+WY + hP/wwrb/+/Hv//7+/v/+/v7//v7+//7+/v/77+z/78C0/+WYg//jj3n/4495/+OPeP/mmIT/8MG1//vw + 7P/+/v7//v7+//7+/v/+/v3/+/Dt//vx7//9/fz//f39/vTt6/7Dlor+olxJ/sihlv3z6+n4/f398P39 + /eH8/PzK/Pz8qv39/YP8/Pxa+vr6NfX19Rrl5eUK9/f3H/r6+jf8/PxU/f39b/v7+4n7+/ui/Pz8vfz8 + /Nf8/Pzr/f399/3kv/z9vF/+/bRJ/v20Sv/+tUv//rRG//7Yov/+/v3//v7+//7+/v/+/v7//vv6//PS + yf/lmIP/4494/+OPef/jj3j/5ZiD//DBtv/88/H//v7+//7+/v/+/v7//v79//rv6//vwbT/5piE/+OP + ef/jj3n/4454/+aYg//wwrX/+/Hu//7+/v/+/v7//v7+//7+/v/+/v7//v7+//bw7v/Dl4v+l0gy/o88 + Jf6cUz7+yaGW/fPs6vj9/f3w/Pz84Pz8/Mb7+/ui+/v7dvz8/Er4+Pgn7+/vEPn5+S78/PxP/Pz8dPv7 + +5b7+/uw/Pz8xfz8/Nj8/Pzn/Pz88/39/fr97tj9/cd5/v22Tv/+tUv//rVL//61Sv/+yn///urM//7+ + /f/+/v7//v7+//7+/v/77+z/77+y/+WWgv/jj3n/4495/+OPeP/ll4L/78G1//z18//+/v7//v7+//7+ + /v/+/f3/+u7q//DBtf/mmYX/4495/+OPef/jjnj/5peD//HGuv/89PL//v7+//7+/v/+/v7//v7+//n1 + 8//Bk4b/lkgx/487JP6QPSb+kD0m/p5WQv7LpZv88uro+Pz8/O38/PzZ/Pz8uPv7+438/Pxc+vr6NPT0 + 9Bj7+/s9/Pz8ZPv7+5D8/Py1/Pz8z/z8/OD8/Pzr/Pz88/39/fn9/f38/fr3/v3lwv7+xXD//rdO//61 + S//+tUv//rlU//7Cav/+6Mj//v79//7+/v/+/v7//v39//rt6v/uvbD/5ZaB/+OPef/jj3n/4495/+WW + gf/vwLP//fj3//7+/v/+/v7//v7+//79/f/66ub/7LSl/+ONd//jj3n/4495/+OPeP/pp5b/+ejk//7+ + /v/+/v7//v7+//z5+f/AkYT/lUUv/5A8Jv+QPSb/kDwl/pA9Jv6QPSb+m1E8/smhl/vz7ev0/Pz85Pz8 + /Mf7+/ud/Pz8bfv7+0H39/ch+/v7Tv39/Xj8/Pyl/Pz8yfz8/OL9/f3v/f399v39/fr9/f38/f39/v39 + /f79+vX+/uXB//7Ebv/+t03//rVL//61S//+tUv//sFp//7pyP/+/v3//v7+//7+/v/+/f3/+u7r/+68 + rv/klYD/4495/+OPef/jj3n/5JR//+++sf/9+fj//v7+//7+/v/+/fz/+eXg/+qqmv/jj3j/4495/+OP + ef/jjXf/6qua//nq5//+/v7//v39//r39v+/kIP/lEMt/5A9Jv+RPif/kT4n/5A9Jv+QPSb+kDwl/pA9 + Jf6bUDz8yqSZ9/Pt6+r8/PzQ/Pz8qv39/Xz8/PxQ+fn5Lfz8/F/7+/uK/Pz8tf39/db8+vns/fPm9/3v + 3Pz9+PH+/f39/v39/f79/f3+/f39/v779//+5cL//sNr//62TP/+tUv//rVL//61S//+wmn//unJ//7+ + /f/+/v7//v7+//79/f/77+z/7bqs/+SUf//jj3n/4495/+OPef/kkn3/772w//35+P/+/f3/+ejk/+ut + nf/kkn3/4495/+OPef/jjnj/5JJ8//PPxv/9+vn//v7+//r39v+0e2v/kkEq/5A9Jv+RPif/kD0m/5E+ + J/+RPif/kD0m/5A9Jv6QPSb+kD0l/JlNOfjLpZzt9e/u1vz8/LT9/f2J/Pz8YPv7+zz9/f1v+/v7mvz8 + /MP8+vjg/OjJ8f3BbPr9u139/dCQ/v3v2v79/f3+/f39/v39/f7+/v7//v36//7mw//+wGf//rZL//61 + S//+tUv//rVL//7Caf/+6cr//v79//7+/v/+/v7//v7+//vx7v/tuKr/5JR+/+OPef/jj3n/4495/+SS + fP/vwbT/9+Lc/+uun//jkHr/4495/+OPef/jj3j/5p2J//TRyP/9+Pb//Pv6//r29f++joD/kUAp/5A9 + J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/o89Jv2PPCX5l0o07tW2rtr59fW8+/v7lvz8 + /HD7+/tL/f39e/z8/Kb8/PzL/fPj5fzHfPT9s0j7/bRK/v20Sf/+yXr//vDa//7+/v/+/v7//v7+//7+ + /v/+/v3//ufF//7AZf/+tkv//rVL//61S//+tUr//sNq//7qzf/+/v7//v7+//7+/v/+/v7//PPx/+y2 + p//jk3z/4495/+OPef/jj3n/5I95/+SPef/kkHn/4495/+OPef/jj3j/5puH//TRx//9+vj//v38/+3i + 3v+vc2L/kD0m/5E9J/+RPif/kT4n/5E+J/+RPib/kT0m/5E+J/+RPif/kT4n/5A9Jv+QPSb9jzwm+Y03 + IO+/koXd8+zqwfz8/J79/f16/Pz8Vv39/X78/Pyp/Pz8zfzw4Of8xHT1/bNJ+/20Sv79tEr//rRI//7J + fP/+8Nv//v79//7+/v/+/v7//v7+//7+/v/+58T//sBm//62S//+tUv//rVL//61SP/+w2z//uvO//7+ + /f/+/v7//v7+//7+/v/89fL/7LSl/+SSfP/jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/5puH//PO + xf/++vn//v7+//r29f+2fm7/kDwk/5A9Jf+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+ + J/+QPSb/kD0m/Y89JvmTQy7w0rGo3fj19ML8/Pyg/f39fPz8/Ff9/f12/Pz8ofz8/Mj8+fPj/OG38/29 + Yfv9tUv+/bRK/v20Sv/+tEf//sp9//7w2//+/fz//v7+//7+/v/+/v7//v79//7mwv/+wmr//rdN//61 + S//+tUv//rRJ//7Fcf/+7NL//v79//7+/v/+/v7//v7+//z08f/stKX/45J8/+OPef/jj3n/4495/+OP + ef/jkHn/5pyJ//LNxP/9+vn//v7+//jy8f/EmIv/lUYv/5A8Jf+RPif/kT4n/5E+J/+RPif/kD0m/5E+ + J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9Jv2URzH5v5CD7+/m5Nz8/Py//Pz8m/z8/HX8/PxQ/Pz8Z/v7 + +5L8/Py8/Pz83P347/D93K/6/b5l/f21TP79tEr+/bRK//60R//+y3///vDc//79/P/+/v7//v7+//7+ + /v/+/fr//ubB//7Baf/+tUv//rVL//61S//+tEj//tSU//758P/+/v7//v7+//7+/v/+/v7//PTx/+y0 + pf/kk3z/4495/+OPef/jkHr/556L//POxf/9+vn//v7+//v49//In5T/lkgy/5A8Jf+RPif/kT4n/5E+ + J/+RPSb/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9Jv6XSTT8vIx++O7i3+78/PzZ/Pz8ufv7 + +5H8/Pxp+/v7RPz8/FT9/f1//Pz8rvz8/NP8/Pzr/fft+P3drf39wGb+/bZN/v20Sv79tEr//rRH//7L + gP/+8Nz//v38//7+/v/+/v7//v79//7y3//+yHn//rVJ//61S//+tUv//rZM//7Skv/+9+v//v7+//7+ + /v/+/v7//v7+//7+/v/79PL/7LWn/+SVgP/kkXv/55+M//LNxP/9+fn//v7+//7+/v/59fP/wZOG/5RE + Lf+QPCX/kT4m/5E+Jv+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9Jv6YSjX+vIx+/O3h + 3vf8/Pzr/Pz80/z8/K/9/f2D/Pz8Wvr6+jb7+/tD/Pz8bfz8/J78/PzH/Pz85Pz8/PT99u37/dyu/v3B + aP79tk3+/bRK/v20Sv/+tEf//syB//7x3f/+/v3//v7+//705f/+1pv//r1e//61S//+tUv//rdP//7B + aP/+4bf//vv2//7+/v/+/v7//v7+//7+/v/+/v7//v7+//zz8P/wxLn/7LOj//XVzf/9+vn//v38//7z + 7v/+6eD//urh/+zY0v+4gnT/lEMt/5E+J/+QPSb/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9 + Jv6YSzb+vIx9/u3f3Pv8/Pz0/f395fz8/Mr7+/ui/Pz8c/v7+0n5+fko+vr6Nfz8/Fv7+/uL/Pz8t/z8 + /Nj8/Pzt/f399/327Pz93K3+/cFo/v22Tf79tEr+/bRK//60SP/+0Y3//vPh//705f/+1Zj//rxa//62 + S//+tUv//rdP//7BaP/+26f//vbp//7+/v/+/v7//v38//76+P/+/fz//v7+//7+/v/+/v7//v39//37 + +v/+/f3//v39//7t5P/+waT//qZ///6ngP/+zLX/7NbO/7eCc/+WRjD/kDwl/5E+Jv+RPif/kT4n/5E+ + J/+QPSb/kD0m/pA9Jv6YTDb+vIt8/uze2/z9/f34/Pz87fz8/Nn8/Py6/f39j/z8/GH6+vo59vb2HPj4 + +Cf7+/tI/Pz8c/v7+5/8/PzE/Pz83/39/e/9/f34/fbs/P3crf79wWj+/bZN/v20Sv79tUv//rxb//7N + hf/+z4r//rta//62S//+tUv//rdP//7BaP/+2qX//vXn//7+/v/+/v7//vfz//7dzv/+ybL//tnI//74 + 9f/+/v7//v7+//7+/v/+/v7//v7+//759//+zrf//pFe//6LVv/+iVT//pZm//7Ksv/s19D/toBx/5NC + Kv+QPCX/kT4n/5E+J/+QPSb/kD0m/pA9Jv6YSzb+vIt8/urd2f39/f34/f398Pz8/OD8/PzG+/v7ov39 + /Xf7+/tM+fn5KfHx8RL19fUa+vr6M/z8/Fj7+/uB/Pz8qPz8/Mj8/Pzg/f397/39/fj99uz8/dyt/v3B + Z/79tk3+/bRK/v21S//+tUn//rRJ//61S//+tUv//rdP//7BZ//+2qX//vXn//7+/v/+/v7//vby//7R + vP/+o3j//o1a//6bbf/+zrf//vn3//7+/v/+/v7//v7+//7+/v/++PX//sqy//6QXf/+jFj//oxY//6J + VP/+lmf//sqz/+3Y0v+4g3T/kj8o/487JP+QPSb/kD0m/pA9Jv6XSjX+u4p8/uvd2f39/f34/f398P39 + /eH8/PzK/Pz8qvv7+4T8/Pxb+vr6NvX19Rvo6OgL7u7uD/f39yD7+/s8/Pz8X/v7+4b8/Pyq/Pz8yfz8 + /OD9/f3w/f39+P327Pz93Kz+/cBm/v22TP79tEr+/bRK//61S//+tUv//rdO//7AZv/+2qX//vXo//7+ + /v/+/v7//vby//7Qu//+oXf//o5b//6MWP/+i1f//php//7Mtf/++vj//v7+//7+/v/+/v7//vz8//7i + 1f/+qoT//pFf//6MWP/+jFj//opU//6WZv/+yrL/7dvV/7iEdv+RPSb+jjoi/o87JP6WRzH+vIt8/uzf + 2/z9/f34/f398Pz8/OL8/PzL/Pz8rPv7+4j8/Pxh+/v7Pvf39yLu7u4P1NTUBt/f3wjx8fES+Pj4JPv7 + +z/8/Pxh+/v7h/z8/Kv8/PzJ/f394f39/fD9/f34/fbs/P3crf79v2X+/bVL/v20Sv79tEr//rZO//7A + Zf/+2qT//vXo//7+/v/+/v7//vby//7Qu//+onf//o5b//6MWP/+jFj//oxY//6LV//+l2j//suz//76 + +f/+/v7//v7+//7+/v/++PX//tfF//6pgv/+kV///oxY//6MWP/+ilT//pVk//7LtP/u39r/y6Wb/qlp + WP6mZVL+w5iM/u7g3fv9/f33/f397/39/eH8/PzL/Pz8rfv7+4n8/Pxj+/v7Qfj4+Cby8vIT29vbB39/ + fwJ/f38C39/fCPLy8hP4+Pgl+/v7QPz8/GH7+/uH/Pz8q/z8/Mn9/f3h/f398P39/fj99+78/d2t/v2+ + Yf79tEj+/bRK/v2+Yv/+2qT//vbp//7+/v/+/v7//vbz//7RvP/+oXf//o5b//6MWP/+jFj//oxY//6M + WP/+jFj//otX//6XZ//+ybH//vr4//7+/v/+/v7//v7+//739P/+1sP//qmB//6RX//+jFj//oxY//6K + VP/9lGX//uPX/vn29f7n19L+5NPN/vPr6fv9/f32/Pz87f39/d78/PzJ/Pz8rPv7+4n8/Pxk+/v7Qvj4 + +Cfy8vIU39/fCH9/fwIAAAAAAAAAAH9/fwLf398I8vLyE/j4+Cb7+/tA/Pz8Yfv7+4f8/Pyr/Pz8yv39 + /eH9/f3v/f39+P347/z94bj+/cd3/v3Dbv7+3Kr+/fbr//39/f/9/f3//vf0//7Svf/+oXb//o5b//6M + WP/+jFj//otX//6LVv/+jFf//oxY//6MWP/+jFj//pdp//7Jsf/++/j//v7+//7+/v/+/v7//vj1//7X + xP/+oHX//otX//6MWP/9i1f//olU/v23lv79+/n+/f39/v39/fv8/Pz1/Pz86vz8/Nr8/PzE/Pz8qPv7 + +4b8/Pxi+/v7Qfj4+Cfy8vIU39/fCH9/fwIAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjy8vIT+Pj4Jfv7 + +0D8/Pxh+/v7h/z8/Kv8/PzK/f394f39/fD9/f34/fn0/P3y4/798d/+/fjw/v39/f79/f3+/ff0//7T + wP/+oHX//o5a//6MWP/+jFj//opV//6qg//+zrj//qiB//6MWP/+jFj//oxY//6MWP/+mGn//sqx//77 + +P/+/v7//v7+//7+/v/+59z//qd///6LVv/9i1f//otX/v2KVv79pn7+/fn3/v39/fz9/f32/Pz86vz8 + /Nf8/Py+/Pz8of39/YD8/Pxe+/v7P/j4+Cby8vIU39/fCH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38C39/fCPLy8hP4+Pgl+/v7QPz8/GH7+/uH/Pz8q/z8/Mn8/Pzg/Pz87f39/fb9/f36/f38/f39 + /f79/f3+/fn3/v7Xxf79nnP//o5a//6MWP/+jFj//otV//6nfv/+4tX//vr3//7o3v/+pXv//otW//6M + WP/+jFj//oxY//6Yaf/+yrL//vv4//7+/v/+7+f//r+i//6WZv/9i1f//otX/v2MV/79lmf+/c23/v37 + +/z9/f33/Pz87Pz8/Nn8/Py9+/v7nP39/Xn8/PxY+/v7O/j4+CPy8vIT39/fCH9/fwIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLf398I8vLyE/j4+CX7+/tA/Pz8Yf39/YX8/Pyo/Pz8xfz8 + /Nr8/Pzo/Pz88v39/fj9/f38/fz8/v3s5P79p4D+/YpX//6MWP/+jFj//otX//6ogf/+4tb//vz7//7+ + /v/+/f3//uvi//6id//+ilX//oxY//6MWP/+jFj//php//7Ls//+7OP//sKl//6XaP/9jFn//otX/v2M + V/79l2f+/cat/v318v39/f35/f398P39/d78/PzC+/v7n/39/Xf8/PxT+vr6Nff39x/w8PAR39/fCH9/ + fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjy8vIT+Pj4Jfv7 + +z/8/Pxf+/v7gfz8/KH8/Py8/Pz80vz8/OP9/f3w/f39+P38/Pz949f+/ZBd/v2KVf79i1f//oxY//6K + Vv/+wKT//vby//7+/v/+/v7//v7+//7+/v/+7uf//qF1//6KVf/+jFj//oxY//6MWP/+jlv//pBf//6N + Wv/9i1j//YtX/v2MV/79l2j+/cKn/v308P39/f35/Pz88f39/eH8/PzJ/Pz8pv39/X38/PxV+vr6NPb2 + 9h3t7e0O1NTUBn9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38C39/fCPHx8RL4+Pgj+/v7O/z8/Fj9/f12/f39lPz8/LH8/PzM/f394fz8/PH9/f35/e7n/f2u + iv79iVX+/YtX/v2LV//+i1j//phq//7Svv/++fb//v7+//7+/v/+/v7//v7+//7u5//+oXf//oxW//6M + WP/+jFj//oxX//6LV//9i1f//YtX/v2MWP79mGn+/b+j/v3y7f39/f35/Pz88fz8/OP8/PzL/Pz8rPv7 + +4T8/Pxc+vr6OPb29h7t7e0OzMzMBQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLf398I8PDwEff39yD6+vo0+/v7Tfz8/Gn7+/uK/Pz8rfz8 + /M79/f3l/Pz89P38+/v95Nr+/ad//v2MV/79i1f+/YtX//6LV//+mGj//tO///749v/+/v7//v7+//7+ + /v/+/v7//uvh//6ke//+jVn//oxY//6MWP/+i1f//YtX/v2MWf79mWv+/cCk/v3w6v39/f35/Pz88fz8 + /OP8/PzM/Pz8rfv7+4j8/Pxh+/v7Pff39yLv7+8Q1NTUBgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/Atvb2wfu7u4P9fX1Gvn5 + +Sz7+/tF/Pz8Zfv7+438/Py1/Pz81fz8/Or9/f32/fv6/P3i1f79qID+/Y1Z/v2LV/79i1f//otX//6Y + af/+1MD//vj1//7+/v/+/v7//v7+//79/f/+59z//qZ+//6NWv/+i1f//YtX/v2NWf79mmz+/b+k/v3u + 5/39/fz5/Pz88fz8/OL8/PzM/Pz8rvv7+4n8/Pxj+/v7QPj4+CXx8fES29vbB39/fwIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38CzMzMBejo6Avz8/MW+fn5Kfv7+0b8/Pxu+/v7mfz8/L/8/Pzc/f397v39/fj9/Pv8/eDT/v2o + gv79jVr+/YtX/v2LV//+i1f//phq//7UwP/++fb//v7+//7+/v/+/v7//vz7//7k2P/+p4H//Y1b/v2M + WP79mmz+/b+k/v3s5f39/f34/Pz88fz8/OL8/PzM/Pz8rfv7+4n8/Pxj+/v7Qfj4+Cby8vIT39/fCP// + /wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGqqqoD5eXlCvT09Bf5+fku/Pz8UPv7+3r8/Pyk/Pz8x/z8 + /N/9/f3v/f39+P38+/z939H+/amD/v2OW/79i1f+/YtX//6LV//+mGr//tTB//769//+/v7//f39/v39 + /f79+/r+/eTY/v2zkv79p4D+/cSq/f3s5fz9/f34/f398Pz8/OL8/PzL/Pz8rfv7+4n8/Pxj+/v7Qfj4 + +Cby8vIU39/fCP///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqqgPo6OgL9vb2HPr6 + +jb8/Pxa+/v7g/z8/Kn8/PzJ/f394f39/e/9/f34/fv7/P3ez/79qYP+/Y5b/v2LV/79i1f//otX//6X + av/+07///vr3//39/f79/f3+/f39/v38+/799fH9/e/p/P349fr9/f32/f397v39/eH8/PzL/Pz8rfv7 + +4n8/Pxj+/v7Qfj4+Cby8vIU39/fCP///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABzMzMBe7u7g/39/ch+/v7Pfz8/F/9/f2G/Pz8q/z8/Mr9/f3h/f398P39/fj9+/r8/d3P/v2p + gv79jlv+/YtX/v2LV//+i1f//pdo//7Svf/9+Pb+/f39/v39/f79/f38/f39+v39/fb9/f3w/Pz86Pz8 + /Nz8/PzI/Pz8q/39/Yj8/Pxj+/v7Qfj4+Cby8vIU39/fCP///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLb29sH8fHxEvj4+CT7+/s//Pz8Yfv7+4f8/Pyr/Pz8yf39 + /eH9/f3v/f39+P37+vz93c7+/aiA/v2NWv79i1f+/YtX//6KVv/9l2n//c+6/v359/79/f38/f39+fz8 + /PL9/f3p/f393vz8/NH8/Py+/Pz8pf39/YX8/Pxi+/v7Qfj4+Cfy8vIU39/fCH9/fwIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjx8fES+Pj4Jfv7 + +0D8/Pxh+/v7h/z8/Kv8/PzJ/Pz84P39/e/9/f34/fv6+/3ez/39p3/+/Y1Z/v2LV/79i1f+/YpW/v2a + bf7949f9/f39+vz8/PL8/Pzm/Pz81fz8/ML8/Pyt+/v7lv39/Xv8/Pxd+/v7P/j4+Cby8vIU39/fCH9/ + fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38C39/fCPLy8hP4+Pgl+/v7QPz8/GH7+/uH/Pz8q/z8/Mn8/Pzf/Pz87fz8/PT9+/r4/d7Q+/2m + fvz9ilj9/YpX/f2LWP39mGz7/d7Q+fz8/PP8/Pzn/Pz81Pz8/Lr9/f2d+/v7g/z8/Gn8/PxR+vr6Ofj4 + +CPy8vIT39/fCH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLf398I8vLyE/j4+CX7+/tA/Pz8Yfv7+4b8/Pyp/Pz8xfz8 + /Nn8/Pzm/Pz87fz6+fL94NL2/aqD+P2LWPn9nXP4/MOq9f308fD8/Pzn/f391vz8/Lz8/Pyb/f39ePz8 + /Fr7+/tB+fn5Lvb29h7w8PAR39/fCH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/At/f3wjy8vIT+Pj4Jvv7 + +z/8/Pxf+/v7gvz8/KH8/Py5/Pz8yvz8/Nf9/f3h/Pv66P3o3+792Mbw/eHV7v3x7On8/Pzg/Pz80vz8 + /L38/Pyg/f39e/z8/Ff6+vo5+Pj4I/Pz8xXq6uoM1NTUBn9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38C39/fCPLy8hP4+Pgk+/v7Pfz8/Fn9/f12+/v7j/z8/KP8/Py1/Pz8xPz8/NH8/PzZ/Pr63fz7 + +9r8/PzR/Pz8w/z8/LH9/f2a/f39ffz8/Fv7+/s79/f3IvDw8BHf398Iv7+/BAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLf398I8fHxEvf39yH6+vo1+/v7S/z8/GH9/f12+/v7ivv7 + +538/Pyt/Pz8ufz8/L78/Py6/Pz8rvv7+539/f2I/Pz8cfz8/Ff7+/s8+Pj4JPLy8hPf398If39/AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/Atvb2wfu7u4P9fX1Gvn5 + +Sn6+vo5+/v7S/z8/F78/Pxx+/v7gvv7+477+/uS+/v7j/v7+4P8/Pxy/Pz8Xvv7+0n6+vo1+Pj4I/Ly + 8hPj4+MJqqqqAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38C1NTUBurq6gzy8vIU9vb2Hvn5+Sv6+vo6+/v7Sfz8/Fb8/Pxf/Pz8Yvz8/F/8/PxW+/v7Sfr6 + +jn5+fkq9vb2HPDw8BHj4+MJv7+/BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////// + ///////8P/////////AP////////wAP///////8AAP///////gAAf//////8AAAf//////gAAA////// + 8AAAB//////gAAAD/////8AAAAH/////gAAAAP////8AAAAAf////AAAAAA////4AAAAAB////AAAAAA + D///4AAAAAAH///AAAAAAAf//4AAAAAAA///AAAAAAAB//8AAAAAAAD//gAAAAAAAH/+AAAAAAAAP/wA + AAAAAAAf/AAAAAAAAA/wAAAAAAAAD+AAAAAAAAAHwAAAAAAAAAfAAAAAAAAAB4AAAAAAAAADgAAAAAAA + AAOAAAAAAAAAA4AAAAAAAAADgAAAAAAAAAOAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAfAAAAAAAAAB+AA + AAAAAAAP4AAAAAAAAA/wAAAAAAAAH/gAAAAAAAA//AAAAAAAAH/+AAAAAAAA//8AAAAAAAH//4AAAAAA + B///wAAAAAAP///gAAAAAB////gAAAAAH////AAAAAA////+AAAAAH////8AAAAA/////4AAAAH///// + gAAAA//////AAAAH/////+AAAA//////8AAAP//////4AAB///////wAAf///////gAD////////gAf/ + ///////gD/////////g///////////////8oAAAAYAAAAMAAAAABACAAAAAAAAAgAQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAaqqqgPb29sH6OjoC+/v7xD09PQY9/f3Ifn5+Sv6+vo2+/v7Qfv7 + +0v8/PxW/Pz8X/z8/Gb8/Pxq/Pz8avz8/Gb8/Pxf/Pz8Vvv7+0v7+/tB+vr6Nvn5+Sv39/ch9PT0GPDw + 8BHo6OgL29vbB6qqqgN/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8Bv7+/BNvb2wfr6+sN8vLyE/X1 + 9Rv4+Pgl+vr6MPv7+zv7+/tI/Pz8VPz8/F/8/Pxp+vr6c/39/Xn7+/t9+/v7ff39/Xn6+vpz/Pz8avz8 + /F/8/PxU+/v7SPv7+zz6+vow+Pj4Jvb29hzy8vIU6+vrDd/f3wjMzMwFqqqqAwAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAG/v78E39/fCO3t7Q7z8/MW9/f3H/n5+Sr6+vo3+/v7Rfz8/FL8/Pxg/Pz8bP39/Xf9/f2B+/v7ivv7 + +5D7+/uT+/v7k/v7+5D7+/uK/f39gf39/Xf8/Pxs/Pz8YPz8/FP7+/tG+vr6Ofn5+Sz39/ch9PT0GO/v + 7xDl5eUK1NTUBr+/vwR/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+/vwTf398I7e3tDvT09Bf39/ci+fn5L/v7+z77+/tO/Pz8Xvz8 + /G39/f16+/v7hvv7+5D7+/uZ/Pz8oPz8/KX8/Pyo/Pz8qPz8/KX8/Pyg+/v7mfv7+5D9/f2G/f39evz8 + /G38/Pxe/Pz8UPv7+0H6+voz+Pj4JvX19Rvy8vIT6+vrDd/f3wi/v78Ef39/AgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8Bv7+/BN/f3wju7u4P9PT0GPj4 + +CT6+vo0+/v7Rfz8/Ff8/Pxq+/v7e/v7+4r7+/uX/Pz8ofz8/Kr8/Pyx/Pz8tvz8/Lr8/Py8/Pz8vPz8 + /Lr8/Py2/Pz8sfz8/Kr9/f2h+/v7l/v7+4v9/f18/Pz8bfz8/F37+/tM+/v7PPn5+S739/ci9PT0GO7u + 7g/j4+MJzMzMBX9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /wG/v78E39/fCO7u7g/19fUZ+Pj4Jvr6+jb7+/tJ+fn5Xvz8/HL7+/uG+/v7l/z8/Kb8/Pyy/Pz8uvz8 + /MH8/PzG+fb1yuzh3czdxb/O3sfBzuvc2Mz28O7K+/v7x/z8/MH8/Py6/Pz8svv7+6f7+/ua/f39iv39 + /Xn8/Pxn/Pz8Vfv7+0P6+vo0+Pj4JvX19Rrw8PAR6OjoC9TU1AZ/f38CAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+/vwTf398I7u7uD/X19Rn4+Pgn+vr6N/v7+0v8/Pxh/f39ePv7 + +4/7+/ui/Pz8s/z8/MD8/PzL/Pz80f37+9b6+fja7N/c3M+tot2xdmbesnlq3sqimd3k0c3c+PX02vv7 + +tb8/PzR/Pz8y/z8/ML8/Py2/Pz8qPv7+5f9/f2E+vr6cfz8/F38/PxK+vr6OPn5+Sn29vYc8fHxEujo + 6AvMzMwFf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv7+/BN/f3wju7u4P9fX1Gfj4 + +Cb6+vo4+/v7TPr6+mP7+/t7+/v7k/z8/Kn8/Py7/Pz8yvz8/NX8/Pzd/Pz84vr39+Xx6OXovY6B6Z9a + R+qTQi3qlEMu6ptRPeqzfGzp5NLM6Pbw7uX8/Pzi/f393vz8/Nf8/PzN/Pz8wfz8/LP8/Pyh+/v7jvv7 + +3r8/Pxk/Pz8UPv7+zz5+fkr9vb2HvLy8hPl5eUK1NTUBn9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /wG/v78E39/fCO7u7g/19fUa+Pj4J/r6+jj7+/tM+vr6ZPv7+3z8/PyU/Pz8q/z8/MD8/PzP/f392/z8 + /OT8/Pzr+PX07ufU0PDBlIjyoFtH8pFAKfKNOiPzjToj8489JvKaUTzyt4Jz8t3FvfD07eru/Pz86/z8 + /Ob8/Pzf/f391vz8/Mr8/Py6/Pz8qfv7+5b7+/uA/Pz8afz8/FP7+/s/+fn5Lff39x/y8vIT6OjoC9TU + 1AZ/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+/vwTf398I7u7uD/X19Rn4+Pgn+vr6N/v7+0z6+vpk/f39fPv7 + +5b6+vqt/Pz8wfz8/NP8/Pzg/f396f38/PD6+Pf06NjT9saekviWSjX5kD4o+Y47JPmPPCb5jzwm+Y47 + JfmPPCb5kUEq+cKViPjm1ND3/Pz89fz8/PL8/Pzt/Pz85vz8/N38/PzQ/Pz8wfv7+7D8/Pyb/f39g/z8 + /Gz8/PxV+/v7QPn5+S729vYe8vLyE+jo6AvMzMwFf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38Cv7+/BN/f3wju7u4P6+vrGfj4 + +Cb6+vo3+/v7TPz8/GP7+/t9+/v7lvz8/K78/PzC/Pz81Pz8/OP8/Pzs/Pz88/v6+ffz6uf6wZKF+5tQ + PPyOOiL8jzwk/JA+JfyQPib8kD4m/JA+JvyPPCT8jDYd/K5yYvzWurL8/fz8+/39/fj8/Pz1/Pz88fz8 + /Ov8/Pzi/f391vz8/Mf8/Py0/Pz8nvv7+4f8/Pxu/Pz8Vvv7+0D5+fks9vb2HvLy8hPl5eUKzMzMBX9/ + fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ + fwK/v78E4+PjCe/v7xD19fUZ+Pj4Jvr6+jj7+/tM/Pz8Y/39/Xz8/PyV/Pz8rfz8/ML8/PzT/Pz84vz8 + /Oz8/Pzz+ff2+Ovc2PvAkoX8oV1K/ZE/KP6POyT+jzwl/pA9Jv6QPSb+kD0m/o46Iv6URS/+qmpZ/tKz + qv7u4+H+/f39/f39/fz9/f36/f399/z8/PP8/Pzt/Pz85Pz8/Nn8/PzI/Pz8tfz8/KD7+/uH/Pz8bvz8 + /Fb7+/s/+fn5Lvf39x/y8vIT6OjoC9TU1AZ/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABqqqqA8zMzAXj4+MJ7+/vEPX19Rr4+Pgn+vr6OPv7+0z6+vpk/f39fP39 + /ZX8/Pyt/Pz8wvz8/NT8/Pzi/Pz87Pv7+/T6+Pf459XQ+8iflP2dVED+kj8p/o86I/6QPSb+kD0m/o89 + Jv+PPSX/jjoi/5E/KP+lYU/+0bCn/u/k4v79/Pz+/f39/v38/P79/Pz9/f39+/38/Pn8/Pz1/f397/z8 + /Ob8/PzZ/Pz8yfz8/Lf8/Pyg+/v7h/z8/G78/PxW+/v7QPn5+S739/cf8vLyE+jo6AvU1NQGf39/AgAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGqqqoD1NTUBuXl5Qrw8PAR9fX1Gvn5 + +Sj6+vo4////TPz8/GT7+/t9+/v7lvz8/K78/PzC/Pz81Pz8/OP8/Pzt/Pz89Pv6+vnv5eL8xpuO/ZlN + N/6POyT+jzsk/pA9Jv6QPSb+jz0m/5A9Jv+QPCX/jTcf/5xTP/++kIT/+vb2/v38/P79/Pv+/Pn4/vz3 + 9f789vX+/Pj3/fz7+vz9/Pz6/f399v39/fD8/Pzn/f392/z8/Mv8/Py3/Pz8oP39/Yf8/Pxu/Pz8Vvv7 + +0D5+fkt9vb2HvLy8hPo6OgLzMzMBX9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/Ar+/ + vwTb29sH6urqDPLy8hP29vYd+fn5Kvv7+zv7+/tO/Pz8ZP39/X37+/uW/Pz8rfz8/ML8/PzU/Pz84vz8 + /O38/Pz0+ff2+fDn5Py/kYP9oVtH/pA+J/6PPCX+kDwl/pA9Jv6QPSb+kD0m/486Iv+POSL/m086/8OW + if/o2NP//Pv7/v37+v756uf+8tHI/u/Ctv7uwLT+8cvC/vjp5f389/b8/f39+v39/fb9/f3w/Pz85/v7 + +9v8/PzK/Pz8tvz8/KD9/f2H/Pz8bvz8/Fb7+/tA+fn5Lff39x/y8vIT5eXlCtTU1AZ/f38CAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAB/f38CzMzMBePj4wnu7u4P9PT0F/f39yH5+fkt+/v7Pvz8/FH8/Pxn+/v7f/v7 + +5f8/Pyu/Pz8w/z8/NT8/Pzi/Pz87fz8/PT69/f46NbS+8ackP2hW0f+kkEq/o87JP6QPCX+kD0m/o89 + Jv+QPSb/jzoi/5I/KP+eVD//wpOH/+PPyf/58/H/+vHu//TWz//tvLD/6KeX/uafjf7mnoz+6KiY/u/D + t/724dv++/X0/P39/fr9/f32/f398Pz8/Of8/Pza/Pz8yvz8/Lb8/Pyg+/v7h/z8/G78/PxW+/v7QPn5 + +S739/cf8vLyE+jo6AvU1NQGf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLMzMwF5eXlCvDw8BH19fUZ+Pj4Jfr6 + +jL7+/tC/Pz8Vf39/Wv9/f2B+/v7mfz8/K/8/PzD/Pz81fz8/OL8/Pzt/Pv79Pv5+fnq3Nn8yKCV/ZlN + OP6QPif+jzsk/pA9Jv6QPSb+jz0m/5A9Jf+QPCT/kDsk/59VQf+8iHr/69vY//nz8v/67+v/9NXN/+qq + mv/jkXz/4Yp0/+KNd/7ijnj+45F8/uadiv7vwrf+9+Ld/vz49/39/Pz6/f399vz8/PH8/Pzn/Pz82vz8 + /Mr8/Py3/Pz8oP39/Yf8/Pxu/Pz8Vvv7+0D5+fkt9vb2HvLy8hPo6OgLzMzMBX9/fwIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AszM + zAXl5eUK8fHxEvX19Rv4+Pgn+vr6N/v7+0j8/Pxb/Pz8cf39/Yb7+/uc/Pz8svz8/MX8/PzV/Pz85Pz8 + /O38/Pz0+vn4+fTt6/zBlIj9nlVB/o88JP6PPCX+kD0l/pA9Jv6QPSb+kD0m/487I/+MNRz/mk44/8CQ + gv/t39v/+vf2//rt6v/zz8X/552J/+SRfP/jjXf/4454/+KNeP/ijnj+4o55/uOQe/7noI7+7r+y/vjo + 5P779/b9/f39+v39/fb8/Pzx/Pz85/39/dv8/PzL/Pz8t/z8/KD9/f2H/Pz8bvz8/Fb7+/tA+fn5LPb2 + 9h7y8vIT5eXlCszMzAV/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAB/f38C1NTUBujo6Avx8fES9vb2Hvn5+Sv7+/s7+/v7Tvz8/GL7+/t4+/v7jf39 + /aH8/Py1/Pz8x/39/db8/Pzj/Pz87fz8/PT6+Pf46tvW/MOWiv2jXkv+kkAq/o87JP6QPCX+kD0m/o89 + Jv+QPSb/jzoi/5E+Jv+aTTj/w5WI/+PPyP/69PP/+u3p//LKwP/pp5X/4495/+OOeP/jjnj/4495/+OO + ef/ijnj/4o54/uKOeP7kk37+6KSS/u6/sv724tz++/X0/P39/fr9/f32/f398Pz8/Of9/f3b/Pz8yvz8 + /Lb8/Pyg+/v7h/z8/G78/PxW+/v7QPn5+S739/cf8vLyE+jo6AvU1NQGf39/AgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLU1NQG6OjoC/Ly8hP29vYe+fn5Lfv7 + +z75+flS/Pz8aPv7+378/PyU/Pz8qPz8/Lr8/PzL/Pz82v39/eX9/f3u+/v79fz7+/nq29f7y6SZ/Z1U + QP6SQSr+jzsj/pA9Jv6QPSb+jz0m/5A9Jf+POyP/kT4m/59WQf+8iXz/5tPN//jx7//67uv/8s3D/+mo + l//jj3n/44x2/+OOeP/jj3n/4495/+OPef/jjnn/4o54/+KOeP7ijnj+5JN+/uafjP7vw7j+9uHb/vv2 + 9f39/Pz6/f399v39/fD8/Pzo/Pz82vz8/Mr8/Py3/Pz8oP39/Yf8/Pxu/Pz8Vvv7+0D5+fku9vb2HvLy + 8hPo6OgL1NTUBn9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AszM + zAXl5eUK8vLyE/b29h75+fks+/v7P/z8/FP8/Pxq+/v7g/v7+5n8/Pyv/Pz8wfz8/ND9/f3e/Pz86P39 + /e/8/Pz1/Pz8+vn49/zMqJ3+nlZA/o87JP6POyT+kD0m/pA9Jv6QPSb+kD0m/5A8Jf+MNh7/mk44/7uI + ev/y5+X/+/j3//vw7f/008r/552J/+OOeP/jjHb/4495/+OPef/jj3n/4495/+OPef/jj3n/4495/+KN + eP/ijnj+4o54/uOQev7mnYr+78G1/vjn4/78+fn9/f39+v39/fb8/Pzx/Pz85/39/dv8/PzL/Pz8t/z8 + /KD9/f2H/Pz8bvz8/Fb7+/tA+fn5LPb29h3x8fES5eXlCszMzAV/f38CAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAB/f38C1NTUBuXl5Qry8vIT9/f3H/n5+S37+/s//Pz8Vvz8/G39/f2F+/v7nfz8 + /LL8/PzF/Pz81Pz8/OD8/Pzq/Pz88f39/fb9/f35/Pr6/PPq6P2/kYP+kUAo/o88Jf6QPCX+kD0m/o89 + Jv+QPSb/jzsj/5A9Jv+cUDz/w5aK/+XSzf/7+Pf/+u3p//LMwv/oo5H/5JF7/+ONd//jjnj/4495/+OP + ef/jj3n/4495/+OOd//jjnf/4454/+OOef/ijnj/4o54/uKPef7jk33+56OS/u6+sf735eD+/Pb1/P39 + /fr9/f32/f398Pz8/Of9/f3b/Pz8yvz8/Lb8/Pyg/f39h/z8/G78/PxW+/v7P/n5+Sz29vYe8fHxEuXl + 5QrMzMwFf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLU1NQG6OjoC/Ly8hP39/cf+fn5Lvv7 + +0D8/PxW/Pz8bvv7+4f7+/uf/Pz8tPz8/Mf8/PzX/Pz84/z8/Oz8/Pzz/f399/39/fr9/f38/Pv7/fTt + 6/7AkoX+kD4n/o87I/6QPCX+jz0m/5A9Jv+POyT/l0kz/6dmVP/Gm5D/5dPO//jy8P/78e7/8szB/+qq + mP/jj3j/4413/+OOeP/jj3n/4495/+OPef/llH//556L/+yxof/rrp7/56CO/+SPef/jjnj/4o54/+KO + eP7ijnj+5JR//ueikP7vwrf+9uHb/vz29Pz9/f36/f399v39/fD8/Pzn/Pz82vz8/Mr8/Py2/Pz8oPv7 + +4f8/Pxt/Pz8VPv7+z75+fkr7e3tHO/v7xDj4+MJv7+/BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AszM + zAXo6OgL8vLyE/b29h75+fkt+/v7QPz8/FX8/Pxt+/v7h/v7+5/8/Py3/Pz8yfz8/Nn8/Pzm/f397/z8 + /PT9/f34/fz7/P38+f39/Pr+/fz8/vr39/7NqZ/+n1hE/pA9Jv6PPCT/kD0m/5E9J/+TQSv/qmpY/82o + nf/27+7//fz8//vy8P/11s7/6aWS/+OPef/jjHX/4494/+OPef/jj3n/4495/+SRe//ooI3/7ruu//ji + 3P/23NX/78Cz/+aYg//kkHr/4454/+KNeP/ijnj+4o54/uOSfP7mnYv+78O4/vfk3/78+fj9/fz8+v39 + /fb8/Pzx/Pz85/z8/Nr8/PzK/Pz8tvv7+5/7+/uF/Pz8avz8/FH7+/s7+Pj4J/T09Bjt7e0O29vbB6qq + qgMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAB/f38CzMzMBeXl5Qry8vIT9vb2Hvn5+Sz39/dA/Pz8Vvr6+m77+/uH/Pz8oPz8 + /Lb8/PzL/Pz82vz8/Ob9/f3w/f399v39/fn9/Pv7/fr0/f316P799uz+/fz6/v38/P7u49/+0K2j/pxQ + O/6RPyn/jzoj/5A7Jf+qaVf/0a6k//Xt6//9/Pv//vz8//fg2v/popD/5JJ9/+ONd//jj3j/4495/+OP + ef/jj3j/4453/+edif/vvrL/+urm//349v/9+Pb/+Ofi/+68r//nnYj/4453/+OPef/ijXj/4o54/uKP + ef7jkXz+56GP/u6+sv746eX++/f2/f39/fr9/f32/f398Pz8/Of8/Pza/Pz8yvz8/LX7+/ud/f39gvz8 + /Gf4+PhO+vr6Nvj4+CPz8/MW6urqDMzMzAV/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLU1NQG6OjoC/Hx8RL39/cf+fn5Lvv7 + +z/8/PxW/Pz8bvv7+4f8/Pyg/Pz8tvz8/Mr9/f3b/Pz85/39/fD9/f32/f39+v348vz97tf9/dqm/v3R + kP7905X+/d6z/v326v769vT+693Z/8ukmf+mY1H/mk04/6hnVP/Sr6X/7uHd//79/f/+/v7/+/Pw//PQ + xv/kj3r/4454/+OOeP/jj3n/4495/+OPef/kj3n/5JJ7/+++sP/34dv//fn5//79/f/+/v7//Pf2//fk + 3v/uvrH/56CN/+ONd//jjnj/4o54/+KOeP7ijnj+5JR+/uejkv7uwLP+9uLd/vv29Pz9/f36/f399v39 + /e/8/Pzm/Pz82fz8/Mj8/Pyy+/v7mf39/X38/Pxi+/v7SPr6+jH39/cg8vLyE+Xl5QrMzMwFf39/AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AszM + zAXl5eUK8fHxEvb29h35+fkt+/v7QPz8/FX6+vpu+/v7h/v7+5/8/Py2/Pz8yvz8/Nr8/Pzn/f398P39 + /fb9/fz6/fr2/P3t1f392KP+/b9j/v22Tv79t1D+/sNv/v3pzP/9+PL/+vj3//Lp5v/InpL/uYR1/82n + m//x5+P//v39//7+/v/+/v7/+evn//DEuP/jinP/4453/+OPef/jj3n/4495/+OOeP/kkHr/5peB//XX + zv/9+ff//v7+//7+/v/+/v7//v7+//79/P/34Nr/7r2w/+aZhf/kkXv/4454/+KNeP/ijnj+4o54/uOT + fv7mnov+78W5/vbi3f779/b9/fz8+v39/fb9/f3v/f395fz8/Nf8/PzE/Pz8rfv7+5P6+vp3/Pz8W/v7 + +0H5+fkt9vb2HfDw8BHj4+MJv7+/BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAB/f38Cv7+/BN/f3wjv7+8Q9fX1G/n5+Sr7+/s+/Pz8VPz8/Gz7+/uH/Pz8oPz8 + /Lf8/PzL/f392/z8/Of8/Pzx/f399v39/fr9+/j9/fLi/v3Wnf79vmD+/bVK/v20Sv79s0f+/bVO//7Y + ov/+8d3//v7+//7+/v/28O7/9e3r//v49//9/f3//v7+//7+/v/+/v7/+Ojj/+/Btf/ji3T/4454/+OP + ef/jj3n/4495/+OOeP/jkXv/5puG//bc1v/+/f3//v7+//7+/v/+/v7//v7+//7+/v/+/Pz/+OXg/+67 + rf/mmIT/4453/+OPef/ijXj/4o54/uKOeP7jkHr+5p6L/u7AtP746ub+/Pn5/f39/fr9/f32/f397vz8 + /OP8/PzU/Pz8wPz8/Kj7+/uM/Pz8cPz8/FT7+/s9+fn5KfX19Rrv7+8Q4+PjCb+/vwQAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGqqqoD29vbB+3t7Q719fUZ+fn5KPv7 + +zv8/PxS/f39a/39/YX7+/uf/Pz8tvz8/Mr8/Pza/Pz85/39/fD9/f32/f39+v358/z97tn+/dSa/v3C + a/79t1D+/bRK/v20Sv79s0j//rdP//7Skf/+7NL//v7+//7+/v/8+/r//Pr5//79/f/+/v7//v7+//7+ + /v/+/v7/+/Px//TTy//nnIn/5JN9/+OPef/jj3n/4495/+OPef/jj3n/5JF7/+67rv/34dv//v38//7+ + /v/+/v7//v7+//7+/v/+/v7//Pb1//jm4f/uvK//55+M/+OOd//jjnj/4o54/+KOeP7ijnj+45N+/uek + kv7uv7L+9+bh/fv29Pz9/f35/Pz89Pz8/Oz8/Pzg/Pz80Pz8/Lr8/Pyh+/v7hvz8/Gr8/PxR+/v7O/// + /yf19fUa7+/vEN/f3wi/v78E////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAG/v78E5eXlCvLy8hT4+Pgj+vr6Nfv7+0z6+vpn+/v7gvv7+538/Py0/Pz8yfz8/Nr8/Pzn/f398P39 + /fb9/f36/fn0/P3r0/792KL+/cBo/v23Uf79tEn+/bRK/v20Sv/+tEn//rdQ//7Skf/+7NL//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//fr6//nn4v/vv7P/6KOQ/+SUf//jj3n/4495/+OP + ef/jj3j/4413/+igjv/vwLP/+OXg//349//+/v7//v7+//7+/v/+/v7//v7+//37+v/339r/7ryv/+ed + if/kkHr/4454/+KOeP/ijnj+4o54/uSUfv7noo/+78S5/vfj3v38+Pf7/f39+Pz8/PL9/f3p/Pz83fz8 + /Mr8/Py0+/v7nP39/YH8/Pxn+/v7Tvr6+jn4+Pgn9fX1Gu7u7g/f398Iv7+/BP///wEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLb29sH7e3tDvX19Rr5+fkt+/v7Q/z8/F77+/t7+/v7mPz8 + /LL7+/vI/Pz82fz8/Of9/f3w/f399v39/Pr9+/n9/e/b/v3Yov79vWD+/bZN/v20Sf7+tEr+/bNK//60 + Sv/+tUz//rpZ//7apf/+8d3//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//35 + +P/66+f/7ryw/+egjv/kknz/45B6/+OPef/jj3n/4495/+OOd//nnor/776w//np5P/9+vj//v7+//7+ + /v/+/v7//v7+//7+/v/+/Pz/9+Hc/+67rv/mmIP/5JB6/+OOeP/ijXj/4o54/uKOeP7jkXv+5p6L/vDI + vf757er9/fz8+/39/ff9/f3w/Pz85/z8/Nn8/PzH/Pz8sfv7+5n9/f1+/Pz8Zfv7+036+vo4+Pj4J/X1 + 9Rnu7u4P39/fCL+/vwQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+/vwTl5eUK8vLyE/f3 + 9yL6+vo4/Pz8Uf39/W/7+/uO/Pz8qvz8/MP9/f3W/f395f39/fD9/f32/f39+v369fz98uH+/dSZ/v3B + aP79tk7+/bRK/v20Sv79tEr//rVL//60SP/+vmD//tKR//7v2f/++/b//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//79/f/9+vn/+OTg//DCtv/nnYr/5JJ9/+OPef/jj3n/4495/+OP + ef/kkXv/55uG/+++sf/4497//v39//7+/v/+/v7//v7+//7+/v/+/v7//ff2//jl4f/uuq7/552J/+OO + d//jj3n/4o14/+KOeP7ijnj+4496/uuwov702NH+/fz8/f39/fr8/Pz1/f397/39/eX8/PzX/Pz8xfv7 + +7D7+/uX+/v7fvz8/GT4+PhN+vr6OPj4+Cf19fUZ7u7uD9/f3wi/v78EAAAAAQAAAAAAAAAAAAAAAQAA + AAF/f38Cv7+/BN/f3wju7u4P9fX1Gfn5+Sv7+/tC/Pz8Xv39/X39/f2c/Pz8uPz8/ND9/f3h/Pz87fz8 + /PX9/f35/fnz/P3s1f7915/+/cJr/v23Uf79tEn+/bRK/v20Sv/+tEr//rRJ//6/Y//+0pP//uvP//75 + 8//+/v7//v7+//79/P/78O3/+ejj//jm4f/89vT//v38//7+/v/+/v7//v7+//7+/v/+/v7//Pf1//fh + 2//vwbX/6KGO/+WUf//jj3n/4495/+OPef/jj3j/5JB6/+igjP/vwLT/9+Pd//36+v/+/v7//v7+//7+ + /v/+/v7//v7+//339v/34dv/7ryv/+eei//jjnf/4454/+KOeP/ijnf+4ot1/uqtnv701s/+/fz8/v39 + /fz9/f35/Pz89f39/e78/Pzj/Pz81fz8/MT8/Pyu+/v7lvv7+338/Pxk+/v7Tfr6+jj4+Pgn9fX1Ge7u + 7g/f398Iv7+/BP///wEAAAAAf39/AqqqqgPMzMwF39/fCOvr6w3z8/MW9/f3Ivr6+jX7+/tO/Pz8avv7 + +4v8/Pyp/Pz8xP39/dv9/f3p/Pz88/38/Pn9+vf8/e7X/f3Zpf79vWD+/bdP/v20Sf79s0r//bRK//60 + Sv/+tk7//rtY//7Skv/+6cv//v37//7+/v/+/v7//fr5//rt6f/008r/8MK2/+/AtP/23db/+/Hu//79 + /f/+/v7//v7+//7+/v/+/v7//v7+//z39v/45eD/7ryv/+iikP/kk37/4495/+OPef/jj3n/4495/+OO + d//ooI3/77+z//np5f/9+Pf//v7+//7+/v/+/v7//v7+//7+/v/+/Pz/99/Y/+68rv/mmIT/5JF7/+KN + d//ijnj/5JR//u26rf724tz+/f38/v39/f38/Pz8/Pz8+fz8/PT8/Pzt/Pz84vz8/NX8/PzD/Pz8rfv7 + +5b7+/t9/Pz8ZPv7+0z6+vo3+Pj4JvT09Bjt7e0O39/fCL+/vwQAAAABv7+/BNvb2wfo6OgL7+/vEPT0 + 9Bf39/cg+fn5Lvv7+0H8/Pxa/f39d/v7+5f8/Py0/Pz8zfz8/OL9/f3u/f399v37+Pv98+X9/dWd/v2/ + ZP79tUr+/bRK/v20Sv79s0r//rVL//60SP/+u1n//tGN//7t1P/+/Pj//v7+//7+/v/+/f3/+u/r/+/D + t//noI3/4495/+SSe//qq5r/9NPL//349//+/v3//v7+//7+/v/+/v7//v7+//7+/v/9+vn/+ejj/+/A + s//nnYr/45B6/+OPef/jj3n/4495/+OPef/kj3n/55uH/+69sf/45uL//v39//7+/v/+/v7//v7+//7+ + /v/+/v7//fv5//jm4P/uu63/5piD/+KLc//kkXv/6q+g//Xa1P78+fj+/f39/v39/f78+/r++/r5/Pz8 + /Pn8/Pz0/Pz87fz8/OP8/PzU/Pz8w/z8/K77+/uW/f39fPz8/GP7+/tL+vr6Nvj4+CTz8/MW6+vrDdvb + 2weqqqoD4+PjCe3t7Q7y8vIU9vb2HPj4+CX6+vox+/v7P/z8/FP9/f1r+/v7hvz8/KP8/Py++/v71fz8 + /Of8/Pzx/fv4+P3x4fz91p79/cJt/v23Uf79tEn+/bRK/v20Sv/+tEr//rRI//6/Yv/+0pD//u3T//75 + 8P/+/v3//v7+//7+/v/9+ff/9+DZ/+iikP/kk33/4453/+OPeP/lloL/66+g//TQyP/89PL//vz8//7+ + /v/+/v7//v7+//7+/v/+/f3//fj2//fh2//wwrb/556K/+SUf//jj3n/4495/+OPef/jj3j/5JJ8/+ed + if/vwLT/9+Ld//79/f/+/v7//v7+//7+/v/+/v7//v7+//z29f/45uH/8srA//DBtf/xyL3/9d7Y//rx + 7/79/Pz+/f39/vv49/7l0s3+yqKX/eLMxvzz6+n4/Pz89Pz8/O38/Pzi/Pz81Pz8/MP8/Pyt/f39lP39 + /Xv8/Pxh+/v7Sfr6+jP39/ch8vLyFOjo6AvMzMwF7u7uD/Pz8xb39/cg+fn5LPr6+jj7+/tG/Pz8Vfz8 + /Gj9/f1++/v7l/z8/LH8/PzI/Pz83Pz8/Ov8/Pz0/fTn+v3ivP39wGj+/bdQ/v20Sf79tEr+/bRK//60 + Sv/+tk3//r5g//7Skv/+6cn//v36//7+/f/+/v7//v7+//7+/v/89vT/9dfP/+SSff/jjnf/4495/+OP + ef/jjnj/5ZiE/+utnf/11s//++/t//78/P/+/v7//v7+//7+/v/+/v7//v7+//z29P/34tz/7r2w/+ij + kP/klH//4495/+OPef/jj3n/4495/+OOd//ooY//78C0//nn4//9+Pf//v7+//7+/v/+/v7//v7+//7+ + /v/+/fz/++7r//rq5//67+z//Pr5//z8/P/9/f3+/Pv7/ubUz/7EmIz+ol1K/ruLff3bwrr79Ozr+fz7 + +/T8/Pzs/Pz84vz8/NT8/PzB/Pz8q/v7+5P9/f13/Pz8XPv7+0P5+fkt9vb2HO/v7xDf398I9PT0F/f3 + 9yH5+fkv+/v7P/z8/E/8/Pxf/f39b/v7+4H8/PyU/Pz8qf39/b/8/PzT/Pz84/39/e/9/f32/e3T+v3S + k/39tk7+/bNH/v60Sv79s0r//rVL//61Sf/+uVL//tCN//7r0P/+/vz//v7+//7+/v/+/v7//v7+//7+ + /v/89fP/9dfP/+WVgP/jj3j/4495/+OPef/jj3n/4494/+SUfv/qqZj/9dbO//z19P/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/9+fj/+enl/+69sP/nn4z/5JF7/+OQev/jj3n/4495/+OPef/jjXf/552K/++/ + sv/56uX//fv6//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//39/f/69/f/9Ozr/sCS + hv6dVED+jTgh/pJBK/63g3T94MrE/Pn19Pn7+vr0+/v77fz8/OP8/PzT/Pz8v/z8/Kn7+/uN/Pz8cPz8 + /FT6+vo6+Pj4JfPz8xbq6uoM9/f3IPn5+S77+/tA/Pz8Vfz8/Gj7+/t7+/v7jPv7+5z8/Pyt/Pz8vvz8 + /M/8/Pzd/Pz86vz8/PP9/f34/erP/P3Qjv39tlD+/bNI/v20Sv/+tUv//rVL//61Sf/+uVP//tOU//7t + 1P/+/v3//v7+//7+/v/+/v7//v7+//7+/v/9+vn/+OTf/+qsnP/ll4L/4494/+OPef/jj3n/4495/+OQ + ev/klX//66+f//PRyP/9+Pj//v39//7+/v/+/v7//v7+//7+/v/+/f3//fn4//fi3P/vwbX/552K/+ST + ff/jj3n/4495/+OPef/jj3n/5JJ8/+ebhv/wwbT/+OTf//79/f/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//z6+f/p2tX/vo+A/qFaRv6SQCn+jzwl/pA9Jv6bUDv+s3ts/eLLxvz17uz4/Pz88/z8 + /Oz8/Pzg/Pz8z/z8/Lr8/Pyg+/v7gvz8/GT7+/tG+fn5L/b29h3v7+8Q+fn5Kfr6+jr8/PxR/Pz8av39 + /YD8/PyV+/v7p/z8/LX8/PzD/Pz80Pz8/N38/Pzn/f398P39/ff9/f36/e/d/f3aqP79vWH+/bZP//61 + Sv/+tUv//rVL//61Sv/+uFH//sp+//7gsv/+8uD//v79//7+/v/+/v7//v7+//7+/v/+/f3/+/Lv//PS + yv/qrp3/5ZaC/+OPeP/jj3n/4495/+OPef/jj3j/5ZiE/+uvoP/01c3/+/Du//78/P/+/v7//v7+//7+ + /v/+/v7//v7+//z29P/34Nr/77+z/+iikP/llYD/4495/+OPef/jj3n/4454/+SPef/ooY7/8MS4//no + 5P/+/Pv//v7+//7+/v/+/v7//v7+//7+/v/+/v7//Pr6/+XSzP/FmY3/nlVB/5JCK/+POyT+kD0m/pA8 + Jf6RPif+nFE8/ruIev3cw7z78uro+Pz8/PP9/f3p/Pz82vz8/Mj8/Pyv+/v7kfz8/HL8/PxS+vr6OPj4 + +CTz8/MV+vr6M/v7+0f8/Pxh/f39ffv7+5b8/Pys/Pz8vvz8/Mv8/PzX/f394f39/en9/f3w/Pz89f39 + /fn9/f38/ffv/v3qz/79zIb+/r5h//63T//+tUv//rVL//61S//+t0///r5f//7Lf//+3a3//vbq//78 + +P/+/v7//v7+//7+/v/+/v7//vz8//z19P/yzcP/6qqZ/+STfv/jkHr/4495/+OPef/jj3n/4454/+WW + gf/qqpn/9dfQ//vx7//+/f3//v7+//7+/v/+/v7//v7+//7+/v/99/X/+OXg/+67rf/nnov/4494/+OP + ef/jj3n/4495/+OPef/jjXf/6aeV//LOxP/99/b//v7+//7+/v/+/v7//v7+//7+/v/7+Pf/7d/b/8SX + i/+fV0P/jzoi/488Jf+PPSb/kD0l/pA9Jv6QPCX+kT8o/phKNP66iHr93MS9+vfz8ff8+/vv/Pz84/z8 + /NL8/Py7/Pz8nv39/X78/Pxd+/v7Qvn5+Sv19fUb+/v7Pfz8/FP9/f1v+/v7jvz8/Kj8/Py+/Pz80Pz8 + /N39/f3l/Pz87Pz8/PL9/f32/f39+f39/fz9/f39/fz7/v348P7958b+/s6I//69XP/+tkv//rVL//61 + S//+tUv//rdO//63T//+wmn//t2t//7z5P/+/v3//v7+//7+/v/+/v7//v7+//79/f/78e//9NLJ/+ik + kv/klH//4494/+OPef/jj3n/4495/+OPef/jkXz/6q2c//TTyv/9+fj//v79//7+/v/+/v7//v7+//7+ + /v/+/v3//fj2//Xa0v/rrZ7/44x2/+OPef/jj3n/4495/+OPef/jj3n/556L/+68r//78/L//v39//7+ + /v/+/v7//v7+//37+//x5uT/vo2A/6BYRf+QPSb/kT0n/5E9J/+QPSb/jzwl/pA9Jv6QPSb+jzwl/o45 + Iv6WSDL+s3xs/OHOyfr18O/0/f396fz8/Nr8/PzE+/v7p/v7+4n8/Pxo+/v7S/r6+jP39/ci+/v7SPz8 + /F/9/f18/Pz8m/z8/LX8/PzL/Pz83fz8/Of9/f3v/Pz89P39/ff9/f36/f39/P39/f39/f3+/f39/v38 + +v799uz+/uS+//7Qjf/+vVz//rhP//62S//+tUv//rZL//61Sv/+uFL//sJq//7cqv/+8d3//v79//7+ + /v/+/v7//v7+//7+/v/++/v/+u3p//TSyf/pqpn/5JaB/+OPeP/jj3n/4495/+OPef/jjnj/5ZeD/+uw + oP/00sr//PPx//79/P/+/v7//v7+//7+/v/+/Pz//PPw//LLwf/pppT/4453/+OPef/jj3n/4495/+OP + ef/jjXf/56GP//DEuP/89fT//v7+//7+/v/+/f3//Pr5/+bUz//EmIz/oVlG/5RDLf+QPCX/kT4n/5E+ + J/+RPSb/kD0m/489Jv+QPSb+kDwl/o87JP6QPSb+m1M9/bR8bfvcxL318+vp7P39/d78/PzK/Pz8r/v7 + +5L8/Pxy/Pz8Vfv7+zz5+fkq/Pz8VP39/Wv7+/uJ+/v7p/z8/MD8/PzV/f395f37+O/8+PL1/ffu+f35 + 9Pv+/Pv8/f39/f39/f79/f3+/f39/v39/f79/f3+/vXo//7lwP/+zYX//r9h//64UP/+tUv//rVL//61 + S//+tUr//rNH//7Gc//+3av//vTk//78+P/+/v7//v7+//7+/v/+/v7//vv7//zz8f/yzML/6qub/+SV + gP/jkHr/4495/+OPef/jj3n/4454/+WYg//rrZ3/9djQ//vw7f/+/f3//v7+//78/P/78Oz/9djQ/+yx + of/mmob/4494/+OPef/jj3n/4495/+OOeP/jj3n/666e//XZ0f/9+fj//v7+//79/f/7+fn/5dHL/8OW + if+fWET/kT8o/5A8Jf+RPif/kT0m/5E+J/+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9Jv6QPSX+kD0m/ZVG + Mfu6h3n328K67vTt7OL7+vrP/Pz8tvv7+5r7+/t8/Pz8X/v7+0b6+voz/Pz8X/39/Xb8/PyU/Pz8svz8 + /Mn8/Pzc/Pv66/z37/P97tn5/erO/P3w3/39+PH+/f38/v39/f79/f3+/f39/v39/f79/f3+/v7+//74 + 7v/+58f//syD//69XP/+tkv//rVL//61S//+tUv//rVL//60Rv/+w2r//t6u//726v/+/vz//v7+//7+ + /v/+/v7//v7+//7+/v/89fP/88/G/+ikkv/jkXz/4495/+OPef/jj3n/4495/+OOeP/kkn3/6qqZ//XW + z//9+Pf//v7+//329f/118//6aiX/+SUf//jj3j/4495/+OPef/jj3n/4494/+OOeP/ll4H/8ca6//34 + 9v/+/f3//v7+//z6+v/17+3/t4Bw/5dIMv+NOCD/kD0m/5E+J/+RPSb/kD0m/5E9J/+RPif/kT4n/5E+ + J/+QPSb/kD0m/pA9Jv6QPSb+jzwl/Y87JfuSQiv4toFy8OLPyuT59fTT/Pz8vPv7+6L7+/uF+vr6avz8 + /FH7+/s+/Pz8afv7+4H7+/uf/Pz8u/z8/ND8+fXi/fLk7/3Xofb9yHv6/cNv/P3Mg/393Kz+/e3X/v39 + /P79/f3+/f39/v39/f79/f3+/v7+//79+v/++O///uW///7QjP/+vFz//rdO//62S//+tUv//rVL//61 + Sf/+uFL//sJp//7dq//+8d7//v79//7+/v/+/v7//v7+//7+/v/+/Pv/+u3p//TTyf/pp5X/5JaB/+OP + eP/jj3n/4495/+OPef/jkHr/5ZWA/+uyov/z0sn/+u3p//PQx//rsaL/5JWA/+OQev/jj3n/4495/+OP + ef/jj3j/5ZaB/+mnlv/zz8X/+uvn//78+//8+/r/+/n3/+jY0//AkIP/nlZB/5A+J/+QPCX/kT0n/5E+ + J/+RPif/kT0m/5E+J/+RPif/kT4n/5E+J/+RPib/kD0m/489Jv+QPSb+kDwl/ZA9JfyQPSb4m1I98LN9 + bebo2NPW+PPzwPz8/Kj7+/uN+vr6dPz8/Fv7+/tH/Pz8cvv7+4r7+/un/Pz8wv39+9b+8+Tl/N+18f3D + b/f9tlH7/bNL/f25Vv79w3D//dac//3u1//9+fP//f39//39/f/9/f3//v7+//7+/v/+/v7//vXo//7k + vv/+zon//r5g//64UP/+tkv//rVL//61S//+tUn//rZN//7Fcf/+3av//vLg//79+//+/v7//v7+//7+ + /v/+/v7//vv6//vv6//yzcP/6qyb/+SWgf/jj3n/4495/+OPef/jj3n/4454/+aahv/qq5v/776x/+qr + mv/mmob/4494/+OPef/jj3n/4495/+OPeP/lloH/6qyc//PPxf/77+v//vv6//z6+f/z7On/3cW9/8CS + hP+eVUH/k0Er/487Jf+RPif/kT4n/5E+J/+RPif/kT4n/5E9J/+RPSf/kT4n/5E+J/+RPif/kT4n/5A9 + Jv+PPSb/kD0m/pA+JvyPPCX4jzwl8Z5WQefYvbTY8enlxPz8/K78/PyU/f39e/z8/GP8/PxP/f39ef39 + /ZD8/Pyt/Pz8x/z8/Nn86s7o/MyF8v24VPj9skj8/bNK/v20S/7+s0f//r9i//7WnP/+8Nv//vv2//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//726v/+5sL//syC//6+YP/+t07//rVL//61S//+tUv//rVK//60 + Rv/+xXH//t6u//726//+/Pr//v7+//7+/v/+/v7//v7+//78/P/89fL/8szC/+mol//jknz/45B6/+OP + ef/jj3n/4495/+OPeP/jjnj/4412/+OOeP/jj3j/4495/+OPef/jj3n/45B5/+SSfP/qqZj/88zC//33 + 9f/+/fz//v39//fx7//fycL/tHxs/5ZHMf+NOCD/kDwl/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E9 + Jv+RPSb/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA+JvyPPCb5jToj8plNOOjPrqTa7OLexvz8 + /LH7+/uZ+/v7gfz8/Gn8/PxV/f39ev39/ZL8/Pyv/Pz8yP39+9v96cvp/Ml/8/23U/n9s0n8/bNK/v20 + Sv7+tEr//rZN//67V//+1pr//u3V//7+/f/+/v7//v7+//7+/v/+/v7//v7+//79+//++O7//ubB//7O + iP/+vFz//rZL//61S//+tUv//rVL//61Sv/+t07//sJp//7er//+8+T//v7+//7+/v/+/v7//v7+//7+ + /v/+/fz/+/Ds//TSyf/no5H/5ZR//+OPeP/jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/4495/+OP + ef/jj3j/5JR+/+mkk//00sn/+/Hu//79/f/+/v7//Pv6/+vc2P+wdGT/mEs1/487I/+QPSb/kT0m/5E+ + J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA+ + JvyPPCb5kD4o8p9aR+jex8Da8+3qx/z8/LL7+/ua/f39gvz8/Gr8/PxV/f39d/v7+4/8/Pys/Pz8xvz8 + /Nn8793o/Nmm8/3Aafj9tlH8/bRK/v20Sv79tEr//rRJ//61Sv/+wGT//tWZ//7t0//+/Pj//v7+//7+ + /v/+/v7//v7+//7+/v/+/fv//vbq//7kvf/+z4v//r1c//64UP/+tkv//rVL//61S//+tUn//rhR//7E + bf/+3a3//vLg//7+/v/+/v7//v7+//7+/v/+/v7//vv6//rt6f/z0Mb/6qua/+WXgv/jj3j/4495/+OP + ef/jj3n/4495/+OPef/jj3n/4495/+OPeP/ll4L/6qua//PRyP/67en//vz7//7+/v/9+/v/5tTP/8SY + i/+aTTj/kT0m/5A7JP+RPif/kT4n/5E+J/+RPif/kT4n/5E9Jv+RPSb/kT4n/5E+J/+RPif/kT4n/5E+ + J/+RPif/kT4m/5A9Jv+PPSb/kD0m/pA+JvyQPyn5oV5L8r+Shujt4t/Z+PX1xvv7+7D7+/uY/f39f/z8 + /Gb8/PxS/Pz8cPv7+4j8/Pyl/Pz8wPz8/NX9+PDl/OzT8f3QkPf9wGj7/bZQ/f20Sv79tEr+/bRK//61 + Sv/+tEf//sFm//7Wmv/+8Nv//vr0//7+/v/+/v7//v7+//7+/v/+/v7//v7+//715//+5b7//syC//6/ + Yv/+uFD//rVL//61S//+tUv//rVK//60R//+x3b//uC0//779f/+/vz//v7+//7+/v/+/v7//v7+//77 + +//88/H/8srA/+mrmv/klH//45B6/+OPef/jj3n/4495/+OPef/jj3n/45B6/+SVgP/qrJv/8szC//vz + 8f/+/Pv//v79//z5+f/r3Nf/x52Q/6FaRv+QPSX/kDsk/5E+J/+RPif/kT4n/5E+J/+RPSb/kT4n/5E9 + Jv+QPSb/kT4n/5E+J/+RPif/kT4n/5E+J/+RPib/kD0m/489Jv+QPSb+kD0m/ZJBKfyeVkT4vIyA8eHM + xuf49fTY/Pz8w/z8/K37+/uT+/v7evz8/GH7+/tN/Pz8Zvv7+377+/uc/Pz8uPz8/M/9/f3h/fr27/3q + 0Pb90ZP7/bxf/f21Tf39tEr+/bRK/v2zSv/+tUr//rVI//67V//+15z//vDa//7+/f/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/++O///ujH//7OiP/+vV///rVM//61S//+tUv//rVL//61S//+tEj//sp8//7y + 4P/++/f//v7+//7+/v/+/v7//v7+//7+/v/+/v7//PPx//PQxv/oo5H/5JJ8/+OPef/jj3n/4495/+OP + ef/jj3n/45F8/+qnlv/00sn//ff1//7+/f/+/v7//Pv7//Tt6/+/j4L/nlZB/445Iv+RPSb/kT4n/5E+ + J/+RPif/kT4n/5E9Jv+RPSb/kT4m/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9 + Jv6QPSb+kT4o/ZZIM/u9joD44c3I8P39/OX9/f3W/Pz8wPz8/Kj7+/uN/Pz8cvz8/Fn7+/tF/Pz8Wfz8 + /HH7+/uQ/Pz8rvz8/Mf8/Pzc/Pz76/z38PT958n6/dSX/f29Yv39t1D+/bVK/v20Sv79tEr//rRJ//62 + Tf/+vl///tab//7t0//+/v3//v7+//7+/v/+/v7//v7+//7+/v/+/fr//vjt//7apf/+w23//rVJ//61 + Sv/+tUv//rVL//61S//+tEf//sd2//7t0//++vT//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vv7//rs + 6f/z0sn/6aiX/+WWgf/jj3j/4495/+OOeP/lloH/6aqZ//TTy//77uv//vz8//7+/v/+/v7/+vj3/+7j + 3/+tcF//k0Ir/487I/+RPSb/kT4n/5E+J/+RPif/kT4n/5E+J/+RPSb/kT4n/5E+J/+RPif/kT4n/5E+ + J/+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9Jv6RPyn+oFpH/b2Mf/vhzMf39O/t7/z8/OP8/PzS/Pz8u/39 + /aD9/f2D/Pz8aPz8/E/7+/s8+/v7Tfz8/GX9/f2E/Pz8pPz8/L/8/PzV/Pz85/z8/PL99uz4/ejJ/P3R + kf39wWj+/bhR/v21Sv79tEr+/bRK//60Sv/+tEj//sJp//7Wm//+8Nv//vr0//7+/v/+/v7//v7+//7+ + /v/+/Pj//vTl//7YoP/+wmv//rVJ//61Sv/+tUv//rVL//62S//+uFD//suA//7u1f/++vT//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//37+v/67+z/8svB/+qunv/lmYT/45B6/+aahf/rr5//88/F//vv + 7f/+/Pv//v7+//7+/v/+/v7/+/n4//Lp5/+8i37/nVRA/487I/+QPCX/kT0m/5E+J/+RPSb/kT4n/5E+ + J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPib/kD0m/489Jv+QPSb+kD0m/pE/KP6hW0f+u4t+/eDL + xfv18O72/Pz87fz8/OD8/PzN/Pz8tPv7+5j9/f15/Pz8Xvv7+0X6+voy+/v7Qvz8/Fr9/f14+/v7mfz8 + /Lb8/PzO/Pz84v39/e79/f32/fjy+/3qz/390JL+/b9k/v22Tf79tUr+/bRK/v20Sv/+tUv//rRI//6+ + YP/+157//vDc//78+P/+/v7//v7+//79+v/+9OX//uG2//7Lgf/+vF3//rVM//61S//+tUv//rZM//63 + T//+wGT//tWZ//705f/+/Pj//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/fz//PTy//TT + yv/ssqP/5p2J/+y0pf/11c3//ff2//79/f/+/v3//vv6//739P/+9fL//vXy//z08f/iy8f/uYV4/5VF + Lv+QOyT/kDwl/5E+J/+QPSb/kT0m/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9 + Jv6QPSb+kkEq/plMN/69jH7+4crE/P39/fr8/Pz0/f396f39/dv8/PzH/Pz8rP39/Y79/f1v/Pz8U/v7 + +zv5+fkp+vr6OPv7+078/Pxs+/v7jfz8/Kv8/PzF/f392/v7++r8/Pzz/fz7+f358/z96Mv+/dOY/v29 + YP79t0/+/bVK/v60Sv79tEr//rRK//63Tv/+u1n//tif//7v1//+/v7//v7+//7y4P/+37L//sh3//69 + Xf/+t0///rVL//61S//+tkz//rhR//6/Yf/+0ZD//ufG//78+f/+/v3//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//vz8//z18//67en/+Obh//rt6v/89fP//v39//7+/v/+9/T//ubb//7H + rv/+wqb//sOo//7Ks//56OH/4MrE/72Mf/+URC7/kT4n/5JAKf+QPSb/kT0m/5E+J/+RPif/kT4n/5E+ + J/+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9Jv6RPyn+nVRA/r6Of/7hzcf9+PPy+v39/ff9/f3w/Pz85Pz8 + /NP8/Py9/Pz8ofv7+4P8/Pxj+/v7SPr6+jH39/ch+fn5L/v7+0T8/Pxg/f39f/z8/J78/Py5/Pz80f39 + /eH8/Pzt/Pz89f39/fn99uz8/efI/v3Slf79wGf+/bhR/v21Sv79tEr+/bRK//60Sv/+tUr//sh3//7c + qv/+7tb//vDa//7fsf/+y4D//rtZ//63T//+tUv//rVL//62TP/+uVP//sFn//7QjP/+5cH//vXp//7+ + /v/+/v7//v7+//7+/v/+/Pr//vn2//759//+/fz//v7+//7+/v/+/v7//v7+//7+/v/+/f3//vz7//79 + /f/+/v7//v7+//76+P/+3c7//ryd//6ieP/+nnP//p5z//6ieP/+yrL/9dnO/+DKw/+5hXf/nlRA/5A7 + JP+QPCT/kT0m/5E+J/+RPif/kT4n/5E+J/+RPib/kD0m/489Jv+QPSb+kD0m/pFAKf6hXEj+vIt9/uLN + x/317uz7/f39+Pz8/PP9/f3p/f392/z8/Mj7+/uw/f39k/z8/HX8/PxW+/v7Pfn5+Sj19fUZ+Pj4Jvr6 + +jn8/PxS/Pz8cPv7+478/Pyq/Pz8w/39/db9/f3l/f397/39/fb9/f36/ffu/P3pzf790ZH+/cBn/v23 + T/79tUr+/bRK/v20Sv/+tkz//rxb//7Ief/+1pr//tif//7JfP/+vFr//rZM//61S//+tUv//rZM//64 + Uf/+wWf//tCL//7lwf/+9ur//v7+//7+/v/+/v7//vv6//707//+5tv//t3O//7ez//+6uH//vf0//79 + /f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v38//7y7P/+wqf//pVl//6LVv/+ilb//olU//6I + Uf/+oHX//smw//nm3v/iy8X/t4Fy/5lLNv+POiL/kDwl/5E9Jv+RPif/kT4n/5E+J/+QPSb/kD0m/pA9 + Jv6QPSb+kkEq/p1UQP68i3z+38nD/fr49/z9/f34/Pz88/z8/Oz8/Pzg/Pz8z/z8/Lr8/Pyh+/v7hPz8 + /Gb7+/tJ+vr6Mff39x/y8vIT9vb2Hfn5+S37+/tE/Pz8Xv39/Xv7+/uY/Pz8s/z8/Mj8/PzZ/Pz85/39 + /fD9/f32/f38+v369v396c3+/dOV/v2+YP79tk3+/bVK/v20Sv79s0r//rZM//63Tf/+tk3//rZN//62 + Tf/+tk3//rVL//61S//+tkv//rdP//6+Yf/+0Iz//uXB//779f/+/v3//v7+//7+/v/+/v7//vHr//7Y + xv/+rIf//php//6abP/+tZP//uXY//76+P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vv6//7m + 2//+s5L//opV//6MV//+jFj//oxX//6LVv/+iFL//p5z//7Eqv/88+//4czH/7yKff+POiL/jzoj/5A8 + JP+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9Jv6RPyj+mEw3/r2Mfv7izcf9+/n4/P39/fn8/Pz0/Pz87Pz8 + /OP8/PzT/Pz8v/z8/Kn7+/uO+vr6cfz8/FX6+vo6+Pj4J/T09Bfr6+sN8/PzFvj4+CP6+vo1+/v7TPr6 + +mf7+/uC+/v7nfz8/LT8/PzJ/Pz82vz8/Of9/f3w/f399v39/Pr99+78/efI/v3Ul/79v2P+/bhR/v21 + Sv79tEr+/bRK//61Sv/+tUr//rVJ//61Sv/+tUv//rVL//62TP/+uVP//r9k//7Qjf/+5cD//vbq//7+ + /f/+/v7//v7+//79/f/+7+j//tG8//6uif/+l2f//o5b//6PXP/+mGn//rmY//7by//++vj//v79//7+ + /v/+/v7//v7+//7+/v/+/v7//vz7//7u5v/+vqH//pRj//6NWf/+jFj//oxY//6MV//+ilT//o9c//6g + dP/+yLD/9dzS/9/Jw/+7iHr/m086/446I/+POyT/kD0m/489Jv+QPSb+kD0m/pE/Kf6gWkb+u4t8/uHM + xv317uz7/Pz8+fz8/PT8/Pzs/Pz84vz8/NT8/PzB/Pz8q/39/ZL9/f13/Pz8Xfv7+0T5+fkt9vb2HfDw + 8BHj4+MJ7u7uD/X19Rn5+fko+vr6Ovz8/FL9/f1r+/v7hfz8/J78/Py1/Pz8yvz8/Nr8/Pzm/f398P39 + /fb9/f36/fbs/P3oyv790ZD+/cFo/v23Uf79tUr+/bRK/v20Sv/+tUr//rVL//61S//+tUv//rZL//64 + U//+wWf//s+K//7lwP/+9ef//v7+//7+/v/+/v7//vv5//7x6//+0r3//rCM//6UZP/+jVn//oxY//6M + V//+i1b//plr//65mP/+4NH//vfz//79/f/+/v7//v7+//7+/v/+/v7//v39//738//+0bz//qmC//6V + ZP/+j1z//oxY//6MWP/+jFf//opU//6MWP/+oHX//sqy//be1P/izcj/t4J0/5xTP/+POyP+jzsj/o87 + JP6QPCX+kT4n/qBZRf67inz+38nD/ffy8fv9/f34/Pz88/z8/O38/Pzi/Pz80/z8/ML6+vqt/Pz8lPv7 + +3v8/Pxh+/v7Sfr6+jT39/ch8vLyFOjo6AvU1NQG4+PjCe/v7xD19fUb+fn5Kvv7+z78/PxU/Pz8bP39 + /Yb7+/uf/Pz8tvz8/Mr8/Pza/Pz85/z8/PH9/f32/f39+v358/396c3+/dGQ/v2+Yf79tk3+/bVL/v20 + Sv79s0r//rVL//61S//+tkz//rdP//6/Y//+z4r//uTA//758f/+/v7//v7+//7+/v/+/fz//vDq//7X + xf/+qoP//pRj//6MWP/+jFj//oxY//6MWP/+jFj//otW//6XaP/+so///ubb//749f/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+6N7//sev//6ke//+lWT//o1a//6MWP/+jFj//oxX//6LVf/+hk///qB0//7I + rv/++fb/4czF/7yLfP6XSDL+kT8o/pA9Jv6SQSr+l0kz/ryMff7hysT8/f39+/39/fj8/Pzz/Pz87Pz8 + /OP8/PzU/Pz8wvz8/K77+/uW+/v7fPr6+mP7+/tL+vr6Nvj4+CTz8/MW6+vrDdvb2weqqqoD1NTUBuXl + 5Qrx8fES9vb2Hfn5+Sz7+/s//Pz8Vfz8/G39/f2G+/v7n/z8/Lb8/PzK/Pz82vz8/Of9/f3w/f399v38 + +/r9+PH9/efI/v3Tlv79vV/+/bdQ/v21Sv7+tEr+/bRK//61S//+uFL//r5g//7Qjf/+5L///vjv//79 + +//+/v7//v7+//7+/v/+8On//tK+//6qg//+lmb//o5b//6MWP/+jFj//oxY//6MWP/+jFj//oxX//6O + W//+l2n//rWT//7dzv/++vj//v7+//7+/v/+/v7//v7+//7+/v/++fb//uje//7Fq//+qID//pVl//6N + Wf/+jFj//oxY//6MV//+i1X//o1Z//6gdv/+ybD/9uLa/+rb1/7WuLD+uIR2/q5yYv6ze2v+yKKX/uXS + zfz28e/6/f399/z8/PP8/Pzr/f394fz8/NT8/PzC/Pz8rfv7+5b9/f18+vr6ZPv7+0z6+vo3+Pj4JvT0 + 9Bjt7e0O39/fCL+/vwQAAAABqqqqA9TU1Abo6OgL8fHxEvb29h75+fkt+/v7P/z8/FX6+vpu/f39hvv7 + +5/8/Py2/Pz8yfz8/Nr8/Pzn/f398P39/fb9/f36/fbr/P3nx/790ZL+/cBm/v23UP79tEj+/bRK/v23 + Uv/+wGb//s+K//7kv//+9eb//v7+//7+/v/+/v7//vv6//7x6//+0bz//rCM//6UY//+jlv//oxY//6M + WP/+jFj//oxY//6MWP/+jFj//oxY//6MV//+jVr//phq//65mf/+3M3//vr4//79/f/+/v7//v7+//7+ + /v/+/v7//vn1//7m2//+xav//qmC//6VZP/+jlv//oxY//6MWP/+jFf//opU//6PXP/9oHf//dnJ//vx + 7f7z7Or+4MrF/tm/t/7dxLz96t3Z/Pfz8fr9/f32/Pz88f39/en8/Pzf/Pz80fz8/MH8/Pys/Pz8lfv7 + +336+vpk+/v7TPr6+jj4+Pgn9fX1Ge7u7g/f398Iv7+/BP///wEAAAAAAAAAAH9/fwLMzMwF5eXlCvLy + 8hP29vYe+fn5LPv7+z/8/PxV/Pz8bf39/Yb7+/uf/Pz8tvz8/Mr8/Pza/Pz85/39/fD9/f32/f39+v33 + 7/z96cz+/dGQ/v3BaP79uFP+/bhT/v3AZv79zon//uS///726v/+/v7//v7+//7+/v/+/Pr//vDq//7W + xP/+ron//pRk//6MWP/+jFj//oxY//6MWP/+jFf//oxX//6MV//+jFj//oxY//6MWP/+jFj//otW//6Z + av/+tpX//ubc//728//+/v3//v7+//7+/v/+/v7//v7+//7+/v/+5Nj//sWr//6mff/+kmH//oxY//6M + WP/+jFj//oxX//6KVf/9h1P+/cGl/v3o3f79/f3+/f39/v39/f39/f38/f39+fz8/PX9/f3v/Pz85/z8 + /Nz8/PzO/Pz8vvz8/Kv8/PyU/f39e/z8/GP7+/tM+vr6OPj4+Cb19fUZ7u7uD9/f3wi/v78EAAAAAQAA + AAAAAAAAAAAAAAAAAAB/f38CzMzMBeXl5Qry8vIT9vb2Hvn5+Sz7+/s//Pz8Vfz8/G37+/uH+/v7n/z8 + /Lf8/PzK/Pz82vz8/Of9/f3w/f399v38+/r9+vb9/e3U/f3bqf79yn/+/cd3/v3UmP7+58T+/fnz//38 + +v/9/f3//f39//7+/v/+8er//tbC//6ogP/+lWX//o1Z//6MWP/+jFj//oxY//6MWP/+ilb//opV//6L + Vv/+jFf//oxY//6MWP/+jFj//oxY//6NWf/+l2n//rGP//7i1P/++/j//v7+//7+/v/+/v7//v7+//7+ + /v/++/r//uje//7Fq//+mGr//otW//6MWP/+jFj//YtX//2KVv/9ilX+/ad+/v3Svv79/fz+/f38/v39 + /fz9/f35/Pz89f39/e/8/Pzm/Pz82vz8/Mz8/Py7+/v7p/v7+5H9/f15/Pz8Yfv7+0v6+vo3+Pj4J/X1 + 9Rnu7u4P39/fCL+/vwQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AtTU1Abo6OgL8vLyE/b2 + 9h75+fkt+/v7QPz8/FX8/Pxt/f39hvv7+5/8/Py2/Pz8yfz8/Nr7+/vn/f397/z8/PX9/f35/fnx+/3x + 3/396c7+/ejJ/v3u2P799ur+/f39/v39/f79/f3+/fv6//7w6v/+0b3//q+K//6VZf/+jlv//oxY//6M + WP/+jFj//otW//6QXv/+qYL//ruc//64mP/+m27//o9d//6LV//+jFj//oxY//6MV//+jlv//pZn//65 + mf/+3cz//vv4//7+/f/+/v7//v7+//7+/v/+/v7//u7n//7Nt//+mmz//opW//6MWP/9i1f//YpX//2L + Vv79i1b+/aF2/v3Nt/79/Pv+/f39/P39/fr8/Pz1/f397/z8/OT8/PzX/Pz8yPz8/Lb7+/ui+/v7jf39 + /Xb8/Pxf/Pz8Svr6+jb4+Pgm9fX1Ge7u7g/f398Iv7+/BP///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAH9/fwLU1NQG5eXlCvLy8hP29vYe+fn5Lfv7+z/8/PxV/Pz8bf39/Yb7+/uf/Pz8tfz8 + /Mn8/Pza/f395f39/e78/Pz0/f39+P38/Pv9/f38/fz7/v39/P79/f3+/f39/v39/f79+/n+/fHr//7T + wP/+sI3//pRk//6NWf/+jFj//oxY//6MWP/+i1f//pJg//6le//+z7n//uba//7h0//+vZ///p5x//6P + XP/+i1f//oxY//6MWP/+jFf//otW//6aa//+uZn//uLV//738//+/f3//v7+//7+/v/+9vL//uHT//6/ + ov/+l2j//otW//6LV//9ilf//YtX/v2NWf79kF7+/a2J/v3Vw/79/fz8/f39+v39/fb9/f3v/Pz85vz8 + /Nf8/PzG/Pz8s/z8/J77+/uI/Pz8cfz8/Fv7+/tH9fX1Nfj4+CX09PQY7u7uD9/f3wi/v78E////AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CzMzMBeXl5Qry8vIT9vb2Hvn5 + +Sz7+/s//Pz8Vfz8/G37+/uH+/v7n/z8/LX8/PzJ/Pz82fz8/OT8/Pzt/Pz88/39/ff9/f36/f39/P39 + /f39/f3+/f39/v39/f799O/+/d3P/v2phP79k2P//oxY//6MWP/+jFj//oxY//6MWP/+i1X//qR6//7L + sv/+9vL//v79//76+P/+8On//rmZ//6Zav/+i1b//oxX//6MWP/+jFj//oxY//6LVv/+l2j//rOQ//7n + 3P/++vj//v7+//7+/f/+5Nf//sGk//6bbf/+kF7//YtY//2LV/79i1f+/YxY/v2RX/79nHD+/cqy/v3q + 4f39/f37/f399/z8/PH8/Pzn/Pz82vz8/Mj8/Pyz+/v7nP39/YT8/Pxt/Pz8Vvv7+0L6+vox9/f3IvT0 + 9Bft7e0O39/fCL+/vwQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAf39/AszMzAXo6OgL8vLyE/b29h75+fkt+/v7QPz8/FX8/Pxt/f39hfv7+538/Pyz/Pz8xfz8 + /NT8/Pzg/f396f39/e/8/Pz0/f39+P39/fv9/f38/f39/v38/P7949f+/biY/v2Xaf7+jFr//oxY//6M + WP/+jFj//oxX//6NWf/+qYL//s64//7v6P/+/Pv//v7+//79/f/++vj//uTY//7Ao//+mWr//o1Z//6L + V//+jFj//oxY//6MV//+jlv//php//64mP/+3c7//vPu//7l2f/+wKP//qJ4//6RXv/9jFn//YpX//2L + V/79jFf+/ZNh/v2lfP79xav+/efd/f349vv9/f34/Pz88v39/en8/Pzc/Pz8y/z8/Lb9/f2d/f39g/z8 + /Gr8/PxU+/v7P/n5+S739/cg8/PzFu3t7Q7f398Iv7+/BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLU1NQG6OjoC/Ly8hP29vYe+fn5Lfv7 + +z/8/PxV/Pz8bP39/YP7+/ua/Pz8rvz8/MD8/PzP/f392/z8/OT8/Pzs/Pz88/39/ff9/f36/Pz8/f37 + +v7918b+/Z5y/v2OW/79ilb//otX//6MWP/+jFj//otX//6OW//+wab//ufc//7+/f/+/v7//v7+//7+ + /v/+/v7//vn2//7h1P/+vqD//pxu//6PXP/+i1f//oxY//6MWP/+jFf//o1Z//6abP/+s5H//sSp//64 + mP/+oXf//pJg//6MWP/9ilf//YtX/v2NWf79kmH+/aZ9/v3Cp/795tv+/ff0+/39/fj8/Pzz/Pz86/z8 + /N/8/PzP/Pz8uvv7+6L9/f2H/Pz8bPz8/FP7+/s++fn5LPb29h7y8vIU6urqDNvb2we/v78E////AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38CzMzMBeXl5Qry8vIT9vb2Hvn5+Sz7+/s+/Pz8U/z8/Gn7+/uA/Pz8lfz8/Kj8/Py6/Pz8yf39 + /db8/Pzi/Pz86/z8/PL9/f34/f39+/37+v3908D+/ZZm/v2MWP79ilb+/YpX//6MWP/+jFj//otX//6O + W//+ybH//uzj//79/P/+/v7//v7+//7+/v/+/v7//v7+//759//+6d7//riX//6cbv/+jVn//oxX//6M + WP/+jFj//oxY//6LVv/+jVn//o5b//6LV//+jFj//otY//2LV/79i1f+/Y1Z/v2SYf79oXb+/cGm/v3i + 1f39/f38/f39+fz8/PP8/Pzs/f394fz8/NL8/Py/+/v7p/39/Yz8/Pxx/Pz8Vvv7+z/5+fks9vb2HfHx + 8RLo6OgL1NTUBqqqqgMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AszMzAXo6OgL8fHxEvb29h35+fkr+/v7PPz8 + /E/8/Pxj/f39eP39/Yz8/Pyg/Pz8svz8/MP8/PzT/f394fz8/Ov8/Pzz/f39+f39/Pv94NP9/bGN/v2Q + X/79iVX+/otX/v2KV//+i1j//oxY//6NWv/+pHv//s22//7z7v/+/fz//v7+//7+/v/+/v7//v7+//7+ + /f/++ff//une//6+oP/+mWr//oxW//6MV//+jFj//oxY//6MWP/+jFj//oxY//6MWP/9i1f//YpX//2L + V/79jFf+/ZNi/v2id/79wKT+/ePX/f349vz9/f35/Pz89Pz8/Oz8/Pzi/Pz80/z8/MH8/Pyq+/v7kPv7 + +3b8/Pxb+/v7Qvn5+S729vYe8fHxEuXl5QrMzMwFf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ + fwLU1NQG6OjoC/Hx8RL29vYc+fn5Kfr6+jj8/PxK/Pz8XP39/W/9/f2D+/v7mPz8/Kz8/PzB/Pz80/z8 + /OL8/Pzt/Pz89f39/fn98ev8/dfF/v2qhP79k2L+/YpV/v2LV/79i1f//otX//6MWf/+k2L//qqE//7L + tP/+8Or//vv5//7+/v/+/v7//v7+//7+/v/+/v3//vn3//7h0//+wKP//plq//6PXP/+jFf//oxY//6M + WP/+jFj//otX//2LV//9ilf//YtX/v2MWP79k2L+/aV9/v3ApP7949b9/fXx+/39/fj8/Pz0/Pz87P39 + /eH8/PzU/Pz8wfr6+qz9/f2T/f39efz8/F/7+/tH+vr6Mff39yDy8vIU6OjoC8zMzAWqqqoDAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38C1NTUBuXl5Qrw8PAR9fX1Gvj4+Cb6+voz+/v7Q/z8 + /FT8/Pxo+/v7fvz8/JX8/Pyt/Pz8xP39/db9/f3l/Pz88f39/ff9+/r7/fPv/f3Mtv79qoP+/ZFf/v2L + V/79i1f+/YtX//6LV//+i1f//pJh//6mff/+07///u3l//78+v/+/v7//v7+//7+/v/+/v7//v7+//75 + 9v/+5Nf//riY//6dcP/+j1z//oxX//6MWP/+jFj//otX//2KV//9i1f+/Y1a/v2SYP79o3r+/b+k/v3g + 0v39+ff8/f39+Pz8/PT8/Pzt/Pz84vz8/NT8/PzC/Pz8rfz8/JX7+/t8/Pz8Yvz8/Er6+vo09/f3IvPz + 8xXq6uoM1NTUBn9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AszM + zAXj4+MJ7u7uD/Pz8xb39/cg+fn5Lfv7+zz7+/tO/Pz8Zfv7+377+/uZ/Pz8s/z8/Mn8/Pzc/Pz86vz8 + /PP9/f34/fz7/P339P390Lv+/aV7/v2MV/79ilb+/YtX/v2KV//+jFj//oxX//6PXP/+n3P//tC7//70 + 7//+/v7//v7+//7+/v/+/v7//v7+//7+/v/++vj//u/n//65mv/+mGn//otW//6MV//9i1f//YtX/v2L + V/79jFf+/ZJg/v2ec/79v6T+/eHV/v38+/z9/f35/Pz89Pz8/O38/Pzj/Pz81Pz8/MP8/Pyu+/v7lvv7 + +338/Pxj/Pz8Svr6+jb4+Pgl////Fuvr6w3b29sHqqqqAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E39/fCOvr6w3y8vIT9vb2Hfn5+Sr6+vo6/Pz8T/z8 + /Gj7+/uE/Pz8oPz8/Ln8/PzP/f394fz8/Oz8/Pz0/f38+v38+/z97eb+/dO//v2nfv79kmH+/YpV/v2L + V/79ilf//otX//6NWf/+kV7//qmC//7Ks//+9O///vz6//7+/v/+/v7//v7+//7+/v/+/f3//vr4//7i + 1v/+v6P//phq//2MWv/9ilb//YtX/v2MV/79k2L+/aR8/v2/o/794tb9/fXx+/39/Pn8/Pz0/Pz87Pz8 + /OL8/PzU/Pz8wvz8/K39/f2V/f39fPr6+mT7+/tM+vr6N/j4+Cb19fUZ7e3tDt/f3wi/v78EAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38Cv7+/BNTU + 1Abl5eUK8fHxEvb29hz5+fkp+/v7Pfz8/FT9/f1v/f39jPv7+6f8/PzA/Pz81fz8/OP9/f3u/f399v39 + /fr9+/r8/e/o/v3OuP79qoT+/ZNi/v2KVv79i1f+/YtX//6LV//+i1f//pNi//6pgv/+0bz//u7m//77 + +v/+/v7//v7+//7+/v/+/v7//v7+//749f/+4NL//rud//2ccf/9j13+/YtX/v2RX/79pHz+/b+k/v3f + 0/789fL8/f39+Pz8/PT8/Pzt/Pz84vz8/NT8/PzD/Pz8rfv7+5b7+/t9+vr6ZPv7+036+vo4+Pj4JvX1 + 9Rnu7u4P39/fCL+/vwT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF5eXlCvDw8BH29vYc+fn5Lfv7+0L5+flc+/v7ePz8 + /JT8/Pyv/Pz8x/z8/Nj9/f3l/f398P39/fb9/f36/fv7/f349v79zbf+/aZ//v2NWf79i1f+/YtX/v2K + V//+jFj//otX//6RX//+oHX//tTA//7x6v/+/fz//v7+//39/f/9/f3+/f39/v39/f79+fb+/erh/v27 + nv79n3T+/ZVm/v2hd/79wKX+/eDU/f39/fz9/f35/Pz88/z8/Oz8/Pzj/Pz81Pz8/ML8/Pyu/f39lfv7 + +338/Pxj+/v7TPr6+jj4+Pgm////GO7u7g/f398Iv7+/BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CzMzMBeXl + 5Qrx8fES9/f3Ifr6+jP7+/tJ/Pz8Y/v7+3/7+/ua/Pz8s/z8/Mj8/PzZ/Pz85/39/e/9/f32/f39+v38 + +/398Or+/dK+/v2ke/79kF7+/YpW/v6LV/79ilf//otX//6NWf/+j13//qZ+//7Mtf/+9fD//v38//39 + /f/9/f3+/f39/v39/f79/Pz+/fn3/v3s5P793c/+/dbF/f3e0P397eX8/ff0+/39/fj8/Pzz/Pz87Pz8 + /OL8/PzU/Pz8wvz8/K37+/uW/f39fPr6+mT7+/tM+vr6N/j4+Cf19fUZ7e3tDt/f3wi/v78EAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAf39/AtTU1Abq6uoM9PT0F/j4+CX6+vo4/Pz8T/z8/Gj7+/uD+/v7nfz8 + /LT8/PzJ/Pz82vz8/Ob9/f3v/f399v39/fr9+/v8/ezk/v3Qu/79qIL+/ZNi/v2KVv79i1f+/YtX//6L + V//+jFf//pJi//6qhP/+zrf//vDp//36+P/9/f3+/f39/v39/f79/f3+/f38/v36+f799fH9/fPu+/31 + 8vr9+/n4/Pz89fz8/PH8/Pzq/Pz84Pz8/NP8/PzC/Pz8rfv7+5b7+/t9+vr6ZPv7+036+vo4+Pj4J/X1 + 9Rru7u4P39/fCL+/vwT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaqqqgPb29sH7e3tDvX1 + 9Rr5+fko+/v7PPz8/FL9/f1r+/v7hvz8/J78/Py1/Pz8yvz8/Nr8/Pzn/f398P39/fb9/f36/fv7/P30 + 8f79y7T+/aiC/v2QXf79i1f+/YtX/v2KV//+jFj//otX//6SYf/+pXz//tTA//3t5f/9+/r+/f39/v39 + /f79/f3+/f39/f39/fz9/f36/f39+Pz8/PX8/Pzy/Pz87fz8/Of9/f3e/Pz80fz8/MH8/Pys/Pz8lfv7 + +338/Pxj+/v7TPr6+jj4+Pgm9fX1Ge7u7g/f398Iv7+/BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAH9/fwK/v78E4+PjCfDw8BH29vYc+fn5K/v7+z78/PxU/Pz8bf39/Yb7+/uf/Pz8t/z8 + /Mr8/Pza/Pz85/z8/PH9/f32/f39+v38+/399PH+/dC6/v2jef79jVn+/YpW/v2LV/79ilf//otX//6M + V//+j1z//qJ3//3Puf/99PD+/f39/v39/f79/f39/f39/P39/fn9/f32/Pz88vz8/O38/Pzo/f394fz8 + /Nj8/PzN/Pz8vfz8/Kr7+/uT+/v7e/z8/GP7+/tL+vr6N/j4+Cb19fUZ7e3tDt/f3wi/v78EAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CzMzMBejo6Avx8fES9vb2Hfn5 + +S37+/s//Pz8Vfz8/G39/f2G+/v7n/z8/Lb8/PzJ/Pz82vz8/Of9/f3v/f399v39/fr9+/v8/ezk/f3Q + vP79pn3+/ZJh/v2KVf79i1f+/YtX//2KV//9i1j//ZBf//2pg//9zLX+/fXx/v37+v39/f38/f39+fz8 + /PX9/f3v/Pz86P39/eH8/PzY/Pz8zvz8/MP8/Py1/Pz8o/v7+5D7+/t5/Pz8Yvv7+0z6+vo3+Pj4J/X1 + 9Rru7u4P39/fCL+/vwT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAf39/AtTU1Abo6OgL8fHxEvb29h75+fkt+/v7P/z8/FX8/Pxt+/v7h/v7+5/8/Py2/Pz8yvz8 + /Nr8/Pzm/f397/39/fb9/f35/fv6+/3v6f39y7T+/aiC/v2SYP79ilb+/YtX/v2LV/79i1f+/YpV/v2R + YP79rIf+/ePX/v318vz9/f35/Pz89f39/e/8/Pzm/Pz83Pz8/ND8/PzE/Pz8t/z8/Kr9/f2Z/f39h/r6 + +nT6+vpf/Pz8Svr6+jf4+Pgm9fX1Ge/v7xDf398Iv7+/BP///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLMzMwF5eXlCvLy8hP29vYe+fn5LPv7 + +z/8/PxV/Pz8bf39/Yb7+/uf/Pz8tvz8/Mr8/Pza/Pz85/39/fD8/Pz1/f39+P38+/r99/T8/cy0/f2k + fP39i1j9/YtX/v2LV/79i1f+/YtX/v2JVf79mm/9/cy2/P3u5vr9/f32/f398Pz8/Of9/f3b/Pz8zPz8 + /Lz8/Pys/f39nPv7+437+/t8/Pz8avz8/Fj7+/tF+vr6NPj4+CX09PQX7e3tDt/f3wi/v78EAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38CzMzMBejo6Avy8vIT9vb2Hvn5+S37+/tA/Pz8Vfz8/G39/f2G+/v7n/z8/Lb8/PzJ+/v72f39 + /eX8/Pzs/Pz88v38/Pb8+/r4/e3m+f3QvPv9onn8/Y9e/f2JVf39ilf9/YpX/f2RX/z9qIH6/drK+fzy + 7fX9/f3w/Pz86Pz8/Nz8/PzM/Pz8uvz8/Kb7+/uS/f39f/z8/G78/Pxe+/v7Tvv7+z76+vow+Pj4I/T0 + 9Bft7e0O39/fCL+/vwQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AtTU1Abo6OgL8vLyE/b29h75+fkt+/v7P/z8 + /FX8/Pxt+/v7hvz8/J78/Pyz/Pz8xvz8/NX8/Pzf/Pz85/z8/O39/f3w/Pr58/zs5fX9zLj4/aqF+f2V + Zfr9jVr6/ZVn+v2ngfj9xKv2/O3l8/349u78/Pzn/Pz83fz8/M/8/Py8/Pz8pv39/Y79/f14/Pz8ZPz8 + /FP7+/tD+vr6Nvn5+Sr39/cf8/PzFe3t7Q7f398Iv7+/BP///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ + fwLMzMwF5eXlCvLy8hP29vYe+fn5LPv7+z/8/PxV/Pz8bPv7+4T8/Pyb+/v7sPz8/MH8/PzO/Pz82Pz8 + /N/9/f3l/f396fz7+u389fLx/M+68/yyj/X8onn1/LKR9PzKtPL949jv/Pv76/z8/OT9/f3b/Pz8z/z8 + /L78/Pyp+/v7kf39/Xj8/Pxh+/v7TPr6+jr5+fkt9/f3IvX19Rnw8PAR6OjoC9vb2we/v78EAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CzMzMBeXl5Qry8vIT9vb2Hvn5+Sz7+/s//Pz8U/r6 + +mr9/f2A/Pz8lfz8/Kj8/Py3/Pz8wvz8/Mz8/PzU/f392/v7++L8+/vn/Pby6/zw6e396uPu/O7p7f31 + 8un8+ffl/f393v39/db8/PzL/Pz8vfz8/Kv8/PyV+/v7ffz8/GL7+/tM+vr6OPn5+Sj29vYc8vLyFOvr + 6w3f398I1NTUBqqqqgMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/AtTU + 1Abo6OgL8vLyE/b29h75+fks+/v7Pfz8/FH6+vpl/f39ePv7+4v7+/ua+/v7p/z8/LP8/Py9/Pz8x/z8 + /M/8/PzX/Pz73Pz7+t/8+vng/fz63vz7+9r8/PzT/Pz8y/z8/MD8/Py0/Pz8pfv7+5P7+/t++vr6Z/z8 + /E/6+vo6+fn5KfX19Rvx8fES6OjoC9vb2we/v78Ef39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLU1NQG5eXlCvHx8RL29vYd+fn5Kvr6+jr8/PxK/Pz8XPz8 + /G37+/t8+/v7iv39/Zb8/Pyj/Pz8rv39/bj8/PzC/Pz8yfz8/Mz8/PzO/Pz8zPz8/Mb8/Py+/Pz8tPv7 + +6f7+/ua/f39iv39/Xn8/Pxl/Pz8Ufv7+zz5+fkr9vb2HPDw8BHl5eUK1NTUBqqqqgMAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CzMzMBeXl + 5Qrw8PAR9fX1Gvj4+CX6+voy+/v7QPz8/E/8/Pxd/f39a/39/Xj7+/uG+/v7k/v7+5/8/Pyp/Pz8sfz8 + /Lb8/Py4/Pz8tfz8/K78/Pyl/f39mfv7+4z9/f19/Pz8bvz8/F77+/tN+/v7PPn5+Sv29vYe8vLyE+Xl + 5QrMzMwFf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAf39/AszMzAXl5eUK7u7uD/T09Bf39/ch+fn5K/r6+jf7+/tC+/v7Tvz8 + /Fv6+vpp/Pz8dfv7+4H7+/uM+/v7k/v7+5j7+/uZ+/v7l/r6+pH7+/uI/f39fP39/W/8/Pxh/Pz8U/v7 + +0X6+vo3+fn5Kvb29h7y8vIU6urqDNTU1AZ/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwLMzMwF39/fCOvr + 6w3y8vIU9fX1G/j4+CP5+fks+vr6N/v7+0L7+/tO/Pz8Wfz8/GP6+vpt/Pz8c/39/Xf9/f14/f39dvr6 + +nH8/Pxp/Pz8X/z8/FT7+/tH+/v7O/r6+jD4+Pgl9fX1G/Ly8hPq6uoM29vbB6qqqgMAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAB/f38Cv7+/BNvb2wfo6OgL7+/vEPPz8xb29vYd+Pj4Jvn5+S/6+vo5+/v7Q/v7 + +0z8/PxU/Pz8Wfz8/F38/Pxe/Pz8XPz8/Ff8/PxQ+/v7Sfv7+z76+vo0+fn5Kvf39yH19fUZ8PDwEejo + 6Avb29sHv7+/BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////////////////////w + D//////////////AA/////////////8AAP////////////wAAD////////////gAAA////////////AA + AAf//////////+AAAAH//////////8AAAAD//////////4AAAAB//////////wAAAAA//////////gAA + AAAf/////////AAAAAAP////////+AAAAAAH////////8AAAAAAD////////wAAAAAAB////////gAAA + AAAA////////AAAAAAAAf//////+AAAAAAAAP//////4AAAAAAAAH//////wAAAAAAAAD//////gAAAA + AAAAB//////AAAAAAAAAA/////+AAAAAAAAAAf////8AAAAAAAAAAf////4AAAAAAAAAAP////wAAAAA + AAAAAH////gAAAAAAAAAAD////AAAAAAAAAAAB////AAAAAAAAAAAB///+AAAAAAAAAAAA///+AAAAAA + AAAAAAf//8AAAAAAAAAAAAP//8AAAAAAAAAAAAH//4AAAAAAAAAAAAD//4AAAAAAAAAAAAB//gAAAAAA + AAAAAAA//AAAAAAAAAAAAAAf8AAAAAAAAAAAAAAf8AAAAAAAAAAAAAAf4AAAAAAAAAAAAAAP4AAAAAAA + AAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAA + AAAAAAADgAAAAAAAAAAAAAADgAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAA + AAAAAAAHwAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAP4AAAAAAAAAAAAAAP8AAAAAAAAAAAAAAf8AAAAAAA + AAAAAAAf+AAAAAAAAAAAAAA/+AAAAAAAAAAAAAB//AAAAAAAAAAAAAD//gAAAAAAAAAAAAH//wAAAAAA + AAAAAAP//4AAAAAAAAAAAAf//8AAAAAAAAAAAA///+AAAAAAAAAAAB////AAAAAAAAAAAD////gAAAAA + AAAAAH////wAAAAAAAAAAP////4AAAAAAAAAAf////8AAAAAAAAAA/////+AAAAAAAAAB//////gAAAA + AAAAD//////wAAAAAAAAH//////8AAAAAAAAP//////+AAAAAAAAf//////+AAAAAAAA////////AAAA + AAAB////////gAAAAAAD////////wAAAAAAH////////wAAAAAAP////////4AAAAAAf////////8AAA + AAA/////////+AAAAAB//////////AAAAAD//////////gAAAAP//////////wAAAA///////////4AA + AB///////////8AAAD///////////+AAAH////////////gAAP////////////4AAf////////////+A + B//////////////gH///////////////////////////////////////KAAAAIAAAAAAAQAAAQAgAAAA + AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAaqqqgPMzMwF29vbB+Xl5Qrt7e0O8vLyE/X19Rn39/cg+Pj4J/n5 + +S/6+vo3+/v7P/v7+0f8/PxP/Pz8V/z8/F78/Pxk/Pz8Z/z8/Gr8/Pxq/Pz8Z/z8/GT8/Pxe/Pz8V/z8 + /E/7+/tH+/v7P/r6+jf5+fkv+Pj4Jvf39yD19fUZ8vLyFO7u7g/o6OgL29vbB7+/vwSqqqoDf39/AgAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/f38Cv7+/BNvb + 2wfl5eUK7e3tDvLy8hP19fUZ9/f3IPj4+Cf5+fkv+vr6OPv7+0H7+/tJ/Pz8Uvz8/Fr8/Pxh/Pz8aPz8 + /G76+vpy+vr6dPr6+nT6+vpy/Pz8bvz8/Gj8/Pxh/Pz8Wvz8/FL7+/tJ+/v7Qfr6+jj5+fkv+fn5KPf3 + 9yD19fUa8vLyFO7u7g/o6OgL29vbB8zMzAWqqqoDf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAB////AszMzAXf398I6OjoC+/v7xDz8/MW9vb2HPj4+CT5+fks+vr6Nfv7 + +z77+/tI/Pz8Uvz8/Fv8/Pxk/Pz8bPz8/HP9/f16+/v7gP39/YP7+/uF+/v7hf39/YP7+/uA/f39evz8 + /HP8/Pxs/Pz8ZPz8/Fv8/PxS+/v7SPv7+z76+vo2+fn5Lfj4+CX29vYd9PT0F/Dw8BHq6uoM39/fCNTU + 1Aa/v78Ef39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr + 6w3x8fES9PT0GPf39yD5+fko+vr6Mvv7+zz7+/tG/Pz8Ufz8/Fv8/Pxl/Pz8bvr6+nf9/f1+/f39hfv7 + +4z7+/uR/Pz8lPz8/JX8/PyV/Pz8lPv7+5H7+/uM/f39hf39/X76+vp3/Pz8bvz8/GX8/Pxb/Pz8Ufv7 + +0f7+/s9+vr6M/n5+Sr39/ci9fX1G/Ly8hTu7u4P6OjoC9/f3wjMzMwFqqqqA39/fwIAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAB/f38CzMzMBd/f3wjq6uoM8fHxEvX19Rn39/ci+fn5LPr6+jb7+/tB+/v7Tfz8 + /Fn8/Pxk/Pz8bv39/Xn9/f2B+/v7ivv7+5D7+/uX+/v7nPz8/KH8/Pyj/Pz8pfz8/KX8/Pyj/Pz8ofv7 + +5z7+/uX+/v7kPv7+4r9/f2B/f39efz8/G78/Pxk/Pz8Wfv7+077+/tD+vr6Ofn5+S/4+Pgm9vb2HfPz + 8xbw8PAR6urqDN/f3wjU1NQGqqqqA39/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf39/AszMzAXf398I6+vrDfLy + 8hP19fUb+Pj4JPn5+S/7+/s7+/v7R/z8/FT8/Pxh+vr6bv39/Xn7+/uE+/v7jvv7+5b7+/ud/Pz8o/z8 + /Kj8/Pyt/Pz8sfz8/LP8/Py0/Pz8tPz8/LP8/Pyx/Pz8rfz8/Kj8/Pyj+/v7nfv7+5b7+/uO/f39hP39 + /Xr9/f1v/Pz8Y/z8/Fj7+/tM+/v7QPr6+jX5+fkr9/f3IvX19Rvy8vIU7e3tDuXl5Qrb29sHv7+/BH9/ + fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAH9/fwK/v78E39/fCOrq6gzy8vIT9fX1G/j4+CX6+vow+/v7Pfv7+0v8/Pxa/Pz8aP39 + /Xb9/f2D+/v7j/v7+5n8/Pyj/Pz8qvz8/LH8/Py2/Pz8uvz8/L78/PzA/Pz8wvz8/MP8/PzD/Pz8wvz8 + /MD8/Py+/Pz8uvz8/Lb8/Pyx/Pz8qvz8/KP7+/ua/f39kP39/YX9/f16/Pz8bfz8/GD8/PxT+/v7Rvr6 + +jr5+fkv+Pj4Jfb29h3z8/MV7+/vEOXl5Qrb29sHv7+/BH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/f38CzMzMBd/f3wjt7e0O8vLyFPb2 + 9hz4+Pgm+vr6Mvv7+0D8/PxP/Pz8Xvz8/G79/f19/f39jPv7+5n8/Pyk/Pz8rvz8/Lb8/Py8/Pz8wvz8 + /Mb8+/vJ+fX1zPHo5s7hy8bP17u00Ne8tdDgysXP7eHdzvXv78z7+/nJ/Pz8xvz8/ML8/Py8/Pz8tvz8 + /K78/Pym/f39m/39/ZD9/f2D/f39dvz8/Gj8/Pxa+/v7Tfv7+0D6+vo0+fn5Kvf39yD09PQY8PDwEerq + 6gzf398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAf39/Ar+/vwTf398I6urqDPLy8hP19fUb+Pj4Jvr6+jL7+/tA/Pz8UPz8/GH8/Pxy+/v7g/v7 + +5P7+/ui/Pz8rvz8/Ln8/PzB/Pz8yfz8/M78/PzT+/v71vv6+djz7eva5dTO28Wcj9y0fm/dtX9x3cOZ + jdzdxb/b7eHf2vn399j7+/vW/Pz80/z8/M78/PzJ/Pz8w/z8/Lv8/Pyx/Pz8pvv7+5r7+/uM+/v7fv39 + /W/8/Pxg/Pz8Uvv7+0T6+vo3+fn5K/f39yH09PQY8fHxEujo6Avf398Iv7+/BH9/fwIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCO3t7Q7y8vIT9vb2Hfj4 + +Cb6+voz+/v7Qfz8/FH8/Pxi/Pz8dPv7+4b7+/uX/Pz8pvz8/LT8/Py//Pz8yfz8/NH8/PzX/f392/v7 + +9/49fTh7+Xi49O0q+S7iXvkqGhW5Z1WQuaeV0Pmp2RS5bR8bOTKpJrk59bS4/Tt6uH7+vrf/f392/z8 + /Nf8/PzS/Pz8y/z8/MP8/Py5/Pz8rvz8/KH9/f2T+/v7hfv7+3b6+vpn+fn5WPv7+0n7+/s7+fn5L/j4 + +CP19fUb8fHxEuvr6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAF/f38CzMzMBd/f3wjq6uoM8vLyFPX19Rv4+Pgm+vr6Mvv7+0H8/PxR/Pz8Y/z8/HX9/f2H+/v7mfz8 + /Kr8/Py5/Pz8xvz8/ND8/PzZ/Pz83/z8/OT8+/vn+vj46vHo5evhy8Xst4Jz7ZdMN+2QPijujDgf7ow4 + IO6OOyPukkIq7a1wX+3TtKrs6NjU6/j09Or7+vrn/Pz85Pz8/OD9/f3b/Pz81Pz8/Mv8/PzB/Pz8tvz8 + /Kj8/Pyb+/v7jPv7+3z9/f1r/Pz8W/v7+0v7+/s9+fn5L/j4+CT19fUa8fHxEurq6gzf398Iv7+/BH9/ + fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////AszMzAXf398I7e3tDvLy8hT29vYd+Pj4Jvr6 + +jP7+/tB/Pz8Uvz8/GP9/f12/f39iP39/Zr8/Pyr/Pz8u/z8/Mj8/PzU/Pz83Pz8/OP8/Pzo/Pz87fj1 + 9O/z6+nw07Oq8raBcvOhXEjzkkEr8489JvOOOiP0jjoj9I48JfOPPifznFM/865yYfPKo5fy6NjU8fTt + 6+/8/Pzt/Pz86vz8/Ob8/Pzg/Pz82fz8/NH8/PzH/Pz8u/z8/K78/Pyg+/v7kfv7+4D9/f1v/Pz8Xvv7 + +077+/s++vr6Mfj4+CX19fUb8vLyE+vr6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ + fwLMzMwF39/fCOvr6w3y8vIU9vb2HPj4+Cf6+voy+/v7Qfz8/FH6+vpk/f39dvv7+4n8/Pyb/Pz8rfz8 + /Lz8/PzL/f391vz8/OD8/Pzn/Pz87fv7+vH7+fn07+Xh9eDKxPe5hXb3l0s1+JJBKviOOyP4jzwl+I89 + JviPPSb4jz0l+I88JPiQPif4k0Mr+LJ4aPjZvLT3697a9vz8/PT8/Pzy/f397/z8/Ov9/f3l/f393v39 + /db8/PzM/Pz8wfz8/LT8/Pyl/Pz8lPv7+4P8/Pxx+vr6YPv7+077+/s/+vr6Mfj4+CX19fUb8vLyE+rq + 6gzf398Iv7+/BH9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wGqqqoDzMzMBd/f3wjr6+sN8vLyFPb29h34+Pgm+vr6M/v7 + +0H8/PxS/Pz8Y/39/Xb7+/uJ+/v7nPz8/K38/Py9/Pz8y/z8/Nf9/f3h/f396f39/e/8/Pzz+PX09vXu + 7PjVtq75tX5v+qBbSPuQQCn7jz0n+448JfuPPSb7jz0m+489JvuPPSb7jz0m+448JfuNOiP7p2VS+8Wb + kPvhzcf6/fz8+f39/ff8/Pz1/Pz88fz8/O38/Pzo/Pz84vz8/Nr8/PzQ/Pz8xPz8/Lb7+/un/f39lvv7 + +4X8/Pxz/Pz8Yfz8/FD7+/s/+vr6Mvj4+CX19fUb8vLyE+vr6w3f398IzMzMBX9/fwIAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8BqqqqA8zM + zAXj4+MJ6+vrDfLy8hT29vYc+Pj4J/r6+jL7+/tC/Pz8Ufr6+mT9/f12+/v7ifv7+5z8/Pyt/Pz8vfz8 + /Mv8/PzY/Pz84vz8/Or9/f3w+/r69fv5+fju4t/638nD+7qJevyYTDb9kkIr/Y05Iv2OOyT9jz0m/Y89 + Jv2PPSb9jz0m/Y88Jf2OPCX9kD8o/ZRFLv2rbVz9yJ6T/ePOyfz9/Pz8/fz8+/39/fn9/f33/Pz89P39 + /fD8/Pzr/f395fz8/N38/PzT/Pz8x/z8/Ln8/Pyp+/v7mf39/Yb8/Px0/Pz8Yfz8/E/7+/tA+vr6Mfj4 + +CX19fUb8vLyE+rq6gzf398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////AaqqqgPMzMwF4+PjCe3t7Q7y8vIU9vb2HPj4+Cb6+voz+/v7Qfz8 + /FL8/Pxj/f39dvv7+4n7+/uc/Pz8rfz8/L38/PzL/Pz82Pz8/OL8/Pzq/f398Pz8/PX69/f49e7t+9W4 + sfyze2z9oVxI/ZE+KP6QPSb+jzwk/o88Jf6QPSb+kD0m/pA9Jv6QPSb+jzsk/o03IP6ZTDf+q2xc/sig + lv7o2NT+8+zq/v38/P79/f39/f39/P39/fr9/f34/Pz89fz8/PL8/Pzt/Pz85/z8/N/8/PzV/Pz8yPz8 + /Lr8/Pyr+/v7mfv7+4f8/Px0/Pz8Yfz8/FD7+/s/+vr6Mvj4+CX19fUb8vLyE+vr6w3f398IzMzMBX9/ + fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E1NTUBuPj + 4wnt7e0O8/PzFfb29h34+Pgn+vr6M/v7+0L8/PxR+vr6ZP39/Xb7+/uJ+/v7nPz8/K38/Py9/Pz8y/z8 + /Nj8/Pzi/Pz86v39/fD7+vr1+vj3+e7h3vvdxb39vIt+/ZlNOP6TQiz+jjki/o87JP6QPSb+kD0m/pA9 + Jv6PPSb/jzwl/447I/+PPCX/kT8o/qdlU/7HnZL+4cvG/vr39/79/Pz+/f39/v39/f79/Pz+/fz8/f39 + /fv9/f35/f399/z8/PP9/f3v/Pz86Pz8/OD9/f3W/Pz8yfz8/Lz8/Pyr+/v7mvv7+4f8/Px0/Pz8Yfz8 + /FD7+/tA+vr6Mfj4+CX19fUb8vLyE+vr6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAF/f38Cv7+/BNvb2wfl5eUK7e3tDvPz8xX29vYd+Pj4J/r6+jT7+/tC/Pz8Uvz8 + /GP9/f12+/v7ifv7+5z8/Pyu/Pz8vfz8/Mz8/PzY/Pz84vz8/Or8/Pzx/Pz89fv49/j17+372Lyz/bN7 + av6gWkb+kT4n/pA8Jv6PPCX+kDwl/pA9Jv6QPSb+jz0m/5A9Jv+POyT/jTcf/5E/Kf+bUj7/vIp8/ubU + z/717uz+/Pz8/v39/f79/f3+/fz8/v38/P79+/v+/fz8/f39/fv9/f36/f39+Pz8/PT9/f3v/f396f39 + /eH9/f3W/Pz8yvz8/Lv8/Pys/f39mfv7+4f8/Px0/Pz8Yfz8/FD7+/tA+vr6Mfj4+CX19fUb8vLyE+rq + 6gzf398Iv7+/BH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/f38CqqqqA8zMzAXf398I6OjoC+/v + 7xDz8/MW9/f3H/n5+Sn6+vo1+/v7Q/z8/FP8/Pxk/f39dvv7+4n7+/uc/Pz8rfz8/L38/PzL/Pz82Pz8 + /OL8/Pzq/Pz88fv7+vX69/f57uHd+9u/uP29jX7+nVM+/pNDLP6OOiP+jzsk/pA9Jv6QPSb+jz0m/489 + Jv+QPSX/jzsk/5A8JP+SPyj/n1hE/7aBcv/Ttaz/9O7t//37+/79/Pv++/Ty/vnr6P745uH+9+Hc/vfi + 3f735eH++e/t/fv39vz9+/v6/f39+Pz8/PT9/f3v/Pz86v39/eH8/PzX+/v7yvz8/Lz8/Pyr+/v7mvv7 + +4f8/Px0/Pz8Yfz8/FD7+/tA+vr6Mvj4+CX19fUb8vLyE+vr6w3f398IzMzMBX9/fwIAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAf39/AqqqqgPU1NQG39/fCOrq6gzw8PAR9PT0GPf39yD5+fkq+vr6Nvv7+0T8/PxU/Pz8Zf39 + /Xf7+/uK+/v7nPz8/K78/Py9/Pz8zPz8/Nj7+/vj+/v76/z8/PH8/Pz1+vj4+fXv7vvbv7j9s3pq/p9X + Qv6RQCn+jzwl/pA8Jf6QPCX+kD0m/pA9Jv6PPSb/kD0m/5A8Jf+NNx//kTwl/5tPOv+1fW7/28G5/+/k + 4f/6+Pf//fv7/v35+f735N/+8c7E/u/Btf7st6n+7bqs/u7Ctv702tT++e7r/fz49/z9/f37/f39+Pz8 + /PX8/Pzx/Pz86vz8/OL9/f3W/Pz8y/z8/Lv8/Pys/f39mfv7+4f8/Px0/Pz8Yfz8/FD39/dA+vr6Mfj4 + +CX19fUb8vLyE+rq6gzf398Iv7+/BH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E29vbB+Xl5Qrt7e0O8vLyFPX1 + 9Rv4+Pgj+fn5Lfr6+jn7+/tH/Pz8Vvz8/Gf9/f14/f39ivv7+538/Pyt/Pz8vvz8/Mv8/PzY/Pz84vz8 + /Or9/f3w+/v79fr49/ju4t/72Ly0/b2Nf/6fV0L+k0Ms/o87JP6POyT+kD0m/pA9Jv6QPSb+jz0m/5A9 + Jv+POyP/kDsk/5NAKf+fVkL/t4Fy/9Kwpv/u4t7/+PPx//rz8f/35eH/89TM/+7Btf/qrp/+6KaW/ueg + jv7nopD+6KmY/u6+sv7z08z++enl/fz29fz8+/r7/f39+Pz8/PX9/f3w/Pz86v39/eH8/PzX/Pz8yfz8 + /Lz8/Pyr+/v7mvv7+4f8/Px0/Pz8Yfz8/FD7+/tA+vr6Mvj4+CX29vYc8vLyE+vr6w3f398IzMzMBX9/ + fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38Cv7+/BNvb2wfl5eUK7+/vEPPz8xX29vYd+Pj4Jfr6+jD7+/s8+/v7Sfz8/Fj8/Pxp/f39ev39 + /Yz8/Pye/Pz8r/z8/L78/PzN/Pz82Pz8/OP8/Pzr/Pz88fz8/PX7+fn59vDv+93Gv/2ze2z+nVM//pFA + Kf6POyT+kDwl/pA9Jf6QPSb+kD0m/o89Jv+QPSb/kD0l/403H/+POiP/m045/7N4aP/bv7f/8efk//v3 + 9//79fP/+Onl//HJvv/opJL/5JeE/+KOef7jj3r+45B7/uKQev7jk37+5qCO/uy0pv701c7++evo/vv4 + 9/39/f37/f39+Pz8/PX8/Pzx/Pz86vz8/OL8/PzX/Pz8y/z8/Lz8/Pys+/v7mvv7+4f8/Px0/Pz8Yfz8 + /E/7+/s/+vr6Mfj4+CX19fUb8vLyE+rq6gzf398Iv7+/BH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf39/AszMzAXf398I6urqDPDw8BH09PQY9/f3IPn5 + +Sr6+vo0+/v7Qfv7+078/Pxd/Pz8bf39/X39/f2O+/v7n/z8/K/8/Py//Pz8zPz8/Nn8/Pzi/Pz86/39 + /fD8+/v1+vj3+O/j4fvXubL9vY1//qFaR/6TQy3+jzwl/o87JP6QPSX+kD0m/pA9Jv6PPSb/kD0m/487 + I/+POiP/k0Eq/55UQP+4gnP/0rCn/+ze2v/58vD/+vDt//ff2P/wxbn/6q2c/+WVgP/jj3r/4ot2/+KM + d//ijnj+4o54/uKPef7klYL+56KR/u26rf7z0cn++Ojk/vz29Pz8+/v7/f39+Pz8/PX9/f3w/Pz86vv7 + ++H8/PzX/Pz8yfz8/Lv8/Pyr/f39mfv7+4f8/Px0/Pz8Yfz8/FD7+/tA+vr6Mvj4+CX29vYc8vLyE+vr + 6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ + fwK/v78E39/fCOjo6Avx8fES9PT0GPf39yH5+fkr+vr6N/v7+0T8/PxS/Pz8Yfz8/HH7+/uC+/v7kvv7 + +6L8/Pyy/Pz8wfz8/M/8/Pza/Pz85Pz8/Ov8/Pzy/f399vv6+vn28O/74czG/bR9bv6aTjn+kT8o/o46 + I/6QPCX+kD0m/pA9Jv6QPSb+kD0m/pA9Jv+RPSb/jjgg/444IP+aTTf/r3Ni/9q9tf/07On/+/n4//z1 + 8//45N7/8MS4/+eciP/kkHv/44x2/+ONd//jj3n/4o54/+KOeP7ijnj+4o54/uKOef7jk37+5p6L/uy1 + pv7019D++ezp/vz5+f39/f37/f39+fz8/PX8/Pzx/Pz86vz8/OL8/PzX/Pz8y/z8/Lz8/Pys+/v7mvv7 + +4f8/Px0/Pz8Yfz8/E/7+/s/+vr6MPj4+CX19fUa8vLyE+jo6Avf398Iv7+/BH9/fwIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/f38CzMzMBd/f3wjr6+sN8fHxEvX19Rv4+Pgj+fn5L/v7 + +zv7+/tJ/Pz8V/z8/Gf6+vp3+/v7h/39/Zb8/Pym/Pz8tPz8/ML8/PzO/Pz82vz8/OP8/Pzr/Pz88fz8 + /PX6+Pf48ejl+9a5sf28jH3+ol1K/pNDLP6QPSb+jzsk/pA8Jf6QPSb+kD0m/o89Jv+QPSb/jzsj/445 + If+TQSv/nVI9/7iDdP/Tsqj/69zY//nz8f/68O3/9t7X/+/BtP/qqZf/5JN+/+OOeP/jjXf/4454/+OP + ef/jjnn/4o54/+KNeP/ijnj+4o54/uOQe/7kloL+6KOS/u26rP7z0cj++Onl/vv19Pz8/Pz7/f39+Pz8 + /PX9/f3w/Pz86v39/eH9/f3W/Pz8yfz8/Lv8/Pyr/f39mfv7+4f8/Px0/Pz8Yfz8/FD7+/tA+vr6Mvj4 + +CX29vYc8vLyE+vr6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/Ar+/ + vwTf398I6urqDPHx8RL19fUZ+Pj4JPn5+S/7+/s9+/v7S/z8/Fv9/f1r+/v7fPv7+4z7+/uc/Pz8q/z8 + /Ln8/PzG/Pz80vz8/Nz9/f3l/Pz87Pz8/PL8/Pz2/Pv6+fXu7Pvj0Mv9uIR0/ppPOv6RQCn+jjoi/o88 + Jf6QPSb+kD0m/pA9Jv6PPSb/kD0m/5E9Jv+OOSH/jTgf/5tPOv+ucGD/17iw//Ts6v/79/b//PXz//jk + 3v/wxrr/556L/+SPef/jjHb/4413/+OPef/jj3n/4495/+OPef/jj3n/4o54/+GNeP/ijnj+4o54/uKP + ef7klH/+5p6L/uy2qP712NH++Ovo/vz5+f39/Pz7/f39+fz8/PX8/Pzx/Pz86vz8/OL8/PzX/Pz8yvz8 + /Lz8/Pys+/v7mvv7+4f8/Px0/Pz8Yfz8/E/7+/s/+vr6MPj4+CX19fUa8vLyE+rq6gzf398Iv7+/BH9/ + fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9fX1G/Hx8SX6+vox+/v7Pvv7 + +078/Pxe+vr6b/v7+4D7+/uQ/Pz8oPz8/K/8/Py8/Pz8yfz8/NT8/Pzd/f395fz8/Oz8/Pzx/f399vv7 + +vn28vH72b62/b2Of/6kYU3+k0Ms/pA+Jv6POyT+kDwl/pA9Jv6QPSb+jz0m/5A9Jv+POyT/jjgg/5NB + Kv+aTzn/uIN0/9Szq//q2tb/+fPy//rv7P/339n/78Cz/+molv/llH//4454/+ONd//jjnj/4495/+OP + ef/jj3n/4495/+OPef/jj3n/4o54/+KNeP/ijnj+4o54/uORe/7klYD+6KSS/u25q/7y0cj++Orn/vv1 + 9Pz9/f37/f39+Pz8/PX9/f3w/Pz86v39/eH9/f3W/Pz8yvz8/Lv8/Pyr/f39mfv7+4f8/Px0/Pz8Yfz8 + /FD7+/s/+vr6Mvj4+CX19fUb8fHxEuvr6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/f38Cv7+/BN/f + 3wjq6uoM8vLyE/X19Rv4+Pgl+vr6MPv7+z/7+/tO/Pz8X/z8/HH7+/uD/Pz8lPz8/KX8/Py0/Pz8wfz8 + /M38/PzY/f394fz8/Oj9/f3u/Pz88/39/fb9/f36+vn4+/Ho5f3Cl4r+nlZB/pRELf6OOiL+jzwk/pA9 + Jv6QPSb+jz0m/489Jv+QPSb/kD0m/487JP+OOCH/nFI9/61wX//Us6v/9Ovp//r19P/89fP/9+Lc//HH + u//ooo//5JB5/+OMdv/jjXf/4495/+OPef/jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/4o54/+KN + eP/ijnj+4o54/uKPef7klX/+5p6L/u24qv712NH++Orm/vz6+f38+/v7/f39+fz8/PX8/Pzx/Pz86v39 + /eH8/PzX/Pz8yvz8/Lz8/Pyr+/v7mvv7+4f8/Px0/Pz8Yfz8/E/7+/tA+vr6MPj4+CX19fUa8fHxEurq + 6gzf398Iv7+/BH9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABf39/AszMzAXf398I6+vrDfLy8hP29vYc+Pj4Jfr6+jL7+/s//Pz8UPz8 + /GH8/Pxz+/v7hfv7+5b7+/un/Pz8tvz8/MT8/PzQ/Pz82vz8/OP9/f3p/f397/z8/PP9/f33/f39+f39 + /fv28e/96dvW/riFdf6URCz+kT4n/o88JP6QPCX+kD0m/pA9Jv6PPSb/kD0m/488JP+OOSH/lEMt/5tP + O/+4hHX/1riv/+ra1v/69fT/+u/s//fh2v/vwLP/6aaV/+WVgP/jjnf/4454/+OOeP/jj3n/4495/+OP + ef/jj3n/4495/+OOeP/jjnf/4454/+OOeP/jjnj/4o54/+KNeP/ijnj+4o54/uORe/7klYD+6KST/uy3 + qf7y0cj++ezp/vv29Pz9/f37/f39+Pz8/PX9/f3w/Pz86v39/eH9/f3W/Pz8yvz8/Lv8/Pyr+/v7mfv7 + +4f8/Px0/Pz8Yfz8/FD7+/s/+vr6Mfj4+CT19fUa8fHxEurq6gzb29sHv7+/BH9/fwIAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOrq + 6gzy8vIT9fX1G/j4+CX6+vox+/v7QPz8/E/8/Pxh/Pz8dP39/Yb7+/uY/Pz8qfz8/Ln8/PzH/Pz80/z8 + /N39/f3l/Pz87Pz8/PH8/Pz1/f39+P39/fr9/f37/fz8/fTu7P7n1tH+tHxr/o46Iv6POyT+kDwl/pA8 + Jf6QPSb+jz0m/5A9Jv+QPSb/kj8o/5NDLP+iXEn/s3lp/9S0rP/z7Or/+fTy//z18//34dr/8ci8/+ml + kv/kkHn/4413/+ONd//jjnj/4495/+OPef/jj3n/4495/+SRfP/llH//5pmE/+ecif/mmYX/5ZWC/+SR + fP/jjnj/4o54/+KNeP/hjXj/4o54/uKPef7klYD+5p6L/u26rP702dH++Onl/vz5+P38+/v7/f39+Pz8 + /PX9/f3w/Pz86v39/eH8/PzX/Pz8yvz8/Lz8/Pyr+/v7mfv7+4f6+vp0/Pz8Yfv7+077+/s++fn5L/j4 + +CPr6+sZ8PDwEejo6AvU1NQGqqqqA39/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAF/f38CzMzMBd/f3wjr6+sN8vLyE/X19Rv4+Pgl+vr6Mvv7+z/8/PxQ/Pz8Yfz8 + /HT7+/uH+/v7mfz8/Kv8/Py6/Pz8yPz8/NT8/Pzf/Pz85/z8/O38/Pzy/f399v39/fn9/f37/f39/P39 + /f39/f3++PX0/u3h3v66iHj+k0Ms/pA9Jf6OOiL+jzwk/o89Jv+QPSf/kDwl/485Iv+aTTj/qWlX/8SY + jP/hysX/7uLf//r39v/68O3/+OTe//DBtP/ppZP/5ZaA/+ONd//jjnf/4454/+OPef/jj3n/4495/+OP + ef/jjnj/5piE/+ijkv/uuq3/8szC/+++sv/rrp//5pqG/+ONd//jjnj/4o54/+KNeP/ijnj+4o54/uOR + e/7klH/+6KSS/uy2p/7z0sn++e3p/vz29fz9/f37/f39+Pz8/PX9/f3w/f396f39/eH9/f3W/Pz8yvz8 + /Lv8/Pyr+/v7mf39/Yb6+vpz/Pz8X/v7+037+/s8+fn5Lvf39yH09PQX7u7uD+Xl5QrU1NQGqqqqAwAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf39/AszMzAXf398I6+vrDfLy + 8hP19fUb+Pj4Jfr6+jH7+/tA/Pz8T/z8/GH8/Px0+/v7h/v7+5r8/Pyr/Pz8vPz8/Mn9/f3W/Pz84Pz8 + /Oj9/f3v/Pz88/39/ff9/fz5/f37+/37+P39+vb+/fv5/v39/P77+fn+8+zr/sqkmf6nZlT+mUw2/pA8 + JP6PPCX/jzwl/5A8Jv+SQCr/lkcx/6prWf/EmYz/4MnD//v5+f/9/Pz//vv7//jk3v/yyr//6aiW/+SQ + ev/jjnf/4412/+OOeP/jj3n/4495/+OPef/jj3n/5JF7/+WUf//pp5b/77yw//XX0P/67On/9t3W//LJ + v//qq5r/5ZaB/+SRe//jjnj/4o54/+KNeP/hjXj/4o54/uKPef7kloD+5p2L/u27rf7018/++Ojk/vv3 + 9v38+/r7/f39+Pz8/PX9/f3w/f396f39/eH8/PzX/Pz8yfz8/Lv8/Pyq+/v7mP39/YT8/Pxw/Pz8Xfz8 + /Er6+vo6+fn5K/f39x/z8/MV7e3tDt/f3wjMzMwFf39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAX9/fwK/v78E39/fCOrq6gzy8vIT9fX1G/j4+CX6+voy9/f3QPz8/FD8/Pxh/Pz8dPv7 + +4f9/f2Z/Pz8rPz8/Lv8/PzK/f391v39/eH9/f3p/f397/z8/PT9/f33/f39+v38+vv9+vX9/ffu/v30 + 5v79+PD+/fz6/v38+/759vb+5tXQ/s+sov6rbFr+k0Mt/5A+J/+POiP/jjki/5lLNv+qaVf/xpyQ/+jW + 0f/07er//f39//78/P/9+Pb/88zC/+qmlf/ml4L/4412/+OOd//jjnj/4495/+OPef/jj3n/4494/+OO + eP/lloH/6KCO/+/AtP/44dz/++7r//35+P/88/H/+Ofi//HHu//qrJr/5piC/+OOd//jjnj/4o54/+KN + eP/ijnj+4o54/uORe/7kk37+56OS/uy1pv7z08r++ezp/vz39fz9/f37/f39+Pz8/PX9/f3w/f396f39 + /eH9/f3W/Pz8yfz8/Lr8/Pyq+/v7lv39/YL8/Pxu/Pz8Wvv7+0j6+vo3+fn5Kfb29h3y8vIT6urqDNvb + 2we/v78Ef39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/f38CzMzMBd/f3wjY2NgN8vLyE/X1 + 9Rv4+Pgl+vr6Mfv7+0D8/PxQ/Pz8Yfz8/HT7+/uH+/v7mvz8/Kv8/Py8/Pz8yvz8/Nf9/f3h/f396f39 + /e/8/Pz0/f39+P38+vr9+fT8/fPk/f3qzv795L/+/d+y/v3kwP7969H+/fXo/v37+v728O7+59fT/8Wb + j/+qa1n/mk04/5RCLP+YSjT/qmpZ/8Wajv/fyMH/+fXz//79/f/+/v7//fj3//ru6//vvK7/5ZN+/+SP + ef/jjXb/4454/+OPef/jj3n/4495/+OPef/kj3n/5JB5/+mjkf/uu67/9dnR//z19P/++vr//v7+//7+ + /f/89/X/9uDZ//DHu//qqpn/5piD/+SRe//jjnj/4o54/+KNeP/ijnj+4o54/uKPef7kloL+5p+M/u27 + rv701c3++Ojk/vz49/z8+/r7/f39+Pz8/PT9/f3v/f396fz8/OD8/PzV/Pz8yPz8/Ln7+/un/Pz8lPv7 + +3/8/Pxq/Pz8Vvv7+0T6+voz+Pj4JfX19Rrw8PAR5eXlCtTU1AaqqqoD////AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAf39/Ar+/vwTf398I6urqDPHx8RL19fUa+Pj4Jfr6+jH7+/tA/Pz8UPz8/GH8/Px0+/v7h/39 + /Zn8/Pys/Pz8u/z8/Mr9/f3W/f394fz8/Or9/f3w/Pz89f39/fj9/f37/fr1/P3z5f39477+/c+M/v3F + cv79vmD+/cRx/v3NiP795sX+/fz4/vz6+P728O//59XQ/8+rof+pZ1X/nVI9/6trWP/Fmo3/6NbR//bv + 7f/9/Pv//v7+//7+/v/78e7/9+Ha/+yxov/jjHX/4413/+OOeP/jj3n/4495/+OPef/jj3n/4454/+SQ + ev/lk33/7ban//fi2//78e7//vz8//79/f/+/v7//v7+//78/P/89vT/+Obh//DGu//qq5v/5ZWA/+ON + d//jjnj/4o54/+GNeP/ijnj+4o54/uOQe/7klH7+56KQ/uy0pv7z1Mz++e3p/vz49/z9/f37/f39+Pz8 + /PT9/f3w/Pz86Pz8/OD8/PzU/Pz8yPz8/Lb8/Pyk+/v7j/v7+3v6+vpm/Pz8Ufv7+z/5+fkv9/f3IvT0 + 9Bfu7u4P4+PjCczMzAWqqqoDAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E29vbB+rq6gzx8fES9fX1Gvj4 + +CT6+vox+/v7P/z8/FD8/Pxh/Pz8dPv7+4f7+/ua/Pz8q/z8/Lz8/PzJ/Pz81/39/eH8/Pzq/f398Pz8 + /PX9/f34/fz6+/369fz98d/9/eK8/v3SlP79wGf+/bhU/v2zR/79t1L+/b1g/v3Zpf/98uL//fny//z6 + +v/28O7/59XQ/8iekv++jYD/y6SY/9/Gv//38e///v38//7+/v/+/v7//v7+//rt6v/12tL/662d/+OK + c//jjXf/4495/+OPef/jj3n/4495/+OPef/jjnj/5JF7/+WWgP/vv7L/+/Hu//36+f/+/v7//v7+//7+ + /v/+/v7//v7+//7+/f/89fP/9uDa//HGu//qqZj/5pmE/+SRe//jjnj/4o54/+KNeP/ijnj+4o54/uKP + ef7kloL+56GP/u28r/7z1Mz++Onl/vz39vz8+/r7/f39+Pz8/PT9/f3v+/v76P39/d78/PzT/Pz8w/z8 + /LP7+/uf+/v7i/z8/HX8/Pxh+/v7Tfv7+zv5+fks9/f3IPPz8xbu7u4P4+PjCczMzAV/f38CAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38CqqqqA9TU1Abl5eUK8PDwEfT09Bj4+Pgj+fn5L/v7+z78/PxP/Pz8YPz8/HP7+/uH+/v7mvz8 + /Kz8/Py7/Pz8y/39/db8/Pzi/Pz86vz8/PH8/Pz1/f39+P39/fv9+vb9/fTn/v3kwP79zYf+/cBl/v23 + Uf79tUv+/bRJ/v2zSP79s0j+/c2I//7mxP/+9Ob//v7+//38/P/59PP/7uLf/+ze2v/y6OX/9/Lw//38 + +//+/v7//v7+//7+/v/+/v7/+evo//TWzv/rrJz/44t0/+OOd//jj3n/4495/+OPef/jj3n/4454/+ON + d//kknz/5pmE//DDt//89vX//vz8//7+/v/+/v7//v7+//7+/v/+/v7//v7+//78/P/89/b/+OXg//DF + uf/qqpn/5ZN+/+OOd//jj3n/4o54/+KOeP7ijnj+4o54/uOQev7klH7+56GP/uy0pv701s7++e3q/vv4 + 9/39/f37/f39+Pz8/PT9/f3u/Pz85vz8/N38/PzP/Pz8wfz8/K78/Pyb/f39hfz8/HD8/Pxc+/v7Sfr6 + +jj5+fkq9vb2HvPz8xXt7e0O4+PjCczMzAV/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaqqqgPMzMwF4+PjCe7u7g/09PQX9/f3Ifn5 + +S77+/s8+/v7Tfz8/F/8/Pxy+/v7hvv7+5n8/Pyr/Pz8vPz8/Mn8/PzX/f394fz8/Or9/f3w/Pz89f39 + /fj9/Pr7/fn0/P3w3/794rz+/dKU/v3BaP79uVT+/bVL/v20Sf79tEr+/bJH//2yRv/+yX3//t+y//7x + 3v/+/v7//v7+//38/P/69vX/+fX0//z6+f/9/fz//v7+//7+/v/+/v7//v7+//7+/v/78e7/9+Da/+23 + qf/llYD/5JJ8/+OPef/jj3n/4495/+OPef/jj3n/4454/+OQev/klH7/7LWm//bd1//67+v//v39//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//79/f/78/H/99/Z//HGu//qqZj/5pqG/+SQef/jjnj/4o54/+KN + eP/ijnj+4o54/uOQev7kloL+56KR/u28r/7z08v++Orm/fv29fz9/Pv6/f399/z8/PP8/Pzs/f395fz8 + /Nn8/PzN/Pz8u/z8/Kr8/PyV+/v7gfz8/Gz8/PxY+/v7Rvr6+jb5+fko9vb2HfLy8hTt7e0O39/fCMzM + zAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABv7+/BNvb2wfr6+sN8vLyFPb29h75+fkq+vr6Ofz8/Er8/Pxd+vr6cfv7+4X7+/uY/Pz8q/z8 + /Lv8/PzL/Pz81/z8/OL8/Pzq/Pz88fz8/PX9/f35/f39+/369/398+f+/eXE/v3NiP79vmP+/bdQ/v21 + Sv79tEr+/bRK/v20Sv79tEn//rRJ//7Gdf/+2aP//u/Y//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//349//67uv/8MS5/+ihj//ll4L/45B5/+OPef/jj3n/4495/+OP + ef/jj3n/4454/+ONd//oopD/772w//bc1v/+/Pv//v39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79 + /f/9+vn/+OTg//DEuf/qqZj/5JF6/+OOd//jj3n/4o54/+KOeP7ijnj+4o54/uKPef7klH7+5qCM/uy2 + pv7z2ND++e7r/fz5+Pz9/f35/f399/z8/PL8/Pzs/Pz84vz8/Nj8/PzI/Pz8uPz8/KX7+/uR/f39fPz8 + /Gj8/PxV+/v7RPr6+jT4+Pgn9vb2HPLy8hTq6uoM39/fCL+/vwR/f38CAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF4+PjCfDw8BH19fUZ+Pj4Jvr6 + +jT7+/tG/Pz8WPr6+m39/f2B+/v7lvz8/Kj8/Py6/Pz8yf39/db8/Pzg/f396f39/e/8/Pz1/f39+P38 + +/v9+fP8/fHg/v3huf790ZP+/cFq/v25VP79tUz+/bRJ/v20Sv79tEr//bRK//60SP/+tEj//sl7//7d + rf/+8Nz//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vz7//z2 + 9f/229X/78G1/+qpmP/lmIP/5JJ9/+OPef/jj3n/4495/+OPef/jjnj/4454/+WYg//ppJL/78C0//be + 1//67+v//v39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/78vD/9+Db//HGu//qqZf/5pqG/+OO + eP/jjnj/4o54/+KNeP/ijnj+4o54/uOQev7kloD+56SR/u27rv7y08v++ezp/fz49/v9/Pz5/Pz89fz8 + /PH9/f3p/Pz84Pz8/NP8/PzF/Pz8s/z8/KH7+/uO/f39evz8/Gb8/PxU+/v7Q/r6+jT4+Pgn9vb2HfLy + 8hTt7e0O39/fCMzMzAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABf39/Atvb2wfq6uoM8/PzFff39x/5+fku+/v7Pvz8/FL6+vpn/f39fPv7+5L7+/un/Pz8uPz8 + /Mj9/f3W/Pz84v39/en9/f3w/Pz89f39/fn9/f37/fv4/f3z5v7958f+/c6K/v29X/79t1D+/bRJ/v20 + Sv79tEr+/bRK/v20Sv/+tUv//rRI//6zSP/+y4L//uK5//7y4f/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v39//zy8P/44t3/772x/+ihj//lloL/45B6/+OP + ef/jj3n/4495/+OPef/jj3n/4454/+ONdv/ppJH/7r2v//be1//9+/r//v38//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//79/f/+/Pz/+OTf//DDt//qqJf/5I94/+OOeP/jj3n/4o54/+KOeP7ijnj+4o54/uKP + eP7klH3+5p6L/uy4qv713tn++/Lw/Pz7+/v9/f34/Pz89f39/e/8/Pzo/Pz83fz8/NH8/PzC/Pz8svv7 + +5/7+/uM+/v7ePz8/GT8/PxS+/v7Qvr6+jL4+Pgm9fX1G/Ly8hPq6uoM39/fCL+/vwR/f38CAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wLMzMwF5eXlCu7u7g/19fUa+Pj4Jvr6 + +jb7+/tI/Pz8Xvr6+nT9/f2K/Pz8oPz8/LT8/PzE/Pz80/z8/N/9/f3p/f397/z8/PX9/f34/fz8+/35 + 8/z98uL+/eG5/v3Rkf79wmv+/bhT/v21TP79tEn+/bRK/v20Sv/9tEr//rRK//60Sf/+vFz//sVy//7c + qv/+8N3//vnw//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//fn4//vw7f/12dL/78G1/+mol//lmIT/5JJ9/+OPef/jj3n/4495/+OPef/jj3j/4454/+aY + g//ppJD/78G0//bc1f/77+z//v39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/78e//9+Lc//HG + u//qqJf/5pqG/+OOd//jjnj/4o54/+KNeP/ijnj+4o54/uOQev7klH/+6amZ/vHLwf735N/9/Pn4/P39 + /fr9/f33/Pz88/39/e79/f3l/f392/z8/M78/PzA/Pz8r/v7+539/f2K/f39d/z8/GT8/PxS9/f3Qvr6 + +jP4+Pgm9vb2HfLy8hPt7e0O39/fCMzMzAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38Cv7+/BNvb2wfq6uoM8vLyE/f39x/5+fks+/v7P/z8/FL8/Pxp/f39gPv7+5j8/Pyt/Pz8wPz8 + /ND9/f3e/Pz85/39/fD8/Pz0/f39+f38+/v9+/j9/fPk/v3oyP790I3+/b1g/v23Uf79tEn+/bRK/v60 + Sv79s0r//bRK//61Sv/+tUv//rZN//7GdP/+157//uvQ//79+//+/v3//v7+//7+/v/+/v3//vz8//77 + +//++/r//vz7//79/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vz8//vx7//239n/7ryv/+ij + kf/ll4L/5JF7/+OQev/jj3n/4495/+OPef/jj3n/4453/+SOdv/ppZP/776x//ff2f/9+Pf//vz7//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//79/f/+/Pz/9+Hc//DCt//qqJf/5JF6/+SQef/jj3n/4o54/+GN + eP/ijnj+4o13/uKMdv7mnIr+7bqu/vTY0f779vX+/f39/P39/fr9/f32/Pz88/z8/Oz9/f3l/Pz82vz8 + /M78/Py//Pz8r/v7+537+/uK/f39dvz8/GP8/PxR+/v7Qfr6+jL4+Pgm9fX1G/Ly8hTq6uoM39/fCMzM + zAV/f38CAAAAAQAAAAAAAAAAAAAAAQAAAAH///8B////Ar+/vwTb29sH5eXlCvDw8BH09PQY+Pj4Jfr6 + +jP7+/tH/Pz8W/z8/HP7+/uL+/v7ovz8/Lf8/PzK/Pz82Pz8/OT8/Pzt/Pz89P39/ff9/f36/fnz/P3z + 5f794bn+/dCP/v3CbP79uFP+/bZN/v20Sf79tEr+/bRK//20Sv/+tEr//rRJ//68XP/+xnT//tmj//7t + 0//+9ur//v79//7+/v/+/v7//v38//349v/67Oj/+OXf//fi3P/56eX//Pf1//78+//+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v3//fn4//rv7P/12dL/78K1/+mnlv/mmIT/5JJ8/+OPef/jj3n/4495/+OP + ef/jj3j/4494/+aYg//ppJL/78G0//bb1P/78O3//v39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79 + /f/78e//+OPe//HFuv/qqJf/5pqF/+OOd//jjnj/4o54/+KNeP/ijXf+4ot1/uadi/7uv7P+9dzW/vz3 + 9v79/f39/f39+/39/fn9/f32/Pz88fz8/Ov8/Pzi/Pz82fz8/Mz8/Py+/Pz8rfv7+5z7+/uJ/f39dvr6 + +mT8/PxS+/v7Qfr6+jP4+Pgm9vb2HPLy8hPr6+sN39/fCMzMzAX///8CAAAAAQAAAAB/f38Cf39/Aqqq + qgPMzMwF29vbB+Xl5Qrt7e0O8/PzFvb29h75+fks+/v7O/z8/E/8/Pxl/f39ffz8/JX8/Pys/Pz8wPz8 + /NL8/Pzf/Pz86vz8/PH9/f33/fz7+v37+fz98uL9/ejI/v3Rkf79vWH+/bhS/v20Sf79tEr+/bNK//2z + Sv/9tEr//rVK//62Tf/+t1H//sZ0//7Yn//+6s3//v36//7+/f/+/v7//v7+//78/P/89vT/+erm//TW + zv/xyr//8ca7//PSyf/55+P//PTx//78/P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vv6//vx + 7v/23db/7ryu/+mlk//ll4P/5JF8/+OQev/jj3n/4495/+OPef/jj3n/4454/+SRev/pppX/77+y//ff + 2f/89fT//vv7//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/+/Pv/9+DZ//DDt//qqZf/5ZN+/+SQ + ev/jjnj/4o13/+KNeP/ij3v/6KSU/vDIvv73497+/Pn4/v39/f79/f39/f39+/38/Pn8/Pz1/Pz88fz8 + /Or8/Pzj/Pz82Pz8/Mz8/Py+/Pz8rfv7+5z7+/uJ/f39dvz8/GP8/PxR+/v7Qfr6+jL4+Pgm9fX1G/Ly + 8hPq6uoM39/fCL+/vwR/f38CAAAAAb+/vwTMzMwF29vbB+Pj4wnq6uoM8PDwEfPz8xb29vYe+Pj4J/r6 + +jX7+/tF/Pz8Wfz8/G77+/uH/Pz8nvz8/LT8/PzH/Pz82Pz8/OT9/f3u/Pz89P39/fn9+fT7/fXq/f3h + u/79z43+/cJs/v24Uv79tk3+/bRK/v20Sv79tEr//bRK//60Sv/+tEj//rta//7GdP/+2aL//u3U//72 + 6v/+/v3//v7+//7+/v/+/v3//Pf1//bf2P/xx7z/66+g/+ijkf/ooo//666d//DCtv/22tP//PXz//78 + +//+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/f3//fn4//ru6//22tP/8MK2/+mmlP/mmIT/5JF7/+OP + ef/jj3n/4495/+OPef/jj3j/5JB5/+aXgv/ppJL/78C0//Xa1P/78e///v39//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//79/f/78u//+OTf//HGuv/qqpn/5piE/+OMdf/ijHX/45J9/+aikP/uvbH+9uDa/vvy + 7/79+/v+/f39/v38/P78+/v9/Pv6+/38/Pj8/Pz1/f398Pz8/Ov8/Pzi/Pz82Pz8/Mv8/Py9/Pz8rfv7 + +5z7+/uJ/f39dvz8/GP8/PxR+/v7QPr6+jL4+Pgl9fX1G/Hx8RLq6uoM29vbB7+/vwSqqqoD1NTUBt/f + 3wjo6OgL7u7uD/Ly8hP19fUZ9/f3H/n5+Sj6+vox+/v7QPz8/FD8/Pxk+/v7efv7+5D8/Pym/Pz8u/z8 + /M38/Pzd/Pz86Pz8/PH9/fz2/fz6+v3y4/z96Mr9/dKU/v29Yf79uFT+/bRJ/v20Sf79s0r//bNK//20 + Sv/+tEr//rZN//65U//+xnP//tif//7qy//++/f//v78//7+/v/+/v7//v7+//37+//67+z/8cm+/+mq + mf/llYH/44t1/+OMdf/lloD/6aST//DBtf/4493/+/Hv//79/P/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//vr5//vx7v/229T/7ruu/+mnlf/ll4L/5JJ8/+OPef/jj3n/4495/+OPef/jj3n/4453/+WT + ff/pp5b/78C0//ff2f/78/H//fv6//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/9+vj/9+DZ//DG + uv/qrJz/5puH/+eciP/pppT/7byv//TWzv768e/+/fv7/v39/f79/Pz+/Pr6/vPr6f7q3dj98ejl+/fz + 8fn6+Pf1/Pz88fz8/Or8/Pzi/Pz82Pz8/Mv8/Py9/Pz8rfz8/Jv9/f2I/Pz8dfz8/GL8/PxQ+/v7P/n5 + +S/4+Pgj9PT0GPDw8BHl5eUK1NTUBr+/vwTl5eUK6urqDPDw8BHz8/MW9vb2Hfj4+CT5+fkr+vr6Nfv7 + +z/7+/tO/Pz8Xfr6+nH7+/uF+/v7mvz8/K/8/PzC/Pz80/39/eH8/Pzr/Pz88/37+Pj9+PH7/eTA/f3P + i/39wmz+/bdR/v22Tf79tEr+/bRK/v2zSv/9tEr//rRK//60SP/+ulj//sZ0//7YoP/+7dT//vfr//79 + /P/+/v7//v7+//7+/v/+/v3//ff1//jl4P/staf/5ZaB/+SQe//jjnj/4454/+SRe//llYD/6aeW/+++ + sv/22tT//fj3//78+//+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/f3//fr5//ru6//229T/78G1/+ik + kv/lmIT/5JB6/+OPef/jj3n/4495/+OPef/jj3j/5JB6/+WWgf/ppZP/78C0//Xb1P/78/H//v39//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//79/P/78/H/+ejj//TUzP/xx73/8srA//PSyf/24tz/+u/s/vz5 + +P79/f3+/f39/vz6+f759fT+3cS9/r+Rg/7UtKv96NfT+/Xt6/j8/Pz1/Pz88fz8/Or8/Pzi/Pz82Pz8 + /Mv8/Py9/Pz8rf39/Zr9/f2H+vr6dPz8/GD7+/tO+/v7PPn5+S739/cg9PT0F+3t7Q7j4+MJ1NTUBu3t + 7Q7x8fES9PT0GPf39yD5+fko+vr6Mfr6+jr7+/tF/Pz8UPz8/F76+vpt+/v7f/v7+5H8/Pyl/Pz8uPz8 + /Mr8/PzZ/f395f39/e78/Pz1/ffu+f3v2/z92KH9/b1h/v24VP79tEn+/bRJ/v60Sv79tEr//bRK//61 + Sv/+t07//rpY//7GdP/+2J///unJ//768v/+/vz//v7+//7+/v/+/v7//v7+//79/f/89PL/9+DZ/+qs + m//jjHb/4454/+OPef/jj3n/4494/+OOeP/ll4P/6KSS//DCtv/4493/+/Du//78/P/+/v3//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//fn4//vw7f/12dL/7ruu/+molv/ll4L/5JJ9/+OPef/jj3n/4495/+OP + ef/jj3n/4453/+WVf//pqJb/78C0//fg2v/78u///vv7//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /f/9+vn/+u7r//nm4v/56OX/+u7r//z39v/8/Pv//f39/v39/f79/Pz+8ujm/uTQy/7Dl4v+olxJ/reD + c/7NqZ/949DL+/bv7vn6+Pf1/Pz88fz8/Or8/Pzi/Pz82Pz8/Mv8/Py8/Pz8q/v7+5n7+/uF+vr6cfz8 + /F37+/tJ+vr6Ofn5+Sn29vYd8vLyE+rq6gzf398I8vLyFPX19Rn39/ch+fn5K/r6+jb7+/tB+/v7S/z8 + /Ff8/Pxj/Pz8cP39/X77+/uP+/v7n/z8/LH8/PzC/Pz80f39/d79/f3p/Pz88f39/ff98d/6/eK5/P3M + hP39tk3+/bVK/v20Sv79tEr+/bNK//20Sv/+tUr//rRI//66V//+yHn//tmk//7u1v/++O7//v37//7+ + /v/+/v7//v7+//7+/v/+/v7//v39//zz8f/23tj/6qub/+OMdv/jjnj/4495/+OPef/jj3n/4495/+SR + e//klH//6aeW/++9sP/23NX//fj4//78+//+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/f3//fv6//ru + 6//23db/78G1/+iikP/lmIP/45B6/+OPef/jj3n/4495/+OPef/jj3n/5JB6/+WUf//ppJP/8MG0//bc + 1P/89vT//v39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/9+vn//fj3//349//9+vn//v38//39 + /f/9/f3//Pv7/vv4+P7fyML+vYx+/qdkUv6SQSv+m1E8/qhnVf7KpJn96NfT+/Tt7Pn8/Pz1/f398Pz8 + /Or8/Pzi/Pz81/z8/Mr8/Py7/Pz8qvv7+5b7+/uB/Pz8bPz8/Ff7+/tE+vr6Mvj4+CT09PQY7u7uD+Xl + 5Qr19fUa9/f3IPn5+Sv6+vo4+/v7Rfz8/FL8/Pxf/f39a/v7+3j7+/uF+/v7kvz8/KD8/Pyu/Pz8vvz8 + /Mz8/PzZ/Pz85Pz8/O38/Pzz/f39+P3u2Pv826j9/cZ3/v2zRv79s0f+/bRK/v20Sv/9tEr//rVL//61 + Sv/+tEj//rxa//7OiP/+4rn//vfs//7+/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/f3//Pb0//jk + 3v/stKX/5ZWA/+SRe//jj3j/4495/+OPef/jj3n/4494/+OOeP/lmIT/6KSS//DDt//34Nv/+/Dt//78 + /P/+/v3//v7+//7+/v/+/v7//v7+//7+/v/+/v7//fn4//vx7v/12NH/7ryu/+mol//lloH/5JN9/+OP + ef/jj3n/4495/+OPef/jj3n/4453/+aWgf/qqJb/8MK1//fh2v/78e7//vz7//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f39//z7+v/x6OX/4s3I/8Waj/6kX0z+l0o0/o04 + If6QPSf+lkkz/rF4aP7Mppz949HL+/bv7fj59/f1/f398Pz8/Or9/f3h/f391vz8/Mj8/Py4/Pz8pfv7 + +5D9/f16/Pz8ZPz8/E/7+/s7+fn5K/b29h3y8vIT6+vrDff39yH5+fko+vr6Nvv7+0X8/PxV/Pz8ZPz8 + /HP9/f2A+/v7jvv7+5r8/Pym/Pz8svz8/L78/PzL/f391v39/eH9/f3p/Pz88f39/fb9/f35/e7X+/3Z + pP39xXX+/bNI/v2zSP79s0r//bRK//61S//+tUv//rVK//60R//+vVz//tCN//7kvf/++O7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/++vn/+uzp//DDt//opJL/5JWA/+OOeP/jj3n/4495/+OP + ef/jj3n/4495/+ORev/kk33/6aeV/++8sP/23df//fj4//78/P/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/f3//vz7//ru6//33tj/78Cz/+igjv/ll4P/45B6/+OPef/jj3n/4495/+OPef/jj3n/5JB6/+WS + ff/ppZL/8MG0//bd1v/9+ff//v79//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/9/Pv/+vf2/+HLxf+9jX//p2RR/pNBKv6QPSb+jz0l/pA9Jf6RPyf+mUw3/qhnVf7Np5396djU+/bx + 7vn8/Pz1/f398P39/en8/Pzg/Pz80/z8/MX8/Pyy+/v7n/v7+4j8/Pxx/Pz8Wvv7+0X6+voz+Pj4I/T0 + 9Bfw8PAR+fn5KPr6+jH7+/tB/Pz8Uvz8/GT8/Px1+/v7hvz8/JT6+vqi/Pz8rfz8/Lj8/PzC/Pz8zP39 + /db8/Pzf/Pz85/39/e78/Pz0/f39+P39/fv98eH8/eG6/v3Nif79uFT+/bVO//20Sv/+tUv//rVL//61 + S//+tUr//rVJ//67WP/+yX3//tqk//7rz//+9un//v36//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79 + /P/89PL/9dnS/++/sv/opZP/5ZaB/+ORe//jj3n/4495/+OPef/jj3n/4494/+OOeP/lmIT/6aWT//DD + t//339j/+/Dt//78/P/+/v3//v7+//7+/v/+/v7//v7+//7+/v/+/v7//fj3//vw7v/119D/772w/+qp + mP/mmIP/5JN9/+OPef/jj3n/4495/+OPef/jj3j/4453/+aXg//qqJb/8MS3//jk3v/78vD//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v3//fv7//Lp5v/gycP/xZqO/6ZjUP+YSzX/jzsj/o87 + JP6QPSb+kD0l/pA8Jf6RPyj+mU04/rR7bP7NqJ7949HM+/Ps6vj6+Pf0/f397vz8/Of9/f3b/Pz8zvz8 + /L38/Pyq+/v7k/v7+3z8/Pxk+/v7Tfr6+jr5+fkp9vb2HPPz8xX5+fkv+vr6Ofv7+0v8/Pxf/Pz8c/39 + /YX7+/uY/f39pvz8/LX8/Py//Pz8yfz8/NL8/Pza/f394fz8/Oj9/f3u/Pz88/39/ff9/f35/f39/P32 + 7v397tj+/dei/v2/Zf79uVf//rZL//62S//+tUv//rVL//61S//+tUv//rhT//7AZf/+y4H//tql//7q + zP/++vT//v79//7+/v/+/v7//v7+//7+/v/+/v7//v7+//78+//88/H/99/Z/+25q//noI3/5JN+/+OO + eP/jj3n/4495/+OPef/jj3n/4495/+OPev/kkXz/6aaU/+69r//34Nr//fj4//78/P/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v38//vv7P/34Nr/77+z/+iikP/mmIP/45B5/+OPef/jj3n/4495/+OP + ef/jj3n/5I95/+SQev/qqJf/8ci9//jk3v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//38 + /P/69/b/5NDK/76Mf/+lYU//lEIr/5A8Jf+PPCb/kD0m/pA9Jv6QPSb+kD0l/pA8Jf6SQCn+m086/q1v + Xv7Oq6H85tbR+vfx8Pj8/Pzz/Pz87Pz8/OL8/PzX/Pz8xvz8/LT7+/ud+/v7hvz8/G38/PxV+/v7Qfn5 + +S/39/ch9fX1Gfr6+jf7+/tC/Pz8Vfz8/Gr9/f1/+/v7k/z8/Kb8/Py1/Pz8w/z8/M39/f3W/Pz83fz8 + /OT9/f3p/f397vz8/PP9/f32/f39+f39/fv9/f39/Pn1/v327P795cP+/dKV/v3GdP/+u1f//rhQ//62 + S//+tUv//rVL//61S//+t0///rtX//7AZf/+x3f//tec//7qzP/+9eb//v38//7+/v/+/v7//v7+//7+ + /v/+/v7//v79//36+f/77uv/9dbO/+69sP/opJL/5ZaC/+OQev/jj3n/4495/+OPef/jj3n/4454/+OP + ef/lmYT/6aaV//DDt//23db/+/Du//78/P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//fj3//vw + 7v/01Mv/7riq/+egjf/jjnf/4494/+OPef/jj3n/4495/+OPef/jj3j/4454/+efjf/tuKr/9dnS//78 + /P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/9/Pz/9Ovp/9/HwP/Fmo3/p2VT/5hLNv+RPSb/kDwl/5A9 + Jv+PPSb/kDwl/pA9Jv6QPSb+kDwl/pA9Jv6TQSv+nFI+/rB3Z/3JoZb749HM+vPs6vX7+vnw/Pz85/z8 + /Nz8/PzM/Pz8vPz8/KX7+/uO/Pz8dfz8/F37+/tI+vr6Nfj4+Cb29vYe+/v7Pvz8/Er8/Pxf/Pz8dfv7 + +4z8/Pyg/Pz8tPz8/MP8/PzR/Pz82vz8/OP8/Pzo/Pz87fz8/PH8/Pz0/f399/39/fn9/f38/f39/f39 + /f39/f3+/f39/v305f796Mr+/dOW//7BZf/+u1b//rZL//62S//+tUv//rVL//61S//+tkz//rZK//60 + R//+wmn//ted//7py//+/Pn//v79//7+/v/+/v7//v7+//7+/v/+/v7//v7+//77+//89PL/9t3X/+22 + qP/nn43/45J8/+OOeP/jj3n/4495/+OPef/jj3n/4495/+OOeP/kkXz/6KSS/++9sP/4493//fn4//79 + /f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v39//no4//z0Mb/6aiY/+OMdv/jjnj/4495/+OP + ef/jj3n/4495/+OPef/jj3n/5pqG/+mpmf/z0Mf//fr6//79/f/+/v7//v7+//7+/v/+/v7//v39//z5 + +f/o19P/v4+C/6RfTP+TQiv/jzoj/5E9J/+RPif/kT4n/5A9Jv+PPCX+kDwm/pA9J/6QPSb+jzwl/o04 + If6OOSL+kkIr/qdoV/3OraT759nV+Pj19PP8/Pzr/Pz84vz8/NP6+vrD/Pz8rPv7+5b9/f19/Pz8Zfz8 + /E/7+/s7+fn5K/f39yL7+/tH/Pz8U/z8/Gj7+/t/+/v7lvz8/Kr8/Py9/Pz8zPz8/Nr8/Pzi/Pz86v39 + /e78/Pzy/Pz89f39/fj9/f36/f39+/39/fz9/f39/f39/v39/f79/f3+/fny/v3z5f79473//tSW//7H + dP/+u1j//rhQ//62S//+tUv//rVL//62S//+tUr//rRI//66WP/+xG///tab//7qzP/+9eb//v79//7+ + /v/+/v7//v7+//7+/v/+/v7//v39//36+f/67er/9dfP/+69sP/nopD/5JaB/+OPev/jj3n/4495/+OP + ef/jj3n/4454/+OQev/lmIT/6aeW//DDt//23NX/+/Hv//78/P/+/v7//v7+//7+/v/+/v7//v7+//78 + +//9+Pf/9tzV/++/sv/oopD/4413/+OOeP/jj3n/4495/+OPef/jj3n/4454/+ONd//mnYr/67Kj//TW + zv/++/v//v39//7+/v/+/v7//v39//z7+v/07er/3sbA/8Waj/+paFb/mEs1/5E/KP+QPCX/kT0n/5E+ + J/+RPif/kD0m/5A9Jv+PPSb/kD0m/pA9Jv6QPCX+jzsk/o87JP6QPif+m1I8/bB2ZvvJoZb55dPO9fPr + 6e37+vrk/f391vz8/Mf8/Pyy+/v7nP39/YT8/Pxt/Pz8V/v7+0P6+voy+fn5Kfz8/E/8/Pxc/Pz8cf39 + /Yj7+/uf/Pz8s/z8/Mb8/PzU/Pz84v39/en9/fzw/Pv69P38+/f9/fz5/f38+/39/fz9/f39/f39/f39 + /f79/f3+/f39/v39/f79/f3+/f39/v3z4//+6Mb//tOU//7CaP/+u1f//rZM//62S//+tUv//rVL//61 + S//+tUv//rRJ//6zRv/+w2z//tie//7qzP/+/Pn//v38//7+/v/+/v7//v7+//7+/v/+/v7//v7+//77 + +//89fP/9tvU/+y1pv/noI3/45F8/+OPef/jj3n/4495/+OPef/jj3n/4495/+OOeP/kk37/6KWT/++/ + sv/45N///Pf2//78/P/+/v7//v7+//7+/v/+/v7//fj2//vw7f/zzcT/662d/+eciP/jj3j/4495/+OP + ef/jj3n/4495/+OPef/jjnj/44x2/+ehjv/uvrD/9t3W//79/P/+/v7//v7+//79/f/8+vr/9/Lx/+jX + 0f/BkoX/pGBN/5RELv+OOiL/kD0m/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9 + Jv6QPSb+kD0m/o88JP6QPSb9k0Is/KtsW/nRsKb15tfS7/j18+f8+/vZ/Pz8y/z8/Lf8/Pyj/f39i/z8 + /HT8/Pxf+/v7S/r6+jn5+fkv/Pz8WPz8/GT9/f16+/v7kfv7+6f8/Py6/Pz8zfz8/Nr8/Pzm/Pr47fz5 + 8/P99Oj3/fLi+v316vv9+PH8/fz5/f39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/fny//70 + 5P/+5L3//tSX//7Gc//+u1j//rhQ//62S//+tUv//rVL//61S//+tUr//rRJ//67WP/+w2z//tab//7q + zP/+9ef//v79//7+/v/+/v7//v7+//7+/v/+/v7//v39//36+f/67On/9djQ/+69sP/noY7/5JaB/+OP + ef/jj3n/4495/+OPef/jj3n/4454/+ORe//lmIP/6aiW//DCtv/229T/+/Px//78+//+/v7//vz8//35 + +P/44t3/8sq//+yyov/mnIj/5ZR//+OPef/jj3n/4495/+OPef/jj3j/4454/+OPef/kkXz/67Cg//XZ + 0f/67er//v79//7+/v/+/v7//Pv6//Xt6//Yu7L/vYx+/6ZkUv+XSjT/kkAp/5A8Jf+RPSf/kT4n/5E9 + Jv+RPSf/kT4n/5E+J/+RPif/kT0m/5A9Jv+PPSb/kD0m/pA9Jv6QPSb+kD0l/pA9Jv2RPif8nFM++q9z + YvbJoZbw59bT6PLr6Nz8/PzO/Pz8u/z8/Kj9/f2R/f39e/r6+mf8/PxT+/v7Qfr6+jf8/Pxg+vr6bfv7 + +4P7+/uZ/Pz8r/z8/MH8/PzT/Pv73/z7+ur99u3w/fDf9v3pzPn95cD8/enN/f3v2/799uz+/fv3/v39 + /P79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3//v78//7z4v/+5sP//tOS//7Da//+u1j//rdN//62 + S//+tUv//rVL//61S//+tUv//rRI//6zRf/+xW///tef//7qzP/++vT//v36//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//77+v/89PP/9djR/+y1pf/noY//45F8/+OQev/jj3n/4495/+OPef/jj3n/4495/+OO + eP/klYD/6aWT/+/BtP/45eD//PTz//37+v/89vT/++7q//LMwv/pqJf/5pqG/+OOeP/jj3n/4495/+OP + ef/jj3n/4495/+OPef/jkHr/5ZaB/+efi//ww7f/+/Ht//36+f/+/v7//v79//38/P/28O7/59bR/7uH + ef+aTjj/kT8o/445If+QPCb/kT4n/5E+J/+RPSb/kD0m/5E9J/+RPij/kT4n/5E+J/+RPif/kT4n/5A9 + Jv+PPSb/jz0m/5A9Jv6QPSb+kDwl/ZA8JPyRPif6kkMr96xwX/HQsKfq5tbR3vr599H8+vq//Pz8rfv7 + +5f7+/uC/Pz8bvz8/Fv7+/tJ+/v7P/z8/Gj6+vp1+/v7i/z8/KH8/Py2/Pz8x/z8/Nj8+fbj/Pfu7fzj + wfP91Jn4/cyF+v3Hefz9zYj9/dWc/v3iu/797tf+/fny/v39/f79/f3+/f39/v39/f79/f3+/f39/v7+ + /v/+/v7//vrz//7z4//+5L3//tWY//7Fcv/+u1n//rdP//62S//+tUv//rVL//61S//+tUr//rRI//67 + WP/+wmr//tac//7pyv/+9ej//v79//7+/v/+/v7//v7+//7+/v/+/v7//v39//76+v/67Oj/9dnS/+69 + sP/mn4z/5JaB/+OPeP/jj3n/4495/+OPef/jj3n/4494/+SRe//ll4L/6amY//DFuf/12tP/+uzo//ff + 2f/yy8D/7LKi/+WZhP/kk37/4495/+OPef/jj3n/4495/+OPef/jj3j/5JN+/+ediv/ssaL/8szC//jj + 3f/9+Pf//fv7//37+//8+vn/+PTy/93Evf/ClIj/pmNQ/5JBKv+QPSb/kDwl/5E9Jv+RPif/kT4n/5E+ + Jv+RPSb/kT4n/5E+KP+RPif/kT4n/5E+J/+RPif/kT4m/5A9Jv+PPSb/kD0m/pA9Jv6QPCX+jzwl/ZA9 + JvqQPif3nFI+8axvXuvLp5zf8ejl0/fx8MP8/Pyx+/v7nfv7+4n7+/t2/Pz8Y/z8/FD7+/tG/f39b/39 + /Xz7+/uS/Pz8qPz8/Lz8/PzN/Pz83Pz06ub97dfw/NOa9f2+Zfn9t1L7/bJJ/f25V/39wmr+/c+L/v3d + sP/979v//fjx//38+v/9/f3//f39//39/f/9/f3//v7+//7+/v/+/v7//vz5//7y4f/+5cH//tKS//7D + bv/+u1n//rdO//62TP/+tUv//rVL//61S//+tUv//rRI//60R//+xnL//ted//7qzP/++fD//vz5//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//36+f/89fL/9dfO/+y1pv/no5D/45N9/+ORe//jj3n/4495/+OP + ef/jj3n/4494/+OOd//ll4P/6amZ/+6+sf/008r/8MW5/+utnf/mnYn/4453/+OPeP/jj3n/4495/+OP + ef/jj3n/45B6/+SSfP/mnYn/7LGi//PNw//77ur//fn4//7+/f/7+fj/+PTy//Dm4v/l083/wpWJ/6Rg + Tf+WSDL/jjkh/5A8Jf+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+ + J/+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9Jv6PPSb9jz0m+488JPeQPifykkIq7LiCdOHn1tHV8urnxfz8 + /LX7+/ui+/v7j/39/Xz8/Pxp/Pz8V/v7+0z8/Px1/f39gvv7+5j8/Pyt/Pz8wfz8/ND8/Pvf/OvS6PzZ + qPH8xnn1/bdS+f20TPz9s0r9/bZO/v65Vf79vV7//sl7//7drP/+7NP//vr0//79/f/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v3//vr0//7z4v/+5L7//tWY//7EcP/+u1n//rdO//62S//+tUv//rVL//61 + S//+tUr//rVJ//66Vv/+wmn//tec//7qyv/+9ur//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v39//77 + +v/67On/9tzU/+68r//mnov/5JaB/+OPeP/jj3n/4495/+OPef/jj3n/4494/+SSfP/mmIT/55+M/+mm + lP/ooY//5pqF/+SUfv/jj3j/4495/+OPef/jj3n/4495/+OPeP/kknz/552J/+yyo//008r/+enk//34 + 9v/+/Pv//v38//bw7v/t4d3/0bCm/7Z/cP+kYE3/lUYw/5JAKf+QPCX/kT0m/5E+J/+RPif/kT4n/5E+ + J/+RPif/kT4n/5E9Jv+RPSb/kT0m/5E+J/+RPif/kT4n/5E+J/+RPif/kT4m/5A9Jv+PPSb/kD0m/o89 + Jv2PPSb7jzwl+I47JPKNOiHsrnVk4trBudfq39rI/Pz8uPz8/KX7+/uT+/v7gfz8/G78/Pxc/Pz8Uf39 + /Xn7+/uG+/v7nPz8/LH8/PzE/Pz70/39++H95sTp/M2L8v2+Zfb9skf6/bNJ/P2zSv79tEr+/bNJ//60 + R//+u1n//suA//7drP/+8Nv//vnw//7+/P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vv3//7y + 4P/+5L///tKR//7EcP/+u1n//rdP//62S//+tUv//rVL//61S//+tUv//rRI//62S//+x3T//tie//7q + zf/+9+7//vz5//7+/v/+/v7//v7+//7+/v/+/v7//v7+//36+f/89fL/9NXN/+y2qP/oo5H/5JR+/+SR + e//jj3n/4495/+OPef/jj3n/4495/+OOeP/jjnj/4413/+OOd//jj3j/4495/+OPef/jj3n/4495/+OP + ef/jkHn/5JN9/+adif/ssaL/8svC//rr5//9+vj//v39//79/f/9+/r/69zY/9a4sP+2gHD/mEo0/5JA + Kf+OOSH/kDwl/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT0m/5E9Jv+RPSb/kT4n/5E+ + J/+RPif/kT4n/5E+J/+RPif/kT4m/5A9Jv+QPSb+jz0m/Y89JvuPPSb4jTsk84w4IOyuc2Li2b+32Ord + 2Mn8/Py6/Pz8qPv7+5b7+/uE/Pz8cfz8/F/8/PxV/f39ev39/Yf8/Pye/Pz8svz8/MX8/PvU/Pz74vzk + wOr8zITy/b5j9/2ySPr9s0n8/bNK/v20Sv79s0r//rRJ//63Tv/+u1j//sl6//7drP/+7dP//vz4//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/vz//vv1//7z4v/+5L///tWX//7Dbf/+u1j//rdN//62 + S//+tUv//rVL//61S//+tUr//rVL//66VP/+wmn//ted//7py//+9+3//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v39//77+//67er/9t3W/+67rv/nn4z/5ZWA/+OPeP/jj3n/4495/+OPef/jj3n/4495/+OP + ef/jjnj/4494/+OPef/jj3n/4495/+OPef/jj3n/4494/+ORe//nnYn/7LCh//TSyv/66ub//ff2//79 + /f/+/v7//fz7//v49//YurL/r3Ni/59WQf+QPCX/kDwl/5A8Jf+RPSb/kT4n/5E+J/+RPif/kT4n/5E+ + J/+RPif/kT4n/5E+J/+RPif/kT0n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPib/kD0m/5A9 + Jv6PPSb9jz0m+489JviPPifzkEAp7LWAcuLl083Y8Ojlyfz8/Lr8/Pyp+/v7l/v7+4X8/Pxy/Pz8YPz8 + /FX9/f14/f39hfv7+5z8/Pyx/Pz8xPz8/NP9/f3h/OjK6vzUmfL8w3D3/bVQ+v20Tfz9tEr+/bRK/v2z + Sv/9tEr//rRJ//60R//+vFz//sp+//7cq//+8Nv//vjv//7+/f/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//vv1//7y4P/+5L3//tKR//7Fcf/+u1j//rhP//62S//+tUv//rVL//61S//+tUr//rRI//64 + UP/+x3X//tee//7qzv/+9+z//vz5//7+/v/+/v7//v7+//7+/v/+/v7//v7+//36+f/88/D/9NTM/+24 + qv/opJH/5ZV//+SRe//jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/4495/+OP + ef/klH7/5p2J/+yzpP/yy8L/+enl//35+P/+/f3//v7+//39/P/z6uj/5dLM/8GShf+ZTDb/k0Aq/444 + If+QOyT/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E9Jv+RPib/kT4n/5E+J/+RPif/kT4n/5E+ + J/+RPif/kT4n/5E+J/+RPif/kT4m/5A9Jv+PPSb/kD0m/o89Jv2PPif7kD8o+JhLN/OjYE7sxZuQ4u/m + 4tf28O/J/Pz8uvz8/Kj7+/uW+/v7hPz8/HH8/Pxe/Pz8VPz8/HX7+/uC+/v7mfz8/K78/PzB/Pz80fz8 + ++D98uDp/OXB8v3PjPb9vF36/bdS/P20Sv79tEr+/bNK//2zSv/9tEr//rVK//62Tf/+uVP//sl5//7d + rP/+7dX//v38//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/vz//vv3//7z4v/+5cD//tSX//7C + av/+u1j//rZM//62S//+tUv//rVL//61S//+tUr//rZL//64Uv/+wmv//tig//7qzf/++fD//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v39//77+v/77uv/9tzW/+26rP/nn4z/5JV//+OPeP/jj3n/4495/+OP + ef/jj3n/4495/+OPef/jj3n/4495/+OPef/jj3j/45B6/+adif/rr6D/89LK//rs6P/99/b//v39//7+ + /v/9/fz//Pn5/+LNxv/AkYP/p2VS/5A8JP+QOyT/kDwl/5E9Jv+RPif/kT4n/5E+J/+RPif/kT4n/5E+ + J/+RPSb/kD0m/5E9Jv+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/jz0m/5A9 + Jv6QPSb+jz0m/ZA/KPuSQSv4pGNS88CUh+zaw7vi+fX01/r6+Mj8/Py4/Pz8pvv7+5P7+/uB/Pz8bvz8 + /Fv8/PxR/f39b/39/Xv7+/uS/Pz8qPz8/Lz8/PzN/Pz83Pz37uf98d/w/Nyv9f3Mg/n9v2f8/bdT/f21 + Tf79tEr+/bRK/v20Sv/9tEr//rRJ//60R//+vV3//sp9//7cq//+8Nz//vju//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//vr0//7y4P/+5L3//tKS//7GdP/+u1n//rhR//61S//+tUv//rVL//61 + S//+tUr//rRI//65VP/+x3b//tqk//7x3P/++/b//v79//7+/v/+/v7//v7+//7+/v/+/v7//v7+//35 + +P/78O3/9NTL/+26rP/opJH/5JWA/+SRe//jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/4495/+SV + f//mnYn/7LWm//PNw//56OP//fn4//79/P/+/v3//fz7//Lq5//jzcj/x52R/6dlUv+ZTTf/jjkh/487 + JP+RPif/kT4n/5E+J/+RPif/kT4n/5E9Jv+RPSb/kT4n/5E+Jv+RPSb/kT0m/5E+J/+RPif/kT4n/5E+ + J/+RPif/kT4n/5E+J/+RPib/kD0m/489Jv+QPSb+kD0m/pA9Jv6QPij9mEw3+qNhT/i8jH/y2sG57Ozf + 3OH7+/vW/Pz8xvz8/LX7+/ui+/v7j/v7+3z8/Pxp/Pz8Vvv7+0z8/Pxn/Pz8dPv7+4v8/Pyh/Pz8tvz8 + /Mj8/PzZ/Pv55P369+787Nb0/d+1+f3Mhfv9vF/9/bdS/f20Sv79tEr+/rRK/v2zSv/9tEr//rVK//62 + TP/+t07//sl6//7erf/+7tf//v79//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v3//vz5//7z + 4//+58P//tWZ//7DbP/+u1r//rVM//61S//+tUv//rVL//61S//+tUr//rZL//63T//+x3f//ufD//73 + 6//+/fr//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v79//77+v/78O3/9tzW/+24qv/nn4z/5JR+/+OP + eP/jj3n/4495/+OPef/jj3n/4495/+OPef/jj3n/556L/+ywoP/008v/+/Ds//349//+/v3//v7+//38 + /P/69/f/487I/76Ogf+nZFL/k0Ms/5E+Jv+RPSb/kT0m/5E+J/+RPif/kT4n/5E+J/+RPib/kT0m/5E9 + Jv+RPib/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5A9Jv+PPSb/jz0m/5A9 + Jv6QPSb+kD4n/ZJBLPyjX0z6vo+C99e8tfLy7Orr+ff34Pz8/NT8/PzD/Pz8svz8/J77+/uK/f39dvz8 + /GP8/PxQ+/v7Rvz8/F79/f1r+/v7gv39/Zj8/Pyv/Pz8wvv7+9T8/Pzg/Pz86/z16vL97dj4/dut+/3N + hv39wGj9/bhT/v22Tf79tEr+/bRK/v20Sv/9tEr//rRJ//60R//+vl///sl8//7drP/+79r//vju//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vrz//7z4v/+4LT//sp///6/Y//+tUr//rVK//61 + S//+tUv//rVL//61S//+tUr//rRG//7Da//+4rj//vPj//78+f/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v79//35+P/77uv/9NTM/+67rv/oo5H/5ZaB/+OQev/jj3j/4495/+OPeP/jjnj/5JR//+ac + if/ttqj/88/G//nn4//9+vn//v38//7+/v/+/v7//Pr6//fy8f/Zvbb/rG1c/5lMNv+POyT/jzsj/5E+ + J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPSb/kT0m/5E+Jv+RPif/kT4n/5E+J/+RPif/kT4n/5E+ + J/+RPif/kT4n/5E9Jv+QPSb/jz0m/5A9Jv6QPSb+kD0m/pE/KP6YTDb9pWNR/LyLffrYvbX36tzZ8fr4 + +On9/f3e/Pz80fz8/MD9/f2t/f39mP39/YP9/f1v/Pz8XPz8/Er7+/s//Pz8VPz8/GH9/f14+/v7kPv7 + +6f8/Py7/Pz8zvz8/Nz9/f3p/f388P369ff97tf6/d+0/f3Lgv39vF7+/bdQ/v21Sv79tEr+/bRK/v2z + Sv/9tEr//rVK//61Sv/+tUn//sl7//7erv/+79r//v79//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v3//v77//7qzP/+0pL//sJr//60SP/+tUn//rVL//61S//+tUv//rVL//61Sv/+tEb//sJo//7f + sP/+8dz//vz3//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//77+v/78u//9tzV/+y2 + qP/mnov/45J8/+OOeP/jj3n/4454/+KNdv/mnIj/6q2d//TSyf/88vH//fn4//7+/v/+/v7//v7+//7+ + /v/7+Pj/9O3q/9Gwpv+eVUD/kDwk/487I/+QPCT/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+ + J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kD0m/489Jv+QPSb+kD0m/pA9 + Jv6RPif+kkEr/qFcSf29joD82b22+fPs6vb7+vrw/Pv76P39/dv8/PzO/Pz8u/z8/Kn9/f2S/f39fPz8 + /Gj8/PxV+/v7Qvr6+jj7+/tM/Pz8Wf39/W/9/f2H+/v7n/z8/LT8/PzI/Pz81/39/eX8/Pzt/Pv69f32 + 6/n97dX8/dys/f3MiP79wGf+/blU/v22Tf79tEr+/bRK/v20Sv/9tEr//rRJ//60SP/+vmD//sl7//7d + rP/+79j//vju//7+/v/+/v7//v7+//7+/v/+/v7//v7+//768//+8+L//uG2//7Lgv/+v2T//rVK//61 + Sv/+tUv//rVL//61S//+tkv//rdO//65U//+yHf//uO7//7z4//+/Pn//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v39//35+P/67en/9NXM/+69sP/pppX/5pqF/+SSfP/lmIP/6KGO/+24 + qv/z0cj/+efi//76+f/+/Pz//v7+//7+/v/+/v7//v7+//37+v/59fT/4MrE/7uIe/+jX0z/kj8o/487 + I/+QPCX/kT0m/5E+J/+RPSb/kT0m/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+ + J/+RPif/kT0m/5A9Jv+PPSb/kD0m/pA9Jv6QPSb+kT8o/pdKNf6nZVP+vIt+/di9tvvr3tr5+Pb19f39 + /e79/f3l/Pz82Pz8/Mr8/Py2+/v7ov39/Yv8/Px0/Pz8YPv7+0z7+/s7+vr6Mfv7+0P8/PxQ/Pz8Zv39 + /X77+/uX/Pz8rfz8/ML8/PzS/f394fz8/Ov8/Pzz/f399/369fv97tn8/d6z/v3KgP79vWD+/bdQ/v21 + Sv79tEr+/bRK/v20Sv79tEr//rVL//60SP/+tUn//sp9//7er//+8dz//v38//7+/f/+/v7//v7+//7+ + /v/+/v7//vXm//7nxP/+1pr//sRv//68XP/+tUz//rVL//61S//+tUv//rVL//62TP/+uVP//r9h//7P + iP/+6cj//vfr//79+v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//77 + +//89PL/997Y/+69sP/pp5b/5ZaB/+ijkf/tt6n/9dbO//329P/++vr//v7+//7+/v/+/v7//v79//79 + /P/+/Pv//vz7//79/f/x5uT/28G8/7qHev+VRS//kDsj/486I/+QPCX/kT4n/5A9Jv+QPSb/kT0m/5E+ + J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+QPSb/kD0m/pA9Jv6QPSb+kD0m/pE+ + J/6TQiz+n1hF/r2Nf/7Zvbb98+zq+/39/fj8/Pzz/Pz87Pz8/OP8/PzU/Pz8xfz8/LH7+/uc+/v7hPz8 + /Gz8/PxY+/v7RPr6+jT5+fkq+/v7PPv7+0j8/Pxd/Pz8dfv7+478/Pyk/Pz8u/z8/Mz8/Pzc/Pz85v39 + /fD8/Pz1/fz6+f327Pv97NX9/dyu/v3Oiv79wGb+/blU/v22TP79tUr+/bRK/v20Sv/9tEr//rRJ//61 + Sv/+vmD//sp8//7er//+79j//vnw//7+/v/+/v7//vr0//7y4P/+5L///tSW//7IeP/+vV3//rlT//61 + S//+tUv//rVL//62S//+t07//rpW//7BZv/+zYT//t2s//7x3v/++/X//v79//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v39//36+f/77+z/99/a//TUzP/yy8H/89LJ//bd + 1v/66+j//vr6//79/P/+/v3//vn2//7x6//+4dT//tfF//7Vw//+1sT//tnI//jbz//u3dn/1riw/7mE + dv+jXkv/jzoj/5E9Jv+TQCn/kT4n/5A9Jv+RPSb/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+ + J/+RPSb/kD0m/489Jv+QPSb+kD0m/pA9Jv6RPyj+lkgy/qdmU/68jH3+2Ly0/e3g3Pv49fT6/f399v39 + /fD8/Pzo/Pz83fz8/M78/Py+/Pz8qfv7+5P9/f17/Pz8ZPz8/E/7+/s8+fn5Lfj4+CT6+vo1+/v7QPz8 + /FX8/Pxs/f39hPv7+5z8/Pyz/Pz8xf39/db8/Pzi/Pz87Pz8/PL8/Pz4/f39+v358vz97tj9/d6y/v3K + gP79vmL+/bhR/v21S/79tEr+/bRK/v20Sv79tEr//rVK//60SP/+uFH//s2E//7htf/+8uD//vz4//78 + +f/+9OX//uXB//7VmP/+w2z//rxZ//63Tf/+tkv//rVL//61S//+tUv//rZN//65U//+wGP//sp9//7b + qP/+68///vnx//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/f/+/f3//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/f3//vv7//35+P/9+vr//vz8//7+/v/+/v7//v7+//78+//+8On//uDS//7F + qv/+s5H//rGO//6yj//+tpX//s23//7v6f/v4Nz/2r+4/7iEdv+VRC//k0Is/5NBKv+RPij/kD0m/5E9 + Jv+RPif/kT4n/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5A9Jv+PPSb/kD0m/pA9Jv6QPSb+kT4n/pVF + L/6fWET+vYx9/ti8tP7x5+X8/f39+v39/fj8/Pzz/Pz87fz8/OP8/PzY/Pz8x/z8/Lb8/Pyg/f39ifz8 + /HL8/Pxb+/v7R/r6+jX4+Pgm9vb2Hvn5+S76+vo5+/v7TPz8/GL9/f16+/v7kfz8/Kj8/Py7/Pz8zfz8 + /Nr8/Pzm/f397vz8/PT8/Pz4/fz5+v337fz97NT+/d2v/v3Oiv79v2X+/blU/v21S/79tUr+/bRK/v20 + Sv/9tEr//rVK//64UP/+xG7//tKQ//7iuP/+7ND//u3U//7kvv/+05X//sd2//68W//+uFH//rZM//61 + S//+tUv//rZL//62Tf/+ulb//sBl//7NhP/+2qb//uvP//726v/+/Pn//v7+//7+/v/+/v7//v7+//79 + /P/++/n//vj1//728//++vj//v38//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/f3//vz8//79 + /f/+/v7//v7+//7+/v/++/n//vPu//7UwP/+uJj//qZ+//6bbv/+mm7//ppt//6abP/+rIb//smx//jX + yf/v4Nv/1riv/7qHef+jXkz/jzoj/487I/+QPCT/kD0m/5E+J/+RPif/kT4n/5E+J/+RPif/kT4n/5E+ + Jv+QPSb/jz0m/5A9Jv6QPSb+kD0m/pE/KP6VRi/+p2ZU/ryLff7YvLT+7eHe/ffz8vv9/f34/Pz89P39 + /e/8/Pzn/Pz83Pz8/M/8/Py++vr6rP39/ZX7+/t/+vr6aPz8/FH7+/s++fn5Lff39yD09PQY+Pj4J/r6 + +jH7+/tD/Pz8WP39/W/7+/uG+/v7nPv7+7D8/PzD/Pz80fz8/N/8/Pzo/f398Pz8/PT9/f34/f39+/z3 + 8P397db+/d2w/v3KgP79v2X+/bhR/v22TP79tEr+/bRK/v2zSv/9tUv//rdO//68W//+xG///tKQ//7a + pP/+3Kn//tSV//7Eb//+vFr//rdO//62S//+tUv//rVL//61S//+t07//rlT//7AZf/+yn3//tqm//7q + zP/++O7//v7+//7+/v/+/v7//v7+//79/P/++/n//vTv//7s5P/+59z//uPW//7r4v/+8u3//vn2//7+ + /f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//738//+6uD//rye//6Z + af/+j1z//opV//6KVv/+iVT//oZP//6SYP/+p3///siw//7u5v/u3db/28G6/7eCc/+WRjD/kkAp/487 + I/+QPCX/kT0m/5E+Jv+RPif/kT4n/5E+J/+RPif/kD0m/489Jv+QPSb+kD0m/pA9Jv6RPif+lkgy/p9Y + RP68jH3+17uz/u7j4f39/f37/f39+fz8/PX9/f3w/f396fz8/OD8/PzT/Pz8xfz8/LP8/Pyg+/v7ivz8 + /HP8/Pxd+/v7R/r6+jb4+Pgm9fX1GvLy8hP39/cg+fn5Kvr6+jr7+/tN/Pz8Yvv7+3j7+/uO+/v7ovz8 + /Lf8/PzG/Pz81Pz8/OD9/f3p/f397/z8/PT9/f34/fv4+/337/z97NT+/d2w/v3Oiv79v2L+/blU/v21 + Sv79tEr+/bRK/v20Sv/9tUz//rhR//67Wf/+wGT//sNr//7DbP/+wGb//rtZ//64Uf/+tkz//rVL//61 + S//+tkv//rZM//66Vv/+v2P//syD//7apf/+687//vfr//78+P/+/v7//v7+//7+/v/+/v7//vfz//7s + 5P/+1sT//r6h//60kv/+rIf//rye//7Ot//+6N3//vr4//79/P/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//vHr//7f0f/+sY7//o9c//6MWf/+i1f//otX//6LVv/+ilT//o1Y//6S + Yf/+qoP//siv//jYy//x5uP/1bev/7qHef+iXEn/jzoi/487I/+QOyT/kT0m/5E+J/+RPif/kT4m/5A9 + Jv+PPSb/jz0m/5A9Jv6QPSb+kT8o/pNCK/6nZVP+vIt8/te7tP7u4+H99/Py+/39/fj8/Pz1/f398Pz8 + /Or9/f3h/f391vz8/Mj8/Py4/Pz8pfv7+5H7+/t8/Pz8Zvz8/FH7+/s9+fn5Le/v7yDz8/MV7u7uD/X1 + 9Rv39/ci+vr6MPv7+0L8/PxV/Pz8afv7+3/8/PyU/Pz8qPz8/Ln8/PzJ/f391v39/eH9/f3p/f398Pz8 + /PX9/f34/f39+/337/z97db+/d2v/v3LgP79wGb+/bdQ/v22Tf79tEr+/bRK/v2zSv/9tUv//rVL//61 + Sf/+tEj//rRI//60Sf/+tUv//rVL//61S//+tUv//rVL//63T//+uFP//sBm//7Jff/+2qX//urM//73 + 6//+/v7//v7+//7+/v/+/v7//vz7//759//+6uD//tbD//66m//+nXH//pNi//6LV//+m27//q+K//7Q + u//+6+H//vby//79/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+7+j//tzM//6u + iv/+jFn//oxY//6MWP/+jFj//oxY//6MV//+ilT//odQ//6UZP/+qID//sqy//7u5//t2dP/2b64/7iC + dP+bUDv/lEMs/486I/+QPCX/kD0m/5E9Jv+QPSb/jz0m/5A9Jv6QPSb+kD0m/pE+J/6XSjT+n1hE/ryK + fP7XurL+7eDd/f39/fv9/f35/Pz89f39/fD8/Pzq/Pz84vz8/Nf8/PzK/Pz8u/z8/Kr7+/uW+/v7gvz8 + /G38/PxY+/v7Rfr6+jP4+Pgl9fX1Ge/v7xDq6uoM8/PzFfb29hz5+fko+vr6N/v7+0f8/Pxa/Pz8bvv7 + +4P7+/uX/Pz8qfz8/Lv8/PzJ/Pz81/39/eH9/f3p/f398Pz8/PX9/f34/fv4+/z38P397NP+/d6x/v3O + if79vV/+/blU/v21Sv79tEr+/rRK/v20Sv/9tEr//rVK//61Sv/+tUr//rVK//61S//+tUv//rVL//61 + S//+tkz//rpW//6+Yf/+zIP//tqm//7qzf/++O7//vz4//7+/v/+/v7//v7+//7+/v/+9/T//uvi//7R + vf/+s5D//qF2//6SYP/+jlv//oxX//6QXv/+mWr//q+L//7Ir//+59z//vr4//79/P/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//707//+5dn//riY//6WZ//+kF7//o1Y//6MWP/+jFj//oxY//6L + Vv/+ilX//o1Y//6RXv/+qoT//seu//nazf/x5+T/1riw/7yKfP+hWkb/jjki/446I/+OOyT/jzwl/489 + Jv+QPSb+kD0m/pA9Jv6RPyj+kkEr/qZkUv68i3z+2Luz/fDn5P348/L7/f39+fz8/PX8/Pzx/Pz86vz8 + /OL8/PzY/Pz8y/z8/Lz8/Pyr+/v7mf39/YX8/Pxx/Pz8Xfz8/Er6+vo5+fn5Kfb29h7y8vIU6+vrDePj + 4wnv7+8Q8/PzFvf39x/5+fks+vr6Ovv7+0z8/Pxe+vr6cv39/YX7+/uY/Pz8q/z8/Lv8/PzK/f391v39 + /eH9/f3p/f398Pz8/PX9/f34/f39+/337fz97db+/dyt/v3Kf/79wGf+/bhR/v22Tf79tEr+/bRK/v2z + Sv/9tEr//rVL//61S//+tUv//rVL//61S//+tUv//rdP//65U//+wGf//sl8//7apf/+6sz//vbp//7+ + /v/+/v7//v7+//7+/v/+/Pv//vj1//7p3//+07///rmZ//6cb//+kmH//oxX//6MV//+jFj//otX//6N + Wf/+mWv//q2H//7Puf/+6N7//vby//79/P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vj2//7u + 5v/+x67//qd///6abP/+kF7//o5a//6MWP/+jFj//oxY//6MV//+ilT//odQ//6WZv/+p4D//sqz//3p + 4P/s18//2Ly1/7eBc/+dVEH/k0Mu/486I/6POyT+jzsk/o88JP6QPCX+kD4m/phLNf6hW0j+u4p8/ti7 + s/3s39z8/f39+/39/fj8/Pz1+/v78fz8/Or8/Pzi/Pz82Pz8/Mv8/Py9/Pz8rf39/Zr9/f2H+vr6dPz8 + /GD7+/tO+/v7Pfn5+S739/cg9PT0F+3t7Q7j4+MJ1NTUBujo6Avv7+8Q9PT0F/f39yL5+fku+/v7Pfv7 + +078/Pxg+vr6c/v7+4b7+/uZ/Pz8q/z8/Lz8/PzK/Pz81/39/eH8/Pzq/f398Pz8/PX9/f34/fv4+/34 + 8v397NP+/d6x/v3Nh/79vV7+/bhT/v21Sv79tEr+/bNK//2zSv/9tEr//rVL//61S//+tUv//rVL//62 + TP/+uVX//r5h//7Lgv/+2qX//urN//758f/+/Pn//v7+//7+/v/+/v7//v7+//749f/+6+L//tK+//6y + j//+n3T//pFg//6OWv/+jFj//oxY//6MWP/+jFf//oxY//6PXP/+mGn//q2I//7Ir//+6d///vr4//79 + /f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/fz//vf0//7ay//+v6P//qiB//6XaP/+kF7//o1Y//6M + WP/+jFj//oxY//6LVv/+i1X//oxY//6PW//+qoP//sas//nd0f/w5uT/17qy/7yMfv+fWUX/kDwk/o45 + If6NOCH+jjki/pA8Jf6RPyj+pWFP/r2Nfv7Yu7P98+vp/Pn19Pr9/f35/Pz89f39/fD8/Pzq/Pz84vz8 + /Nj8/PzL/Pz8vfz8/K38/Pyb/f39iPz8/HX8/Pxi/Pz8UPv7+z/6+vow+Pj4I/T09Bjw8PAR5eXlCtTU + 1Aa/v78E39/fCOjo6Avw8PAR9fX1Gvj4+CP6+vox+/v7P/z8/E/8/Pxh+vr6dPv7+4f9/f2Z/Pz8q/z8 + /Lv8/PzK/f391v39/eH9/f3p/f398Pz8/PX9/f34/f39+/327Pz97db+/dyr/v3Lgv79wWf+/bhS/v22 + Tf79tEr+/bRK/v20Sv/9tEr//rVL//61S//+t0///rlU//7BZ//+yn7//tql//7qzf/+9ej//v7+//7+ + /v/+/v7//v7+//78/P/+9/T//unf//7Svv/+uZn//p5y//6TYf/+jVn//oxY//6MWP/+jFj//oxY//6M + WP/+jFj//otX//6OXP/+mWv//q6J//7Puf/+5tv//vfz//79/P/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/Pv//uvj//7Yx//+vZ///qd///6Za//+kV7//o5a//6MWP/+jFj//oxY//6MV//+ilT//odQ//6X + Z//+qIH//su0//vk2v/r1s//2b+3/r+Qg/6sbVz+oVtI/pxSPf6bTzv+oFlF/qhnVf6+j4L+2by1/eze + 2vv9/f36/f399/z8/PX9/f3w/Pz86v39/eH8/PzX/Pz8y/z8/L38/Pyt+/v7nPv7+4n9/f12/Pz8Y/z8 + /FH7+/tA+vr6Mvj4+CX19fUb8fHxEurq6gzb29sHv7+/BKqqqgPMzMwF39/fCOrq6gzx8fES9fX1Gvj4 + +CX6+vow9/f3QPz8/E/8/Pxh/Pz8dPv7+4f7+/ua/Pz8q/z8/Lz8/PzK/Pz81/39/eH8/Pzq/Pz88fz8 + /PX9/f34/fv5+/359f397NT+/d6y/v3Mhv79vV/+/bhS/v21Sv79tEr+/bNK//2zSv/9tEv//rZM//65 + Vf/+vmH//suA//7apP/+6s3//vr0//78+v/+/v7//v7+//7+/v/+/v7//vn3//7r4//+1MD//rKP//6e + cv/+kmD//o1a//6MWP/+jFj//oxY//6MWP/+jFj//oxY//6MWP/+jFj//oxY//6OW//+l2n//qyG//7J + sP/+7OT//vr4//7+/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/++vj//vHq//7Ww//+vZ///qZ+//6X + aP/+kF3//o1Y//6MWP/+jFj//oxY//6MV//+i1X//otW//6NWv/+q4X//sev//nh1v/07ez+6tvX/tm+ + t/7BlIj+tHxt/q91ZP66iHn+zKed/uDKxP307ev8+fb1+v39/ff8/Pz0/f398P39/en8/Pzi/Pz81/z8 + /Mv8/Py9/Pz8rfv7+5z7+/uJ/f39dvz8/GP8/PxR+/v7Qfr6+jL4+Pgm9fX1G/Ly8hPq6uoM39/fCL+/ + vwR/f38CAAAAAaqqqgPMzMwF39/fCOvr6w3x8fES9fX1G/j4+CX6+voy+/v7P/z8/FD8/Pxh/Pz8dPv7 + +4f9/f2Z/Pz8q/z8/Lv8/PzK/f391v39/eH8/Pzq/f398Pz8/PX9/f34/f39+/326/z97dX+/dyr/v3M + hP79wGf+/bhS/v21TP79tEn+/bRJ/v21Tf/9uFT//sBn//7Kf//+2qT//urM//715v/+/v7//v7+//7+ + /v/+/v7//v38//738//+6uD//tK9//65mf/+oHT//pNh//6NWv/+jFj//oxY//6MWP/+jFj//oxY//6M + WP/+jFj//oxY//6MWP/+jFj//otX//6PXf/+mWv//q+L//7Ouf/+5dr//vj1//79/P/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/++vj//urg//7Ww//+vJ7//qiA//6Za//+kV///o1a//6MWP/+jFj//oxY//6M + V//+iVT//ohT//6Yav/+rIj//dbE//zy7f748e/+7+Th/t7GwP7Utq7+0bGn/tm9tf3l08788efl+/z7 + +/n9/f32/Pz88vz8/O38/Pzo/Pz83/39/db8/PzJ/Pz8vPz8/Kz8/Pyb+/v7if39/Xb6+vpk/Pz8Uvv7 + +0H6+voz+Pj4Jvb29hzy8vIT6+vrDd/f3wjMzMwF////AgAAAAEAAAAAAAAAAX9/fwK/v78E39/fCOrq + 6gzy8vIT9fX1Gvj4+CX6+vow+/v7P/z8/E/8/Pxh/Pz8dPv7+4f7+/ua/Pz8q/z8/Lz8/PzK/Pz81/z8 + /OL8/Pzq/Pz88fz8/PX9/f35/fz6+/369f397NT+/d6x/v3Lgv79vFz+/bZP/v2zSP79tEn+/rdR/v28 + X//9yX3//tmk//7qzP/++/T//v37//7+/v/+/v7//v7+//7+/v/++/n//uzk//7Vw//+s5D//pxv//6R + YP/+jVn//oxY//6MWP/+jFj//oxY//6MWP/+jFj//oxY//6MWP/+jFj//oxY//6MWP/+jFj//oxY//6M + Wf/+l2j//qqD//7Ksf/+7+n//vr5//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/f/+/Pr//vDp//7V + wv/+vJ7//qV8//6XaP/+jlz//oxY//6MWP/+jFj//oxY//6MV//+i1b//YlW//2SY//+w6n+/ejd/v31 + 8f78+vr++fb2/vj08/738/L++PTz/fr49/v7+vr5/f399vz8/PL8/Pzt/Pz85v39/d78/PzU/Pz8yfz8 + /Lv8/Pys+/v7mv39/Yj9/f12/Pz8Y/z8/FH7+/tB+vr6Mvj4+Cb19fUb8vLyFOrq6gzf398IzMzMBX9/ + fwIAAAABAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9vb2HPj4+CX6+voy+/v7P/z8 + /FD8/Pxh/Pz8dPv7+4f9/f2Z/Pz8q/z8/Lv7+/vK/f391v39/eH8/Pzq/f397/z8/PX9/f34/fz7+/32 + 6/z97NT+/d2v/v3Pjf79xXL+/b9j/v2+Yf79w23+/cyF/v3Zpv/96cz//vTl//79+//+/v3//v7+//7+ + /v/+/f3//vbz//7r4f/+0bz//riZ//6hdv/+kmH//o5a//6MWP/+jFj//oxY//6MWP/+jFf//otX//6L + V//+i1b//oxX//6MV//+jFj//oxY//6MWP/+jFj//otX//6QXv/+mWr//rCM//7OuP/+5dn//vn3//79 + /P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/++fb//urg//7Ww//+vZ///qZ+//6QX//+i1f//oxY//6M + WP/+jFj//oxX//6LV//9iFT//Y9c/v2yj/790r7+/e7m/v39/f79/f3+/f39/f39/fz9/f37/f39+Pz8 + /PX8/Pzx+/v76/z8/OT9/f3b/Pz80fz8/MX8/Py4/Pz8qf39/Zj7+/uH+vr6dfz8/GP8/PxS+/v7Qfr6 + +jP4+Pgm9vb2HfLy8hPt7e0O39/fCMzMzAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ + fwK/v78E39/fCOjo6Avy8vIT9fX1Gvj4+CX6+vow+/v7P/z8/E/8/Pxh/Pz8dPv7+4f7+/ua/Pz8rPz8 + /Lz8/PzL/Pz81/z8/OL9/f3p/f398Pz8/PX9/f35/f38+/369/398uD9/ebD/v3Wnf79zIT+/cl8/v3Q + jf793q/+/ezS/v369f79/f3+/f39/v39/f7+/v7+/v7+//78+//+7eX//tjG//60kf/+mmz//pFf//6M + WP/+jFj//oxY//6MWP/+jFj//oxY//6LV//+ilb//opV//6KVf/+i1b//oxX//6MV//+jFj//oxY//6M + WP/+jFj//oxX//6LV//+lmj//qiB//7Ltf/+9O///vv5//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//vHq//7Xxf/+tpb//pNi//6KVf/+jFj//oxY//6MWP/9i1f//YtX/v2KVv79jlr+/aF1/v27 + nP795dn+/fz8/v38/P79/f39/f39+/39/fj8/Pz1/f398Pz8/Ov8/Pzj/Pz82vz8/M/8/PzE/Pz8tvv7 + +6f7+/uW+/v7hfr6+nP8/Pxh/Pz8UPv7+0D6+voy+Pj4JvX19Rvy8vIT6urqDN/f3wi/v78Ef39/AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9vb2HPj4 + +CX6+voy+/v7QPz8/FD8/Pxh/Pz8dPv7+4f9/f2Z/Pz8q/z8/Lv8/PzJ/Pz81/z8/OD9/f3p/f397/z8 + /PX9/f34/fz7+v337/z98uL9/OnO/v3lwv795L7+/efG/v3u2P799en+/fz6/v39/f79/f3+/f39/v39 + /f7+9vL//uzk//7RvP/+uJf//qJ3//6SYf/+jlv//oxY//6MWP/+jFj//oxY//6LV//+i1X//php//6n + gP/+so///rqa//6ngP/+l2j//pBe//6LV//+jFf//oxY//6MWP/+jFj//otX//6QXv/+mGr//rGN//7O + t//+5dn//vv5//79/P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+8u3//trJ//65mv/+k2L//opV//6M + WP/+jFj//YtX//2KV//9i1f+/YpW/v2OWv79n3P+/bmZ/v3k2P79/Pv+/f38/f39/fv9/f35/Pz89f39 + /fD9/f3p/Pz84vz8/Nf8/PzM/Pz8v/z8/LL8/Pyj+/v7k/v7+4L6+vpx/Pz8X/z8/E/7+/tA+vr6M/j4 + +Cb29vYc8vLyFO3t7Q7f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAH9/fwK/v78E39/fCOjo6Avy8vIT9fX1Gvj4+CX6+vox+/v7P/z8/E/8/Pxh/Pz8dPv7 + +4f7+/ua/Pz8rPz8/Lz8/PzL/Pz81/z8/OL9/f3p/f398Pz8/PT9/f33/f39+v38/Pz9/Pz9/fz7/v38 + +/79/fv+/f39/v39/f79/f3+/f39/v39/f79/f3+/fz7/v7s5P/+2sn//raU//6Za//+kV///oxY//6M + WP/+jFj//oxY//6MWP/+jFj//oxX//6MV//+pn3//sWr//7ZyP/+593//sSq//6lff/+lmb//otX//6M + V//+jFj//oxY//6MWP/+jFj//otX//6KVf/+mGj//qmB//7Ot//+9O///vn3//7+/v/+/v7//v7+//7+ + /v/+/v7//v38//7x6//+2sn//rma//6TY//+ilb//oxX//6LV//9i1f+/YtX/v2LV/79i1f+/Y5c/v2f + dP79uJn+/ePY/v38+/39/Pz8/f39+f39/fb8/Pzx/Pz86/z8/OL8/PzY/Pz8y/z8/L78/Pyv/Pz8oPv7 + +4/7+/t/+vr6bvz8/F37+/tN+/v7Pvr6+jH4+Pgl9fX1G/Ly8hPq6uoM39/fCL+/vwR/f38CAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr + 6w3y8vIT9vb2HPj4+CX6+voy+/v7QPz8/FD8/Pxh/Pz8dPv7+4f9/f2Z/Pz8q/z8/Lv8/PzJ/f391vz8 + /N/8/Pzo/Pz87fz8/PL9/f32/fz8+f39/fr9/Pz8/fz8/f39/f39/f3+/f39/v39/f79/f3+/f39/v33 + 9P797+j+/dG+//22lv/+onj//pJg//6OW//+jFj//oxY//6MWP/+jFj//otX//6LVf/+lmb//qV8//7D + qP/+49f//u3l//707//+4NP//sqz//6sh//+lmX//o9c//6LV//+jFf//oxY//6MWP/+jFf//otX//6R + Xv/+mGj//rGN//7Ntf/+5dn//vv5//79/P/+/v7//v7+//76+P/+7eX//tnI//6+oP/+pn7//pBf//6L + V//9i1f//YpX//2LV/79i1f+/YxY/v2QXv79mWv+/bOS/v3Ouf797OT9/f39+/39/fn9/f32/Pz88vz8 + /Ov8/Pzj/Pz82Pz8/Mv8/Py8/Pz8rf39/Zz7+/uM+/v7e/z8/Gr8/Pxa/Pz8Svv7+zz5+fkv+Pj4JfX1 + 9Rvy8vIT6+vrDd/f3wjMzMwFf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E39/fCOrq6gzy8vIT9fX1G/j4+CX6+vox+/v7P/z8 + /FD8/Pxh/Pz8dPv7+4f7+/uZ/Pz8q/z8/Lr8/PzJ/Pz81fz8/N/8/Pzm/Pz87Pz8/PH8/Pz1/f399/39 + /fn9/f37/f39/P39/f39/f3+/f39/v39/f79/f3+/e/o/v3f0f79uZv+/Zdq//6RYP/+jFj//oxY//6M + WP/+jFj//oxY//6MWP/+jVn//o9b//6kev/+waT//t7P//78+//+/v3//v7+//739P/+6uH//sSp//6m + fP/+lmX//oxY//6MWP/+jFj//oxY//6MWP/+jFj//otX//6KVf/+mWr//qqC//7Puf/+8On//vj1//79 + /P/++/r//vLs//7by//+wqX//qV8//6WZv/+jlv//otY//2KV//9i1f+/YtX/v2MWf79j1z+/Zhq/v2n + gP79yLD+/eTY/f308Pz9/f36/f399/39/fL8/Pzt/Pz85Pz8/Nr8/PzN/Pz8vvz8/K37+/uc+/v7iv39 + /Xj8/Pxn/Pz8Vvv7+0f6+vo5+fn5Lff39yL19fUZ8fHxEurq6gzf398IzMzMBX9/fwIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ + fwLMzMwF39/fCOvr6w3y8vIT9fX1G/j4+CX6+voy+/v7QPz8/FD8/Pxh/Pz8c/v7+4b7+/uY/Pz8qfz8 + /Ln8/PzG/Pz80v39/dv8/Pzj/f396f39/e78/Pzy/Pz89f39/fj9/f36/f39/P39/f39/f3+/f38/v38 + /P794NL+/cGl/v2mf/79jl7//o1a//6MWP/+jFj//oxY//6MWP/+jFf//otX//6WZ//+qIH//sOo//7i + 1P/+8er//v39//7+/v/+/v7//vz6//718f/+4tT//sqy//6rhP/+lmb//o5b//6LVv/+jFf//oxY//6M + WP/+jFf//otX//6RXv/+l2j//rGO//7MtP/+5dr//vby//7t5f/+3Mz//r+i//6pgf/+mWr//pBe//2M + Wf/9ilf//otX/v2LV/79jFf+/ZFf/v2Yaf79rYn+/cSq/v3f0f398+78/Pn3+/39/fj8/Pz0/f397vz8 + /Ob8/Pzc/Pz8z/z8/MD7+/uw+/v7nfv7+4r9/f13/Pz8ZPz8/FT7+/tE+vr6N/n5+Sv39/ch9PT0GPHx + 8RLr6+sN39/fCMzMzAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E39/fCOrq6gzy8vIT9fX1G/j4 + +CX6+vox+/v7QPz8/E/8/Pxh+vr6c/v7+4X7+/uW+/v7p/z8/LX8/PzD/Pz8zvz8/Nj8/Pzg/Pz85/z8 + /Oz8/Pzx/Pz89P39/ff9/f36/f39/P39/f39/Pv+/fv6/v3TwP79qID+/Zdp/v2IVf/9ilf//oxY//6M + WP/+jFj//oxY//6LV//+ilb//p5z//6/o//+3M3//vn2//7+/f/+/v7//v7+//7+/v/+/v7//v39//73 + 9P/+593//sSo//6of//+lmb//o1a//6MWP/+jFf//oxY//6MWP/+jFj//otX//6LVv/+mmz//qyG//7M + tf/+4NL//tTB//7Cpv/+p3///pZm//6PXP/+jFj//YpX//2LV/79i1f+/Y1Z/v2PXP79mmz+/aZ+/v3D + qf793tD+/fDq/f39/fv9/f34/Pz89f39/e/8/Pzo/Pz83/z8/NL8/PzE/Pz8svz8/KD9/f2M/f39ePz8 + /GX8/PxS+/v7Q/r6+jT5+fkp9vb2HvPz8xbv7+8Q6OjoC9/f3wjMzMwF////AgAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9fX1G/j4+CX6+vox+/v7P/z8/E/8/Pxg/Pz8cf39 + /YL8/PyU/Pz8o/z8/LH8/Py+/Pz8yvz8/NP8/Pzc/Pz84/z8/Or9/f3v/Pz89P39/ff9/f36/f39/P38 + +/39+vj+/cu0/v2Za/79kV/+/opV/v2KVv/9i1f//oxY//6MWP/+jFj//otX//6KVf/+pHz//tC7//7p + 4P/++/r//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vz7//718P/+49b//suy//6qgv/+lmb//o1a//6L + Vv/+jFj//oxY//6MWP/+jFf//oxX//6RXv/+l2j//qR7//6shv/+pn7//p90//6WZv/+j13//YxZ//2L + V//9ilf//YtX/v2MV/79kV/+/Zdo/v2sh/79wab+/dvM/v3y7P39+Pb7/f39+Pz8/PX9/f3w/f396fz8 + /N/8/PzV/Pz8xvz8/Lb8/Pyj+/v7kP39/Xv8/Pxn/Pz8VPv7+0P6+vo0+fn5KPb29h7z8/MW7u7uD+Xl + 5Qrb29sHv7+/BH9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E39/fCOrq + 6gzy8vIT9fX1G/j4+CX6+vox+/v7Pvv7+078/Pxe+vr6b/v7+3/7+/uP/Pz8nvz8/Kz8/Py5/Pz8xPz8 + /M/8/PzZ/f394f39/en9/f3v/Pz89P39/fj9/f36/fz7/P37+f39zLX+/Ztt/v2RX/79iVT+/YpW/v2K + V//9i1f//oxY//6MWP/+i1f//opV//6jev/+zLX//uXZ//749f/+/Pz//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v38//738//+5dn//sOn//6pgv/+lmb//o5b//6MWP/+jFf//oxY//6MWP/+jFj//oxX//6L + V//+jVn//o5b//6MWP/+i1f//otY//6LWP/9ilf//YtX/v2LV/79jVr+/Y9d/v2abf79p37+/cGl/v3a + y/797ef9/f39+/39/fj8/Pz1/f398P39/en9/f3h/f391vz8/Mn8/Py5+/v7p/z8/JT7+/t/+vr6a/z8 + /Ff7+/tF+vr6NPn5+Sj29vYd8/PzFe3t7Q7j4+MJ1NTUBr+/vwR/f38CAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9fX1G/j4+CT6+vow+/v7Pfv7 + +0v8/Pxa/Pz8av39/Xn7+/uJ/f39l/z8/KX8/Pyz/Pz8v/z8/Mz8/PzX/Pz84P39/en9/f3w/Pz89f39 + /fj9/Pz7/fv7/f3Xxv79sY3+/Ztt/v2IU/79ilX+/YpX//2KV//9i1f//oxY//6MWP/+i1f//php//6t + iP/+y7T//u3m//749f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vz7//707//+5dn//sqy//6n + f//+lmb//o1Y//6MV//+jFj//oxY//6MWP/+jFj//oxX//6MWP/+jFj//oxY//6MWP/9i1f//YpX//6L + V/79i1f+/YxX/v2RX/79l2n+/aqF/v3Ao/792cn+/fLu/f349vv9/f35/Pz89f39/fD8/Pzq/Pz84vz8 + /Nf8/PzK/Pz8u/z8/Kr7+/uW/f39gvz8/G75+flb+/v7R/r6+jf5+fko9vb2HvPz8xXt7e0O4+PjCdTU + 1AaqqqoDf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ + fwLMzMwF39/fCOrq6gzx8fES9fX1Gvj4+CP5+fku+vr6Ovv7+0j8/PxW/Pz8ZPz8/HP9/f2C+/v7kfz8 + /KD8/Pyu/Pz8vfz8/Mr8/PzX/f394fz8/Or8/Pzx/f399v39/fn9/Pz8/eXa/f3Mtf79rYn+/ZJh/v2O + W/79i1b+/YtW/v2KV//9i1f//otY//6LWP/+kV///plr//6zkP/+0r///ufc//759//+/Pv//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//vz7//738//+49b//sOo//6rhP/+lmX//o9c//6MWP/+jFj//oxY//6M + WP/+jFj//oxX//6LV//+i1f//otX//2KV//9i1f+/YtX/v2NWv79kF7+/Ztt/v2ogv79wKT+/dnI/v3r + 5P39/f37/f39+Pz8/PX9/f3w/Pz86vz8/OL8/PzX/Pz8y/z8/Lz8/Pys+/v7mf39/YX8/Pxx/Pz8Xfv7 + +0v6+vo5+fn5LPf39x/z8/MW7e3tDuPj4wnMzMwFqqqqA////wEAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOrq6gzx8fES9PT0GPf3 + 9yH5+fkr+vr6N/v7+0P8/PxQ/Pz8Xfz8/Gz9/f17/f39i/v7+5z8/Pyt/Pz8vfz8/Mz8/PzZ/Pz85Pz8 + /Oz8/Pzz/f399/z8/Pv99fL8/evk/v3Hrv79pXz+/ZVl/v2KVP79ilb+/YpX//2KV//9i1f//oxY//6N + Wf/+j1v//ptt//6rhf/+zbb//vHr//749v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v38//71 + 8P/+59z//sqy//6lfP/+lmb//oxX//6MV//+jFj//oxY//6MWP/+jFj//oxY//2LV//9ilf//otX/v2L + V/79jFf+/ZBe/v2Xaf79qoT+/cCk/v3Zyf798+/9/fn3+/39/fn8/Pz1/Pz88fz8/Or8/Pzi/Pz82Pz8 + /Mv8/Py9/Pz8rPv7+5r9/f2H+vr6dPz8/GD7+/tN+/v7PPn5+Sz39/ch8/PzFu7u7g/j4+MJ1NTUBqqq + qgN/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAX9/fwLMzMwF39/fCOrq6gzw8PAR9PT0GPf39x/5+fkp+vr6Mvv7+z78/PxK/Pz8Wfz8 + /Gf9/f14/f39ifv7+5z8/Pyu/Pz8v/z8/M78/Pzc/Pz85v39/e78/Pz0/f39+f37+vv9+Pb9/d/R/f3E + qv79qoP+/ZRj/v2OW/79ilb+/YtX/v2KV//9i1f//otX//6LV//+kV7//pdo//6zkP/+0r7//ufc//75 + 9//+/Pv//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vz6//738//+4dT//sOp//6rhf/+lWT//o9c//6M + V//+jFf//oxY//6MWP/+i1f//YpX//2LV/79i1f+/Y1a/v2QX/79m23+/amE/v2/pP792cj+/Ovj/f39 + /Pv9/f34/Pz89f39/fD8/Pzr/Pz84vz8/Nj8/PzL/Pz8vfr6+q38/Pyb/f39iPz8/HX8/Pxi/Pz8UPv7 + +z76+vow9/f3IvX19Rnv7+8Q6OjoC9TU1AaqqqoD////AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E29vbB+Xl + 5Qru7u4P8/PzFfb29hz4+Pgj+fn5Lvb29jn7+/tG/Pz8VPz8/GX9/f13+/v7i/v7+5/8/Pyy/Pz8w/z8 + /NP8/Pzf/f396f39/fD9/f32/f39+f38/Pz99fH9/eng/v3Eqv79pXv+/ZRj/v2KVf79i1b+/otX/v2K + V//9i1f//oxY//6MWP/+jVn//ppr//6ogf/+zrj//vLs//759v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v39//718f/+6d///siv//6hd//+lWX//otW//6MV//+jFj//YtX//2KV//9ilf//YtX/v2M + V/79kF3+/Zdp/v2og/79v6T+/djI/v3z7v39+vj7/f39+fz8/PX8/Pzy+/v76/z8/OP8/PzY/Pz8zPz8 + /L38/Pyt+/v7nPv7+4n9/f12/Pz8Y/z8/FD7+/tA+vr6Mfj4+CX19fUZ8fHxEujo6Avb29sHv7+/BH9/ + fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E1NTUBuXl5Qrt7e0O8vLyE/X19Rn39/ch+fn5K/r6 + +jf7+/tE/Pz8Vfz8/Gb7+/t7/f39j/z8/KT8/Py3/Pz8yP39/db8/Pzi/Pz86/z8/PL8/Pz3/f39+v37 + +vz99vP9/d7P/v3Fq/79qYP+/ZVl/v2OW/79ilb+/YtX/v2KV//9i1f//otX//6LV//+kV7//pdo//6z + kf/+0Lv//ubb//759v/+/Pv//v7+//7+/v/+/v7//v7+//7+/v/+/v7//vv6//738//+4NL//sSq//6r + hv/+lGP//o9c//6KV//9ilf//YtX/v2LV/79jVn+/ZFf/v2abf79qoX+/b+k/v3YyP796uL9/fv5+/39 + /fj9/f32/f398Pz8/Ov8/Pzi/Pz82Pz8/Mv8/Py9/Pz8rfv7+5z7+/uJ/f39dvr6+mT8/PxS+/v7Qfr6 + +jP4+Pgl9vb2HPHx8RLr6+sN39/fCL+/vwR/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/ + fwKqqqoDzMzMBd/f3wjo6OgL7u7uD/Pz8xb29vYe+fn5Kfr6+jX7+/tF/Pz8Vv39/Wv9/f2A+/v7lvz8 + /Kr8/Py9/Pz8zf39/dv9/f3l/f397vz8/PT9/f35/f38+/38+/399/T+/erg/v3DqP79pHv+/ZJh/v2K + Vf79i1b+/YtX/v2KV//9i1f//oxY//6MWP/+jFf//phq//6ngP/+0Lv//vLs//759//+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//728v/+7eT//set//6fdP/9k2P//YhV//2KVv79i1f+/YxX/v2P + XP79l2n+/aeA/v2/pP792Mj+/fPu/f38+vv9/f35/Pz89vz8/PL8/Pzr/Pz84/z8/Nj8/PzM/Pz8vfz8 + /K77+/uc+/v7if39/Xb8/Pxj/Pz8Ufv7+0H6+voy+Pj4JvX19Rvy8vIT6urqDN/f3wi/v78Ef39/AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwKqqqoDv7+/BNvb2wfl5eUK7+/vEPPz + 8xb39/cf+fn5Kvr6+jj4+PhJ/Pz8XPz8/HH9/f2G/Pz8m/v7+7D8/PzB/Pz80fz8/N38/Pzn/f397vz8 + /PX9/f34/fz8+/37+vz99O/+/d7Q/v3GrP79qYP+/ZZm/v2NWv79ilb+/YtX/v2KV//9i1f//otX//6L + V//+kV///phq//60kv/+z7n//ufc//759v/+/Pv//v7+//7+/v/+/v7//v7+//7+/v/9/f3//fr5//32 + 8//939H//cWs//2sh//9lmf+/Y5c/v2KVv79j13+/Zlr/v2qhf79v6T+/dnJ/v3r4/39+ff7/f39+Pz8 + /PX9/f3w/Pz86/z8/OL8/PzY/Pz8y/z8/L38/Pyt+/v7nPv7+4n9/f12+vr6ZPz8/FL7+/tC+vr6M/j4 + +Cf29vYc8vLyE+vr6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAABqqqqA8zMzAXl5eUK7e3tDvPz8xb39/cf+fn5LPv7+zv7+/tO/Pz8Yvr6 + +nf7+/uM+/v7ovz8/LX8/PzG/Pz81Pz8/OD8/Pzo/f398Pz8/PX9/f35/f39+/38+/39+ff+/ejf/v3B + pv79pHv+/ZFf/v2KVf79i1b+/YtX/v2LV/79i1f//oxY//6LV//+jFf//php//6pg//+07///vLr//76 + 9//+/v7//v7+//7+/v/9/f3//f39/v39/f79/f3+/f39/v338/797uf+/civ/v2ke/79lGX+/YtY/v2U + Zf79pHz+/b+j/v3ayv398+79/f39+/39/fn8/Pz1/Pz88fz8/Or8/Pzj/Pz82Pz8/M38/Py+/Pz8rvv7 + +5z7+/uJ/f39dvz8/GP8/PxR+/v7Qfr6+jL4+Pgm9vb2HPLy8hPq6uoM39/fCL+/vwR/f38CAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CqqqqA9TU + 1Abl5eUK7+/vEPT09Bj4+Pgj+vr6Mfv7+0H8/PxT+vr6aP39/Xz7+/uS/Pz8pfz8/Lj8/PzH/Pz81fz8 + /OD9/f3p/f397/z8/PX9/f34/fz8+/38+/z98u7+/d/R/v3Grf79qID+/ZZn/v2MWf79ilb+/YtX/v2K + V//9i1f//otX//6MWP/+kV///pps//6zkv/+zbf//uje//759v/+/fz//v7+//39/f/9/f3+/f39/v39 + /f79/f3+/fr5/v338/7949f+/dC8/v3Dqf79u57+/cKp/v3OuP393tD9/ezl/P359/r9/f34/Pz89f39 + /fD8/Pzq/f394fz8/Nj8/PzL/Pz8vfz8/K37+/uc+/v7if39/Xb8/Pxk/Pz8Uvv7+0L6+voz+Pj4J/b2 + 9h3y8vIU7e3tDt/f3wjMzMwFf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqqqqA9TU1Abo6OgL8PDwEfX19Rv4+Pgm+vr6Nfv7 + +0X8/PxY/Pz8bPv7+4L8/PyV/Pz8qfz8/Ln8/PzK/f391vz8/OL9/f3p/f398Pz8/PX9/f34/f39+/37 + +/39+ff+/eXa/v3ApP79pX3+/ZFf/v2LV/79i1f+/YtX/v2LV/79i1f//oxY//6LV//+jVn//pdp//6r + h//+1MD//u/n//759v/+/f3//f39//39/f79/f3+/f39/v39/f79/f3+/f39/v36+P799vL+/ezl/v3n + 3v397eX8/fLt/P35+Pv9/f36/f399/z8/PT9/f3w/Pz86vz8/OP8/PzY/Pz8zPz8/L38/Pyu+/v7nPv7 + +4n9/f12/Pz8Y/z8/FL7+/tB+vr6M/j4+Cb29vYc8vLyFOrq6gzf398ImZmZBX9/fwIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/f38CqqqqA9vb2wfq6uoM8vLyFPb29h75+fkq+vr6Ofz8/Er8/Pxc/Pz8cPv7+4T9/f2X/Pz8qfz8 + /Lv8/PzJ/Pz81/z8/OD9/f3p/f398Pz8/PX9/f34/fz8+/38+/z98ez+/eDT/v3Grf79p37+/ZZn/v2L + V/79ilb+/YtX/v2KV//9i1f//otX//6MWP/+kF///ppu//6zkP/+zbb//unf//749f/9+/v//f39/v39 + /f79/f3+/f39/v39/f79/f3+/Pv6/v36+P399vP8/fTw+/328/r9+Pb5/fz79/z8/PX8/Pzy/Pz87fz8 + /Oj8/Pzg/Pz81/z8/Mr8/Py9/Pz8rPv7+5z7+/uJ/f39dvr6+mT8/PxS+/v7Qvr6+jP4+Pgn9vb2HfLy + 8hTb29sO39/fCMzMzAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CzMzMBd/f3wjt7e0O8/PzFvf3 + 9yD5+fkt+/v7PPv7+0z6+vpf/Pz8cvv7+4b7+/uZ/Pz8q/z8/Lv8/PzL/f391vz8/OL8/Pzq/Pz88fz8 + /PX9/f34/f39+/z7+v39+Pb+/eLW/v3ApP79p37+/ZFf/v2MWf79i1b+/YtX/v2KV//9i1f//oxY//6L + V//+jlv//phq//6viv/+1cH//uzj//339P/9/Pz+/f39/v39/f79/f3+/f39/v39/f39/f39/f39/P39 + /fr9/f35/f399/z8/PX8/Pzz/f397/z8/Ov9/f3l/Pz83/z8/NX8/PzK/Pz8vPz8/K38/Pyb+/v7if39 + /Xb8/Pxj/Pz8Uvv7+0H6+voz+Pj4Jvb29hzy8vIU6+vrDd/f3wjMzMwFf39/AgAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAGqqqoD1NTUBuXl5Qrv7+8Q9fX1Gfj4+CP5+fkv+/v7Pvv7+078/Pxg/Pz8c/39 + /Yb7+/uZ/Pz8q/z8/Lz7+/vK/Pz81/39/eH8/Pzq/f398Pz8/PX9/f34/fz8+/38+/z98ev+/eLW/v3G + rP79pXv+/ZZm/v2KVf79ilb+/YtX/v2KV//9i1f//otX//6MWf/+kF3//ptu//6yjv/+zLX//erh//33 + 9f79/Pz+/f39/v39/f79/f39/f39/f39/fv9/f35/f399/z8/PX8/Pzy/f397/z8/Ov8/Pzn/f394fz8 + /Nr8/PzS/Pz8xvz8/Lr8/Pyq+/v7mvv7+4j8/Px1/Pz8Y/z8/FL7+/tC+vr6M/j4+Cf29vYc8vLyFOvr + 6w3f398IzMzMBX9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E29vbB+jo + 6Avx8fES9fX1Gvj4+CT6+vow+/v7P/z8/E/8/Pxh/Pz8dPv7+4f9/f2Z/Pz8rPz8/Lv8/PzK/f391v39 + /eH9/f3p/f398Pz8/PX9/f34/f39+/38+/z9+Pb+/eDS/v2/ov79p3/+/ZFf/v2NWv79i1b+/YtX/v2K + V//9i1f//otX//6KVv/+jlv//phq//6wjf/908D//enh/v349v79/Pv+/f39/f39/fz9/f38/f39+f39 + /ff8/Pzz/f398Pz8/Ov8/Pzn/Pz84vz8/Nz8/PzV/Pz8zPz8/ML8/Py2/Pz8qPv7+5j7+/uH+vr6dfz8 + /GL8/PxS+/v7Qfr6+jP4+Pgm9vb2HPLy8hTr6+sN39/fCMzMzAX///8CAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E39/fCOrq6gzx8fES9fX1Gvj4+CX6+vox+/v7QPz8 + /FD8/Pxh/Pz8dPv7+4f7+/ua/Pz8q/z8/Lz8/PzK/Pz81/39/eH9/f3p/Pz88Pz8/PT9/f34/fz8+/z7 + +v398uz9/eTY/v3Fq/79o3n+/ZVl/v2KVf79ilb+/otX/v2KV//9ilf//YpX//2LWP/9jlz//Zpu//6v + jP79zbf+/e7o/v349v79/Pz9/f39+/39/fn9/f32/Pz88/39/e78/Pzo/Pz84vz8/Nz8/PzV/Pz8zvz8 + /MX8/Py7+/v7sPv7+6L8/PyU+/v7hPr6+nP8/Pxh/Pz8UPv7+0H6+voz+Pj4J/b29hzy8vIU6+vrDd/f + 3wjMzMwFf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ + fwLMzMwF39/fCOrq6gzx8fES9fX1G/j4+CX6+voy+/v7P/z8/FD8/Pxh/Pz8dPv7+4f9/f2Z/Pz8q/z8 + /Lv8/PzK/f391v39/eH9/f3p/f397/z8/PT9/f34/f39+v37+vz9+Pb9/d7Q/f2/o/79qID+/ZFg/v2O + Wv79i1b+/YtX/v2LV/79i1f+/YtW/v2KVf79jlz+/Zdo/v22lv794NL+/fHr/f38+/z9/f35/f399/z8 + /PL8/Pzt/Pz85vz8/N/8/PzX/Pz8z/z8/Mb8/Py9/Pz8svv7+6f8/Pyb/f39jfv7+3/9/f1v/Pz8X/z8 + /E/7+/tA+vr6M/j4+Cb29vYc8vLyFOvr6w3f398IzMzMBf///wIAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOrq6gzy8vIT9fX1G/j4 + +CX6+vox+/v7QPz8/E/8/Pxh/Pz8dPv7+4f7+/ua/Pz8q/z8/Lz8/PzK+/v71/39/eH9/f3p/f398Pz8 + /PT9/f34/f39+f38+/v98u38/efc/f3Eqf39onj+/ZRk/v2KVf79ilb+/YtX/v2LV/79i1f+/YtW/v2L + V/79jFn+/aZ//f3Mtf395dr8/fv6+v39/ff8/Pzz/Pz87fz8/Of9/f3e/Pz81Pz8/Mr8/Py//Pz8tPz8 + /Kn8/Pye/f39kf39/YX9/f13/Pz8afz8/Fv7+/tM+/v7Pvr6+jH4+Pgm9fX1G/Ly8hTr6+sN39/fCMzM + zAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9fX1G/j4+CX6+voy+/v7P/z8/FD8/Pxh/Pz8dPv7 + +4f9/f2Z/Pz8q/z8/Lv8/PzJ/f391vz8/OD8/Pzo/f397vz8/PP8/Pz2/f39+P37+vn9+fb6/dzN+/3A + pfz9p4H9/ZJj/f2NW/39ilX+/YpW/v2LVv79i1b+/YtZ/f2MWv39pn78/cu1+/3k2fn9+/r3/Pz88/39 + /e/8/Pzn/f393vz8/NP8/PzI/Pz8u/z8/K39/f2g/Pz8lPv7+4j9/f17/Pz8bvz8/GL8/PxV+/v7SPv7 + +zv5+fkv+Pj4JPX19Rvy8vIT6+vrDd/f3wjMzMwF////AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E39/fCOrq + 6gzy8vIT9fX1G/j4+CX6+vox+/v7QPz8/E/8/Pxh/Pz8dPv7+4f7+/uZ/Pz8q/z8/Lv8/PzJ/Pz81fz8 + /N/8/Pzm/Pz87P39/fD8/Pz0/fz89v38/Pf98+35/efd+v3Dqfv9onr8/ZNj/P2IVP39iVb9/YpX/f2K + V/39j1z8/ZVm+/2wjvr918T4/evi9vz6+vT9/f3u/f396fz8/N/9/f3W/Pz8yPz8/Lr8/Pyr/Pz8m/39 + /Yz9/f1+/Pz8cfz8/GT8/PxY+/v7TPv7+0H6+vo2+fn5K/f39yL19fUZ8fHxEtjY2A3f398IzMzMBX9/ + fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9vb2HPj4+CX6+voy+/v7P/z8 + /FD8/Pxh+vr6dP39/Yb7+/uY/Pz8qfz8/Ln8/PzH/Pz80v39/dv8/Pzj/Pz86Pz8/Oz9/f3v/Pz88vz5 + +PT99fL2/dzN9/zBqPn9qYT5/ZZo+v2PXfr9jlv6/ZNj+v2dcvn9q4f4/cWs9vzk2vT88+3x/fz67vz8 + /Of8/Pzg/f391vz8/Mr8/Py7/Pz8rPv7+5r7+/uJ/f39efz8/Gr8/Pxd/Pz8UPv7+0X6+vo6+vr6Mfn5 + +Sj39/cf9PT0GPDw8BHq6uoM39/fCMzMzAX///8CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ + fwK/v78E39/fCOrq6gzy8vIT9fX1Gvj4+CX6+vow+/v7P/z8/E/8/Pxh/Pz8c/39/YX7+/uX/Pz8qPz8 + /Lf8/PzE/Pz8z/z8/Nj9/f3e/Pz85Pz8/Oj8/Pzr/f387v38/PD89fHy/Onf9P3Grvb9qYP3/ZZn+P2R + X/j9nnP3/bCO9vzHr/T83tDy/fXy8Pz7++v8/Pzn/Pz83/z8/Nf8/PzL/Pz8vvz8/K77+/uc/f39if39 + /Xf8/Pxm/Pz8V/v7+0n7+/s9+vr6Mvn5+Sr39/ci9fX1G/Ly8hTu7u4P5eXlCtvb2wfMzMwFf39/AgAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr6w3y8vIT9vb2HPj4 + +CX6+voy+/v7P/z8/FD8/Pxg+vr6cv39/YP8/PyU/Pz8pPz8/LL8/Py9/Pz8x/z8/M/9/f3W/f392/z8 + /OD8/Pzk+/v76Pz5+Ov99PDu/eDT8PzOufL8waby/L2g8/zGrfL90sDw/eDU7vzt5uv8+vnn/Pz84vz8 + /Nz8/PzT/Pz8y/z8/L77+/uw+/v7n/v7+439/f15/Pz8Z/z8/Fb7+/tH+vr6Ovn5+S/4+Pgl9vb2HvT0 + 9Bfx8fES6+vrDeXl5Qrb29sHv7+/BH9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAH9/fwK/v78E39/fCOjo6Avy8vIT9fX1Gvj4+CX6+vow+/v7P/v7+078/Pxe/f39b/v7 + +4D7+/uQ/Pz8nvz8/Kv8/Py2/Pz8v/z8/Mf8/PzN/Pz80/z8/Nn9/f3e/Pz84vz8/Ob9/Prp/Pn37Pz1 + 8u389PHt/Pb07Pz49+r8+vrn/Pz84v39/d78/PzX/Pz80Pz8/Mf8/Py9/Pz8r/z8/KH7+/uP+/v7ffz8 + /Gn8/PxX+/v7Rvr6+jj5+fkr9/f3IfX19Rny8vIT7e3tDuXl5Qrb29sHzMzMBaqqqgN/f38CAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwLMzMwF39/fCOvr + 6w3y8vIT9fX1G/j4+CX6+vox+/v7Pvv7+038/Pxc/f39a/v7+3r7+/uI/f39lPz8/KD8/Pyp/Pz8svz8 + /Lr8/PzC/Pz8yPz8/M/8/PzU/Pz82vz8/N38+/vg/Pn34vz59+L9+fnh/fr63vz7+9r8/PzU/Pz8z/z8 + /Mf8/Py//Pz8tfz8/Kv7+/ud+/v7j/v7+376+vpt/Pz8Wvv7+0n6+vo6+fn5Lff39yH19fUZ8fHxEuvr + 6w3j4+MJ1NTUBr+/vwSqqqoDf39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E39/fCOjo6Avx8fES9fX1Gfj4+CP5+fku+/v7O/v7 + +0n8/PxW/Pz8ZPz8/HL9/f1++/v7ivz8/JT8/Pye+/v7p/v7+7D8/Py4/Pz8v/z8/Mb8/PzN/Pz80fz8 + /NT9/f3W/f391vz8/NX8/PzR/Pz8zPz8/Mb8/Py//Pz8tvz8/K38/Pyj+/v7mP39/Yr9/f18/Pz8bPz8 + /Fz7+/tL+/v7O/n5+S739/ci9PT0GPDw8BHo6OgL29vbB8zMzAWqqqoDAAAAAQAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ + fwLMzMwF39/fCOvr6w3x8fES9fX1Gvf39yL5+fkt+vr6OPv7+0T8/PxQ/Pz8XPz8/Gf6+vpz+/v7ffv7 + +4f9/f2Q+/v7mvz8/KP8/Pyr/Pz8s/z8/Lr8/Py//Pz8w/z8/MX8/PzF/Pz8xPz8/MD8/Py6/Pz8s/z8 + /Kv7+/ui+/v7mP39/Y37+/uC/Pz8dfz8/Gj8/Pxa+/v7S/v7+z35+fkv+Pj4JPX19Rrx8fES6urqDNvb + 2wfMzMwFf39/Av///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E39/fCOrq6gzw8PAR9PT0F/f3 + 9x/5+fko+vr6Mvv7+zz7+/tH/Pz8Ufz8/Fz8/Pxm/Pz8cP39/Xr7+/uE+/v7jvv7+5f7+/uf+/v7p/z8 + /K38/Pyx/Pz8s/z8/LT8/Pyx/Pz8rfz8/Kj8/Pyg+/v7l/v7+477+/uE/f39ePz8/Gz8/Pxg/Pz8VPv7 + +0j7+/s8+fn5L/j4+CT19fUb8vLyE+rq6gzf398Iv7+/BH9/fwIAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAX9/fwLMzMwF39/fCOjo6Avv7+8Q8/PzFvb29h34+Pgk+fn5Lfr6+jb7+/s++/v7R/z8 + /FH8/Pxa/Pz8ZPz8/G77+/t4+/v7gfv7+4n7+/uR+/v7lvz8/Jv7+/ud+/v7nfz8/Jv7+/uX+/v7kvv7 + +4r9/f2B/f39ePz8/G78/Pxj/Pz8WPv7+077+/tD+vr6OPn5+S74+Pgk9fX1G/Ly8hTr6+sN4+PjCczM + zAV/f38CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fwK/v78E29vbB+Xl + 5Qrt7e0O8vLyE/X19Rn39/cf+Pj4Jvn5+S36+vo1+/v7Pfv7+0b8/PxP/Pz8Wfz8/GL9/f1r+vr6c/v7 + +3r7+/t/+/v7g/v7+4X7+/uF+/v7g/v7+4D7+/t7/Pz8c/39/Wv8/Pxi/Pz8Wfz8/E/7+/tF+/v7PPr6 + +jP5+fkq9/f3IfX19Rry8vIT6+vrDePj4wnMzMwFqqqqAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/fwK/v78E1NTUBuPj4wnq6uoM8PDwEfPz8xX19fUa9/f3IPj4 + +Cb5+fku+vr6Nfv7+z37+/tF+/v7Tfz8/FX8/Pxc/Pz8Yvr6+mf8/Pxq+vr6bPz8/Gz8/Pxq/Pz8Z/z8 + /GL8/Pxc/Pz8Vvv7+077+/tF+/v7Pfr6+jX5+fkt+Pj4Jfb29h709PQY8fHxEuvr6w3j4+MJ1NTUBqqq + qgN/f38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX9/ + fwK/v78E1NTUBuPj4wnq6uoM7+/vEPLy8hT19fUZ9vb2Hvj4+CX5+fks+vr6M/r6+jr7+/tC+/v7Sfz8 + /E/8/PxU/Pz8Wfz8/Fz8/Pxe/Pz8Xvz8/Fz8/PxZ/Pz8Vfz8/FD8/PxK+/v7Qvr6+jr6+voz+fn5K/j4 + +CT29vYe9PT0GPHx8RLr6+sN4+PjCdvb2we/v78Ef39/AgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////// + ///////////////////////4H///////////////////4Af//////////////////wAA//////////// + //////wAAD/////////////////wAAAP////////////////4AAAA////////////////4AAAAH///// + //////////8AAAAAf//////////////+AAAAAD///////////////AAAAAAP//////////////gAAAAA + B//////////////wAAAAAAP/////////////4AAAAAAB/////////////8AAAAAAAP////////////+A + AAAAAAB/////////////AAAAAAAAP////////////gAAAAAAAB////////////wAAAAAAAAP//////// + ///4AAAAAAAAB///////////8AAAAAAAAAP//////////+AAAAAAAAAB//////////+AAAAAAAAAAP// + ////////AAAAAAAAAAB//////////gAAAAAAAAAAP/////////gAAAAAAAAAAB/////////wAAAAAAAA + AAAP////////4AAAAAAAAAAAB////////8AAAAAAAAAAAAP///////+AAAAAAAAAAAAB////////AAAA + AAAAAAAAAP///////gAAAAAAAAAAAAB///////wAAAAAAAAAAAAAf//////4AAAAAAAAAAAAAD////// + 8AAAAAAAAAAAAAAf/////+AAAAAAAAAAAAAAD//////AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAH + /////wAAAAAAAAAAAAAAA/////8AAAAAAAAAAAAAAAH////+AAAAAAAAAAAAAAAA/////AAAAAAAAAAA + AAAAAH////wAAAAAAAAAAAAAAAA////8AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAA////gAAAAA + AAAAAAAAAAAH///wAAAAAAAAAAAAAAAAA///8AAAAAAAAAAAAAAAAAH//+AAAAAAAAAAAAAAAAAA//+A + AAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAB//AAAAAAAAAAAAAAAAAAAf/gAAAAAAAAAAAAAAAAA + AD/4AAAAAAAAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAB/gAAAAAAAAAAAA + AAAAAAAf4AAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAA/AAAAAAAAAAAAAAAAAAAAPwAAAAAAA + AAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAAAB4AA + AAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAAAAA + AA/AAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAH+AAAAAAAAAAAAAAAAAAAB/wAAAAAAAAAAAA + AAAAAAAf8AAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAB/+AAAAAAA + AAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAB//8A + AAAAAAAAAAAAAAAAA///gAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA + H///8AAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAB////8AAAAAAAAAAAAAAAA/////gAAAAAAAAAA + AAAAAf////8AAAAAAAAAAAAAAAP/////gAAAAAAAAAAAAAAP/////8AAAAAAAAAAAAAAH//////gAAAA + AAAAAAAAAD//////8AAAAAAAAAAAAAB///////gAAAAAAAAAAAAA///////8AAAAAAAAAAAAAf////// + /wAAAAAAAAAAAAP///////+AAAAAAAAAAAAD////////wAAAAAAAAAAAB/////////AAAAAAAAAAAA// + ///////4AAAAAAAAAAAf/////////AAAAAAAAAAAP/////////4AAAAAAAAAAH/////////+AAAAAAAA + AAD//////////wAAAAAAAAAB//////////+AAAAAAAAAA///////////wAAAAAAAAAf//////////8AA + AAAAAAAP///////////gAAAAAAAAH///////////8AAAAAAAAD////////////gAAAAAAAB///////// + ///8AAAAAAAA/////////////gAAAAAAAf////////////8AAAAAAAf/////////////gAAAAAAP//// + /////////8AAAAAAP//////////////gAAAAAP//////////////8AAAAAH///////////////gAAAAD + ///////////////8AAAAB////////////////gAAAA////////////////+AAAAf//////////////// + 4AAAP/////////////////gAAH/////////////////+AAH//////////////////4AH//////////// + ///////4P////////////////////////////////////////////////////w== + + \ No newline at end of file diff --git a/tools/GSDumpGUI/GSDumpGUI.csproj b/tools/GSDumpGUI/GSDumpGUI.csproj index 0b34e5ad20..232fe31f0c 100644 --- a/tools/GSDumpGUI/GSDumpGUI.csproj +++ b/tools/GSDumpGUI/GSDumpGUI.csproj @@ -1,129 +1,129 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {825E4311-652D-4A1E-8AA1-F6D81B186E33} - WinExe - Properties - GSDumpGUI - GSDumpGUI - v2.0 - 512 - Resources\AppIcon.ico - - - - - 3.5 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - x86 - true - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - true - x86 - - - - - - - - - - - - Form - - - frmMain.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - frmMain.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - - - - + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {825E4311-652D-4A1E-8AA1-F6D81B186E33} + WinExe + Properties + GSDumpGUI + GSDumpGUI + v2.0 + 512 + Resources\AppIcon.ico + + + + + 3.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + x86 + true + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + true + x86 + + + + + + + + + + + + Form + + + frmMain.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + frmMain.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + \ No newline at end of file diff --git a/tools/GSDumpGUI/GSDumpGUI.sln b/tools/GSDumpGUI/GSDumpGUI.sln index bed0a4844e..46ebfa0fb9 100644 --- a/tools/GSDumpGUI/GSDumpGUI.sln +++ b/tools/GSDumpGUI/GSDumpGUI.sln @@ -1,20 +1,20 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GSDumpGUI", "GSDumpGUI.csproj", "{825E4311-652D-4A1E-8AA1-F6D81B186E33}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Debug|Any CPU.Build.0 = Debug|Any CPU - {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Release|Any CPU.ActiveCfg = Release|Any CPU - {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GSDumpGUI", "GSDumpGUI.csproj", "{825E4311-652D-4A1E-8AA1-F6D81B186E33}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Debug|Any CPU.Build.0 = Debug|Any CPU + {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Release|Any CPU.ActiveCfg = Release|Any CPU + {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/tools/GSDumpGUI/Properties/Resources.resx b/tools/GSDumpGUI/Properties/Resources.resx index 157cfafd0f..effc4f3906 100644 --- a/tools/GSDumpGUI/Properties/Resources.resx +++ b/tools/GSDumpGUI/Properties/Resources.resx @@ -1,124 +1,124 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\AppIcon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\AppIcon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/tools/GSDumpGUI/Properties/Settings.settings b/tools/GSDumpGUI/Properties/Settings.settings index 29350f49b4..0d76066bf4 100644 --- a/tools/GSDumpGUI/Properties/Settings.settings +++ b/tools/GSDumpGUI/Properties/Settings.settings @@ -1,12 +1,12 @@ - - - - - - - - - - - + + + + + + + + + + + \ No newline at end of file diff --git a/tools/Utilities_vc2008.sln b/tools/Utilities_vc2008.sln index 38c1042c61..230c1258d1 100644 --- a/tools/Utilities_vc2008.sln +++ b/tools/Utilities_vc2008.sln @@ -1,26 +1,26 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bin2cpp", "bin2cpp\bin2c.vcproj", "{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GSDumpGUI", "GSDumpGUI\GSDumpGUI.csproj", "{825E4311-652D-4A1E-8AA1-F6D81B186E33}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.Build.0 = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.Build.0 = Release|Win32 - {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Debug|Win32.ActiveCfg = Debug|Any CPU - {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Debug|Win32.Build.0 = Debug|Any CPU - {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Release|Win32.ActiveCfg = Release|Any CPU - {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Release|Win32.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bin2cpp", "bin2cpp\bin2c.vcproj", "{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GSDumpGUI", "GSDumpGUI\GSDumpGUI.csproj", "{825E4311-652D-4A1E-8AA1-F6D81B186E33}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.Build.0 = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.Build.0 = Release|Win32 + {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Debug|Win32.ActiveCfg = Debug|Any CPU + {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Debug|Win32.Build.0 = Debug|Any CPU + {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Release|Win32.ActiveCfg = Release|Any CPU + {825E4311-652D-4A1E-8AA1-F6D81B186E33}.Release|Win32.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/tools/Utilities_vc2010.sln b/tools/Utilities_vc2010.sln index b490ab2244..d3b3fc0f6e 100644 --- a/tools/Utilities_vc2010.sln +++ b/tools/Utilities_vc2010.sln @@ -1,20 +1,20 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 10 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bin2cpp", "bin2cpp\bin2c.vcxproj", "{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.ActiveCfg = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.Build.0 = Debug|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.ActiveCfg = Release|Win32 - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 10 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bin2cpp", "bin2cpp\bin2c.vcxproj", "{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.ActiveCfg = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.Build.0 = Debug|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.ActiveCfg = Release|Win32 + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/tools/bin2cpp/bin2c_vs2012.vcxproj b/tools/bin2cpp/bin2c_vs2012.vcxproj index fc799cb613..8c44dcbe67 100644 --- a/tools/bin2cpp/bin2c_vs2012.vcxproj +++ b/tools/bin2cpp/bin2c_vs2012.vcxproj @@ -1,100 +1,100 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - bin2cpp - {677B7D11-D5E1-40B3-88B1-9A4DF83D2213} - bin2c - Win32Proj - - - - Application - MultiByte - true - v110_xp - - - Application - MultiByte - v110_xp - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(ProjectDir)..\bin\ - $(Configuration)\ - true - $(ProjectDir)..\bin\ - $(Configuration)\ - false - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - - - Level3 - EditAndContinue - - - true - Console - MachineX86 - - - - - MaxSpeed - true - WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - - Level3 - ProgramDatabase - - - true - Console - true - true - MachineX86 - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + bin2cpp + {677B7D11-D5E1-40B3-88B1-9A4DF83D2213} + bin2c + Win32Proj + + + + Application + MultiByte + true + v110_xp + + + Application + MultiByte + v110_xp + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(ProjectDir)..\bin\ + $(Configuration)\ + true + $(ProjectDir)..\bin\ + $(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + MaxSpeed + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + + + + \ No newline at end of file diff --git a/tools/bin2cpp/bin2c_vs2012.vcxproj.filters b/tools/bin2cpp/bin2c_vs2012.vcxproj.filters index 7ca06d07b0..56920e0513 100644 --- a/tools/bin2cpp/bin2c_vs2012.vcxproj.filters +++ b/tools/bin2cpp/bin2c_vs2012.vcxproj.filters @@ -1,22 +1,22 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + \ No newline at end of file diff --git a/tools/dynacrchack/Auto_Compile.bat b/tools/dynacrchack/Auto_Compile.bat index af9f43c7e4..4b35017646 100644 --- a/tools/dynacrchack/Auto_Compile.bat +++ b/tools/dynacrchack/Auto_Compile.bat @@ -1,53 +1,53 @@ -@echo off -set source=DynaCrcHack.c -set tcc=tcc\tcc - -pushd "%~dp0" - -if exist %tcc%.exe goto pre - -rem local tcc not found, try to invoke a global tcc -set tcc=tcc -%tcc% utils\ding.c -luser32 -o utils\ding.exe >nul 2>nul -if %errorlevel% == 0 ( - echo. - echo Using globally installed tcc ... - echo. -) else ( - echo. - echo Missing ^\tcc\tcc.exe - echo. - echo Please download TCC 0.9.25 for windows from http://bellard.org/tcc/ - echo and extract the package to ^\tcc - echo. - pause - goto end -) - -:pre -if not exist utils\waitForChange.exe %tcc% utils\waitForChange.c -o utils\waitForChange.exe -if not exist utils\ding.exe %tcc% utils\ding.c -luser32 -o utils\ding.exe - -:start -echo Compiling ... -echo. -%tcc% -shared -Wall %source% -if %errorlevel% == 0 ( - echo -^> OK - utils\ding 2 -) else ( - echo -^> ERROR - utils\ding 1 - utils\ding 1 -) - -if exist *.def del /Q *.def - -echo Waiting ... -utils\waitForChange %source% -echo. - -goto start - -:end +@echo off +set source=DynaCrcHack.c +set tcc=tcc\tcc + +pushd "%~dp0" + +if exist %tcc%.exe goto pre + +rem local tcc not found, try to invoke a global tcc +set tcc=tcc +%tcc% utils\ding.c -luser32 -o utils\ding.exe >nul 2>nul +if %errorlevel% == 0 ( + echo. + echo Using globally installed tcc ... + echo. +) else ( + echo. + echo Missing ^\tcc\tcc.exe + echo. + echo Please download TCC 0.9.25 for windows from http://bellard.org/tcc/ + echo and extract the package to ^\tcc + echo. + pause + goto end +) + +:pre +if not exist utils\waitForChange.exe %tcc% utils\waitForChange.c -o utils\waitForChange.exe +if not exist utils\ding.exe %tcc% utils\ding.c -luser32 -o utils\ding.exe + +:start +echo Compiling ... +echo. +%tcc% -shared -Wall %source% +if %errorlevel% == 0 ( + echo -^> OK + utils\ding 2 +) else ( + echo -^> ERROR + utils\ding 1 + utils\ding 1 +) + +if exist *.def del /Q *.def + +echo Waiting ... +utils\waitForChange %source% +echo. + +goto start + +:end popd \ No newline at end of file