Introduce end-of-line normalization

Signed-off-by: Gregory Hainaut <gregory.hainaut@gmail.com>
This commit is contained in:
Miguel A. Colón Vélez 2015-08-04 23:52:48 +02:00 committed by Gregory Hainaut
parent a42a236961
commit 6462393aaf
500 changed files with 117546 additions and 117538 deletions

8
.gitattributes vendored Normal file
View File

@ -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

View File

@ -1,21 +1,21 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
<OutDir>$(SvnRootDir)\deps\$(PlatformName)\$(Configuration)\</OutDir> <OutDir>$(SvnRootDir)\deps\$(PlatformName)\$(Configuration)\</OutDir>
<IntDir>$(PlatformName)\$(Configuration)\</IntDir> <IntDir>$(PlatformName)\$(Configuration)\</IntDir>
<ExtensionsToDeleteOnClean>*.bsc;*.idb;*.sbr;*.res;*.pch;*.pdb;*.obj;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;*.meta;$(TargetPath);$(ExtensionsToDeleteOnClean)</ExtensionsToDeleteOnClean> <ExtensionsToDeleteOnClean>*.bsc;*.idb;*.sbr;*.res;*.pch;*.pdb;*.obj;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;*.meta;$(TargetPath);$(ExtensionsToDeleteOnClean)</ExtensionsToDeleteOnClean>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>__WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>__WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StructMemberAlignment>16Bytes</StructMemberAlignment> <StructMemberAlignment>16Bytes</StructMemberAlignment>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<RuntimeTypeInfo>false</RuntimeTypeInfo> <RuntimeTypeInfo>false</RuntimeTypeInfo>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs> <CompileAs>Default</CompileAs>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
</Project> </Project>

View File

@ -1,28 +1,28 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
<OutDir>$(SvnRootDir)\deps\$(PlatformName)\$(Configuration)\</OutDir> <OutDir>$(SvnRootDir)\deps\$(PlatformName)\$(Configuration)\</OutDir>
<IntDir>$(PlatformName)\$(Configuration)\</IntDir> <IntDir>$(PlatformName)\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>__WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>__WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StructMemberAlignment>16Bytes</StructMemberAlignment> <StructMemberAlignment>16Bytes</StructMemberAlignment>
<RuntimeTypeInfo>false</RuntimeTypeInfo> <RuntimeTypeInfo>false</RuntimeTypeInfo>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile> </ClCompile>
<Link> <Link>
<OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile> <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary> <ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary>
</Link> </Link>
<ResourceCompile> <ResourceCompile>
<AdditionalIncludeDirectories>$(SvnRootDir)/common/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(SvnRootDir)/common/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile> </ResourceCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
</Project> </Project>

View File

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="UserMacros"> <PropertyGroup Label="UserMacros">
<ProjectRootDir>$(ProjectDir)</ProjectRootDir> <ProjectRootDir>$(ProjectDir)</ProjectRootDir>
<SvnRootDir>$(ProjectRootDir)\..\..</SvnRootDir> <SvnRootDir>$(ProjectRootDir)\..\..</SvnRootDir>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<BuildMacro Include="ProjectRootDir"> <BuildMacro Include="ProjectRootDir">
<Value>$(ProjectRootDir)</Value> <Value>$(ProjectRootDir)</Value>
</BuildMacro> </BuildMacro>
<BuildMacro Include="SvnRootDir"> <BuildMacro Include="SvnRootDir">
<Value>$(SvnRootDir)</Value> <Value>$(SvnRootDir)</Value>
</BuildMacro> </BuildMacro>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,43 +1,43 @@
-------------------------------------------------------------------------- --------------------------------------------------------------------------
This program, "bzip2", the associated library "libbzip2", and all This program, "bzip2", the associated library "libbzip2", and all
documentation, are copyright (C) 1996-2006 Julian R Seward. All documentation, are copyright (C) 1996-2006 Julian R Seward. All
rights reserved. rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions modification, are permitted provided that the following conditions
are met: are met:
1. Redistributions of source code must retain the above copyright 1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer. notice, this list of conditions and the following disclaimer.
2. The origin of this software must not be misrepresented; you must 2. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product software in a product, an acknowledgment in the product
documentation would be appreciated but is not required. documentation would be appreciated but is not required.
3. Altered source versions must be plainly marked as such, and must 3. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software. not be misrepresented as being the original software.
4. The name of the author may not be used to endorse or promote 4. The name of the author may not be used to endorse or promote
products derived from this software without specific prior written products derived from this software without specific prior written
permission. permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Julian Seward, Cambridge, UK. Julian Seward, Cambridge, UK.
jseward@bzip.org jseward@bzip.org
bzip2/libbzip2 version 1.0.4 of 20 December 2006 bzip2/libbzip2 version 1.0.4 of 20 December 2006
-------------------------------------------------------------------------- --------------------------------------------------------------------------

410
3rdparty/bzip2/README vendored
View File

@ -1,205 +1,205 @@
This is the README for bzip2/libzip2. This is the README for bzip2/libzip2.
This version is fully compatible with the previous public releases. This version is fully compatible with the previous public releases.
------------------------------------------------------------------ ------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression. lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.4 of 20 December 2006 bzip2/libbzip2 version 1.0.4 of 20 December 2006
Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in this file. Please read the WARNING, DISCLAIMER and PATENTS sections in this file.
This program is released under the terms of the license contained This program is released under the terms of the license contained
in the file LICENSE. in the file LICENSE.
------------------------------------------------------------------ ------------------------------------------------------------------
Complete documentation is available in Postscript form (manual.ps), Complete documentation is available in Postscript form (manual.ps),
PDF (manual.pdf) or html (manual.html). A plain-text version of the PDF (manual.pdf) or html (manual.html). A plain-text version of the
manual page is available as bzip2.txt. manual page is available as bzip2.txt.
HOW TO BUILD -- UNIX HOW TO BUILD -- UNIX
Type 'make'. This builds the library libbz2.a and then the programs Type 'make'. This builds the library libbz2.a and then the programs
bzip2 and bzip2recover. Six self-tests are run. If the self-tests bzip2 and bzip2recover. Six self-tests are run. If the self-tests
complete ok, carry on to installation: complete ok, carry on to installation:
To install in /usr/local/bin, /usr/local/lib, /usr/local/man and To install in /usr/local/bin, /usr/local/lib, /usr/local/man and
/usr/local/include, type /usr/local/include, type
make install make install
To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type
make install PREFIX=/xxx/yyy make install PREFIX=/xxx/yyy
If you are (justifiably) paranoid and want to see what 'make install' If you are (justifiably) paranoid and want to see what 'make install'
is going to do, you can first do is going to do, you can first do
make -n install or make -n install or
make -n install PREFIX=/xxx/yyy respectively. make -n install PREFIX=/xxx/yyy respectively.
The -n instructs make to show the commands it would execute, but not The -n instructs make to show the commands it would execute, but not
actually execute them. actually execute them.
HOW TO BUILD -- UNIX, shared library libbz2.so. HOW TO BUILD -- UNIX, shared library libbz2.so.
Do 'make -f Makefile-libbz2_so'. This Makefile seems to work for 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 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 that it works for any other platform, though I suspect it probably
will work for most platforms employing both ELF and gcc. will work for most platforms employing both ELF and gcc.
bzip2-shared, a client of the shared library, is also built, but not 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, self-tested. So I suggest you also build using the normal Makefile,
since that conducts a self-test. A second reason to prefer the since that conducts a self-test. A second reason to prefer the
version statically linked to the library is that, on x86 platforms, version statically linked to the library is that, on x86 platforms,
building shared objects makes a valuable register (%ebx) unavailable building shared objects makes a valuable register (%ebx) unavailable
to gcc, resulting in a slowdown of 10%-20%, at least for bzip2. 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 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) 1.0.X. All the functions in the library have been renamed, from (eg)
bzCompress to BZ2_bzCompress, to avoid namespace pollution. bzCompress to BZ2_bzCompress, to avoid namespace pollution.
Unfortunately this means that the libbz2.so created by Unfortunately this means that the libbz2.so created by
Makefile-libbz2_so will not work with any program which used an older 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 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 effort to upgrade to use version 1.0, since it is both faster and more
robust than previous versions. robust than previous versions.
HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc. HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc.
It's difficult for me to support compilation on all these platforms. It's difficult for me to support compilation on all these platforms.
My approach is to collect binaries for these platforms, and put them My approach is to collect binaries for these platforms, and put them
on the master web site (http://www.bzip.org). Look there. However 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 (FWIW), bzip2-1.0.X is very standard ANSI C and should compile
unmodified with MS Visual C. If you have difficulties building, you unmodified with MS Visual C. If you have difficulties building, you
might want to read README.COMPILATION.PROBLEMS. might want to read README.COMPILATION.PROBLEMS.
At least using MS Visual C++ 6, you can build from the unmodified At least using MS Visual C++ 6, you can build from the unmodified
sources by issuing, in a command shell: sources by issuing, in a command shell:
nmake -f makefile.msc nmake -f makefile.msc
(you may need to first run the MSVC-provided script VCVARS32.BAT (you may need to first run the MSVC-provided script VCVARS32.BAT
so as to set up paths to the MSVC tools correctly). so as to set up paths to the MSVC tools correctly).
VALIDATION VALIDATION
Correct operation, in the sense that a compressed file can always be Correct operation, in the sense that a compressed file can always be
decompressed to reproduce the original, is obviously of paramount decompressed to reproduce the original, is obviously of paramount
importance. To validate bzip2, I used a modified version of Mark importance. To validate bzip2, I used a modified version of Mark
Nelson's churn program. Churn is an automated test driver which Nelson's churn program. Churn is an automated test driver which
recursively traverses a directory structure, using bzip2 to compress recursively traverses a directory structure, using bzip2 to compress
and then decompress each file it encounters, and checking that the and then decompress each file it encounters, and checking that the
decompressed data is the same as the original. decompressed data is the same as the original.
Please read and be aware of the following: Please read and be aware of the following:
WARNING: WARNING:
This program and library (attempts to) compress data by This program and library (attempts to) compress data by
performing several non-trivial transformations on it. performing several non-trivial transformations on it.
Unless you are 100% familiar with *all* the algorithms Unless you are 100% familiar with *all* the algorithms
contained herein, and with the consequences of modifying them, contained herein, and with the consequences of modifying them,
you should NOT meddle with the compression or decompression you should NOT meddle with the compression or decompression
machinery. Incorrect changes can and very likely *will* machinery. Incorrect changes can and very likely *will*
lead to disastrous loss of data. lead to disastrous loss of data.
DISCLAIMER: DISCLAIMER:
I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE
USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED. USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED.
Every compression of a file implies an assumption that the Every compression of a file implies an assumption that the
compressed file can be decompressed to reproduce the original. compressed file can be decompressed to reproduce the original.
Great efforts in design, coding and testing have been made to Great efforts in design, coding and testing have been made to
ensure that this program works correctly. However, the complexity ensure that this program works correctly. However, the complexity
of the algorithms, and, in particular, the presence of various of the algorithms, and, in particular, the presence of various
special cases in the code which occur with very low but non-zero special cases in the code which occur with very low but non-zero
probability make it impossible to rule out the possibility of bugs probability make it impossible to rule out the possibility of bugs
remaining in the program. DO NOT COMPRESS ANY DATA WITH THIS remaining in the program. DO NOT COMPRESS ANY DATA WITH THIS
PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER
SMALL, THAT THE DATA WILL NOT BE RECOVERABLE. SMALL, THAT THE DATA WILL NOT BE RECOVERABLE.
That is not to say this program is inherently unreliable. That is not to say this program is inherently unreliable.
Indeed, I very much hope the opposite is true. bzip2/libbzip2 Indeed, I very much hope the opposite is true. bzip2/libbzip2
has been carefully constructed and extensively tested. has been carefully constructed and extensively tested.
PATENTS: PATENTS:
To the best of my knowledge, bzip2/libbzip2 does not use any To the best of my knowledge, bzip2/libbzip2 does not use any
patented algorithms. However, I do not have the resources patented algorithms. However, I do not have the resources
to carry out a patent search. Therefore I cannot give any to carry out a patent search. Therefore I cannot give any
guarantee of the above statement. guarantee of the above statement.
WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ? WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ?
* Approx 10% faster compression, 30% faster decompression * Approx 10% faster compression, 30% faster decompression
* -t (test mode) is a lot quicker * -t (test mode) is a lot quicker
* Can decompress concatenated compressed files * Can decompress concatenated compressed files
* Programming interface, so programs can directly read/write .bz2 files * Programming interface, so programs can directly read/write .bz2 files
* Less restrictive (BSD-style) licensing * Less restrictive (BSD-style) licensing
* Flag handling more compatible with GNU gzip * Flag handling more compatible with GNU gzip
* Much more documentation, i.e., a proper user manual * Much more documentation, i.e., a proper user manual
* Hopefully, improved portability (at least of the library) * Hopefully, improved portability (at least of the library)
WHAT'S NEW IN 0.9.5 ? WHAT'S NEW IN 0.9.5 ?
* Compression speed is much less sensitive to the input * Compression speed is much less sensitive to the input
data than in previous versions. Specifically, the very data than in previous versions. Specifically, the very
slow performance caused by repetitive data is fixed. slow performance caused by repetitive data is fixed.
* Many small improvements in file and flag handling. * Many small improvements in file and flag handling.
* A Y2K statement. * A Y2K statement.
WHAT'S NEW IN 1.0.0 ? WHAT'S NEW IN 1.0.0 ?
See the CHANGES file. See the CHANGES file.
WHAT'S NEW IN 1.0.2 ? WHAT'S NEW IN 1.0.2 ?
See the CHANGES file. See the CHANGES file.
WHAT'S NEW IN 1.0.3 ? WHAT'S NEW IN 1.0.3 ?
See the CHANGES file. See the CHANGES file.
WHAT'S NEW IN 1.0.4 ? WHAT'S NEW IN 1.0.4 ?
See the CHANGES file. See the CHANGES file.
I hope you find bzip2 useful. Feel free to contact me at I hope you find bzip2 useful. Feel free to contact me at
jseward@bzip.org jseward@bzip.org
if you have any suggestions or queries. Many people mailed me with if you have any suggestions or queries. Many people mailed me with
comments, suggestions and patches after the releases of bzip-0.15, 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, 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 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. feedback. I thank you for your comments.
bzip2's "home" is http://www.bzip.org/ bzip2's "home" is http://www.bzip.org/
Julian Seward Julian Seward
jseward@bzip.org jseward@bzip.org
Cambridge, UK. Cambridge, UK.
18 July 1996 (version 0.15) 18 July 1996 (version 0.15)
25 August 1996 (version 0.21) 25 August 1996 (version 0.21)
7 August 1997 (bzip2, version 0.1) 7 August 1997 (bzip2, version 0.1)
29 August 1997 (bzip2, version 0.1pl2) 29 August 1997 (bzip2, version 0.1pl2)
23 August 1998 (bzip2, version 0.9.0) 23 August 1998 (bzip2, version 0.9.0)
8 June 1999 (bzip2, version 0.9.5) 8 June 1999 (bzip2, version 0.9.5)
4 Sept 1999 (bzip2, version 0.9.5d) 4 Sept 1999 (bzip2, version 0.9.5d)
5 May 2000 (bzip2, version 1.0pre8) 5 May 2000 (bzip2, version 1.0pre8)
30 December 2001 (bzip2, version 1.0.2pre1) 30 December 2001 (bzip2, version 1.0.2pre1)
15 February 2005 (bzip2, version 1.0.3) 15 February 2005 (bzip2, version 1.0.3)
20 December 2006 (bzip2, version 1.0.4) 20 December 2006 (bzip2, version 1.0.4)

View File

@ -1,96 +1,96 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Devel|Win32"> <ProjectConfiguration Include="Devel|Win32">
<Configuration>Devel</Configuration> <Configuration>Devel</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{F4EB4AB2-C595-4B05-8BC0-059024BC796C}</ProjectGuid> <ProjectGuid>{F4EB4AB2-C595-4B05-8BC0-059024BC796C}</ProjectGuid>
<RootNamespace>bzip2</RootNamespace> <RootNamespace>bzip2</RootNamespace>
<ProjectName>bzip2</ProjectName> <ProjectName>bzip2</ProjectName>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization> <WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v110_xp</PlatformToolset> <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v110_xp</PlatformToolset> <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110_xp</PlatformToolset> <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdparty.props" /> <Import Project="..\3rdparty.props" />
<Import Project="..\..\common\vsprops\CodeGen_Devel.props" /> <Import Project="..\..\common\vsprops\CodeGen_Devel.props" />
<Import Project="..\..\common\vsprops\IncrementalLinking.props" /> <Import Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdparty.props" /> <Import Project="..\3rdparty.props" />
<Import Project="..\..\common\vsprops\CodeGen_Release.props" /> <Import Project="..\..\common\vsprops\CodeGen_Release.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdparty.props" /> <Import Project="..\3rdparty.props" />
<Import Project="..\..\common\vsprops\CodeGen_Debug.props" /> <Import Project="..\..\common\vsprops\CodeGen_Debug.props" />
<Import Project="..\..\common\vsprops\IncrementalLinking.props" /> <Import Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup> <PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)</TargetName> <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(ProjectName)-dev</TargetName> <TargetName Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(ProjectName)-dev</TargetName>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup> <ItemDefinitionGroup>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="blocksort.c" /> <ClCompile Include="blocksort.c" />
<ClCompile Include="bzlib.c" /> <ClCompile Include="bzlib.c" />
<ClCompile Include="compress.c" /> <ClCompile Include="compress.c" />
<ClCompile Include="crctable.c" /> <ClCompile Include="crctable.c" />
<ClCompile Include="decompress.c" /> <ClCompile Include="decompress.c" />
<ClCompile Include="huffman.c" /> <ClCompile Include="huffman.c" />
<ClCompile Include="randtable.c" /> <ClCompile Include="randtable.c" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="bzlib.h" /> <ClInclude Include="bzlib.h" />
<ClInclude Include="bzlib_private.h" /> <ClInclude Include="bzlib_private.h" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@ -1,44 +1,44 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<Filter Include="Source Files"> <Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter> </Filter>
<Filter Include="Header Files"> <Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="blocksort.c"> <ClCompile Include="blocksort.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="bzlib.c"> <ClCompile Include="bzlib.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="compress.c"> <ClCompile Include="compress.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="crctable.c"> <ClCompile Include="crctable.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="decompress.c"> <ClCompile Include="decompress.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="huffman.c"> <ClCompile Include="huffman.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="randtable.c"> <ClCompile Include="randtable.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="bzlib.h"> <ClInclude Include="bzlib.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="bzlib_private.h"> <ClInclude Include="bzlib_private.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,165 +1,165 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Devel|Win32"> <ProjectConfiguration Include="Devel|Win32">
<Configuration>Devel</Configuration> <Configuration>Devel</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectName>libjpeg7</ProjectName> <ProjectName>libjpeg7</ProjectName>
<ProjectGuid>{BC236261-77E8-4567-8D09-45CD02965EB6}</ProjectGuid> <ProjectGuid>{BC236261-77E8-4567-8D09-45CD02965EB6}</ProjectGuid>
<RootNamespace>libjpeg</RootNamespace> <RootNamespace>libjpeg</RootNamespace>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization> <WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v110_xp</PlatformToolset> <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v110_xp</PlatformToolset> <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v110_xp</PlatformToolset> <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" /> <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdparty.props" /> <Import Project="..\3rdparty.props" />
<Import Project="..\..\common\vsprops\CodeGen_Devel.props" /> <Import Project="..\..\common\vsprops\CodeGen_Devel.props" />
<Import Project="..\..\common\vsprops\IncrementalLinking.props" /> <Import Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdparty.props" /> <Import Project="..\3rdparty.props" />
<Import Project="..\..\common\vsprops\CodeGen_Release.props" /> <Import Project="..\..\common\vsprops\CodeGen_Release.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdparty.props" /> <Import Project="..\3rdparty.props" />
<Import Project="..\..\common\vsprops\CodeGen_Debug.props" /> <Import Project="..\..\common\vsprops\CodeGen_Debug.props" />
<Import Project="..\..\common\vsprops\IncrementalLinking.props" /> <Import Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup> <PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(ProjectName)-dev</TargetName> <TargetName Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(ProjectName)-dev</TargetName>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="jaricom.c" /> <ClCompile Include="jaricom.c" />
<ClCompile Include="jcapimin.c" /> <ClCompile Include="jcapimin.c" />
<ClCompile Include="jcapistd.c" /> <ClCompile Include="jcapistd.c" />
<ClCompile Include="jcarith.c" /> <ClCompile Include="jcarith.c" />
<ClCompile Include="jccoefct.c" /> <ClCompile Include="jccoefct.c" />
<ClCompile Include="jccolor.c" /> <ClCompile Include="jccolor.c" />
<ClCompile Include="jcdctmgr.c" /> <ClCompile Include="jcdctmgr.c" />
<ClCompile Include="jchuff.c" /> <ClCompile Include="jchuff.c" />
<ClCompile Include="jcinit.c" /> <ClCompile Include="jcinit.c" />
<ClCompile Include="jcmainct.c" /> <ClCompile Include="jcmainct.c" />
<ClCompile Include="jcmarker.c" /> <ClCompile Include="jcmarker.c" />
<ClCompile Include="jcmaster.c" /> <ClCompile Include="jcmaster.c" />
<ClCompile Include="jcomapi.c" /> <ClCompile Include="jcomapi.c" />
<ClCompile Include="jcparam.c" /> <ClCompile Include="jcparam.c" />
<ClCompile Include="jcprepct.c" /> <ClCompile Include="jcprepct.c" />
<ClCompile Include="jcsample.c" /> <ClCompile Include="jcsample.c" />
<ClCompile Include="jctrans.c" /> <ClCompile Include="jctrans.c" />
<ClCompile Include="jdapimin.c" /> <ClCompile Include="jdapimin.c" />
<ClCompile Include="jdapistd.c" /> <ClCompile Include="jdapistd.c" />
<ClCompile Include="jdarith.c" /> <ClCompile Include="jdarith.c" />
<ClCompile Include="jdatadst.c" /> <ClCompile Include="jdatadst.c" />
<ClCompile Include="jdatasrc.c" /> <ClCompile Include="jdatasrc.c" />
<ClCompile Include="jdcoefct.c" /> <ClCompile Include="jdcoefct.c" />
<ClCompile Include="jdcolor.c" /> <ClCompile Include="jdcolor.c" />
<ClCompile Include="jddctmgr.c" /> <ClCompile Include="jddctmgr.c" />
<ClCompile Include="jdhuff.c" /> <ClCompile Include="jdhuff.c" />
<ClCompile Include="jdinput.c" /> <ClCompile Include="jdinput.c" />
<ClCompile Include="jdmainct.c" /> <ClCompile Include="jdmainct.c" />
<ClCompile Include="jdmarker.c" /> <ClCompile Include="jdmarker.c" />
<ClCompile Include="jdmaster.c" /> <ClCompile Include="jdmaster.c" />
<ClCompile Include="jdmerge.c" /> <ClCompile Include="jdmerge.c" />
<ClCompile Include="jdpostct.c" /> <ClCompile Include="jdpostct.c" />
<ClCompile Include="jdsample.c" /> <ClCompile Include="jdsample.c" />
<ClCompile Include="jdtrans.c" /> <ClCompile Include="jdtrans.c" />
<ClCompile Include="jerror.c" /> <ClCompile Include="jerror.c" />
<ClCompile Include="jfdctflt.c" /> <ClCompile Include="jfdctflt.c" />
<ClCompile Include="jfdctfst.c" /> <ClCompile Include="jfdctfst.c" />
<ClCompile Include="jfdctint.c" /> <ClCompile Include="jfdctint.c" />
<ClCompile Include="jidctflt.c" /> <ClCompile Include="jidctflt.c" />
<ClCompile Include="jidctfst.c" /> <ClCompile Include="jidctfst.c" />
<ClCompile Include="jidctint.c" /> <ClCompile Include="jidctint.c" />
<ClCompile Include="jmemansi.c" /> <ClCompile Include="jmemansi.c" />
<ClCompile Include="jmemmgr.c" /> <ClCompile Include="jmemmgr.c" />
<ClCompile Include="jquant1.c" /> <ClCompile Include="jquant1.c" />
<ClCompile Include="jquant2.c" /> <ClCompile Include="jquant2.c" />
<ClCompile Include="jutils.c" /> <ClCompile Include="jutils.c" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="jconfig.h" /> <ClInclude Include="jconfig.h" />
<ClInclude Include="jdct.h" /> <ClInclude Include="jdct.h" />
<ClInclude Include="jerror.h" /> <ClInclude Include="jerror.h" />
<ClInclude Include="jinclude.h" /> <ClInclude Include="jinclude.h" />
<ClInclude Include="jmemsys.h" /> <ClInclude Include="jmemsys.h" />
<ClInclude Include="jmorecfg.h" /> <ClInclude Include="jmorecfg.h" />
<ClInclude Include="jpegint.h" /> <ClInclude Include="jpegint.h" />
<ClInclude Include="jpeglib.h" /> <ClInclude Include="jpeglib.h" />
<ClInclude Include="jversion.h" /> <ClInclude Include="jversion.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="change.log" /> <None Include="change.log" />
<None Include="filelist.txt" /> <None Include="filelist.txt" />
<None Include="README" /> <None Include="README" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" /> <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@ -1,183 +1,183 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<Filter Include="Source Files"> <Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="jaricom.c"> <ClCompile Include="jaricom.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jcapimin.c"> <ClCompile Include="jcapimin.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jcapistd.c"> <ClCompile Include="jcapistd.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jcarith.c"> <ClCompile Include="jcarith.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jccoefct.c"> <ClCompile Include="jccoefct.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jccolor.c"> <ClCompile Include="jccolor.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jcdctmgr.c"> <ClCompile Include="jcdctmgr.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jchuff.c"> <ClCompile Include="jchuff.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jcinit.c"> <ClCompile Include="jcinit.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jcmainct.c"> <ClCompile Include="jcmainct.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jcmarker.c"> <ClCompile Include="jcmarker.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jcmaster.c"> <ClCompile Include="jcmaster.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jcomapi.c"> <ClCompile Include="jcomapi.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jcparam.c"> <ClCompile Include="jcparam.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jcprepct.c"> <ClCompile Include="jcprepct.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jcsample.c"> <ClCompile Include="jcsample.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jctrans.c"> <ClCompile Include="jctrans.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdapimin.c"> <ClCompile Include="jdapimin.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdapistd.c"> <ClCompile Include="jdapistd.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdarith.c"> <ClCompile Include="jdarith.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdatadst.c"> <ClCompile Include="jdatadst.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdatasrc.c"> <ClCompile Include="jdatasrc.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdcoefct.c"> <ClCompile Include="jdcoefct.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdcolor.c"> <ClCompile Include="jdcolor.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jddctmgr.c"> <ClCompile Include="jddctmgr.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdhuff.c"> <ClCompile Include="jdhuff.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdinput.c"> <ClCompile Include="jdinput.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdmainct.c"> <ClCompile Include="jdmainct.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdmarker.c"> <ClCompile Include="jdmarker.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdmaster.c"> <ClCompile Include="jdmaster.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdmerge.c"> <ClCompile Include="jdmerge.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdpostct.c"> <ClCompile Include="jdpostct.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdsample.c"> <ClCompile Include="jdsample.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jdtrans.c"> <ClCompile Include="jdtrans.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jerror.c"> <ClCompile Include="jerror.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jfdctflt.c"> <ClCompile Include="jfdctflt.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jfdctfst.c"> <ClCompile Include="jfdctfst.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jfdctint.c"> <ClCompile Include="jfdctint.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jidctflt.c"> <ClCompile Include="jidctflt.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jidctfst.c"> <ClCompile Include="jidctfst.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jidctint.c"> <ClCompile Include="jidctint.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jmemansi.c"> <ClCompile Include="jmemansi.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jmemmgr.c"> <ClCompile Include="jmemmgr.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jquant1.c"> <ClCompile Include="jquant1.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jquant2.c"> <ClCompile Include="jquant2.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="jutils.c"> <ClCompile Include="jutils.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="jconfig.h"> <ClInclude Include="jconfig.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="jdct.h"> <ClInclude Include="jdct.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="jerror.h"> <ClInclude Include="jerror.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="jinclude.h"> <ClInclude Include="jinclude.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="jmemsys.h"> <ClInclude Include="jmemsys.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="jmorecfg.h"> <ClInclude Include="jmorecfg.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="jpegint.h"> <ClInclude Include="jpegint.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="jpeglib.h"> <ClInclude Include="jpeglib.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="jversion.h"> <ClInclude Include="jversion.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="change.log" /> <None Include="change.log" />
<None Include="filelist.txt" /> <None Include="filelist.txt" />
<None Include="README" /> <None Include="README" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,219 +1,219 @@
40 40
targetIdent targetIdent
0 0
MProject MProject
1 1
MComponent MComponent
0 0
2 2
WString WString
4 4
NEXE NEXE
3 3
WString WString
5 5
nc2en nc2en
1 1
0 0
0 0
4 4
MCommand MCommand
0 0
5 5
MCommand MCommand
1118 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 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 6
MItem MItem
12 12
pngstest.exe pngstest.exe
7 7
WString WString
4 4
NEXE NEXE
8 8
WVList WVList
6 6
9 9
MVState MVState
10 10
WString WString
7 7
WINLINK WINLINK
11 11
WString WString
11 11
?????Stack: ?????Stack:
1 1
12 12
WString WString
4 4
768k 768k
0 0
13 13
MVState MVState
14 14
WString WString
7 7
WINLINK WINLINK
15 15
WString WString
28 28
?????Library directories(;): ?????Library directories(;):
1 1
16 16
WString WString
8 8
$(%zlib) $(%zlib)
0 0
17 17
MVState MVState
18 18
WString WString
7 7
WINLINK WINLINK
19 19
WString WString
18 18
?????Libraries(,): ?????Libraries(,):
1 1
20 20
WString WString
19 19
libpng.lib zlib.lib libpng.lib zlib.lib
0 0
21 21
MVState MVState
22 22
WString WString
7 7
WINLINK WINLINK
23 23
WString WString
11 11
?????Stack: ?????Stack:
0 0
24 24
WString WString
4 4
768k 768k
0 0
25 25
MVState MVState
26 26
WString WString
7 7
WINLINK WINLINK
27 27
WString WString
28 28
?????Library directories(;): ?????Library directories(;):
0 0
28 28
WString WString
8 8
$(%zlib) $(%zlib)
0 0
29 29
MVState MVState
30 30
WString WString
7 7
WINLINK WINLINK
31 31
WString WString
18 18
?????Libraries(,): ?????Libraries(,):
0 0
32 32
WString WString
19 19
libpng.lib zlib.lib libpng.lib zlib.lib
0 0
33 33
WVList WVList
1 1
34 34
ActionStates ActionStates
35 35
WString WString
4 4
&Run &Run
36 36
WVList WVList
0 0
-1 -1
1 1
1 1
0 0
37 37
WPickList WPickList
2 2
38 38
MItem MItem
3 3
*.c *.c
39 39
WString WString
4 4
COBJ COBJ
40 40
WVList WVList
2 2
41 41
MVState MVState
42 42
WString WString
3 3
WCC WCC
43 43
WString WString
25 25
n????Include directories: n????Include directories:
1 1
44 44
WString WString
39 39
"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" "$(%zlib);$(%watcom)/h;$(%watcom)/h/nt"
0 0
45 45
MVState MVState
46 46
WString WString
3 3
WCC WCC
47 47
WString WString
25 25
n????Include directories: n????Include directories:
0 0
48 48
WString WString
39 39
"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" "$(%zlib);$(%watcom)/h;$(%watcom)/h/nt"
0 0
49 49
WVList WVList
0 0
-1 -1
1 1
1 1
0 0
50 50
MItem MItem
33 33
..\..\contrib\libtests\pngstest.c ..\..\contrib\libtests\pngstest.c
51 51
WString WString
4 4
COBJ COBJ
52 52
WVList WVList
0 0
53 53
WVList WVList
0 0
38 38
1 1
1 1
0 0

View File

@ -1,60 +1,60 @@
Microsoft Visual Studio Solution File, Format Version 8.00 Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "libpng.vcproj", "{0008960E-E0DD-41A6-8265-00B31DDB4C21}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "libpng.vcproj", "{0008960E-E0DD-41A6-8265-00B31DDB4C21}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{2D4F8105-7D21-454C-9932-B47CAB71A5C0} = {2D4F8105-7D21-454C-9932-B47CAB71A5C0} {2D4F8105-7D21-454C-9932-B47CAB71A5C0} = {2D4F8105-7D21-454C-9932-B47CAB71A5C0}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngtest", "pngtest.vcproj", "{FD1C2F86-9EEF-47BD-95A4-530917E17FDA}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngtest", "pngtest.vcproj", "{FD1C2F86-9EEF-47BD-95A4-530917E17FDA}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{0008960E-E0DD-41A6-8265-00B31DDB4C21} = {0008960E-E0DD-41A6-8265-00B31DDB4C21} {0008960E-E0DD-41A6-8265-00B31DDB4C21} = {0008960E-E0DD-41A6-8265-00B31DDB4C21}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcproj", "{2D4F8105-7D21-454C-9932-B47CAB71A5C0}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcproj", "{2D4F8105-7D21-454C-9932-B47CAB71A5C0}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Global Global
GlobalSection(SolutionConfiguration) = preSolution GlobalSection(SolutionConfiguration) = preSolution
DLL Debug = DLL Debug DLL Debug = DLL Debug
DLL Release = DLL Release DLL Release = DLL Release
DLL VB = DLL VB DLL VB = DLL VB
LIB Debug = LIB Debug LIB Debug = LIB Debug
LIB Release = LIB Release LIB Release = LIB Release
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution GlobalSection(ProjectConfiguration) = postSolution
{0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Debug.ActiveCfg = DLL Debug|Win32 {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 Debug.Build.0 = DLL Debug|Win32
{0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Release.ActiveCfg = DLL Release|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 Release.Build.0 = DLL Release|Win32
{0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL VB.ActiveCfg = DLL VB|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}.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.ActiveCfg = LIB Debug|Win32
{0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Debug.Build.0 = 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.ActiveCfg = LIB Release|Win32
{0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Release.Build.0 = 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.ActiveCfg = DLL Debug|Win32
{FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Debug.Build.0 = 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.ActiveCfg = DLL Release|Win32
{FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Release.Build.0 = 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.ActiveCfg = DLL VB|Win32
{FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL VB.Build.0 = 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.ActiveCfg = LIB Debug|Win32
{FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Debug.Build.0 = 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.ActiveCfg = LIB Release|Win32
{FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Release.Build.0 = 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.ActiveCfg = DLL Debug|Win32
{2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Debug.Build.0 = 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.ActiveCfg = DLL Release|Win32
{2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Release.Build.0 = 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.ActiveCfg = DLL Release|Win32
{2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL VB.Build.0 = 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.ActiveCfg = LIB Debug|Win32
{2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Debug.Build.0 = 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.ActiveCfg = LIB Release|Win32
{2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Release.Build.0 = LIB Release|Win32 {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Release.Build.0 = LIB Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

View File

@ -1,419 +1,419 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
Name="libpng" Name="libpng"
RootNamespace="libpng"> RootNamespace="libpng">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32"/> Name="Win32"/>
</Platforms> </Platforms>
<Configurations> <Configurations>
<Configuration <Configuration
Name="DLL Release|Win32" Name="DLL Release|Win32"
OutputDirectory=".\Win32_DLL_Release" OutputDirectory=".\Win32_DLL_Release"
IntermediateDirectory=".\Win32_DLL_Release" IntermediateDirectory=".\Win32_DLL_Release"
ConfigurationType="2"> ConfigurationType="2">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..;..\..\..\zlib" AdditionalIncludeDirectories="..\..;..\..\..\zlib"
PreprocessorDefinitions="WIN32;NDEBUG;PNG_BUILD_DLL;ZLIB_DLL;_CRT_SECURE_NO_WARNINGS" PreprocessorDefinitions="WIN32;NDEBUG;PNG_BUILD_DLL;ZLIB_DLL;_CRT_SECURE_NO_WARNINGS"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="2" RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="3" UsePrecompiledHeader="3"
PrecompiledHeaderThrough="pngpriv.h" PrecompiledHeaderThrough="pngpriv.h"
WarningLevel="3" WarningLevel="3"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)/libpng16.dll" OutputFile="$(OutDir)/libpng16.dll"
LinkIncremental="1"/> LinkIncremental="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="copy ..\..\scripts\pnglibconf.h.prebuilt ..\..\pnglibconf.h"/> CommandLine="copy ..\..\scripts\pnglibconf.h.prebuilt ..\..\pnglibconf.h"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG" PreprocessorDefinitions="NDEBUG"
Culture="1033" Culture="1033"
AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/> AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="DLL Debug|Win32" Name="DLL Debug|Win32"
OutputDirectory=".\Win32_DLL_Debug" OutputDirectory=".\Win32_DLL_Debug"
IntermediateDirectory=".\Win32_DLL_Debug" IntermediateDirectory=".\Win32_DLL_Debug"
ConfigurationType="2"> ConfigurationType="2">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\..;..\..\..\zlib" AdditionalIncludeDirectories="..\..;..\..\..\zlib"
PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_DEBUG=1;PNG_BUILD_DLL;ZLIB_DLL;_CRT_SECURE_NO_WARNINGS" PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_DEBUG=1;PNG_BUILD_DLL;ZLIB_DLL;_CRT_SECURE_NO_WARNINGS"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="3" RuntimeLibrary="3"
UsePrecompiledHeader="3" UsePrecompiledHeader="3"
PrecompiledHeaderThrough="pngpriv.h" PrecompiledHeaderThrough="pngpriv.h"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="4" DebugInformationFormat="4"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)/libpng16d.dll" OutputFile="$(OutDir)/libpng16d.dll"
GenerateDebugInformation="TRUE"/> GenerateDebugInformation="TRUE"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="copy ..\..\scripts\pnglibconf.h.prebuilt ..\..\pnglibconf.h"/> CommandLine="copy ..\..\scripts\pnglibconf.h.prebuilt ..\..\pnglibconf.h"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG,PNG_DEBUG=1" PreprocessorDefinitions="_DEBUG,PNG_DEBUG=1"
Culture="1033" Culture="1033"
AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/> AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="DLL VB|Win32" Name="DLL VB|Win32"
OutputDirectory=".\Win32_DLL_VB" OutputDirectory=".\Win32_DLL_VB"
IntermediateDirectory=".\Win32_DLL_VB" IntermediateDirectory=".\Win32_DLL_VB"
ConfigurationType="2"> ConfigurationType="2">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..;..\..\..\zlib" AdditionalIncludeDirectories="..\..;..\..\..\zlib"
PreprocessorDefinitions="WIN32;NDEBUG;PNG_BUILD_DLL;ZLIB_DLL;PNGAPI=__stdcall;PNG_NO_MODULEDEF;PNG_LIBPNG_SPECIALBUILD;PNG_USER_PRIVATEBUILD;_CRT_SECURE_NO_WARNINGS" PreprocessorDefinitions="WIN32;NDEBUG;PNG_BUILD_DLL;ZLIB_DLL;PNGAPI=__stdcall;PNG_NO_MODULEDEF;PNG_LIBPNG_SPECIALBUILD;PNG_USER_PRIVATEBUILD;_CRT_SECURE_NO_WARNINGS"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="2" RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="3" UsePrecompiledHeader="3"
PrecompiledHeaderThrough="pngpriv.h" PrecompiledHeaderThrough="pngpriv.h"
WarningLevel="3" WarningLevel="3"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)/libpng16vb.dll" OutputFile="$(OutDir)/libpng16vb.dll"
LinkIncremental="1"/> LinkIncremental="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="copy ..\..\scripts\pnglibconf.h.prebuilt ..\..\pnglibconf.h"/> CommandLine="copy ..\..\scripts\pnglibconf.h.prebuilt ..\..\pnglibconf.h"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
AdditionalOptions="/d PNG_NO_PEDANTIC_WARNINGS /d PNG_LIBPNG_DLLFNAME_POSTFIX=&quot;&quot;&quot;&quot;VB&quot;&quot;&quot;&quot; /d PNG_LIBPNG_SPECIALBUILD=&quot;&quot;&quot;&quot;__stdcall calling convention used for exported functions&quot;&quot;&quot;&quot;" AdditionalOptions="/d PNG_NO_PEDANTIC_WARNINGS /d PNG_LIBPNG_DLLFNAME_POSTFIX=&quot;&quot;&quot;&quot;VB&quot;&quot;&quot;&quot; /d PNG_LIBPNG_SPECIALBUILD=&quot;&quot;&quot;&quot;__stdcall calling convention used for exported functions&quot;&quot;&quot;&quot;"
PreprocessorDefinitions="NDEBUG" PreprocessorDefinitions="NDEBUG"
Culture="1033" Culture="1033"
AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/> AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="LIB Release|Win32" Name="LIB Release|Win32"
OutputDirectory=".\Win32_LIB_Release" OutputDirectory=".\Win32_LIB_Release"
IntermediateDirectory=".\Win32_LIB_Release" IntermediateDirectory=".\Win32_LIB_Release"
ConfigurationType="4"> ConfigurationType="4">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..;..\..\..\zlib" AdditionalIncludeDirectories="..\..;..\..\..\zlib"
PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS" PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="3" UsePrecompiledHeader="3"
PrecompiledHeaderThrough="pngpriv.h" PrecompiledHeaderThrough="pngpriv.h"
WarningLevel="3" WarningLevel="3"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="$(OutDir)/libpng.lib"/> OutputFile="$(OutDir)/libpng.lib"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="copy ..\..\scripts\pnglibconf.h.prebuilt ..\..\pnglibconf.h"/> CommandLine="copy ..\..\scripts\pnglibconf.h.prebuilt ..\..\pnglibconf.h"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="LIB Debug|Win32" Name="LIB Debug|Win32"
OutputDirectory=".\Win32_LIB_Debug" OutputDirectory=".\Win32_LIB_Debug"
IntermediateDirectory=".\Win32_LIB_Debug" IntermediateDirectory=".\Win32_LIB_Debug"
ConfigurationType="4"> ConfigurationType="4">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\..;..\..\..\zlib" AdditionalIncludeDirectories="..\..;..\..\..\zlib"
PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_DEBUG=1;_CRT_SECURE_NO_WARNINGS" PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_DEBUG=1;_CRT_SECURE_NO_WARNINGS"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="3" UsePrecompiledHeader="3"
PrecompiledHeaderThrough="pngpriv.h" PrecompiledHeaderThrough="pngpriv.h"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="4" DebugInformationFormat="4"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="$(OutDir)/libpngd.lib"/> OutputFile="$(OutDir)/libpngd.lib"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="copy ..\..\scripts\pnglibconf.h.prebuilt ..\..\pnglibconf.h"/> CommandLine="copy ..\..\scripts\pnglibconf.h.prebuilt ..\..\pnglibconf.h"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"> Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File <File
RelativePath="..\..\png.c"> RelativePath="..\..\png.c">
<FileConfiguration <FileConfiguration
Name="DLL Release|Win32"> Name="DLL Release|Win32">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
UsePrecompiledHeader="0"/> UsePrecompiledHeader="0"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="DLL Debug|Win32"> Name="DLL Debug|Win32">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
UsePrecompiledHeader="0"/> UsePrecompiledHeader="0"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="DLL VB|Win32"> Name="DLL VB|Win32">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
UsePrecompiledHeader="0"/> UsePrecompiledHeader="0"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Release|Win32"> Name="LIB Release|Win32">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
UsePrecompiledHeader="0"/> UsePrecompiledHeader="0"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Debug|Win32"> Name="LIB Debug|Win32">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
UsePrecompiledHeader="0"/> UsePrecompiledHeader="0"/>
</FileConfiguration> </FileConfiguration>
</File> </File>
<File <File
RelativePath="..\..\pngerror.c"> RelativePath="..\..\pngerror.c">
<FileConfiguration <FileConfiguration
Name="DLL Release|Win32"> Name="DLL Release|Win32">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/> UsePrecompiledHeader="1"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="DLL Debug|Win32"> Name="DLL Debug|Win32">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/> UsePrecompiledHeader="1"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="DLL VB|Win32"> Name="DLL VB|Win32">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/> UsePrecompiledHeader="1"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Release|Win32"> Name="LIB Release|Win32">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/> UsePrecompiledHeader="1"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Debug|Win32"> Name="LIB Debug|Win32">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/> UsePrecompiledHeader="1"/>
</FileConfiguration> </FileConfiguration>
</File> </File>
<File <File
RelativePath="..\..\pngget.c"> RelativePath="..\..\pngget.c">
</File> </File>
<File <File
RelativePath="..\..\pngmem.c"> RelativePath="..\..\pngmem.c">
</File> </File>
<File <File
RelativePath="..\..\pngpread.c"> RelativePath="..\..\pngpread.c">
</File> </File>
<File <File
RelativePath="..\..\pngread.c"> RelativePath="..\..\pngread.c">
</File> </File>
<File <File
RelativePath="..\..\pngrio.c"> RelativePath="..\..\pngrio.c">
</File> </File>
<File <File
RelativePath="..\..\pngrtran.c"> RelativePath="..\..\pngrtran.c">
</File> </File>
<File <File
RelativePath="..\..\pngrutil.c"> RelativePath="..\..\pngrutil.c">
</File> </File>
<File <File
RelativePath="..\..\pngset.c"> RelativePath="..\..\pngset.c">
</File> </File>
<File <File
RelativePath="..\..\pngtrans.c"> RelativePath="..\..\pngtrans.c">
</File> </File>
<File <File
RelativePath="..\..\pngwio.c"> RelativePath="..\..\pngwio.c">
</File> </File>
<File <File
RelativePath="..\..\pngwrite.c"> RelativePath="..\..\pngwrite.c">
</File> </File>
<File <File
RelativePath="..\..\pngwtran.c"> RelativePath="..\..\pngwtran.c">
</File> </File>
<File <File
RelativePath="..\..\pngwutil.c"> RelativePath="..\..\pngwutil.c">
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
Filter="h;hpp;hxx;hm;inl"> Filter="h;hpp;hxx;hm;inl">
<File <File
RelativePath="..\..\png.h"> RelativePath="..\..\png.h">
</File> </File>
<File <File
RelativePath="..\..\pngconf.h"> RelativePath="..\..\pngconf.h">
</File> </File>
<File <File
RelativePath="..\..\pngpriv.h"> RelativePath="..\..\pngpriv.h">
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Resource Files" Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"> Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
<File <File
RelativePath="..\..\scripts\pngwin.rc"> RelativePath="..\..\scripts\pngwin.rc">
<FileConfiguration <FileConfiguration
Name="LIB Release|Win32" Name="LIB Release|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Debug|Win32" Name="LIB Debug|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
</FileConfiguration> </FileConfiguration>
</File> </File>
</Filter> </Filter>
<File <File
RelativePath=".\PRJ0041.mak"> RelativePath=".\PRJ0041.mak">
<FileConfiguration <FileConfiguration
Name="DLL Release|Win32"> Name="DLL Release|Win32">
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="Create dummy include files to prevent &quot;Cannot find missing dependency...&quot; warnings." Description="Create dummy include files to prevent &quot;Cannot find missing dependency...&quot; warnings."
CommandLine="nmake -f PRJ0041.mak IntDir=$(IntDir)" CommandLine="nmake -f PRJ0041.mak IntDir=$(IntDir)"
Outputs="$(IntDir)\alloc.h;$(IntDir)\fp.h;$(IntDir)\m68881.h;$(IntDir)\mem.h;$(IntDir)\pngusr.h;$(IntDir)\strings.h;$(IntDir)\unistd.h;$(IntDir)\unixio.h"/> Outputs="$(IntDir)\alloc.h;$(IntDir)\fp.h;$(IntDir)\m68881.h;$(IntDir)\mem.h;$(IntDir)\pngusr.h;$(IntDir)\strings.h;$(IntDir)\unistd.h;$(IntDir)\unixio.h"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="DLL Debug|Win32"> Name="DLL Debug|Win32">
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="Create dummy include files to prevent &quot;Cannot find missing dependency...&quot; warnings." Description="Create dummy include files to prevent &quot;Cannot find missing dependency...&quot; warnings."
CommandLine="nmake -f PRJ0041.mak IntDir=$(IntDir)" CommandLine="nmake -f PRJ0041.mak IntDir=$(IntDir)"
Outputs="$(IntDir)\alloc.h;$(IntDir)\fp.h;$(IntDir)\m68881.h;$(IntDir)\mem.h;$(IntDir)\pngusr.h;$(IntDir)\strings.h;$(IntDir)\unistd.h;$(IntDir)\unixio.h"/> Outputs="$(IntDir)\alloc.h;$(IntDir)\fp.h;$(IntDir)\m68881.h;$(IntDir)\mem.h;$(IntDir)\pngusr.h;$(IntDir)\strings.h;$(IntDir)\unistd.h;$(IntDir)\unixio.h"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="DLL VB|Win32"> Name="DLL VB|Win32">
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="Create dummy include files to prevent &quot;Cannot find missing dependency...&quot; warnings." Description="Create dummy include files to prevent &quot;Cannot find missing dependency...&quot; warnings."
CommandLine="nmake -f PRJ0041.mak IntDir=$(IntDir)" CommandLine="nmake -f PRJ0041.mak IntDir=$(IntDir)"
Outputs="$(IntDir)\alloc.h;$(IntDir)\fp.h;$(IntDir)\m68881.h;$(IntDir)\mem.h;$(IntDir)\pngusr.h;$(IntDir)\strings.h;$(IntDir)\unistd.h;$(IntDir)\unixio.h"/> Outputs="$(IntDir)\alloc.h;$(IntDir)\fp.h;$(IntDir)\m68881.h;$(IntDir)\mem.h;$(IntDir)\pngusr.h;$(IntDir)\strings.h;$(IntDir)\unistd.h;$(IntDir)\unixio.h"/>
</FileConfiguration> </FileConfiguration>
</File> </File>
<File <File
RelativePath="README.txt"> RelativePath="README.txt">
</File> </File>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

View File

@ -1,267 +1,267 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
Name="pngtest" Name="pngtest"
RootNamespace="pngtest"> RootNamespace="pngtest">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32"/> Name="Win32"/>
</Platforms> </Platforms>
<Configurations> <Configurations>
<Configuration <Configuration
Name="DLL Release|Win32" Name="DLL Release|Win32"
OutputDirectory=".\Win32_DLL_Release\Test" OutputDirectory=".\Win32_DLL_Release\Test"
IntermediateDirectory=".\Win32_DLL_Release\Test" IntermediateDirectory=".\Win32_DLL_Release\Test"
ConfigurationType="1"> ConfigurationType="1">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\scripts;..\..\..\zlib" AdditionalIncludeDirectories="..\..\scripts;..\..\..\zlib"
PreprocessorDefinitions="WIN32;NDEBUG;PNG_DLL;PNG_NO_STDIO;_CRT_SECURE_NO_WARNINGS" PreprocessorDefinitions="WIN32;NDEBUG;PNG_DLL;PNG_NO_STDIO;_CRT_SECURE_NO_WARNINGS"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="2" RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
WarningLevel="3" WarningLevel="3"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="Testing..." Description="Testing..."
CommandLine="set path=$(OutDir)\..;$(OutDir)\..\ZLib CommandLine="set path=$(OutDir)\..;$(OutDir)\..\ZLib
$(TargetPath) ..\..\pngtest.png $(IntDir)\pngout.png" $(TargetPath) ..\..\pngtest.png $(IntDir)\pngout.png"
Outputs="$(IntDir)\pngout.png"/> Outputs="$(IntDir)\pngout.png"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)/pngtest.exe" OutputFile="$(OutDir)/pngtest.exe"
LinkIncremental="1" LinkIncremental="1"
SubSystem="1"/> SubSystem="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="DLL Debug|Win32" Name="DLL Debug|Win32"
OutputDirectory=".\Win32_DLL_Debug\Test" OutputDirectory=".\Win32_DLL_Debug\Test"
IntermediateDirectory=".\Win32_DLL_Debug\Test" IntermediateDirectory=".\Win32_DLL_Debug\Test"
ConfigurationType="1"> ConfigurationType="1">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\..\scripts;..\..\..\zlib" AdditionalIncludeDirectories="..\..\scripts;..\..\..\zlib"
PreprocessorDefinitions="WIN32;_DEBUG;PNG_DLL;PNG_NO_STDIO;_CRT_SECURE_NO_WARNINGS" PreprocessorDefinitions="WIN32;_DEBUG;PNG_DLL;PNG_NO_STDIO;_CRT_SECURE_NO_WARNINGS"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="3" RuntimeLibrary="3"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="4" DebugInformationFormat="4"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="Testing..." Description="Testing..."
CommandLine="set path=$(OutDir)\..;$(OutDir)\..\ZLib CommandLine="set path=$(OutDir)\..;$(OutDir)\..\ZLib
$(TargetPath) ..\..\pngtest.png $(IntDir)\pngout.png" $(TargetPath) ..\..\pngtest.png $(IntDir)\pngout.png"
Outputs="$(IntDir)\pngout.png"/> Outputs="$(IntDir)\pngout.png"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)/pngtest.exe" OutputFile="$(OutDir)/pngtest.exe"
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
SubSystem="1" SubSystem="1"
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="DLL VB|Win32" Name="DLL VB|Win32"
OutputDirectory=".\Win32_DLL_VB\Test" OutputDirectory=".\Win32_DLL_VB\Test"
IntermediateDirectory=".\Win32_DLL_VB\Test" IntermediateDirectory=".\Win32_DLL_VB\Test"
ConfigurationType="1"> ConfigurationType="1">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\scripts;..\..\..\zlib" AdditionalIncludeDirectories="..\..\scripts;..\..\..\zlib"
PreprocessorDefinitions="WIN32;NDEBUG;PNG_DLL;PNG_NO_STDIO;PNGAPI=__stdcall;PNG_USER_PRIVATEBUILD;_CRT_SECURE_NO_WARNINGS" PreprocessorDefinitions="WIN32;NDEBUG;PNG_DLL;PNG_NO_STDIO;PNGAPI=__stdcall;PNG_USER_PRIVATEBUILD;_CRT_SECURE_NO_WARNINGS"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="2" RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
WarningLevel="2" WarningLevel="2"
CallingConvention="2" CallingConvention="2"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="Testing..." Description="Testing..."
CommandLine="set path=$(OutDir)\..;$(OutDir)\..\..\Win32_DLL_Release\ZLib CommandLine="set path=$(OutDir)\..;$(OutDir)\..\..\Win32_DLL_Release\ZLib
$(TargetPath) ..\..\pngtest.png $(IntDir)\pngout.png" $(TargetPath) ..\..\pngtest.png $(IntDir)\pngout.png"
Outputs="$(IntDir)\pngout.png"/> Outputs="$(IntDir)\pngout.png"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)/pngtest.exe" OutputFile="$(OutDir)/pngtest.exe"
LinkIncremental="1" LinkIncremental="1"
IgnoreDefaultLibraryNames="$(IntDir)\libpng16b.lib" IgnoreDefaultLibraryNames="$(IntDir)\libpng16b.lib"
SubSystem="1" SubSystem="1"
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="LIB Release|Win32" Name="LIB Release|Win32"
OutputDirectory=".\Win32_LIB_Release\Test" OutputDirectory=".\Win32_LIB_Release\Test"
IntermediateDirectory=".\Win32_LIB_Release\Test" IntermediateDirectory=".\Win32_LIB_Release\Test"
ConfigurationType="1"> ConfigurationType="1">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\scripts;..\..\..\zlib" AdditionalIncludeDirectories="..\..\scripts;..\..\..\zlib"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS" PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
WarningLevel="3" WarningLevel="3"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="Testing..." Description="Testing..."
CommandLine="set path=$(OutDir)\..;$(OutDir)\..\ZLib CommandLine="set path=$(OutDir)\..;$(OutDir)\..\ZLib
$(TargetPath) ..\..\pngtest.png $(IntDir)\pngout.png" $(TargetPath) ..\..\pngtest.png $(IntDir)\pngout.png"
Outputs="$(IntDir)\pngout.png"/> Outputs="$(IntDir)\pngout.png"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)/pngtest.exe" OutputFile="$(OutDir)/pngtest.exe"
LinkIncremental="1" LinkIncremental="1"
SubSystem="1" SubSystem="1"
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="LIB Debug|Win32" Name="LIB Debug|Win32"
OutputDirectory=".\Win32_LIB_Debug\Test" OutputDirectory=".\Win32_LIB_Debug\Test"
IntermediateDirectory=".\Win32_LIB_Debug\Test" IntermediateDirectory=".\Win32_LIB_Debug\Test"
ConfigurationType="1"> ConfigurationType="1">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\..\scripts;..\..\..\zlib" AdditionalIncludeDirectories="..\..\scripts;..\..\..\zlib"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS" PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="4" DebugInformationFormat="4"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="Testing..." Description="Testing..."
CommandLine="set path=$(OutDir)\..;$(OutDir)\..\ZLib CommandLine="set path=$(OutDir)\..;$(OutDir)\..\ZLib
$(TargetPath) ..\..\pngtest.png $(IntDir)\pngout.png" $(TargetPath) ..\..\pngtest.png $(IntDir)\pngout.png"
Outputs="$(IntDir)\pngout.png"/> Outputs="$(IntDir)\pngout.png"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)/pngtest.exe" OutputFile="$(OutDir)/pngtest.exe"
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
SubSystem="1" SubSystem="1"
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"> Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File <File
RelativePath="..\..\pngtest.c"> RelativePath="..\..\pngtest.c">
</File> </File>
</Filter> </Filter>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

View File

@ -1,391 +1,391 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
Name="zlib"> Name="zlib">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32"/> Name="Win32"/>
</Platforms> </Platforms>
<Configurations> <Configurations>
<Configuration <Configuration
Name="DLL Release|Win32" Name="DLL Release|Win32"
OutputDirectory=".\Win32_DLL_Release\ZLib" OutputDirectory=".\Win32_DLL_Release\ZLib"
IntermediateDirectory=".\Win32_DLL_Release\ZLib" IntermediateDirectory=".\Win32_DLL_Release\ZLib"
ConfigurationType="2"> ConfigurationType="2">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\zlib" AdditionalIncludeDirectories="..\..\..\zlib"
PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS" PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="2" RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
WarningLevel="3" WarningLevel="3"
CompileAs="1"/> CompileAs="1"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)\zlib1.dll" OutputFile="$(OutDir)\zlib1.dll"
LinkIncremental="1" LinkIncremental="1"
ModuleDefinitionFile="..\..\..\zlib\win32\zlib.def"/> ModuleDefinitionFile="..\..\..\zlib\win32\zlib.def"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG" PreprocessorDefinitions="NDEBUG"
Culture="1033"/> Culture="1033"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="DLL Debug|Win32" Name="DLL Debug|Win32"
OutputDirectory=".\Win32_DLL_Debug\ZLib" OutputDirectory=".\Win32_DLL_Debug\ZLib"
IntermediateDirectory=".\Win32_DLL_Debug\ZLib" IntermediateDirectory=".\Win32_DLL_Debug\ZLib"
ConfigurationType="2"> ConfigurationType="2">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\..\..\zlib" AdditionalIncludeDirectories="..\..\..\zlib"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS" PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="3" RuntimeLibrary="3"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="4" DebugInformationFormat="4"
CompileAs="1"/> CompileAs="1"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)\zlib1d.dll" OutputFile="$(OutDir)\zlib1d.dll"
ModuleDefinitionFile="..\..\..\zlib\win32\zlib.def" ModuleDefinitionFile="..\..\..\zlib\win32\zlib.def"
GenerateDebugInformation="TRUE"/> GenerateDebugInformation="TRUE"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG" PreprocessorDefinitions="_DEBUG"
Culture="1033"/> Culture="1033"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="LIB Release|Win32" Name="LIB Release|Win32"
OutputDirectory=".\Win32_LIB_Release\ZLib" OutputDirectory=".\Win32_LIB_Release\ZLib"
IntermediateDirectory=".\Win32_LIB_Release\ZLib" IntermediateDirectory=".\Win32_LIB_Release\ZLib"
ConfigurationType="4"> ConfigurationType="4">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\zlib" AdditionalIncludeDirectories="..\..\..\zlib"
PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS" PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
WarningLevel="3" WarningLevel="3"
CompileAs="1"/> CompileAs="1"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="$(OutDir)\zlib.lib"/> OutputFile="$(OutDir)\zlib.lib"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="LIB Debug|Win32" Name="LIB Debug|Win32"
OutputDirectory=".\Win32_LIB_Debug\ZLib" OutputDirectory=".\Win32_LIB_Debug\ZLib"
IntermediateDirectory=".\Win32_LIB_Debug\ZLib" IntermediateDirectory=".\Win32_LIB_Debug\ZLib"
ConfigurationType="4"> ConfigurationType="4">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\..\..\zlib" AdditionalIncludeDirectories="..\..\..\zlib"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS" PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="4" DebugInformationFormat="4"
CompileAs="1"/> CompileAs="1"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="$(OutDir)\zlibd.lib"/> OutputFile="$(OutDir)\zlibd.lib"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"> Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File <File
RelativePath="..\..\..\zlib\adler32.c"> RelativePath="..\..\..\zlib\adler32.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\compress.c"> RelativePath="..\..\..\zlib\compress.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\crc32.c"> RelativePath="..\..\..\zlib\crc32.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\deflate.c"> RelativePath="..\..\..\zlib\deflate.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\gzlib.c"> RelativePath="..\..\..\zlib\gzlib.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\gzclose.c"> RelativePath="..\..\..\zlib\gzclose.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\gzread.c"> RelativePath="..\..\..\zlib\gzread.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\gzwrite.c"> RelativePath="..\..\..\zlib\gzwrite.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\infback.c"> RelativePath="..\..\..\zlib\infback.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\inffast.c"> RelativePath="..\..\..\zlib\inffast.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\inflate.c"> RelativePath="..\..\..\zlib\inflate.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\inftrees.c"> RelativePath="..\..\..\zlib\inftrees.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\trees.c"> RelativePath="..\..\..\zlib\trees.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\uncompr.c"> RelativePath="..\..\..\zlib\uncompr.c">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\win32\zlib.def"> RelativePath="..\..\..\zlib\win32\zlib.def">
<FileConfiguration <FileConfiguration
Name="LIB Release|Win32" Name="LIB Release|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Debug|Win32" Name="LIB Debug|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
</FileConfiguration> </FileConfiguration>
</File> </File>
<File <File
RelativePath="..\..\..\zlib\zutil.c"> RelativePath="..\..\..\zlib\zutil.c">
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
Filter="h;hpp;hxx;hm;inl"> Filter="h;hpp;hxx;hm;inl">
<File <File
RelativePath="..\..\..\zlib\crc32.h"> RelativePath="..\..\..\zlib\crc32.h">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\deflate.h"> RelativePath="..\..\..\zlib\deflate.h">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\inffast.h"> RelativePath="..\..\..\zlib\inffast.h">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\inffixed.h"> RelativePath="..\..\..\zlib\inffixed.h">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\inflate.h"> RelativePath="..\..\..\zlib\inflate.h">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\inftrees.h"> RelativePath="..\..\..\zlib\inftrees.h">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\trees.h"> RelativePath="..\..\..\zlib\trees.h">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\zconf.h"> RelativePath="..\..\..\zlib\zconf.h">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\zlib.h"> RelativePath="..\..\..\zlib\zlib.h">
</File> </File>
<File <File
RelativePath="..\..\..\zlib\zutil.h"> RelativePath="..\..\..\zlib\zutil.h">
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Resource Files" Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"> Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
<File <File
RelativePath="..\..\..\zlib\win32\zlib1.rc"> RelativePath="..\..\..\zlib\win32\zlib1.rc">
<FileConfiguration <FileConfiguration
Name="LIB Release|Win32" Name="LIB Release|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Debug|Win32" Name="LIB Debug|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
</FileConfiguration> </FileConfiguration>
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Assembler Files (Unsupported)" Name="Assembler Files (Unsupported)"
Filter="asm;obj;c;cpp;cxx;h;hpp;hxx"> Filter="asm;obj;c;cpp;cxx;h;hpp;hxx">
<File <File
RelativePath="..\..\..\zlib\contrib\masmx86\gvmat32.asm"> RelativePath="..\..\..\zlib\contrib\masmx86\gvmat32.asm">
<FileConfiguration <FileConfiguration
Name="DLL Release|Win32" Name="DLL Release|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="DLL Debug|Win32" Name="DLL Debug|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Release|Win32" Name="LIB Release|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Debug|Win32" Name="LIB Debug|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
</FileConfiguration> </FileConfiguration>
</File> </File>
<File <File
RelativePath="..\..\..\zlib\contrib\masmx86\gvmat32c.c"> RelativePath="..\..\..\zlib\contrib\masmx86\gvmat32c.c">
<FileConfiguration <FileConfiguration
Name="DLL Release|Win32" Name="DLL Release|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCLCompilerTool"/> Name="VCCLCompilerTool"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="DLL Debug|Win32" Name="DLL Debug|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCLCompilerTool"/> Name="VCCLCompilerTool"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Release|Win32" Name="LIB Release|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCLCompilerTool"/> Name="VCCLCompilerTool"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Debug|Win32" Name="LIB Debug|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCLCompilerTool"/> Name="VCCLCompilerTool"/>
</FileConfiguration> </FileConfiguration>
</File> </File>
<File <File
RelativePath="..\..\..\zlib\contrib\masmx86\inffas32.asm"> RelativePath="..\..\..\zlib\contrib\masmx86\inffas32.asm">
<FileConfiguration <FileConfiguration
Name="DLL Release|Win32" Name="DLL Release|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="DLL Debug|Win32" Name="DLL Debug|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Release|Win32" Name="LIB Release|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="LIB Debug|Win32" Name="LIB Debug|Win32"
ExcludedFromBuild="TRUE"> ExcludedFromBuild="TRUE">
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
</FileConfiguration> </FileConfiguration>
</File> </File>
</Filter> </Filter>
<File <File
RelativePath="README.txt"> RelativePath="README.txt">
</File> </File>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

View File

@ -1,61 +1,61 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{EB33566E-DA7F-4D28-9077-88C0B7C77E35}</ProjectGuid> <ProjectGuid>{EB33566E-DA7F-4D28-9077-88C0B7C77E35}</ProjectGuid>
<RootNamespace>pnglibconf</RootNamespace> <RootNamespace>pnglibconf</RootNamespace>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup> </PropertyGroup>
<Import Project="$(SolutionDir)\zlib.props" /> <Import Project="$(SolutionDir)\zlib.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<CustomBuildBeforeTargets>Build</CustomBuildBeforeTargets> <CustomBuildBeforeTargets>Build</CustomBuildBeforeTargets>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization> <Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
</ClCompile> </ClCompile>
<Link> <Link>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Command>copy ..\..\..\scripts\pnglibconf.h.prebuilt ..\..\..\pnglibconf.h</Command> <Command>copy ..\..\..\scripts\pnglibconf.h.prebuilt ..\..\..\pnglibconf.h</Command>
</CustomBuildStep> </CustomBuildStep>
<CustomBuildStep> <CustomBuildStep>
<Message>Generating pnglibconf.h</Message> <Message>Generating pnglibconf.h</Message>
</CustomBuildStep> </CustomBuildStep>
<CustomBuildStep> <CustomBuildStep>
<Outputs>..\..\..\pnglibconf.h</Outputs> <Outputs>..\..\..\pnglibconf.h</Outputs>
</CustomBuildStep> </CustomBuildStep>
<CustomBuildStep> <CustomBuildStep>
<Inputs>..\..\..\scripts\pnglibconf.h.prebuilt</Inputs> <Inputs>..\..\..\scripts\pnglibconf.h.prebuilt</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@ -1,219 +1,219 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug Library|Win32"> <ProjectConfiguration Include="Debug Library|Win32">
<Configuration>Debug Library</Configuration> <Configuration>Debug Library</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release Library|Win32"> <ProjectConfiguration Include="Release Library|Win32">
<Configuration>Release Library</Configuration> <Configuration>Release Library</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{277AC57F-313B-4D06-B119-A3CDB672D2FF}</ProjectGuid> <ProjectGuid>{277AC57F-313B-4D06-B119-A3CDB672D2FF}</ProjectGuid>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<RootNamespace>pngstest</RootNamespace> <RootNamespace>pngstest</RootNamespace>
</PropertyGroup> </PropertyGroup>
<Import Project="$(SolutionDir)\zlib.props" /> <Import Project="$(SolutionDir)\zlib.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4127</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>libpng16.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing libpng simplified API test program</Message> <Message>Executing libpng simplified API test program</Message>
<Command>"$(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</Command> <Command>"$(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</Command>
<Outputs>$(IntDir)pngstest.out</Outputs> <Outputs>$(IntDir)pngstest.out</Outputs>
<Inputs>$(OutDir)pngstest.exe</Inputs> <Inputs>$(OutDir)pngstest.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4127</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing libpng simplified API test program</Message> <Message>Executing libpng simplified API test program</Message>
<Command>"$(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</Command> <Command>"$(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</Command>
<Outputs>$(IntDir)pngstest.out</Outputs> <Outputs>$(IntDir)pngstest.out</Outputs>
<Inputs>$(OutDir)pngstest.exe</Inputs> <Inputs>$(OutDir)pngstest.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4127</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libpng16.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing libpng simplified API test program</Message> <Message>Executing libpng simplified API test program</Message>
<Command>"$(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</Command> <Command>"$(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</Command>
<Outputs>$(IntDir)pngstest.out</Outputs> <Outputs>$(IntDir)pngstest.out</Outputs>
<Inputs>$(OutDir)pngstest.exe</Inputs> <Inputs>$(OutDir)pngstest.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4127</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing libpng simplified API test program</Message> <Message>Executing libpng simplified API test program</Message>
<Command>"$(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</Command> <Command>"$(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</Command>
<Outputs>$(IntDir)pngstest.out</Outputs> <Outputs>$(IntDir)pngstest.out</Outputs>
<Inputs>$(OutDir)pngstest.exe</Inputs> <Inputs>$(OutDir)pngstest.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\..\contrib\libtests\pngstest.c" /> <ClCompile Include="..\..\..\contrib\libtests\pngstest.c" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@ -1,220 +1,220 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug Library|Win32"> <ProjectConfiguration Include="Debug Library|Win32">
<Configuration>Debug Library</Configuration> <Configuration>Debug Library</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release Library|Win32"> <ProjectConfiguration Include="Release Library|Win32">
<Configuration>Release Library</Configuration> <Configuration>Release Library</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}</ProjectGuid> <ProjectGuid>{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}</ProjectGuid>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<RootNamespace>pngtest</RootNamespace> <RootNamespace>pngtest</RootNamespace>
</PropertyGroup> </PropertyGroup>
<Import Project="$(SolutionDir)\zlib.props" /> <Import Project="$(SolutionDir)\zlib.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996</DisableSpecificWarnings> <DisableSpecificWarnings>4996</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>libpng16.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing PNG test program</Message> <Message>Executing PNG test program</Message>
<Command>"$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png"</Command> <Command>"$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png"</Command>
<Outputs>$(IntDir)pngout.png</Outputs> <Outputs>$(IntDir)pngout.png</Outputs>
<Inputs>..\..\..\pngtest.png;$(OutDir)pngtest.exe</Inputs> <Inputs>..\..\..\pngtest.png;$(OutDir)pngtest.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996</DisableSpecificWarnings> <DisableSpecificWarnings>4996</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing PNG test program</Message> <Message>Executing PNG test program</Message>
<Command>"$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png"</Command> <Command>"$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png"</Command>
<Outputs>$(IntDir)pngout.png</Outputs> <Outputs>$(IntDir)pngout.png</Outputs>
<Inputs>..\..\..\pngtest.png;$(OutDir)pngtest.exe</Inputs> <Inputs>..\..\..\pngtest.png;$(OutDir)pngtest.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996</DisableSpecificWarnings> <DisableSpecificWarnings>4996</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<AdditionalDependencies>libpng16.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing PNG test program</Message> <Message>Executing PNG test program</Message>
<Command>"$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png"</Command> <Command>"$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png"</Command>
<Outputs>$(IntDir)pngout.png</Outputs> <Outputs>$(IntDir)pngout.png</Outputs>
<Inputs>..\..\..\pngtest.png;$(OutDir)pngtest.exe</Inputs> <Inputs>..\..\..\pngtest.png;$(OutDir)pngtest.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996</DisableSpecificWarnings> <DisableSpecificWarnings>4996</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing PNG test program</Message> <Message>Executing PNG test program</Message>
<Command>$(OutDir)pngtest.exe ..\..\..\pngtest.png $(IntDir)pngout.png</Command> <Command>$(OutDir)pngtest.exe ..\..\..\pngtest.png $(IntDir)pngout.png</Command>
<Command>"$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png"</Command> <Command>"$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png"</Command>
<Outputs>$(IntDir)pngout.png</Outputs> <Outputs>$(IntDir)pngout.png</Outputs>
<Inputs>..\..\..\pngtest.png;$(OutDir)pngtest.exe</Inputs> <Inputs>..\..\..\pngtest.png;$(OutDir)pngtest.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\..\pngtest.c" /> <ClCompile Include="..\..\..\pngtest.c" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@ -1,219 +1,219 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug Library|Win32"> <ProjectConfiguration Include="Debug Library|Win32">
<Configuration>Debug Library</Configuration> <Configuration>Debug Library</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release Library|Win32"> <ProjectConfiguration Include="Release Library|Win32">
<Configuration>Release Library</Configuration> <Configuration>Release Library</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{C5D3156C-8C8C-4936-B35F-2B829BA36FEC}</ProjectGuid> <ProjectGuid>{C5D3156C-8C8C-4936-B35F-2B829BA36FEC}</ProjectGuid>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<RootNamespace>pngunknown</RootNamespace> <RootNamespace>pngunknown</RootNamespace>
</PropertyGroup> </PropertyGroup>
<Import Project="$(SolutionDir)\zlib.props" /> <Import Project="$(SolutionDir)\zlib.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4127</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>libpng16.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing PNG validation program</Message> <Message>Executing PNG validation program</Message>
<Command>"$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png</Command> <Command>"$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png</Command>
<Outputs>$(IntDir)pngunknown.out</Outputs> <Outputs>$(IntDir)pngunknown.out</Outputs>
<Inputs>$(OutDir)pngunknown.exe</Inputs> <Inputs>$(OutDir)pngunknown.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4127</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing PNG validation program</Message> <Message>Executing PNG validation program</Message>
<Command>"$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png</Command> <Command>"$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png</Command>
<Outputs>$(IntDir)pngunknown.out</Outputs> <Outputs>$(IntDir)pngunknown.out</Outputs>
<Inputs>$(OutDir)pngunknown.exe</Inputs> <Inputs>$(OutDir)pngunknown.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4127</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libpng16.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing PNG validation program</Message> <Message>Executing PNG validation program</Message>
<Command>"$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png</Command> <Command>"$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png</Command>
<Outputs>$(IntDir)pngunknown.out</Outputs> <Outputs>$(IntDir)pngunknown.out</Outputs>
<Inputs>$(OutDir)pngunknown.exe</Inputs> <Inputs>$(OutDir)pngunknown.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4127</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing PNG validation program</Message> <Message>Executing PNG validation program</Message>
<Command>"$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png</Command> <Command>"$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png</Command>
<Outputs>$(IntDir)pngunknown.out</Outputs> <Outputs>$(IntDir)pngunknown.out</Outputs>
<Inputs>$(OutDir)pngunknown.exe</Inputs> <Inputs>$(OutDir)pngunknown.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\..\contrib\libtests\pngunknown.c" /> <ClCompile Include="..\..\..\contrib\libtests\pngunknown.c" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@ -1,219 +1,219 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug Library|Win32"> <ProjectConfiguration Include="Debug Library|Win32">
<Configuration>Debug Library</Configuration> <Configuration>Debug Library</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release Library|Win32"> <ProjectConfiguration Include="Release Library|Win32">
<Configuration>Release Library</Configuration> <Configuration>Release Library</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}</ProjectGuid> <ProjectGuid>{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}</ProjectGuid>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<RootNamespace>pngvalid</RootNamespace> <RootNamespace>pngvalid</RootNamespace>
</PropertyGroup> </PropertyGroup>
<Import Project="$(SolutionDir)\zlib.props" /> <Import Project="$(SolutionDir)\zlib.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<CustomBuildAfterTargets /> <CustomBuildAfterTargets />
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4127</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing PNG validation program</Message> <Message>Executing PNG validation program</Message>
<Command>"$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out"</Command> <Command>"$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out"</Command>
<Outputs>$(IntDir)pngvalid.out</Outputs> <Outputs>$(IntDir)pngvalid.out</Outputs>
<Inputs>$(OutDir)pngvalid.exe</Inputs> <Inputs>$(OutDir)pngvalid.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4127</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing PNG validation program</Message> <Message>Executing PNG validation program</Message>
<Command>"$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out"</Command> <Command>"$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out"</Command>
<Outputs>$(IntDir)pngvalid.out</Outputs> <Outputs>$(IntDir)pngvalid.out</Outputs>
<Inputs>$(OutDir)pngvalid.exe</Inputs> <Inputs>$(OutDir)pngvalid.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4127</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing PNG validation program</Message> <Message>Executing PNG validation program</Message>
<Command>"$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out"</Command> <Command>"$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out"</Command>
<Outputs>$(IntDir)pngvalid.out</Outputs> <Outputs>$(IntDir)pngvalid.out</Outputs>
<Inputs>$(OutDir)pngvalid.exe</Inputs> <Inputs>$(OutDir)pngvalid.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4127</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies> <AdditionalDependencies>libpng16.lib;zlib.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link> </Link>
<CustomBuildStep> <CustomBuildStep>
<Message>Executing PNG validation program</Message> <Message>Executing PNG validation program</Message>
<Command>"$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out"</Command> <Command>"$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out"</Command>
<Outputs>$(IntDir)pngvalid.out</Outputs> <Outputs>$(IntDir)pngvalid.out</Outputs>
<Inputs>$(OutDir)pngvalid.exe</Inputs> <Inputs>$(OutDir)pngvalid.exe</Inputs>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\..\contrib\libtests\pngvalid.c" /> <ClCompile Include="..\..\..\contrib\libtests\pngvalid.c" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@ -1,109 +1,109 @@
Microsoft Visual Studio Solution File, Format Version 11.00 Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010 # Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib.vcxproj", "{60F89955-91C6-3A36-8000-13C592FEC2DF}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib.vcxproj", "{60F89955-91C6-3A36-8000-13C592FEC2DF}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pnglibconf", "pnglibconf\pnglibconf.vcxproj", "{EB33566E-DA7F-4D28-9077-88C0B7C77E35}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pnglibconf", "pnglibconf\pnglibconf.vcxproj", "{EB33566E-DA7F-4D28-9077-88C0B7C77E35}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "libpng\libpng.vcxproj", "{D6973076-9317-4EF2-A0B8-B7A18AC0713E}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "libpng\libpng.vcxproj", "{D6973076-9317-4EF2-A0B8-B7A18AC0713E}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF}
{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngtest", "pngtest\pngtest.vcxproj", "{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngtest", "pngtest\pngtest.vcxproj", "{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF}
{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35}
{D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngvalid", "pngvalid\pngvalid.vcxproj", "{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngvalid", "pngvalid\pngvalid.vcxproj", "{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF}
{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35}
{D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngstest", "pngstest\pngstest.vcxproj", "{277AC57F-313B-4D06-B119-A3CDB672D2FF}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngstest", "pngstest\pngstest.vcxproj", "{277AC57F-313B-4D06-B119-A3CDB672D2FF}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF}
{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35}
{D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngunknown", "pngunknown\pngunknown.vcxproj", "{C5D3156C-8C8C-4936-B35F-2B829BA36FEC}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngunknown", "pngunknown\pngunknown.vcxproj", "{C5D3156C-8C8C-4936-B35F-2B829BA36FEC}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF}
{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35}
{D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E}
EndProjectSection EndProjectSection
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug Library|Win32 = Debug Library|Win32 Debug Library|Win32 = Debug Library|Win32
Debug|Win32 = Debug|Win32 Debug|Win32 = Debug|Win32
Release Library|Win32 = Release Library|Win32 Release Library|Win32 = Release Library|Win32
Release|Win32 = Release|Win32 Release|Win32 = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 {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 Library|Win32.Build.0 = Debug Library|Win32
{D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.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|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.ActiveCfg = Release Library|Win32
{D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release Library|Win32.Build.0 = 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.ActiveCfg = Release|Win32
{D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.Build.0 = 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.ActiveCfg = Debug Library|Win32
{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug Library|Win32.Build.0 = 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.ActiveCfg = Debug|Win32
{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug|Win32.Build.0 = 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.ActiveCfg = Release Library|Win32
{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release Library|Win32.Build.0 = 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.ActiveCfg = Release|Win32
{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release|Win32.Build.0 = 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.ActiveCfg = Debug Library|Win32
{60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug Library|Win32.Build.0 = 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.ActiveCfg = Debug|Win32
{60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug|Win32.Build.0 = 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.ActiveCfg = Release Library|Win32
{60F89955-91C6-3A36-8000-13C592FEC2DF}.Release Library|Win32.Build.0 = 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.ActiveCfg = Release|Win32
{60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|Win32.Build.0 = 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.ActiveCfg = Debug Library|Win32
{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug Library|Win32.Build.0 = 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.ActiveCfg = Debug|Win32
{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug|Win32.Build.0 = 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.ActiveCfg = Release Library|Win32
{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release Library|Win32.Build.0 = 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.ActiveCfg = Release|Win32
{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release|Win32.Build.0 = 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.ActiveCfg = Release|Win32
{EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug Library|Win32.Build.0 = 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.ActiveCfg = Release|Win32
{EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug|Win32.Build.0 = 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.ActiveCfg = Release|Win32
{EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release Library|Win32.Build.0 = 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.ActiveCfg = Release|Win32
{EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release|Win32.Build.0 = 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.ActiveCfg = Debug Library|Win32
{277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug Library|Win32.Build.0 = 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.ActiveCfg = Debug|Win32
{277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug|Win32.Build.0 = 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.ActiveCfg = Release Library|Win32
{277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release Library|Win32.Build.0 = 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.ActiveCfg = Release|Win32
{277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release|Win32.Build.0 = 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.ActiveCfg = Debug Library|Win32
{C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug Library|Win32.Build.0 = 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.ActiveCfg = Debug|Win32
{C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug|Win32.Build.0 = 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.ActiveCfg = Release Library|Win32
{C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release Library|Win32.Build.0 = 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.ActiveCfg = Release|Win32
{C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release|Win32.Build.0 = Release|Win32 {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

View File

@ -1,169 +1,169 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug Library|Win32"> <ProjectConfiguration Include="Debug Library|Win32">
<Configuration>Debug Library</Configuration> <Configuration>Debug Library</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release Library|Win32"> <ProjectConfiguration Include="Release Library|Win32">
<Configuration>Release Library</Configuration> <Configuration>Release Library</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="$(ZLibSrcDir)\adler32.c" /> <ClCompile Include="$(ZLibSrcDir)\adler32.c" />
<ClCompile Include="$(ZLibSrcDir)\compress.c" /> <ClCompile Include="$(ZLibSrcDir)\compress.c" />
<ClCompile Include="$(ZLibSrcDir)\crc32.c" /> <ClCompile Include="$(ZLibSrcDir)\crc32.c" />
<ClCompile Include="$(ZLibSrcDir)\deflate.c" /> <ClCompile Include="$(ZLibSrcDir)\deflate.c" />
<ClCompile Include="$(ZLibSrcDir)\infback.c" /> <ClCompile Include="$(ZLibSrcDir)\infback.c" />
<ClCompile Include="$(ZLibSrcDir)\inffast.c" /> <ClCompile Include="$(ZLibSrcDir)\inffast.c" />
<ClCompile Include="$(ZLibSrcDir)\inflate.c" /> <ClCompile Include="$(ZLibSrcDir)\inflate.c" />
<ClCompile Include="$(ZLibSrcDir)\inftrees.c" /> <ClCompile Include="$(ZLibSrcDir)\inftrees.c" />
<ClCompile Include="$(ZLibSrcDir)\trees.c" /> <ClCompile Include="$(ZLibSrcDir)\trees.c" />
<ClCompile Include="$(ZLibSrcDir)\uncompr.c" /> <ClCompile Include="$(ZLibSrcDir)\uncompr.c" />
<ClCompile Include="$(ZLibSrcDir)\zutil.c" /> <ClCompile Include="$(ZLibSrcDir)\zutil.c" />
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{60F89955-91C6-3A36-8000-13C592FEC2DF}</ProjectGuid> <ProjectGuid>{60F89955-91C6-3A36-8000-13C592FEC2DF}</ProjectGuid>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<RootNamespace>zlib</RootNamespace> <RootNamespace>zlib</RootNamespace>
</PropertyGroup> </PropertyGroup>
<Import Project="$(SolutionDir)\zlib.props" /> <Import Project="$(SolutionDir)\zlib.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">
<ClCompile> <ClCompile>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>TurnOffAllWarnings</WarningLevel> <WarningLevel>TurnOffAllWarnings</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
</ClCompile> </ClCompile>
<Link> <Link>
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>TurnOffAllWarnings</WarningLevel> <WarningLevel>TurnOffAllWarnings</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
</Link> </Link>
<Lib> <Lib>
<LinkTimeCodeGeneration>true</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib> </Lib>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<BrowseInformation>true</BrowseInformation> <BrowseInformation>true</BrowseInformation>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<TreatWarningAsError>true</TreatWarningAsError> <TreatWarningAsError>true</TreatWarningAsError>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
</Link> </Link>
<Lib> <Lib>
<LinkTimeCodeGeneration>true</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib> </Lib>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@ -1,87 +1,87 @@
# makefile for libpng using gcc (generic, static library) # makefile for libpng using gcc (generic, static library)
# Copyright (C) 2008, 2014 Glenn Randers-Pehrson # Copyright (C) 2008, 2014 Glenn Randers-Pehrson
# Copyright (C) 2000 Cosmin Truta # Copyright (C) 2000 Cosmin Truta
# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. # Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
# #
# This code is released under the libpng license. # This code is released under the libpng license.
# For conditions of distribution and use, see the disclaimer # For conditions of distribution and use, see the disclaimer
# and license in png.h # and license in png.h
# Location of the zlib library and include files # Location of the zlib library and include files
ZLIBINC = ../zlib ZLIBINC = ../zlib
ZLIBLIB = ../zlib ZLIBLIB = ../zlib
# Compiler, linker, lib and other tools # Compiler, linker, lib and other tools
CC = gcc CC = gcc
LD = $(CC) LD = $(CC)
AR_RC = ar rcs AR_RC = ar rcs
RANLIB = ranlib RANLIB = ranlib
CP = cp CP = cp
RM_F = rm -f RM_F = rm -f
WARNMORE = -Wwrite-strings -Wpointer-arith -Wshadow \ WARNMORE = -Wwrite-strings -Wpointer-arith -Wshadow \
-Wmissing-declarations -Wtraditional -Wcast-align \ -Wmissing-declarations -Wtraditional -Wcast-align \
-Wstrict-prototypes -Wmissing-prototypes # -Wconversion -Wstrict-prototypes -Wmissing-prototypes # -Wconversion
CPPFLAGS = -I$(ZLIBINC) # -DPNG_DEBUG=5 CPPFLAGS = -I$(ZLIBINC) # -DPNG_DEBUG=5
CFLAGS = -W -Wall -O2 # $(WARNMORE) -g CFLAGS = -W -Wall -O2 # $(WARNMORE) -g
LDFLAGS = LDFLAGS =
LIBS = -lz -lm LIBS = -lz -lm
# File extensions # File extensions
EXEEXT = EXEEXT =
# Pre-built configuration # Pre-built configuration
# See scripts/pnglibconf.mak for more options # See scripts/pnglibconf.mak for more options
PNGLIBCONF_H_PREBUILT = scripts/pnglibconf.h.prebuilt PNGLIBCONF_H_PREBUILT = scripts/pnglibconf.h.prebuilt
# Variables # Variables
OBJS = png.o pngerror.o pngget.o pngmem.o pngpread.o \ OBJS = png.o pngerror.o pngget.o pngmem.o pngpread.o \
pngread.o pngrio.o pngrtran.o pngrutil.o pngset.o \ pngread.o pngrio.o pngrtran.o pngrutil.o pngset.o \
pngtrans.o pngwio.o pngwrite.o pngwtran.o pngwutil.o pngtrans.o pngwio.o pngwrite.o pngwtran.o pngwutil.o
# Targets # Targets
all: static all: static
pnglibconf.h: $(PNGLIBCONF_H_PREBUILT) pnglibconf.h: $(PNGLIBCONF_H_PREBUILT)
$(CP) $(PNGLIBCONF_H_PREBUILT) $@ $(CP) $(PNGLIBCONF_H_PREBUILT) $@
.c.o: .c.o:
$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $< $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
static: libpng.a pngtest$(EXEEXT) static: libpng.a pngtest$(EXEEXT)
shared: shared:
@echo This is a generic makefile that cannot create shared libraries. @echo This is a generic makefile that cannot create shared libraries.
@echo Please use a configuration that is specific to your platform. @echo Please use a configuration that is specific to your platform.
@false @false
libpng.a: $(OBJS) libpng.a: $(OBJS)
$(AR_RC) $@ $(OBJS) $(AR_RC) $@ $(OBJS)
$(RANLIB) $@ $(RANLIB) $@
test: pngtest$(EXEEXT) test: pngtest$(EXEEXT)
./pngtest$(EXEEXT) ./pngtest$(EXEEXT)
pngtest$(EXEEXT): pngtest.o libpng.a pngtest$(EXEEXT): pngtest.o libpng.a
$(LD) $(LDFLAGS) -L$(ZLIBLIB) -o $@ pngtest.o libpng.a $(LIBS) $(LD) $(LDFLAGS) -L$(ZLIBLIB) -o $@ pngtest.o libpng.a $(LIBS)
clean: clean:
$(RM_F) *.o libpng.a pngtest$(EXEEXT) pngout.png pnglibconf.h $(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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h
pngtest.o: png.h pngconf.h pnglibconf.h pngtest.o: png.h pngconf.h pnglibconf.h

View File

@ -1,240 +1,240 @@
# Doxyfile 1.4.6 # Doxyfile 1.4.6
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Project related configuration options # Project related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
PROJECT_NAME = PortAudio PROJECT_NAME = PortAudio
PROJECT_NUMBER = 2.0 PROJECT_NUMBER = 2.0
OUTPUT_DIRECTORY = ./doc/ OUTPUT_DIRECTORY = ./doc/
CREATE_SUBDIRS = NO CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
USE_WINDOWS_ENCODING = NO USE_WINDOWS_ENCODING = NO
BRIEF_MEMBER_DESC = YES BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \ ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \ "The $name widget" \
"The $name file" \ "The $name file" \
is \ is \
provides \ provides \
specifies \ specifies \
contains \ contains \
represents \ represents \
a \ a \
an \ an \
the the
ALWAYS_DETAILED_SEC = NO ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO FULL_PATH_NAMES = NO
STRIP_FROM_PATH = STRIP_FROM_PATH =
STRIP_FROM_INC_PATH = STRIP_FROM_INC_PATH =
SHORT_NAMES = NO SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = NO JAVADOC_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO DETAILS_AT_TOP = NO
INHERIT_DOCS = YES INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 8 TAB_SIZE = 8
ALIASES = ALIASES =
OPTIMIZE_OUTPUT_FOR_C = YES OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_OUTPUT_JAVA = NO
BUILTIN_STL_SUPPORT = NO BUILTIN_STL_SUPPORT = NO
DISTRIBUTE_GROUP_DOC = NO DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES SUBGROUPING = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Build related configuration options # Build related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
EXTRACT_ALL = NO EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO EXTRACT_PRIVATE = NO
EXTRACT_STATIC = NO EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO EXTRACT_LOCAL_METHODS = NO
HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO INTERNAL_DOCS = NO
CASE_SENSE_NAMES = YES CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO HIDE_SCOPE_NAMES = NO
SHOW_INCLUDE_FILES = YES SHOW_INCLUDE_FILES = YES
INLINE_INFO = YES INLINE_INFO = YES
SORT_MEMBER_DOCS = YES SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = NO SORT_BRIEF_DOCS = NO
SORT_BY_SCOPE_NAME = NO SORT_BY_SCOPE_NAME = NO
GENERATE_TODOLIST = NO GENERATE_TODOLIST = NO
GENERATE_TESTLIST = NO GENERATE_TESTLIST = NO
GENERATE_BUGLIST = NO GENERATE_BUGLIST = NO
GENERATE_DEPRECATEDLIST= YES GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS = ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30 MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES SHOW_USED_FILES = YES
SHOW_DIRECTORIES = YES SHOW_DIRECTORIES = YES
FILE_VERSION_FILTER = FILE_VERSION_FILTER =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to warning and progress messages # configuration options related to warning and progress messages
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
QUIET = NO QUIET = NO
WARNINGS = YES WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO WARN_NO_PARAMDOC = NO
WARN_FORMAT = "$file:$line: $text" WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE = WARN_LOGFILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the input files # configuration options related to the input files
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
INPUT = doc/src \ INPUT = doc/src \
include \ include \
bindings/java \ bindings/java \
examples examples
FILE_PATTERNS = *.h \ FILE_PATTERNS = *.h \
*.c \ *.c \
*.cpp \ *.cpp \
*.java \ *.java \
*.dox *.dox
RECURSIVE = YES RECURSIVE = YES
EXCLUDE = src/hostapi/wasapi/mingw-include EXCLUDE = src/hostapi/wasapi/mingw-include
EXCLUDE_SYMLINKS = NO EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = EXCLUDE_PATTERNS =
EXAMPLE_PATH = EXAMPLE_PATH =
EXAMPLE_PATTERNS = EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO EXAMPLE_RECURSIVE = NO
IMAGE_PATH = doc/src/images IMAGE_PATH = doc/src/images
INPUT_FILTER = INPUT_FILTER =
FILTER_PATTERNS = FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO FILTER_SOURCE_FILES = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to source browsing # configuration options related to source browsing
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
SOURCE_BROWSER = YES SOURCE_BROWSER = YES
INLINE_SOURCES = NO INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES REFERENCES_RELATION = YES
USE_HTAGS = NO USE_HTAGS = NO
VERBATIM_HEADERS = YES VERBATIM_HEADERS = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the alphabetical class index # configuration options related to the alphabetical class index
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 5 COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX = IGNORE_PREFIX =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the HTML output # configuration options related to the HTML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_HTML = YES GENERATE_HTML = YES
HTML_OUTPUT = html HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html HTML_FILE_EXTENSION = .html
HTML_HEADER = HTML_HEADER =
HTML_FOOTER = HTML_FOOTER =
HTML_STYLESHEET = HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO GENERATE_HTMLHELP = NO
CHM_FILE = CHM_FILE =
HHC_LOCATION = HHC_LOCATION =
GENERATE_CHI = NO GENERATE_CHI = NO
BINARY_TOC = NO BINARY_TOC = NO
TOC_EXPAND = NO TOC_EXPAND = NO
DISABLE_INDEX = NO DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4 ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250 TREEVIEW_WIDTH = 250
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the LaTeX output # configuration options related to the LaTeX output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_LATEX = NO GENERATE_LATEX = NO
LATEX_OUTPUT = latex LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO COMPACT_LATEX = NO
PAPER_TYPE = a4wide PAPER_TYPE = a4wide
EXTRA_PACKAGES = EXTRA_PACKAGES =
LATEX_HEADER = LATEX_HEADER =
PDF_HYPERLINKS = NO PDF_HYPERLINKS = NO
USE_PDFLATEX = NO USE_PDFLATEX = NO
LATEX_BATCHMODE = NO LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO LATEX_HIDE_INDICES = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the RTF output # configuration options related to the RTF output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_RTF = NO GENERATE_RTF = NO
RTF_OUTPUT = rtf RTF_OUTPUT = rtf
COMPACT_RTF = NO COMPACT_RTF = NO
RTF_HYPERLINKS = NO RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE = RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE = RTF_EXTENSIONS_FILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the man page output # configuration options related to the man page output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_MAN = NO GENERATE_MAN = NO
MAN_OUTPUT = man MAN_OUTPUT = man
MAN_EXTENSION = .3 MAN_EXTENSION = .3
MAN_LINKS = NO MAN_LINKS = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the XML output # configuration options related to the XML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_XML = NO GENERATE_XML = NO
XML_OUTPUT = xml XML_OUTPUT = xml
XML_SCHEMA = XML_SCHEMA =
XML_DTD = XML_DTD =
XML_PROGRAMLISTING = YES XML_PROGRAMLISTING = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output # configuration options for the AutoGen Definitions output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO GENERATE_AUTOGEN_DEF = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the Perl module output # configuration options related to the Perl module output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_PERLMOD = NO GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX = PERLMOD_MAKEVAR_PREFIX =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the preprocessor # Configuration options related to the preprocessor
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES SEARCH_INCLUDES = YES
INCLUDE_PATH = INCLUDE_PATH =
INCLUDE_FILE_PATTERNS = INCLUDE_FILE_PATTERNS =
PREDEFINED = PREDEFINED =
EXPAND_AS_DEFINED = EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES SKIP_FUNCTION_MACROS = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration::additions related to external references # Configuration::additions related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
TAGFILES = TAGFILES =
GENERATE_TAGFILE = GENERATE_TAGFILE =
ALLEXTERNALS = NO ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl PERL_PATH = /usr/bin/perl
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO CLASS_DIAGRAMS = NO
HIDE_UNDOC_RELATIONS = NO HIDE_UNDOC_RELATIONS = NO
HAVE_DOT = NO HAVE_DOT = NO
CLASS_GRAPH = YES CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES GROUP_GRAPHS = YES
UML_LOOK = NO UML_LOOK = NO
TEMPLATE_RELATIONS = YES TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES INCLUDED_BY_GRAPH = YES
CALL_GRAPH = NO CALL_GRAPH = NO
GRAPHICAL_HIERARCHY = YES GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png DOT_IMAGE_FORMAT = png
DOT_PATH = DOT_PATH =
DOTFILE_DIRS = DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_HEIGHT = 1024
MAX_DOT_GRAPH_DEPTH = 1000 MAX_DOT_GRAPH_DEPTH = 1000
DOT_TRANSPARENT = NO DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES GENERATE_LEGEND = YES
DOT_CLEANUP = YES DOT_CLEANUP = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration::additions related to the search engine # Configuration::additions related to the search engine
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
SEARCHENGINE = NO SEARCHENGINE = NO

View File

@ -1,243 +1,243 @@
# Doxyfile 1.4.6 # Doxyfile 1.4.6
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Project related configuration options # Project related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
PROJECT_NAME = PortAudio PROJECT_NAME = PortAudio
PROJECT_NUMBER = 2.0 PROJECT_NUMBER = 2.0
OUTPUT_DIRECTORY = ./doc/ OUTPUT_DIRECTORY = ./doc/
CREATE_SUBDIRS = NO CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
USE_WINDOWS_ENCODING = NO USE_WINDOWS_ENCODING = NO
BRIEF_MEMBER_DESC = YES BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \ ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \ "The $name widget" \
"The $name file" \ "The $name file" \
is \ is \
provides \ provides \
specifies \ specifies \
contains \ contains \
represents \ represents \
a \ a \
an \ an \
the the
ALWAYS_DETAILED_SEC = NO ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO FULL_PATH_NAMES = NO
STRIP_FROM_PATH = STRIP_FROM_PATH =
STRIP_FROM_INC_PATH = STRIP_FROM_INC_PATH =
SHORT_NAMES = NO SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = NO JAVADOC_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO DETAILS_AT_TOP = NO
INHERIT_DOCS = YES INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 8 TAB_SIZE = 8
ALIASES = ALIASES =
OPTIMIZE_OUTPUT_FOR_C = YES OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_OUTPUT_JAVA = NO
BUILTIN_STL_SUPPORT = NO BUILTIN_STL_SUPPORT = NO
DISTRIBUTE_GROUP_DOC = NO DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES SUBGROUPING = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Build related configuration options # Build related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
EXTRACT_ALL = YES EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO EXTRACT_PRIVATE = NO
EXTRACT_STATIC = NO EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO EXTRACT_LOCAL_METHODS = NO
HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = YES INTERNAL_DOCS = YES
CASE_SENSE_NAMES = YES CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO HIDE_SCOPE_NAMES = NO
SHOW_INCLUDE_FILES = YES SHOW_INCLUDE_FILES = YES
INLINE_INFO = YES INLINE_INFO = YES
SORT_MEMBER_DOCS = YES SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = NO SORT_BRIEF_DOCS = NO
SORT_BY_SCOPE_NAME = NO SORT_BY_SCOPE_NAME = NO
GENERATE_TODOLIST = YES GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS = INTERNAL ENABLED_SECTIONS = INTERNAL
MAX_INITIALIZER_LINES = 30 MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES SHOW_USED_FILES = YES
SHOW_DIRECTORIES = YES SHOW_DIRECTORIES = YES
FILE_VERSION_FILTER = FILE_VERSION_FILTER =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to warning and progress messages # configuration options related to warning and progress messages
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
QUIET = NO QUIET = NO
WARNINGS = YES WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO WARN_NO_PARAMDOC = NO
WARN_FORMAT = "$file:$line: $text" WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE = WARN_LOGFILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the input files # configuration options related to the input files
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
INPUT = doc/src \ INPUT = doc/src \
include \ include \
bindings/java \ bindings/java \
examples \ examples \
src \ src \
test \ test \
qa qa
FILE_PATTERNS = *.h \ FILE_PATTERNS = *.h \
*.c \ *.c \
*.cpp \ *.cpp \
*.java \ *.java \
*.dox *.dox
RECURSIVE = YES RECURSIVE = YES
EXCLUDE = src/hostapi/wasapi/mingw-include EXCLUDE = src/hostapi/wasapi/mingw-include
EXCLUDE_SYMLINKS = NO EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = EXCLUDE_PATTERNS =
EXAMPLE_PATH = EXAMPLE_PATH =
EXAMPLE_PATTERNS = EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO EXAMPLE_RECURSIVE = NO
IMAGE_PATH = doc/src/images IMAGE_PATH = doc/src/images
INPUT_FILTER = INPUT_FILTER =
FILTER_PATTERNS = FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO FILTER_SOURCE_FILES = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to source browsing # configuration options related to source browsing
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
SOURCE_BROWSER = NO SOURCE_BROWSER = NO
INLINE_SOURCES = NO INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES REFERENCES_RELATION = YES
USE_HTAGS = NO USE_HTAGS = NO
VERBATIM_HEADERS = YES VERBATIM_HEADERS = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the alphabetical class index # configuration options related to the alphabetical class index
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 5 COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX = IGNORE_PREFIX =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the HTML output # configuration options related to the HTML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_HTML = YES GENERATE_HTML = YES
HTML_OUTPUT = html HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html HTML_FILE_EXTENSION = .html
HTML_HEADER = HTML_HEADER =
HTML_FOOTER = HTML_FOOTER =
HTML_STYLESHEET = HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO GENERATE_HTMLHELP = NO
CHM_FILE = CHM_FILE =
HHC_LOCATION = HHC_LOCATION =
GENERATE_CHI = NO GENERATE_CHI = NO
BINARY_TOC = NO BINARY_TOC = NO
TOC_EXPAND = NO TOC_EXPAND = NO
DISABLE_INDEX = NO DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4 ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250 TREEVIEW_WIDTH = 250
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the LaTeX output # configuration options related to the LaTeX output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_LATEX = NO GENERATE_LATEX = NO
LATEX_OUTPUT = latex LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO COMPACT_LATEX = NO
PAPER_TYPE = a4wide PAPER_TYPE = a4wide
EXTRA_PACKAGES = EXTRA_PACKAGES =
LATEX_HEADER = LATEX_HEADER =
PDF_HYPERLINKS = NO PDF_HYPERLINKS = NO
USE_PDFLATEX = NO USE_PDFLATEX = NO
LATEX_BATCHMODE = NO LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO LATEX_HIDE_INDICES = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the RTF output # configuration options related to the RTF output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_RTF = NO GENERATE_RTF = NO
RTF_OUTPUT = rtf RTF_OUTPUT = rtf
COMPACT_RTF = NO COMPACT_RTF = NO
RTF_HYPERLINKS = NO RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE = RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE = RTF_EXTENSIONS_FILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the man page output # configuration options related to the man page output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_MAN = NO GENERATE_MAN = NO
MAN_OUTPUT = man MAN_OUTPUT = man
MAN_EXTENSION = .3 MAN_EXTENSION = .3
MAN_LINKS = NO MAN_LINKS = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the XML output # configuration options related to the XML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_XML = NO GENERATE_XML = NO
XML_OUTPUT = xml XML_OUTPUT = xml
XML_SCHEMA = XML_SCHEMA =
XML_DTD = XML_DTD =
XML_PROGRAMLISTING = YES XML_PROGRAMLISTING = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output # configuration options for the AutoGen Definitions output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO GENERATE_AUTOGEN_DEF = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the Perl module output # configuration options related to the Perl module output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_PERLMOD = NO GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX = PERLMOD_MAKEVAR_PREFIX =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the preprocessor # Configuration options related to the preprocessor
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES SEARCH_INCLUDES = YES
INCLUDE_PATH = INCLUDE_PATH =
INCLUDE_FILE_PATTERNS = INCLUDE_FILE_PATTERNS =
PREDEFINED = PREDEFINED =
EXPAND_AS_DEFINED = EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES SKIP_FUNCTION_MACROS = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration::additions related to external references # Configuration::additions related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
TAGFILES = TAGFILES =
GENERATE_TAGFILE = GENERATE_TAGFILE =
ALLEXTERNALS = NO ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl PERL_PATH = /usr/bin/perl
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO CLASS_DIAGRAMS = NO
HIDE_UNDOC_RELATIONS = NO HIDE_UNDOC_RELATIONS = NO
HAVE_DOT = NO HAVE_DOT = NO
CLASS_GRAPH = YES CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES GROUP_GRAPHS = YES
UML_LOOK = NO UML_LOOK = NO
TEMPLATE_RELATIONS = YES TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES INCLUDED_BY_GRAPH = YES
CALL_GRAPH = NO CALL_GRAPH = NO
GRAPHICAL_HIERARCHY = YES GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png DOT_IMAGE_FORMAT = png
DOT_PATH = DOT_PATH =
DOTFILE_DIRS = DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_HEIGHT = 1024
MAX_DOT_GRAPH_DEPTH = 1000 MAX_DOT_GRAPH_DEPTH = 1000
DOT_TRANSPARENT = NO DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES GENERATE_LEGEND = YES
DOT_CLEANUP = YES DOT_CLEANUP = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration::additions related to the search engine # Configuration::additions related to the search engine
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
SEARCHENGINE = NO SEARCHENGINE = NO

View File

@ -1,81 +1,81 @@
Portable header file to contain: Portable header file to contain:
>>>>> >>>>>
/* /*
* PortAudio Portable Real-Time Audio Library * PortAudio Portable Real-Time Audio Library
* PortAudio API Header File * PortAudio API Header File
* Latest version available at: http://www.portaudio.com * Latest version available at: http://www.portaudio.com
* *
* Copyright (c) 1999-2006 Ross Bencina and Phil Burk * Copyright (c) 1999-2006 Ross Bencina and Phil Burk
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files * a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction, * (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, * including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software, * publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so, * and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions: * subject to the following conditions:
* *
* The above copyright notice and this permission notice shall be * The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software. * included in all copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
/* /*
* The text above constitutes the entire PortAudio license; however, * The text above constitutes the entire PortAudio license; however,
* the PortAudio community also makes the following non-binding requests: * the PortAudio community also makes the following non-binding requests:
* *
* Any person wishing to distribute modifications to the Software is * Any person wishing to distribute modifications to the Software is
* requested to send the modifications to the original developer so that * requested to send the modifications to the original developer so that
* they can be incorporated into the canonical version. It is also * they can be incorporated into the canonical version. It is also
* requested that these non-binding requests be included along with the * requested that these non-binding requests be included along with the
* license above. * license above.
*/ */
<<<<< <<<<<
Implementation files to contain: Implementation files to contain:
>>>>> >>>>>
/* /*
* PortAudio Portable Real-Time Audio Library * PortAudio Portable Real-Time Audio Library
* Latest version at: http://www.portaudio.com * Latest version at: http://www.portaudio.com
* <platform> Implementation * <platform> Implementation
* Copyright (c) 1999-2000 <author(s)> * Copyright (c) 1999-2000 <author(s)>
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files * a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction, * (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, * including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software, * publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so, * and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions: * subject to the following conditions:
* *
* The above copyright notice and this permission notice shall be * The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software. * included in all copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
/* /*
* The text above constitutes the entire PortAudio license; however, * The text above constitutes the entire PortAudio license; however,
* the PortAudio community also makes the following non-binding requests: * the PortAudio community also makes the following non-binding requests:
* *
* Any person wishing to distribute modifications to the Software is * Any person wishing to distribute modifications to the Software is
* requested to send the modifications to the original developer so that * requested to send the modifications to the original developer so that
* they can be incorporated into the canonical version. It is also * they can be incorporated into the canonical version. It is also
* requested that these non-binding requests be included along with the * requested that these non-binding requests be included along with the
* license above. * license above.
*/ */
<<<<< <<<<<

View File

@ -1,257 +1,257 @@
# #
# PortAudio V19 Makefile.in # PortAudio V19 Makefile.in
# #
# Dominic Mazzoni # Dominic Mazzoni
# Modifications by Mikael Magnusson # Modifications by Mikael Magnusson
# Modifications by Stelios Bounanos # Modifications by Stelios Bounanos
# #
top_srcdir = @top_srcdir@ top_srcdir = @top_srcdir@
srcdir = @srcdir@ srcdir = @srcdir@
VPATH = @srcdir@ VPATH = @srcdir@
top_builddir = . top_builddir = .
PREFIX = @prefix@ PREFIX = @prefix@
prefix = $(PREFIX) prefix = $(PREFIX)
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
bindir = @bindir@ bindir = @bindir@
libdir = @libdir@ libdir = @libdir@
includedir = @includedir@ includedir = @includedir@
CC = @CC@ CC = @CC@
CXX = @CXX@ CXX = @CXX@
CFLAGS = @CFLAGS@ @DEFS@ CFLAGS = @CFLAGS@ @DEFS@
LIBS = @LIBS@ LIBS = @LIBS@
AR = @AR@ AR = @AR@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
SHELL = @SHELL@ SHELL = @SHELL@
LIBTOOL = @LIBTOOL@ LIBTOOL = @LIBTOOL@
INSTALL = @INSTALL@ INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
SHARED_FLAGS = @SHARED_FLAGS@ SHARED_FLAGS = @SHARED_FLAGS@
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
DLL_LIBS = @DLL_LIBS@ DLL_LIBS = @DLL_LIBS@
CXXFLAGS = @CXXFLAGS@ CXXFLAGS = @CXXFLAGS@
NASM = @NASM@ NASM = @NASM@
NASMOPT = @NASMOPT@ NASMOPT = @NASMOPT@
LN_S = @LN_S@ LN_S = @LN_S@
LT_CURRENT=@LT_CURRENT@ LT_CURRENT=@LT_CURRENT@
LT_REVISION=@LT_REVISION@ LT_REVISION=@LT_REVISION@
LT_AGE=@LT_AGE@ LT_AGE=@LT_AGE@
OTHER_OBJS = @OTHER_OBJS@ OTHER_OBJS = @OTHER_OBJS@
INCLUDES = @INCLUDES@ INCLUDES = @INCLUDES@
PALIB = libportaudio.la PALIB = libportaudio.la
PAINC = include/portaudio.h PAINC = include/portaudio.h
PA_LDFLAGS = $(LDFLAGS) $(SHARED_FLAGS) -rpath $(libdir) -no-undefined \ PA_LDFLAGS = $(LDFLAGS) $(SHARED_FLAGS) -rpath $(libdir) -no-undefined \
-export-symbols-regex "(Pa|PaMacCore|PaJack|PaAlsa|PaAsio|PaOSS)_.*" \ -export-symbols-regex "(Pa|PaMacCore|PaJack|PaAlsa|PaAsio|PaOSS)_.*" \
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
COMMON_OBJS = \ COMMON_OBJS = \
src/common/pa_allocation.o \ src/common/pa_allocation.o \
src/common/pa_converters.o \ src/common/pa_converters.o \
src/common/pa_cpuload.o \ src/common/pa_cpuload.o \
src/common/pa_dither.o \ src/common/pa_dither.o \
src/common/pa_debugprint.o \ src/common/pa_debugprint.o \
src/common/pa_front.o \ src/common/pa_front.o \
src/common/pa_process.o \ src/common/pa_process.o \
src/common/pa_stream.o \ src/common/pa_stream.o \
src/common/pa_trace.o \ src/common/pa_trace.o \
src/hostapi/skeleton/pa_hostapi_skeleton.o src/hostapi/skeleton/pa_hostapi_skeleton.o
LOOPBACK_OBJS = \ LOOPBACK_OBJS = \
qa/loopback/src/audio_analyzer.o \ qa/loopback/src/audio_analyzer.o \
qa/loopback/src/biquad_filter.o \ qa/loopback/src/biquad_filter.o \
qa/loopback/src/paqa_tools.o \ qa/loopback/src/paqa_tools.o \
qa/loopback/src/test_audio_analyzer.o \ qa/loopback/src/test_audio_analyzer.o \
qa/loopback/src/write_wav.o \ qa/loopback/src/write_wav.o \
qa/loopback/src/paqa.o qa/loopback/src/paqa.o
EXAMPLES = \ EXAMPLES = \
bin/pa_devs \ bin/pa_devs \
bin/pa_fuzz \ bin/pa_fuzz \
bin/paex_pink \ bin/paex_pink \
bin/paex_read_write_wire \ bin/paex_read_write_wire \
bin/paex_record \ bin/paex_record \
bin/paex_saw \ bin/paex_saw \
bin/paex_sine \ bin/paex_sine \
bin/paex_write_sine \ bin/paex_write_sine \
bin/paex_write_sine_nonint bin/paex_write_sine_nonint
SELFTESTS = \ SELFTESTS = \
bin/paqa_devs \ bin/paqa_devs \
bin/paqa_errs \ bin/paqa_errs \
bin/paqa_latency bin/paqa_latency
TESTS = \ TESTS = \
bin/patest1 \ bin/patest1 \
bin/patest_buffer \ bin/patest_buffer \
bin/patest_callbackstop \ bin/patest_callbackstop \
bin/patest_clip \ bin/patest_clip \
bin/patest_dither \ bin/patest_dither \
bin/patest_hang \ bin/patest_hang \
bin/patest_in_overflow \ bin/patest_in_overflow \
bin/patest_latency \ bin/patest_latency \
bin/patest_leftright \ bin/patest_leftright \
bin/patest_longsine \ bin/patest_longsine \
bin/patest_many \ bin/patest_many \
bin/patest_maxsines \ bin/patest_maxsines \
bin/patest_mono \ bin/patest_mono \
bin/patest_multi_sine \ bin/patest_multi_sine \
bin/patest_out_underflow \ bin/patest_out_underflow \
bin/patest_prime \ bin/patest_prime \
bin/patest_ringmix \ bin/patest_ringmix \
bin/patest_sine8 \ bin/patest_sine8 \
bin/patest_sine_channelmaps \ bin/patest_sine_channelmaps \
bin/patest_sine_formats \ bin/patest_sine_formats \
bin/patest_sine_time \ bin/patest_sine_time \
bin/patest_sine_srate \ bin/patest_sine_srate \
bin/patest_start_stop \ bin/patest_start_stop \
bin/patest_stop \ bin/patest_stop \
bin/patest_stop_playout \ bin/patest_stop_playout \
bin/patest_toomanysines \ bin/patest_toomanysines \
bin/patest_two_rates \ bin/patest_two_rates \
bin/patest_underflow \ bin/patest_underflow \
bin/patest_wire \ bin/patest_wire \
bin/pa_minlat bin/pa_minlat
# Most of these don't compile yet. Put them in TESTS, above, if # Most of these don't compile yet. Put them in TESTS, above, if
# you want to try to compile them... # you want to try to compile them...
ALL_TESTS = \ ALL_TESTS = \
$(TESTS) \ $(TESTS) \
bin/patest_sync \ bin/patest_sync \
bin/debug_convert \ bin/debug_convert \
bin/debug_dither_calc \ bin/debug_dither_calc \
bin/debug_dual \ bin/debug_dual \
bin/debug_multi_in \ bin/debug_multi_in \
bin/debug_multi_out \ bin/debug_multi_out \
bin/debug_record \ bin/debug_record \
bin/debug_record_reuse \ bin/debug_record_reuse \
bin/debug_sine_amp \ bin/debug_sine_amp \
bin/debug_sine \ bin/debug_sine \
bin/debug_sine_formats \ bin/debug_sine_formats \
bin/debug_srate \ bin/debug_srate \
bin/debug_test1 bin/debug_test1
OBJS := $(COMMON_OBJS) $(OTHER_OBJS) OBJS := $(COMMON_OBJS) $(OTHER_OBJS)
LTOBJS := $(OBJS:.o=.lo) LTOBJS := $(OBJS:.o=.lo)
SRC_DIRS = \ SRC_DIRS = \
src/common \ src/common \
src/hostapi/alsa \ src/hostapi/alsa \
src/hostapi/asihpi \ src/hostapi/asihpi \
src/hostapi/asio \ src/hostapi/asio \
src/hostapi/coreaudio \ src/hostapi/coreaudio \
src/hostapi/dsound \ src/hostapi/dsound \
src/hostapi/jack \ src/hostapi/jack \
src/hostapi/oss \ src/hostapi/oss \
src/hostapi/wasapi \ src/hostapi/wasapi \
src/hostapi/wdmks \ src/hostapi/wdmks \
src/hostapi/wmme \ src/hostapi/wmme \
src/os/unix \ src/os/unix \
src/os/win src/os/win
SUBDIRS = SUBDIRS =
@ENABLE_CXX_TRUE@SUBDIRS += bindings/cpp @ENABLE_CXX_TRUE@SUBDIRS += bindings/cpp
all: lib/$(PALIB) all-recursive tests examples selftests all: lib/$(PALIB) all-recursive tests examples selftests
tests: bin-stamp $(TESTS) tests: bin-stamp $(TESTS)
examples: bin-stamp $(EXAMPLES) examples: bin-stamp $(EXAMPLES)
selftests: bin-stamp $(SELFTESTS) selftests: bin-stamp $(SELFTESTS)
loopback: bin-stamp bin/paloopback loopback: bin-stamp bin/paloopback
# With ASIO enabled we must link libportaudio and all test programs with CXX # With ASIO enabled we must link libportaudio and all test programs with CXX
lib/$(PALIB): lib-stamp $(LTOBJS) $(MAKEFILE) $(PAINC) lib/$(PALIB): lib-stamp $(LTOBJS) $(MAKEFILE) $(PAINC)
@WITH_ASIO_FALSE@ $(LIBTOOL) --mode=link $(CC) $(PA_LDFLAGS) -o lib/$(PALIB) $(LTOBJS) $(DLL_LIBS) @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) @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 $(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_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) @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 $(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_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) @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 $(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_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) @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) bin/paloopback: lib/$(PALIB) $(MAKEFILE) $(PAINC) $(LOOPBACK_OBJS)
@WITH_ASIO_FALSE@ $(LIBTOOL) --mode=link $(CC) -o $@ $(CFLAGS) $(LOOPBACK_OBJS) lib/$(PALIB) $(LIBS) @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) @WITH_ASIO_TRUE@ $(LIBTOOL) --mode=link --tag=CXX $(CXX) -o $@ $(CXXFLAGS) $(LOOPBACK_OBJS) lib/$(PALIB) $(LIBS)
install: lib/$(PALIB) portaudio-2.0.pc install: lib/$(PALIB) portaudio-2.0.pc
$(INSTALL) -d $(DESTDIR)$(libdir) $(INSTALL) -d $(DESTDIR)$(libdir)
$(LIBTOOL) --mode=install $(INSTALL) lib/$(PALIB) $(DESTDIR)$(libdir) $(LIBTOOL) --mode=install $(INSTALL) lib/$(PALIB) $(DESTDIR)$(libdir)
$(INSTALL) -d $(DESTDIR)$(includedir) $(INSTALL) -d $(DESTDIR)$(includedir)
for include in $(INCLUDES); do \ for include in $(INCLUDES); do \
$(INSTALL_DATA) -m 644 $(top_srcdir)/include/$$include $(DESTDIR)$(includedir)/$$include; \ $(INSTALL_DATA) -m 644 $(top_srcdir)/include/$$include $(DESTDIR)$(includedir)/$$include; \
done done
$(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig $(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig
$(INSTALL) -m 644 portaudio-2.0.pc $(DESTDIR)$(libdir)/pkgconfig/portaudio-2.0.pc $(INSTALL) -m 644 portaudio-2.0.pc $(DESTDIR)$(libdir)/pkgconfig/portaudio-2.0.pc
@echo "" @echo ""
@echo "------------------------------------------------------------" @echo "------------------------------------------------------------"
@echo "PortAudio was successfully installed." @echo "PortAudio was successfully installed."
@echo "" @echo ""
@echo "On some systems (e.g. Linux) you should run 'ldconfig' now" @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 "to make the shared object available. You may also need to"
@echo "modify your LD_LIBRARY_PATH environment variable to include" @echo "modify your LD_LIBRARY_PATH environment variable to include"
@echo "the directory $(libdir)" @echo "the directory $(libdir)"
@echo "------------------------------------------------------------" @echo "------------------------------------------------------------"
@echo "" @echo ""
$(MAKE) install-recursive $(MAKE) install-recursive
uninstall: uninstall:
$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(PALIB) $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(PALIB)
$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(includedir)/portaudio.h $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(includedir)/portaudio.h
$(MAKE) uninstall-recursive $(MAKE) uninstall-recursive
clean: clean:
$(LIBTOOL) --mode=clean rm -f $(LTOBJS) $(LOOPBACK_OBJS) $(ALL_TESTS) lib/$(PALIB) $(LIBTOOL) --mode=clean rm -f $(LTOBJS) $(LOOPBACK_OBJS) $(ALL_TESTS) lib/$(PALIB)
$(RM) bin-stamp lib-stamp $(RM) bin-stamp lib-stamp
-$(RM) -r bin lib -$(RM) -r bin lib
distclean: clean distclean: clean
$(RM) config.log config.status Makefile libtool portaudio-2.0.pc $(RM) config.log config.status Makefile libtool portaudio-2.0.pc
%.o: %.c $(MAKEFILE) $(PAINC) %.o: %.c $(MAKEFILE) $(PAINC)
$(CC) -c $(CFLAGS) $< -o $@ $(CC) -c $(CFLAGS) $< -o $@
%.lo: %.c $(MAKEFILE) $(PAINC) %.lo: %.c $(MAKEFILE) $(PAINC)
$(LIBTOOL) --mode=compile $(CC) -c $(CFLAGS) $< -o $@ $(LIBTOOL) --mode=compile $(CC) -c $(CFLAGS) $< -o $@
%.lo: %.cpp $(MAKEFILE) $(PAINC) %.lo: %.cpp $(MAKEFILE) $(PAINC)
$(LIBTOOL) --mode=compile --tag=CXX $(CXX) -c $(CXXFLAGS) $< -o $@ $(LIBTOOL) --mode=compile --tag=CXX $(CXX) -c $(CXXFLAGS) $< -o $@
%.o: %.cpp $(MAKEFILE) $(PAINC) %.o: %.cpp $(MAKEFILE) $(PAINC)
$(CXX) -c $(CXXFLAGS) $< -o $@ $(CXX) -c $(CXXFLAGS) $< -o $@
%.o: %.asm %.o: %.asm
$(NASM) $(NASMOPT) -o $@ $< $(NASM) $(NASMOPT) -o $@ $<
bin-stamp: bin-stamp:
-mkdir bin -mkdir bin
touch $@ touch $@
lib-stamp: lib-stamp:
-mkdir lib -mkdir lib
-mkdir -p $(SRC_DIRS) -mkdir -p $(SRC_DIRS)
touch $@ touch $@
Makefile: Makefile.in config.status Makefile: Makefile.in config.status
$(SHELL) config.status $(SHELL) config.status
all-recursive: all-recursive:
if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir all; done ; fi if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir all; done ; fi
install-recursive: install-recursive:
if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir install; done ; fi if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir install; done ; fi
uninstall-recursive: uninstall-recursive:
if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir uninstall; done ; fi if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir uninstall; done ; fi

View File

@ -1,98 +1,98 @@
README for PortAudio README for PortAudio
/* /*
* PortAudio Portable Real-Time Audio Library * PortAudio Portable Real-Time Audio Library
* Latest Version at: http://www.portaudio.com * Latest Version at: http://www.portaudio.com
* *
* Copyright (c) 1999-2008 Phil Burk and Ross Bencina * Copyright (c) 1999-2008 Phil Burk and Ross Bencina
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files * a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction, * (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, * including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software, * publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so, * and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions: * subject to the following conditions:
* *
* The above copyright notice and this permission notice shall be * The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software. * included in all copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
/* /*
* The text above constitutes the entire PortAudio license; however, * The text above constitutes the entire PortAudio license; however,
* the PortAudio community also makes the following non-binding requests: * the PortAudio community also makes the following non-binding requests:
* *
* Any person wishing to distribute modifications to the Software is * Any person wishing to distribute modifications to the Software is
* requested to send the modifications to the original developer so that * requested to send the modifications to the original developer so that
* they can be incorporated into the canonical version. It is also * they can be incorporated into the canonical version. It is also
* requested that these non-binding requests be included along with the * requested that these non-binding requests be included along with the
* license above. * license above.
*/ */
PortAudio is a portable audio I/O library designed for cross-platform PortAudio is a portable audio I/O library designed for cross-platform
support of audio. It uses either a callback mechanism to request audio support of audio. It uses either a callback mechanism to request audio
processing, or blocking read/write calls to buffer data between the processing, or blocking read/write calls to buffer data between the
native audio subsystem and the client. Audio can be processed in various native audio subsystem and the client. Audio can be processed in various
formats, including 32 bit floating point, and will be converted to the formats, including 32 bit floating point, and will be converted to the
native format internally. native format internally.
Documentation: Documentation:
Documentation is available in "/doc/html/index.html" Documentation is available in "/doc/html/index.html"
Also see "src/common/portaudio.h" for API spec. Also see "src/common/portaudio.h" for API spec.
Also see http://www.portaudio.com/docs/ Also see http://www.portaudio.com/docs/
And see the "test/" directory for many examples of usage And see the "test/" directory for many examples of usage
(we suggest "test/patest_saw.c" for an example) (we suggest "test/patest_saw.c" for an example)
For information on compiling programs with PortAudio, please see the For information on compiling programs with PortAudio, please see the
tutorial at: tutorial at:
http://portaudio.com/trac/wiki/TutorialDir/TutorialStart http://portaudio.com/trac/wiki/TutorialDir/TutorialStart
We have an active mailing list for user and developer discussions. We have an active mailing list for user and developer discussions.
Please feel free to join. See http://www.portaudio.com for details. Please feel free to join. See http://www.portaudio.com for details.
Important Files and Folders: Important Files and Folders:
include/portaudio.h = header file for PortAudio API. Specifies API. include/portaudio.h = header file for PortAudio API. Specifies API.
src/common/ = platform independant code, host independant src/common/ = platform independant code, host independant
code for all implementations. code for all implementations.
src/os = os specific (but host api neutral) code src/os = os specific (but host api neutral) code
src/hostapi = implementations for different host apis src/hostapi = implementations for different host apis
Host API Implementations: Host API Implementations:
src/hostapi/alsa = Advanced Linux Sound Architecture (ALSA) src/hostapi/alsa = Advanced Linux Sound Architecture (ALSA)
src/hostapi/asihpi = AudioScience HPI src/hostapi/asihpi = AudioScience HPI
src/hostapi/asio = ASIO for Windows and Macintosh src/hostapi/asio = ASIO for Windows and Macintosh
src/hostapi/coreaudio = Macintosh Core Audio for OS X src/hostapi/coreaudio = Macintosh Core Audio for OS X
src/hostapi/dsound = Windows Direct Sound src/hostapi/dsound = Windows Direct Sound
src/hostapi/jack = JACK Audio Connection Kit src/hostapi/jack = JACK Audio Connection Kit
src/hostapi/oss = Unix Open Sound System (OSS) src/hostapi/oss = Unix Open Sound System (OSS)
src/hostapi/wasapi = Windows Vista WASAPI src/hostapi/wasapi = Windows Vista WASAPI
src/hostapi/wdmks = Windows WDM Kernel Streaming src/hostapi/wdmks = Windows WDM Kernel Streaming
src/hostapi/wmme = Windows MultiMedia Extensions (MME) src/hostapi/wmme = Windows MultiMedia Extensions (MME)
Test Programs: Test Programs:
test/pa_fuzz.c = guitar fuzz box test/pa_fuzz.c = guitar fuzz box
test/pa_devs.c = print a list of available devices test/pa_devs.c = print a list of available devices
test/pa_minlat.c = determine minimum latency for your machine test/pa_minlat.c = determine minimum latency for your machine
test/paqa_devs.c = self test that opens all devices test/paqa_devs.c = self test that opens all devices
test/paqa_errs.c = test error detection and reporting test/paqa_errs.c = test error detection and reporting
test/patest_clip.c = hear a sine wave clipped and unclipped test/patest_clip.c = hear a sine wave clipped and unclipped
test/patest_dither.c = hear effects of dithering (extremely subtle) test/patest_dither.c = hear effects of dithering (extremely subtle)
test/patest_pink.c = fun with pink noise test/patest_pink.c = fun with pink noise
test/patest_record.c = record and playback some audio 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_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_sine.c = output a sine wave in a simple PA app
test/patest_sync.c = test syncronization of audio and video test/patest_sync.c = test syncronization of audio and video
test/patest_wire.c = pass input to output, wire simulator test/patest_wire.c = pass input to output, wire simulator

View File

@ -1,197 +1,197 @@
import sys, os.path import sys, os.path
def rsplit(toSplit, sub, max=-1): def rsplit(toSplit, sub, max=-1):
""" str.rsplit seems to have been introduced in 2.4 :( """ """ str.rsplit seems to have been introduced in 2.4 :( """
l = [] l = []
i = 0 i = 0
while i != max: while i != max:
try: idx = toSplit.rindex(sub) try: idx = toSplit.rindex(sub)
except ValueError: break except ValueError: break
toSplit, splitOff = toSplit[:idx], toSplit[idx + len(sub):] toSplit, splitOff = toSplit[:idx], toSplit[idx + len(sub):]
l.insert(0, splitOff) l.insert(0, splitOff)
i += 1 i += 1
l.insert(0, toSplit) l.insert(0, toSplit)
return l return l
sconsDir = os.path.join("build", "scons") sconsDir = os.path.join("build", "scons")
SConscript(os.path.join(sconsDir, "SConscript_common")) SConscript(os.path.join(sconsDir, "SConscript_common"))
Import("Platform", "Posix", "ApiVer") Import("Platform", "Posix", "ApiVer")
# SConscript_opts exports PortAudio options # SConscript_opts exports PortAudio options
optsDict = SConscript(os.path.join(sconsDir, "SConscript_opts")) optsDict = SConscript(os.path.join(sconsDir, "SConscript_opts"))
optionsCache = os.path.join(sconsDir, "options.cache") # Save options between runs in this cache optionsCache = os.path.join(sconsDir, "options.cache") # Save options between runs in this cache
options = Options(optionsCache, args=ARGUMENTS) options = Options(optionsCache, args=ARGUMENTS)
for k in ("Installation Dirs", "Build Targets", "Host APIs", "Build Parameters", "Bindings"): for k in ("Installation Dirs", "Build Targets", "Host APIs", "Build Parameters", "Bindings"):
options.AddOptions(*optsDict[k]) options.AddOptions(*optsDict[k])
# Propagate options into environment # Propagate options into environment
env = Environment(options=options) env = Environment(options=options)
# Save options for next run # Save options for next run
options.Save(optionsCache, env) options.Save(optionsCache, env)
# Generate help text for options # Generate help text for options
env.Help(options.GenerateHelpText(env)) env.Help(options.GenerateHelpText(env))
buildDir = os.path.join("#", sconsDir, env["PLATFORM"]) buildDir = os.path.join("#", sconsDir, env["PLATFORM"])
# Determine parameters to build tools # Determine parameters to build tools
if Platform in Posix: if Platform in Posix:
threadCFlags = '' threadCFlags = ''
if Platform != 'darwin': if Platform != 'darwin':
threadCFlags = "-pthread " threadCFlags = "-pthread "
baseLinkFlags = threadCFlags baseLinkFlags = threadCFlags
baseCxxFlags = baseCFlags = "-Wall -pedantic -pipe " + threadCFlags baseCxxFlags = baseCFlags = "-Wall -pedantic -pipe " + threadCFlags
debugCxxFlags = debugCFlags = "-g" debugCxxFlags = debugCFlags = "-g"
optCxxFlags = optCFlags = "-O2" optCxxFlags = optCFlags = "-O2"
env.Append(CCFLAGS = baseCFlags) env.Append(CCFLAGS = baseCFlags)
env.Append(CXXFLAGS = baseCxxFlags) env.Append(CXXFLAGS = baseCxxFlags)
env.Append(LINKFLAGS = baseLinkFlags) env.Append(LINKFLAGS = baseLinkFlags)
if env["enableDebug"]: if env["enableDebug"]:
env.AppendUnique(CCFLAGS=debugCFlags.split()) env.AppendUnique(CCFLAGS=debugCFlags.split())
env.AppendUnique(CXXFLAGS=debugCxxFlags.split()) env.AppendUnique(CXXFLAGS=debugCxxFlags.split())
if env["enableOptimize"]: if env["enableOptimize"]:
env.AppendUnique(CCFLAGS=optCFlags.split()) env.AppendUnique(CCFLAGS=optCFlags.split())
env.AppendUnique(CXXFLAGS=optCxxFlags.split()) env.AppendUnique(CXXFLAGS=optCxxFlags.split())
if not env["enableAsserts"]: if not env["enableAsserts"]:
env.AppendUnique(CPPDEFINES=["-DNDEBUG"]) env.AppendUnique(CPPDEFINES=["-DNDEBUG"])
if env["customCFlags"]: if env["customCFlags"]:
env.Append(CCFLAGS=Split(env["customCFlags"])) env.Append(CCFLAGS=Split(env["customCFlags"]))
if env["customCxxFlags"]: if env["customCxxFlags"]:
env.Append(CXXFLAGS=Split(env["customCxxFlags"])) env.Append(CXXFLAGS=Split(env["customCxxFlags"]))
if env["customLinkFlags"]: if env["customLinkFlags"]:
env.Append(LINKFLAGS=Split(env["customLinkFlags"])) env.Append(LINKFLAGS=Split(env["customLinkFlags"]))
env.Append(CPPPATH=[os.path.join("#", "include"), "common"]) 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 # 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.SConsignFile(os.path.join(sconsDir, ".sconsign"))
env.SConscriptChdir(False) env.SConscriptChdir(False)
sources, sharedLib, staticLib, tests, portEnv, hostApis = env.SConscript(os.path.join("src", "SConscript"), sources, sharedLib, staticLib, tests, portEnv, hostApis = env.SConscript(os.path.join("src", "SConscript"),
build_dir=buildDir, duplicate=False, exports=["env"]) build_dir=buildDir, duplicate=False, exports=["env"])
if Platform in Posix: if Platform in Posix:
prefix = env["prefix"] prefix = env["prefix"]
includeDir = os.path.join(prefix, "include") includeDir = os.path.join(prefix, "include")
libDir = os.path.join(prefix, "lib") libDir = os.path.join(prefix, "lib")
env.Alias("install", includeDir) env.Alias("install", includeDir)
env.Alias("install", libDir) env.Alias("install", libDir)
# pkg-config # pkg-config
def installPkgconfig(env, target, source): def installPkgconfig(env, target, source):
tgt = str(target[0]) tgt = str(target[0])
src = str(source[0]) src = str(source[0])
f = open(src) f = open(src)
try: txt = f.read() try: txt = f.read()
finally: f.close() finally: f.close()
txt = txt.replace("@prefix@", prefix) txt = txt.replace("@prefix@", prefix)
txt = txt.replace("@exec_prefix@", prefix) txt = txt.replace("@exec_prefix@", prefix)
txt = txt.replace("@libdir@", libDir) txt = txt.replace("@libdir@", libDir)
txt = txt.replace("@includedir@", includeDir) txt = txt.replace("@includedir@", includeDir)
txt = txt.replace("@LIBS@", " ".join(["-l%s" % l for l in portEnv["LIBS"]])) txt = txt.replace("@LIBS@", " ".join(["-l%s" % l for l in portEnv["LIBS"]]))
txt = txt.replace("@THREAD_CFLAGS@", threadCFlags) txt = txt.replace("@THREAD_CFLAGS@", threadCFlags)
f = open(tgt, "w") f = open(tgt, "w")
try: f.write(txt) try: f.write(txt)
finally: f.close() finally: f.close()
pkgconfigTgt = "portaudio-%d.0.pc" % int(ApiVer.split(".", 1)[0]) pkgconfigTgt = "portaudio-%d.0.pc" % int(ApiVer.split(".", 1)[0])
env.Command(os.path.join(libDir, "pkgconfig", pkgconfigTgt), env.Command(os.path.join(libDir, "pkgconfig", pkgconfigTgt),
os.path.join("#", pkgconfigTgt + ".in"), installPkgconfig) os.path.join("#", pkgconfigTgt + ".in"), installPkgconfig)
# Default to None, since if the user disables all targets and no Default is set, all targets # Default to None, since if the user disables all targets and no Default is set, all targets
# are built by default # are built by default
env.Default(None) env.Default(None)
if env["enableTests"]: if env["enableTests"]:
env.Default(tests) env.Default(tests)
if env["enableShared"]: if env["enableShared"]:
env.Default(sharedLib) env.Default(sharedLib)
if Platform in Posix: if Platform in Posix:
def symlink(env, target, source): def symlink(env, target, source):
trgt = str(target[0]) trgt = str(target[0])
src = str(source[0]) src = str(source[0])
if os.path.islink(trgt) or os.path.exists(trgt): if os.path.islink(trgt) or os.path.exists(trgt):
os.remove(trgt) os.remove(trgt)
os.symlink(os.path.basename(src), trgt) os.symlink(os.path.basename(src), trgt)
major, minor, micro = [int(c) for c in ApiVer.split(".")] major, minor, micro = [int(c) for c in ApiVer.split(".")]
soFile = "%s.%s" % (os.path.basename(str(sharedLib[0])), ApiVer) soFile = "%s.%s" % (os.path.basename(str(sharedLib[0])), ApiVer)
env.InstallAs(target=os.path.join(libDir, soFile), source=sharedLib) env.InstallAs(target=os.path.join(libDir, soFile), source=sharedLib)
# Install symlinks # Install symlinks
symTrgt = os.path.join(libDir, soFile) symTrgt = os.path.join(libDir, soFile)
env.Command(os.path.join(libDir, "libportaudio.so.%d.%d" % (major, minor)), env.Command(os.path.join(libDir, "libportaudio.so.%d.%d" % (major, minor)),
symTrgt, symlink) symTrgt, symlink)
symTrgt = rsplit(symTrgt, ".", 1)[0] symTrgt = rsplit(symTrgt, ".", 1)[0]
env.Command(os.path.join(libDir, "libportaudio.so.%d" % major), symTrgt, symlink) env.Command(os.path.join(libDir, "libportaudio.so.%d" % major), symTrgt, symlink)
symTrgt = rsplit(symTrgt, ".", 1)[0] symTrgt = rsplit(symTrgt, ".", 1)[0]
env.Command(os.path.join(libDir, "libportaudio.so"), symTrgt, symlink) env.Command(os.path.join(libDir, "libportaudio.so"), symTrgt, symlink)
if env["enableStatic"]: if env["enableStatic"]:
env.Default(staticLib) env.Default(staticLib)
env.Install(libDir, staticLib) env.Install(libDir, staticLib)
env.Install(includeDir, os.path.join("include", "portaudio.h")) env.Install(includeDir, os.path.join("include", "portaudio.h"))
if env["enableCxx"]: if env["enableCxx"]:
env.SConscriptChdir(True) env.SConscriptChdir(True)
cxxEnv = env.Copy() cxxEnv = env.Copy()
sharedLibs, staticLibs, headers = env.SConscript(os.path.join("bindings", "cpp", "SConscript"), 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) exports={"env": cxxEnv, "buildDir": buildDir}, build_dir=os.path.join(buildDir, "portaudiocpp"), duplicate=False)
if env["enableStatic"]: if env["enableStatic"]:
env.Default(staticLibs) env.Default(staticLibs)
env.Install(libDir, staticLibs) env.Install(libDir, staticLibs)
if env["enableShared"]: if env["enableShared"]:
env.Default(sharedLibs) env.Default(sharedLibs)
env.Install(libDir, sharedLibs) env.Install(libDir, sharedLibs)
env.Install(os.path.join(includeDir, "portaudiocpp"), headers) env.Install(os.path.join(includeDir, "portaudiocpp"), headers)
# Generate portaudio_config.h header with compile-time definitions of which PA # Generate portaudio_config.h header with compile-time definitions of which PA
# back-ends are available, and which includes back-end extension headers # back-ends are available, and which includes back-end extension headers
# Host-specific headers # Host-specific headers
hostApiHeaders = {"ALSA": "pa_linux_alsa.h", hostApiHeaders = {"ALSA": "pa_linux_alsa.h",
"ASIO": "pa_asio.h", "ASIO": "pa_asio.h",
"COREAUDIO": "pa_mac_core.h", "COREAUDIO": "pa_mac_core.h",
"JACK": "pa_jack.h", "JACK": "pa_jack.h",
"WMME": "pa_winwmme.h", "WMME": "pa_winwmme.h",
} }
def buildConfigH(target, source, env): def buildConfigH(target, source, env):
"""builder for portaudio_config.h""" """builder for portaudio_config.h"""
global hostApiHeaders, hostApis global hostApiHeaders, hostApis
out = "" out = ""
for hostApi in hostApis: for hostApi in hostApis:
out += "#define PA_HAVE_%s\n" % hostApi out += "#define PA_HAVE_%s\n" % hostApi
hostApiSpecificHeader = hostApiHeaders.get(hostApi, None) hostApiSpecificHeader = hostApiHeaders.get(hostApi, None)
if hostApiSpecificHeader: if hostApiSpecificHeader:
out += "#include \"%s\"\n" % hostApiSpecificHeader out += "#include \"%s\"\n" % hostApiSpecificHeader
out += "\n" out += "\n"
# Strip the last newline # Strip the last newline
if out and out[-1] == "\n": if out and out[-1] == "\n":
out = out[:-1] out = out[:-1]
f = file(str(target[0]), 'w') f = file(str(target[0]), 'w')
try: f.write(out) try: f.write(out)
finally: f.close() finally: f.close()
return 0 return 0
# Define the builder for the config header # Define the builder for the config header
env.Append(BUILDERS={"portaudioConfig": env.Builder( env.Append(BUILDERS={"portaudioConfig": env.Builder(
action=Action(buildConfigH), target_factory=env.fs.File)}) action=Action(buildConfigH), target_factory=env.fs.File)})
confH = env.portaudioConfig(File("portaudio_config.h", "include"), confH = env.portaudioConfig(File("portaudio_config.h", "include"),
File("portaudio.h", "include")) File("portaudio.h", "include"))
env.Default(confH) env.Default(confH)
env.Install(os.path.join(includeDir, "portaudio"), confH) env.Install(os.path.join(includeDir, "portaudio"), confH)
for api in hostApis: for api in hostApis:
if api in hostApiHeaders: if api in hostApiHeaders:
env.Install(os.path.join(includeDir, "portaudio"), env.Install(os.path.join(includeDir, "portaudio"),
File(hostApiHeaders[api], "include")) File(hostApiHeaders[api], "include"))

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="UserMacros"> <PropertyGroup Label="UserMacros">
<ProjectRootDir>$(ProjectDir)\..\..</ProjectRootDir> <ProjectRootDir>$(ProjectDir)\..\..</ProjectRootDir>
<SvnRootDir>$(ProjectRootDir)\..\..</SvnRootDir> <SvnRootDir>$(ProjectRootDir)\..\..</SvnRootDir>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<BuildMacro Include="ProjectRootDir"> <BuildMacro Include="ProjectRootDir">
<Value>$(ProjectRootDir)</Value> <Value>$(ProjectRootDir)</Value>
</BuildMacro> </BuildMacro>
<BuildMacro Include="SvnRootDir"> <BuildMacro Include="SvnRootDir">
<Value>$(SvnRootDir)</Value> <Value>$(SvnRootDir)</Value>
</BuildMacro> </BuildMacro>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,50 +1,50 @@
EXPORTS EXPORTS
; ;
Pa_GetVersion @1 Pa_GetVersion @1
Pa_GetVersionText @2 Pa_GetVersionText @2
Pa_GetErrorText @3 Pa_GetErrorText @3
Pa_Initialize @4 Pa_Initialize @4
Pa_Terminate @5 Pa_Terminate @5
Pa_GetHostApiCount @6 Pa_GetHostApiCount @6
Pa_GetDefaultHostApi @7 Pa_GetDefaultHostApi @7
Pa_GetHostApiInfo @8 Pa_GetHostApiInfo @8
Pa_HostApiTypeIdToHostApiIndex @9 Pa_HostApiTypeIdToHostApiIndex @9
Pa_HostApiDeviceIndexToDeviceIndex @10 Pa_HostApiDeviceIndexToDeviceIndex @10
Pa_GetLastHostErrorInfo @11 Pa_GetLastHostErrorInfo @11
Pa_GetDeviceCount @12 Pa_GetDeviceCount @12
Pa_GetDefaultInputDevice @13 Pa_GetDefaultInputDevice @13
Pa_GetDefaultOutputDevice @14 Pa_GetDefaultOutputDevice @14
Pa_GetDeviceInfo @15 Pa_GetDeviceInfo @15
Pa_IsFormatSupported @16 Pa_IsFormatSupported @16
Pa_OpenStream @17 Pa_OpenStream @17
Pa_OpenDefaultStream @18 Pa_OpenDefaultStream @18
Pa_CloseStream @19 Pa_CloseStream @19
Pa_SetStreamFinishedCallback @20 Pa_SetStreamFinishedCallback @20
Pa_StartStream @21 Pa_StartStream @21
Pa_StopStream @22 Pa_StopStream @22
Pa_AbortStream @23 Pa_AbortStream @23
Pa_IsStreamStopped @24 Pa_IsStreamStopped @24
Pa_IsStreamActive @25 Pa_IsStreamActive @25
Pa_GetStreamInfo @26 Pa_GetStreamInfo @26
Pa_GetStreamTime @27 Pa_GetStreamTime @27
Pa_GetStreamCpuLoad @28 Pa_GetStreamCpuLoad @28
Pa_ReadStream @29 Pa_ReadStream @29
Pa_WriteStream @30 Pa_WriteStream @30
Pa_GetStreamReadAvailable @31 Pa_GetStreamReadAvailable @31
Pa_GetStreamWriteAvailable @32 Pa_GetStreamWriteAvailable @32
Pa_GetSampleSize @33 Pa_GetSampleSize @33
Pa_Sleep @34 Pa_Sleep @34
PaAsio_GetAvailableBufferSizes @50 PaAsio_GetAvailableBufferSizes @50
PaAsio_ShowControlPanel @51 PaAsio_ShowControlPanel @51
PaUtil_InitializeX86PlainConverters @52 PaUtil_InitializeX86PlainConverters @52
PaAsio_GetInputChannelName @53 PaAsio_GetInputChannelName @53
PaAsio_GetOutputChannelName @54 PaAsio_GetOutputChannelName @54
PaUtil_SetDebugPrintFunction @55 PaUtil_SetDebugPrintFunction @55
PaWasapi_GetDeviceDefaultFormat @56 PaWasapi_GetDeviceDefaultFormat @56
PaWasapi_GetDeviceRole @57 PaWasapi_GetDeviceRole @57
PaWasapi_ThreadPriorityBoost @58 PaWasapi_ThreadPriorityBoost @58
PaWasapi_ThreadPriorityRevert @59 PaWasapi_ThreadPriorityRevert @59
PaWasapi_GetFramesPerHostBuffer @60 PaWasapi_GetFramesPerHostBuffer @60
PaWasapi_GetJackDescription @61 PaWasapi_GetJackDescription @61
PaWasapi_GetJackCount @62 PaWasapi_GetJackCount @62

View File

@ -1,46 +1,46 @@
EXPORTS EXPORTS
; ;
Pa_GetVersion @1 Pa_GetVersion @1
Pa_GetVersionText @2 Pa_GetVersionText @2
Pa_GetErrorText @3 Pa_GetErrorText @3
Pa_Initialize @4 Pa_Initialize @4
Pa_Terminate @5 Pa_Terminate @5
Pa_GetHostApiCount @6 Pa_GetHostApiCount @6
Pa_GetDefaultHostApi @7 Pa_GetDefaultHostApi @7
Pa_GetHostApiInfo @8 Pa_GetHostApiInfo @8
Pa_HostApiTypeIdToHostApiIndex @9 Pa_HostApiTypeIdToHostApiIndex @9
Pa_HostApiDeviceIndexToDeviceIndex @10 Pa_HostApiDeviceIndexToDeviceIndex @10
Pa_GetLastHostErrorInfo @11 Pa_GetLastHostErrorInfo @11
Pa_GetDeviceCount @12 Pa_GetDeviceCount @12
Pa_GetDefaultInputDevice @13 Pa_GetDefaultInputDevice @13
Pa_GetDefaultOutputDevice @14 Pa_GetDefaultOutputDevice @14
Pa_GetDeviceInfo @15 Pa_GetDeviceInfo @15
Pa_IsFormatSupported @16 Pa_IsFormatSupported @16
Pa_OpenStream @17 Pa_OpenStream @17
Pa_OpenDefaultStream @18 Pa_OpenDefaultStream @18
Pa_CloseStream @19 Pa_CloseStream @19
Pa_SetStreamFinishedCallback @20 Pa_SetStreamFinishedCallback @20
Pa_StartStream @21 Pa_StartStream @21
Pa_StopStream @22 Pa_StopStream @22
Pa_AbortStream @23 Pa_AbortStream @23
Pa_IsStreamStopped @24 Pa_IsStreamStopped @24
Pa_IsStreamActive @25 Pa_IsStreamActive @25
Pa_GetStreamInfo @26 Pa_GetStreamInfo @26
Pa_GetStreamTime @27 Pa_GetStreamTime @27
Pa_GetStreamCpuLoad @28 Pa_GetStreamCpuLoad @28
Pa_ReadStream @29 Pa_ReadStream @29
Pa_WriteStream @30 Pa_WriteStream @30
Pa_GetStreamReadAvailable @31 Pa_GetStreamReadAvailable @31
Pa_GetStreamWriteAvailable @32 Pa_GetStreamWriteAvailable @32
Pa_GetSampleSize @33 Pa_GetSampleSize @33
Pa_Sleep @34 Pa_Sleep @34
PaUtil_InitializeX86PlainConverters @52 PaUtil_InitializeX86PlainConverters @52
PaUtil_SetDebugPrintFunction @55 PaUtil_SetDebugPrintFunction @55
PaWasapi_GetDeviceDefaultFormat @56 PaWasapi_GetDeviceDefaultFormat @56
PaWasapi_GetDeviceRole @57 PaWasapi_GetDeviceRole @57
PaWasapi_ThreadPriorityBoost @58 PaWasapi_ThreadPriorityBoost @58
PaWasapi_ThreadPriorityRevert @59 PaWasapi_ThreadPriorityRevert @59
PaWasapi_GetFramesPerHostBuffer @60 PaWasapi_GetFramesPerHostBuffer @60
PaWasapi_GetJackDescription @61 PaWasapi_GetJackDescription @61
PaWasapi_GetJackCount @62 PaWasapi_GetJackCount @62

File diff suppressed because it is too large Load Diff

View File

@ -1,182 +1,182 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<Filter Include="Source Files"> <Filter Include="Source Files">
<UniqueIdentifier>{5cc0e5d8-728d-40a7-8083-5b983fd1aee7}</UniqueIdentifier> <UniqueIdentifier>{5cc0e5d8-728d-40a7-8083-5b983fd1aee7}</UniqueIdentifier>
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions> <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
</Filter> </Filter>
<Filter Include="Source Files\common"> <Filter Include="Source Files\common">
<UniqueIdentifier>{a858f4ea-8d6b-4443-90f9-c2dd3b140b6b}</UniqueIdentifier> <UniqueIdentifier>{a858f4ea-8d6b-4443-90f9-c2dd3b140b6b}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\hostapi"> <Filter Include="Source Files\hostapi">
<UniqueIdentifier>{0ce101a1-ed76-41ee-82e4-64060016158b}</UniqueIdentifier> <UniqueIdentifier>{0ce101a1-ed76-41ee-82e4-64060016158b}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\hostapi\ASIO"> <Filter Include="Source Files\hostapi\ASIO">
<UniqueIdentifier>{add87864-e960-4687-b000-d88213e2b2d4}</UniqueIdentifier> <UniqueIdentifier>{add87864-e960-4687-b000-d88213e2b2d4}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\hostapi\ASIO\ASIOSDK"> <Filter Include="Source Files\hostapi\ASIO\ASIOSDK">
<UniqueIdentifier>{6766d178-09d3-4194-9e43-0311d503035c}</UniqueIdentifier> <UniqueIdentifier>{6766d178-09d3-4194-9e43-0311d503035c}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\hostapi\dsound"> <Filter Include="Source Files\hostapi\dsound">
<UniqueIdentifier>{07c0df04-c6c4-4eb9-b645-d56ade6252fd}</UniqueIdentifier> <UniqueIdentifier>{07c0df04-c6c4-4eb9-b645-d56ade6252fd}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\hostapi\wmme"> <Filter Include="Source Files\hostapi\wmme">
<UniqueIdentifier>{ee059c3c-2663-474c-bc48-385c1db73147}</UniqueIdentifier> <UniqueIdentifier>{ee059c3c-2663-474c-bc48-385c1db73147}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\hostapi\wasapi"> <Filter Include="Source Files\hostapi\wasapi">
<UniqueIdentifier>{1782b100-f22f-4c73-812d-a3c654dc9825}</UniqueIdentifier> <UniqueIdentifier>{1782b100-f22f-4c73-812d-a3c654dc9825}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\os"> <Filter Include="Source Files\os">
<UniqueIdentifier>{1af05f1a-04d9-40b1-890c-1a34a9d0192e}</UniqueIdentifier> <UniqueIdentifier>{1af05f1a-04d9-40b1-890c-1a34a9d0192e}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\os\win"> <Filter Include="Source Files\os\win">
<UniqueIdentifier>{b6f829a2-cf78-4f0e-b051-8fccf66c5213}</UniqueIdentifier> <UniqueIdentifier>{b6f829a2-cf78-4f0e-b051-8fccf66c5213}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Resource Files"> <Filter Include="Resource Files">
<UniqueIdentifier>{b10684c7-978c-4840-be31-71d29889162c}</UniqueIdentifier> <UniqueIdentifier>{b10684c7-978c-4840-be31-71d29889162c}</UniqueIdentifier>
<Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions> <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
</Filter> </Filter>
<Filter Include="Header Files"> <Filter Include="Header Files">
<UniqueIdentifier>{78689f06-8c26-4417-93e2-b809a8c41ee7}</UniqueIdentifier> <UniqueIdentifier>{78689f06-8c26-4417-93e2-b809a8c41ee7}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl</Extensions> <Extensions>h;hpp;hxx;hm;inl</Extensions>
</Filter> </Filter>
<Filter Include="Source Files\hostapi\wdmks"> <Filter Include="Source Files\hostapi\wdmks">
<UniqueIdentifier>{0d9360dd-9d00-434a-ab46-7a89b2d35fd0}</UniqueIdentifier> <UniqueIdentifier>{0d9360dd-9d00-434a-ab46-7a89b2d35fd0}</UniqueIdentifier>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\src\common\pa_allocation.c"> <ClCompile Include="..\..\src\common\pa_allocation.c">
<Filter>Source Files\common</Filter> <Filter>Source Files\common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\common\pa_converters.c"> <ClCompile Include="..\..\src\common\pa_converters.c">
<Filter>Source Files\common</Filter> <Filter>Source Files\common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\common\pa_cpuload.c"> <ClCompile Include="..\..\src\common\pa_cpuload.c">
<Filter>Source Files\common</Filter> <Filter>Source Files\common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\common\pa_debugprint.c"> <ClCompile Include="..\..\src\common\pa_debugprint.c">
<Filter>Source Files\common</Filter> <Filter>Source Files\common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\common\pa_dither.c"> <ClCompile Include="..\..\src\common\pa_dither.c">
<Filter>Source Files\common</Filter> <Filter>Source Files\common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\common\pa_front.c"> <ClCompile Include="..\..\src\common\pa_front.c">
<Filter>Source Files\common</Filter> <Filter>Source Files\common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\common\pa_process.c"> <ClCompile Include="..\..\src\common\pa_process.c">
<Filter>Source Files\common</Filter> <Filter>Source Files\common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\common\pa_ringbuffer.c"> <ClCompile Include="..\..\src\common\pa_ringbuffer.c">
<Filter>Source Files\common</Filter> <Filter>Source Files\common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\common\pa_stream.c"> <ClCompile Include="..\..\src\common\pa_stream.c">
<Filter>Source Files\common</Filter> <Filter>Source Files\common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\common\pa_trace.c"> <ClCompile Include="..\..\src\common\pa_trace.c">
<Filter>Source Files\common</Filter> <Filter>Source Files\common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\asio\pa_asio.cpp"> <ClCompile Include="..\..\src\hostapi\asio\pa_asio.cpp">
<Filter>Source Files\hostapi\ASIO</Filter> <Filter>Source Files\hostapi\ASIO</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\common\asio.cpp"> <ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\common\asio.cpp">
<Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter> <Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\host\ASIOConvertSamples.cpp"> <ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\host\ASIOConvertSamples.cpp">
<Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter> <Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\host\asiodrivers.cpp"> <ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\host\asiodrivers.cpp">
<Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter> <Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\host\pc\asiolist.cpp"> <ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\host\pc\asiolist.cpp">
<Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter> <Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\common\combase.cpp"> <ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\common\combase.cpp">
<Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter> <Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\common\debugmessage.cpp"> <ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\common\debugmessage.cpp">
<Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter> <Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\common\register.cpp"> <ClCompile Include="..\..\src\hostapi\asio\ASIOSDK\common\register.cpp">
<Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter> <Filter>Source Files\hostapi\ASIO\ASIOSDK</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\dsound\pa_win_ds.c"> <ClCompile Include="..\..\src\hostapi\dsound\pa_win_ds.c">
<Filter>Source Files\hostapi\dsound</Filter> <Filter>Source Files\hostapi\dsound</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\dsound\pa_win_ds_dynlink.c"> <ClCompile Include="..\..\src\hostapi\dsound\pa_win_ds_dynlink.c">
<Filter>Source Files\hostapi\dsound</Filter> <Filter>Source Files\hostapi\dsound</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\wmme\pa_win_wmme.c"> <ClCompile Include="..\..\src\hostapi\wmme\pa_win_wmme.c">
<Filter>Source Files\hostapi\wmme</Filter> <Filter>Source Files\hostapi\wmme</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\wasapi\pa_win_wasapi.c"> <ClCompile Include="..\..\src\hostapi\wasapi\pa_win_wasapi.c">
<Filter>Source Files\hostapi\wasapi</Filter> <Filter>Source Files\hostapi\wasapi</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\os\win\pa_win_hostapis.c"> <ClCompile Include="..\..\src\os\win\pa_win_hostapis.c">
<Filter>Source Files\os\win</Filter> <Filter>Source Files\os\win</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\os\win\pa_win_util.c"> <ClCompile Include="..\..\src\os\win\pa_win_util.c">
<Filter>Source Files\os\win</Filter> <Filter>Source Files\os\win</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\os\win\pa_win_waveformat.c"> <ClCompile Include="..\..\src\os\win\pa_win_waveformat.c">
<Filter>Source Files\os\win</Filter> <Filter>Source Files\os\win</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\os\win\pa_win_wdmks_utils.c"> <ClCompile Include="..\..\src\os\win\pa_win_wdmks_utils.c">
<Filter>Source Files\os\win</Filter> <Filter>Source Files\os\win</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\os\win\pa_x86_plain_converters.c"> <ClCompile Include="..\..\src\os\win\pa_x86_plain_converters.c">
<Filter>Source Files\os\win</Filter> <Filter>Source Files\os\win</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\hostapi\wdmks\pa_win_wdmks.c"> <ClCompile Include="..\..\src\hostapi\wdmks\pa_win_wdmks.c">
<Filter>Source Files\hostapi\wdmks</Filter> <Filter>Source Files\hostapi\wdmks</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\os\win\pa_win_coinitialize.c"> <ClCompile Include="..\..\src\os\win\pa_win_coinitialize.c">
<Filter>Source Files\os\win</Filter> <Filter>Source Files\os\win</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="portaudio.def"> <None Include="portaudio.def">
<Filter>Resource Files</Filter> <Filter>Resource Files</Filter>
</None> </None>
<None Include="portaudio_noasio.def"> <None Include="portaudio_noasio.def">
<Filter>Resource Files</Filter> <Filter>Resource Files</Filter>
</None> </None>
<None Include="..\..\src\hostapi\wdmks\readme.txt"> <None Include="..\..\src\hostapi\wdmks\readme.txt">
<Filter>Source Files\hostapi\wdmks</Filter> <Filter>Source Files\hostapi\wdmks</Filter>
</None> </None>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\include\pa_asio.h"> <ClInclude Include="..\..\include\pa_asio.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\pa_jack.h"> <ClInclude Include="..\..\include\pa_jack.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\pa_linux_alsa.h"> <ClInclude Include="..\..\include\pa_linux_alsa.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\pa_mac_core.h"> <ClInclude Include="..\..\include\pa_mac_core.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\pa_win_ds.h"> <ClInclude Include="..\..\include\pa_win_ds.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\pa_win_wasapi.h"> <ClInclude Include="..\..\include\pa_win_wasapi.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\pa_win_waveformat.h"> <ClInclude Include="..\..\include\pa_win_waveformat.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\pa_win_wmme.h"> <ClInclude Include="..\..\include\pa_win_wmme.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\portaudio.h"> <ClInclude Include="..\..\include\portaudio.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\os\win\pa_win_coinitialize.h"> <ClInclude Include="..\..\src\os\win\pa_win_coinitialize.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\pa_win_wdmks.h"> <ClInclude Include="..\..\include\pa_win_wdmks.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,112 +1,112 @@
Hello Hello
This is a small list of steps in order to build portaudio This is a small list of steps in order to build portaudio
(Currently v19-devel) into a VS2005 DLL and lib file. (Currently v19-devel) into a VS2005 DLL and lib file.
This DLL contains all 5 current Win32 PA APIS (MME/DS/ASIO/WASAPI/WDMKS) 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 1)Copy the source dirs that comes with the ASIO SDK inside src\hostapi\asio\ASIOSDK
so you should now have example: so you should now have example:
portaudio19svn\src\hostapi\asio\ASIOSDK\common portaudio19svn\src\hostapi\asio\ASIOSDK\common
portaudio19svn\src\hostapi\asio\ASIOSDK\host portaudio19svn\src\hostapi\asio\ASIOSDK\host
portaudio19svn\src\hostapi\asio\ASIOSDK\host\sample portaudio19svn\src\hostapi\asio\ASIOSDK\host\sample
portaudio19svn\src\hostapi\asio\ASIOSDK\host\pc portaudio19svn\src\hostapi\asio\ASIOSDK\host\pc
portaudio19svn\src\hostapi\asio\ASIOSDK\host\mac (not needed) portaudio19svn\src\hostapi\asio\ASIOSDK\host\mac (not needed)
You dont need "driver" You dont need "driver"
To build without ASIO (or another Host API) see the "Building without ASIO support" section below. To build without ASIO (or another Host API) see the "Building without ASIO support" section below.
2) 2)
*If you have Visual Studio 6.0*, please make sure you have it updated with the latest (and final) *If you have Visual Studio 6.0*, please make sure you have it updated with the latest (and final)
microsoft libraries for it, namely: microsoft libraries for it, namely:
Service pack 5: Service pack 5:
Latest known URL: Latest known URL:
http://msdn2.microsoft.com/en-us/vstudio/aa718363.aspx 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. Yes there EXISTS a service pack 6 , but the processor pack (below) isnt compatible with it.
Processor Pack(only works with above SP5) Processor Pack(only works with above SP5)
Latest known URL: Latest known URL:
http://msdn2.microsoft.com/en-us/vstudio/Aa718349.aspx 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. 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. Up to you to decide upon Service pack 5 or 6 depending on your need for intrinsics.
Platform SDK (Feb 2003) : Platform SDK (Feb 2003) :
Latest known URL: Latest known URL:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
(This will allow your code base to be x64 friendly, with correct defines (This will allow your code base to be x64 friendly, with correct defines
for LONG_PTR and such) for LONG_PTR and such)
NOTE A) Yes you have to use IE activex scripts to install that - wont work in Firefox, you 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) may have to temporarily change tyour default browser(aint life unfair)
NOTE B) Dont forget to hit "Register PSDK Directories with Visual Studio". 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 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) (it must be the same for libs)
DirectX 9.0 SDK Update - (Summer 2003) DirectX 9.0 SDK Update - (Summer 2003)
Latest known URL: Latest known URL:
http://www.microsoft.com/downloads/details.aspx?familyid=9216652f-51e0-402e-b7b5-feb68d00f298&displaylang=en 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 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) * *If you have 7.0(VC.NET/2001) or 7.1(VC.2003) *
then I suggest you open portaudio.dsp (and convert if needed) 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 *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, 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. last of which removes dependency of all but basic OS system DLLs.
hit compile and hope for the best. hit compile and hope for the best.
3)Now in any project, in which you require portaudio, 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 you can just link with portaudio_x86.lib, (or _x64) and of course include the
relevant headers relevant headers
(portaudio.h, and/or pa_asio.h , pa_x86_plain_converters.h) See (*) (portaudio.h, and/or pa_asio.h , pa_x86_plain_converters.h) See (*)
4) Your new exe should now use portaudio_xXX.dll. 4) Your new exe should now use portaudio_xXX.dll.
Have fun! Have fun!
(*): you may want to add/remove some DLL entry points. (*): you may want to add/remove some DLL entry points.
Right now those 6 entries are _not_ from portaudio.h Right now those 6 entries are _not_ from portaudio.h
(from portaudio.def) (from portaudio.def)
(...) (...)
PaAsio_GetAvailableLatencyValues @50 PaAsio_GetAvailableLatencyValues @50
PaAsio_ShowControlPanel @51 PaAsio_ShowControlPanel @51
PaUtil_InitializeX86PlainConverters @52 PaUtil_InitializeX86PlainConverters @52
PaAsio_GetInputChannelName @53 PaAsio_GetInputChannelName @53
PaAsio_GetOutputChannelName @54 PaAsio_GetOutputChannelName @54
PaUtil_SetLogPrintFunction @55 PaUtil_SetLogPrintFunction @55
*** Building without ASIO support *** *** Building without ASIO support ***
To build PortAudio without ASIO support you need to: To build PortAudio without ASIO support you need to:
A. Make sure your project doesn't try to build any ASIO SDK files. 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 If you're using one of the shipped projects, remove the ASIO related files
from the project. from the project.
B. Make sure your project doesn't try to build the PortAudio ASIO B. Make sure your project doesn't try to build the PortAudio ASIO
implementation files: implementation files:
src/hostapi/pa_asio.cpp src/hostapi/pa_asio.cpp
src/hostapi/iasiothiscallresolver.cpp src/hostapi/iasiothiscallresolver.cpp
If you're using one of the shipped projects remove them from the project. 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. 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 In VS2005 this can be added under
Project Properties > Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions Project Properties > Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions
Setting PA_USE_ASIO=0 stops src/os/win/pa_win_hostapis.c Setting PA_USE_ASIO=0 stops src/os/win/pa_win_hostapis.c
from trying to initialize the PA ASIO implementation. from trying to initialize the PA ASIO implementation.
D. Remove PaAsio_* entry points from portaudio.def, or comment them out with ; 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 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: 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 PA_USE_WMME, PA_USE_DSOUND, PA_USE_ASIO, PA_USE_WASAPI and PA_USE_WDMKS
----- -----
David Viens, davidv@plogue.com David Viens, davidv@plogue.com
Robert Bielik, robert@xponaut.se Robert Bielik, robert@xponaut.se

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,162 +1,162 @@
/** @page api_overview PortAudio API Overview /** @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. 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 @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: 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 @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. 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 @section key_abstractions Key abstractions: Host APIs, Devices and Streams
The PortAudio processing model includes three main abstractions: <i>Host APIs</i>, audio <i>Devices</i> and audio <i>Streams</i>. The PortAudio processing model includes three main abstractions: <i>Host APIs</i>, audio <i>Devices</i> and audio <i>Streams</i>.
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. 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. 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. 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. 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: The PortAudio API offers the following functionality:
- Initialize and terminate the library - Initialize and terminate the library
- Enumerate available Host APIs - Enumerate available Host APIs
- Enumerate available Devices either globally, or within each Host API - Enumerate available Devices either globally, or within each Host API
- Discover default or recommended Devices and Device settings - Discover default or recommended Devices and Device settings
- Discover Device capabilities such as supported audio data formats and sample rates - 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 - 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 - Provide Stream timing information to support synchronising audio with other parts of your application
- Retrieve version and error information. - Retrieve version and error information.
These functions are described in more detail below. These functions are described in more detail below.
@section top_level_functions Initialization, termination and utility functions @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(). 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. 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(). 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. 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 @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. 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. 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(). 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. 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. 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. You can call Pa_HostApiTypeIdToHostApiIndex() to retrieve the current @ref PaHostApiIndex for a particular @ref PaHostApiTypeId.
@section devices Devices @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 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. 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 &ndash; 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. 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 &ndash; 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(). 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. 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. 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. 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 @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. 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 @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. 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 @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. 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) &ndash; 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. Devices may be full duplex (supporting simultaneous input and output) or half duplex (supporting input or output) &ndash; 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 &ndash; 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. A successful call to Pa_OpenStream() creates a pointer to a @ref PaStream &ndash; 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() &ndash; a simpler alternative to Pa_OpenStream() which you can use when you want to open the default audio Device(s) with default latency parameters. PortAudio also provides Pa_OpenDefaultStream() &ndash; 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. You call Pa_CloseStream() to close a Stream when you've finished using it.
@subsection starting_and_stopping_streams Starting and Stopping Streams @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. 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. 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 @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. 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. 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). 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).
<strong>IMPORTANT:</strong> 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. <strong>IMPORTANT:</strong> 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 @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. 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 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. 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). 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 @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(). 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. 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 @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(). 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. 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 @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. 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(). 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. 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 @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. 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. 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. 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: See the documentation for the individual Host API-specific header files for details of the extended functionality they expose:
- pa_asio.h - pa_asio.h
- pa_jack.h - pa_jack.h
- pa_linux_alsa.h - pa_linux_alsa.h
- pa_mac_core.h - pa_mac_core.h
- pa_win_ds.h - pa_win_ds.h
- pa_win_wasapi.h - pa_win_wasapi.h
- pa_win_wmme.h - pa_win_wmme.h
- pa_win_waveformat.h - pa_win_waveformat.h
*/ */

View File

@ -1,38 +1,38 @@
/** @page License PortAudio License /** @page License PortAudio License
PortAudio Portable Real-Time Audio Library <br> PortAudio Portable Real-Time Audio Library <br>
Copyright (c) 1999-2011 Ross Bencina, Phil Burk Copyright (c) 1999-2011 Ross Bencina, Phil Burk
Permission is hereby granted, free of charge, to any person obtaining Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files a copy of this software and associated documentation files
(the "Software"), to deal in the Software without restriction, (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software, publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions: subject to the following conditions:
The above copyright notice and this permission notice shall be The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software. included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
<br> <br>
The text above constitutes the entire PortAudio license; however, The text above constitutes the entire PortAudio license; however,
the PortAudio community also makes the following non-binding requests: the PortAudio community also makes the following non-binding requests:
Any person wishing to distribute modifications to the Software is Any person wishing to distribute modifications to the Software is
requested to send the modifications to the original developer so that requested to send the modifications to the original developer so that
they can be incorporated into the canonical version. It is also they can be incorporated into the canonical version. It is also
requested that these non-binding requests be included along with the requested that these non-binding requests be included along with the
license above. license above.
*/ */

View File

@ -1,55 +1,55 @@
/* /*
define all of the file groups used to structure the documentation. define all of the file groups used to structure the documentation.
*/ */
/** /**
@defgroup public_header Public API definitions for users of PortAudio @defgroup public_header Public API definitions for users of PortAudio
*/ */
/** /**
@internal @internal
@defgroup common_src Source code common to all implementations @defgroup common_src Source code common to all implementations
*/ */
/** /**
@internal @internal
@defgroup win_src Source code common to all Windows implementations @defgroup win_src Source code common to all Windows implementations
*/ */
/** /**
@internal @internal
@defgroup unix_src Source code common to all Unix implementations @defgroup unix_src Source code common to all Unix implementations
*/ */
/** /**
@internal @internal
@defgroup macosx_src Source code common to all Macintosh implementations @defgroup macosx_src Source code common to all Macintosh implementations
*/ */
/** /**
@internal @internal
@defgroup hostapi_src Source code for specific Host APIs @defgroup hostapi_src Source code for specific Host APIs
*/ */
/** /**
@internal @internal
@defgroup test_src Test programs @defgroup test_src Test programs
*/ */
/** /**
@defgroup examples_src Example programs demonstrating PortAudio usage @defgroup examples_src Example programs demonstrating PortAudio usage
*/ */
/** /**
@internal @internal
@page srcguide A guide to the PortAudio sources @page srcguide A guide to the PortAudio sources
- \ref public_header - \ref public_header
- \ref examples_src - \ref examples_src
- \ref common_src - \ref common_src
- \ref win_src - \ref win_src
- \ref unix_src - \ref unix_src
- \ref macosx_src - \ref macosx_src
- \ref hostapi_src - \ref hostapi_src
- \ref test_src - \ref test_src
*/ */

View File

@ -1,77 +1,77 @@
import os import os
import os.path import os.path
import string import string
paRootDirectory = '../../' paRootDirectory = '../../'
paHtmlDocDirectory = os.path.join( paRootDirectory, "doc", "html" ) paHtmlDocDirectory = os.path.join( paRootDirectory, "doc", "html" )
## Script to check documentation status ## Script to check documentation status
## this script assumes that html doxygen documentation has been generated ## this script assumes that html doxygen documentation has been generated
## ##
## it then walks the entire portaudio source tree and check that ## it then walks the entire portaudio source tree and check that
## - every source file (.c,.h,.cpp) has a doxygen comment block containing ## - every source file (.c,.h,.cpp) has a doxygen comment block containing
## - a @file directive ## - a @file directive
## - a @brief directive ## - a @brief directive
## - a @ingroup directive ## - a @ingroup directive
## - it also checks that a corresponding html documentation file has been generated. ## - 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. ## 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. ## 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 # recurse from top and return a list of all with the given
# extensions. ignore .svn directories. return absolute paths # extensions. ignore .svn directories. return absolute paths
def recursiveFindFiles( top, extensions, includePaths ): def recursiveFindFiles( top, extensions, includePaths ):
result = [] result = []
for (dirpath, dirnames, filenames) in os.walk(top): for (dirpath, dirnames, filenames) in os.walk(top):
if not '.svn' in dirpath: if not '.svn' in dirpath:
for f in filenames: for f in filenames:
if os.path.splitext(f)[1] in extensions: if os.path.splitext(f)[1] in extensions:
if includePaths: if includePaths:
result.append( os.path.abspath( os.path.join( dirpath, f ) ) ) result.append( os.path.abspath( os.path.join( dirpath, f ) ) )
else: else:
result.append( f ) result.append( f )
return result return result
# generate the html file name that doxygen would use for # generate the html file name that doxygen would use for
# a particular source file. this is a brittle conversion # a particular source file. this is a brittle conversion
# which i worked out by trial and error # which i worked out by trial and error
def doxygenHtmlDocFileName( sourceFile ): def doxygenHtmlDocFileName( sourceFile ):
return sourceFile.replace( '_', '__' ).replace( '.', '_8' ) + '.html' return sourceFile.replace( '_', '__' ).replace( '.', '_8' ) + '.html'
sourceFiles = recursiveFindFiles( paRootDirectory, [ '.c', '.h', '.cpp' ], True ); sourceFiles = recursiveFindFiles( paRootDirectory, [ '.c', '.h', '.cpp' ], True );
docFiles = recursiveFindFiles( paHtmlDocDirectory, [ '.html' ], False ); docFiles = recursiveFindFiles( paHtmlDocDirectory, [ '.html' ], False );
currentFile = "" currentFile = ""
def printError( f, message ): def printError( f, message ):
global currentFile global currentFile
if f != currentFile: if f != currentFile:
currentFile = f currentFile = f
print f, ":" print f, ":"
print "\t!", message print "\t!", message
for f in sourceFiles: for f in sourceFiles:
if not doxygenHtmlDocFileName( os.path.basename(f) ) in docFiles: if not doxygenHtmlDocFileName( os.path.basename(f) ) in docFiles:
printError( f, "no doxygen generated doc page" ) printError( f, "no doxygen generated doc page" )
s = file( f, 'rt' ).read() s = file( f, 'rt' ).read()
if not '/**' in s: if not '/**' in s:
printError( f, "no doxygen /** block" ) printError( f, "no doxygen /** block" )
if not '@file' in s: if not '@file' in s:
printError( f, "no doxygen @file tag" ) printError( f, "no doxygen @file tag" )
if not '@brief' in s: if not '@brief' in s:
printError( f, "no doxygen @brief tag" ) printError( f, "no doxygen @brief tag" )
if not '@ingroup' in s: if not '@ingroup' in s:
printError( f, "no doxygen @ingroup tag" ) printError( f, "no doxygen @ingroup tag" )

View File

@ -1,19 +1,19 @@
rem Use Astyle to fix style in 'C' files rem Use Astyle to fix style in 'C' files
cd %1% cd %1%
fixlines -p *.c fixlines -p *.c
fixlines -p *.cpp fixlines -p *.cpp
fixlines -p *.cc fixlines -p *.cc
astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.c 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 *.cpp
astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.cc astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.cc
del *.orig del *.orig
@rem convert line terminators to Unix style LFs @rem convert line terminators to Unix style LFs
fixlines -u *.c fixlines -u *.c
fixlines -u *.cpp fixlines -u *.cpp
fixlines -u *.cc fixlines -u *.cc
fixlines -u *.h fixlines -u *.h
del *.bak del *.bak
cd ..\ cd ..\

View File

@ -1,7 +1,7 @@
rem Use Astyle to fix style in a file rem Use Astyle to fix style in a file
fixlines -p %1% fixlines -p %1%
astyle --style=ansi -c -o --convert-tabs --indent-preprocessor %1% astyle --style=ansi -c -o --convert-tabs --indent-preprocessor %1%
del %1%.orig del %1%.orig
@rem convert line terminators to Unix style LFs @rem convert line terminators to Unix style LFs
fixlines -u %1% fixlines -u %1%
del %1%.bak del %1%.bak

View File

@ -1,105 +1,105 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.79 [en] (Windows NT 5.0; U) [Netscape]"> <meta name="GENERATOR" content="Mozilla/4.79 [en] (Windows NT 5.0; U) [Netscape]">
<meta name="Author" content="Phil Burk"> <meta name="Author" content="Phil Burk">
<meta name="Description" content="PortAudio is a cross platform, open-source, audio I/O library.It provides a very simple API for recording and/or playing sound using a simple callback function."> <meta name="Description" content="PortAudio is a cross platform, open-source, audio I/O library.It provides a very simple API for recording and/or playing sound using a simple callback function.">
<meta name="KeyWords" content="audio, library, portable, open-source, DirectSound,sound, music, JSyn, synthesis,"> <meta name="KeyWords" content="audio, library, portable, open-source, DirectSound,sound, music, JSyn, synthesis,">
<title>PortAudio Implementations for DirectSound</title> <title>PortAudio Implementations for DirectSound</title>
</head> </head>
<body> <body>
&nbsp; &nbsp;
<center><table COLS=1 WIDTH="100%" BGCOLOR="#FADA7A" > <center><table COLS=1 WIDTH="100%" BGCOLOR="#FADA7A" >
<tr> <tr>
<td> <td>
<center> <center>
<h1> <h1>
PortAudio - Portable Audio Library</h1></center> PortAudio - Portable Audio Library</h1></center>
</td> </td>
</tr> </tr>
</table></center> </table></center>
<p>PortAudio is a cross platform, <a href="#License">open-source</a>, audio <p>PortAudio is a cross platform, <a href="#License">open-source</a>, audio
I/O library proposed by <b>Ross Bencina</b> to the <a href="http://shoko.calarts.edu/~glmrboy/musicdsp/music-dsp.html">music-dsp</a> I/O library proposed by <b>Ross Bencina</b> to the <a href="http://shoko.calarts.edu/~glmrboy/musicdsp/music-dsp.html">music-dsp</a>
mailing list. It lets you write simple audio programs in 'C' that will mailing list. It lets you write simple audio programs in 'C' that will
compile and run on <b>Windows, Macintosh, Unix, BeOS</b>. PortAudio is compile and run on <b>Windows, Macintosh, Unix, BeOS</b>. PortAudio is
intended to promote the exchange of audio synthesis software between developers intended to promote the exchange of audio synthesis software between developers
on different platforms. on different platforms.
<p>For complete information on PortAudio and to download the latest releases, <p>For complete information on PortAudio and to download the latest releases,
please visit "<b><font size=+2><a href="http://www.portaudio.com">http://www.portaudio.com</a></font></b>". please visit "<b><font size=+2><a href="http://www.portaudio.com">http://www.portaudio.com</a></font></b>".
<br>&nbsp; <br>&nbsp;
<br>&nbsp; <br>&nbsp;
<center> <center>
<h2> <h2>
<b><a href="doc/html/index.html">Click here for Documentation</a></b></h2></center> <b><a href="doc/html/index.html">Click here for Documentation</a></b></h2></center>
<h2> <h2>
<b><font size=+2></font></b></h2> <b><font size=+2></font></b></h2>
<h2> <h2>
<b><font size=+2>Contacts and E-Mail List</font></b></h2> <b><font size=+2>Contacts and E-Mail List</font></b></h2>
<ul> <ul>
<li> <li>
If you are using or implementing PortAudio then please join the <b><font size=+1><a href="http://techweb.rfa.org/mailman/listinfo/portaudio">PortAudio If you are using or implementing PortAudio then please join the <b><font size=+1><a href="http://techweb.rfa.org/mailman/listinfo/portaudio">PortAudio
mail list</a></font><font size=+2> </font></b>.</li> mail list</a></font><font size=+2> </font></b>.</li>
<li> <li>
If you find bugs in one of these implementations, or have suggestions, If you find bugs in one of these implementations, or have suggestions,
please e-mail them to <a href="mailto:philburk@softsynth.com">Phil Burk</a>.</li> please e-mail them to <a href="mailto:philburk@softsynth.com">Phil Burk</a>.</li>
<li> <li>
If you make improvements to the library, please send them to us so we can If you make improvements to the library, please send them to us so we can
incorporate the improvements.</li> incorporate the improvements.</li>
</ul> </ul>
<h2> <h2>
<a NAME="License"></a>License</h2> <a NAME="License"></a>License</h2>
<table width="600"> <table width="600">
<tr><td> <tr><td>
<p> <p>
PortAudio Portable Real-Time Audio Library PortAudio Portable Real-Time Audio Library
<br>Copyright &copy; 1999-2006 Ross Bencina and Phil Burk <br>Copyright &copy; 1999-2006 Ross Bencina and Phil Burk
</p> </p>
<p>Permission is hereby granted, free of charge, to any person obtaining <p>Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the "Software"), a copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense, 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 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: is furnished to do so, subject to the following conditions:
</p> </p>
<p> <p>
The above copyright notice and this permission notice shall be included The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software. in all copies or substantial portions of the Software.
</p> </p>
<p> <p>
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND ON INFRINGEMENT. FITNESS FOR A PARTICULAR PURPOSE AND ON INFRINGEMENT.
<br>IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY <br>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 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 OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
THE USE OR OTHER DEALINGS IN THE SOFTWARE. THE USE OR OTHER DEALINGS IN THE SOFTWARE.
</p> </p>
<p><i> <p><i>
The text above constitutes the entire PortAudio license; however, The text above constitutes the entire PortAudio license; however,
the PortAudio community also makes the following non-binding requests: the PortAudio community also makes the following non-binding requests:
</i></p> </i></p>
<p><i> <p><i>
Any person wishing to distribute modifications to the Software is Any person wishing to distribute modifications to the Software is
requested to send the modifications to the original developer so that requested to send the modifications to the original developer so that
they can be incorporated into the canonical version. It is also they can be incorporated into the canonical version. It is also
requested that these non-binding requests be included along with the requested that these non-binding requests be included along with the
license above. license above.
</i></p> </i></p>
</td></tr></table> </td></tr></table>
<br>&nbsp; <br>&nbsp;
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

View File

@ -1,49 +1,49 @@
README for PABLIO README for PABLIO
Portable Audio Blocking I/O Library Portable Audio Blocking I/O Library
Author: Phil Burk Author: Phil Burk
PABLIO is a simplified interface to PortAudio that provides PABLIO is a simplified interface to PortAudio that provides
read/write style blocking I/O. read/write style blocking I/O.
PABLIO is DEPRECATED. We recommend that people use the blocking I/O calls 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 that are now part of the PortAudio API. These are Pa_ReadStream() and
Pa_WriteStream(). Pa_WriteStream().
http://portaudio.com/docs/v19-doxydocs/blocking_read_write.html http://portaudio.com/docs/v19-doxydocs/blocking_read_write.html
/* /*
* More information on PortAudio at: http://www.portaudio.com * More information on PortAudio at: http://www.portaudio.com
* Copyright (c) 1999-2000 Phil Burk * Copyright (c) 1999-2000 Phil Burk
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files * a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction, * (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, * including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software, * publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so, * and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions: * subject to the following conditions:
* *
* The above copyright notice and this permission notice shall be * The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software. * included in all copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
/* /*
* The text above constitutes the entire PortAudio license; however, * The text above constitutes the entire PortAudio license; however,
* the PortAudio community also makes the following non-binding requests: * the PortAudio community also makes the following non-binding requests:
* *
* Any person wishing to distribute modifications to the Software is * Any person wishing to distribute modifications to the Software is
* requested to send the modifications to the original developer so that * requested to send the modifications to the original developer so that
* they can be incorporated into the canonical version. It is also * they can be incorporated into the canonical version. It is also
* requested that these non-binding requests be included along with the * requested that these non-binding requests be included along with the
* license above. * license above.
*/ */

View File

@ -1,35 +1,35 @@
LIBRARY PABLIO LIBRARY PABLIO
DESCRIPTION 'PABLIO Portable Audio Blocking I/O' DESCRIPTION 'PABLIO Portable Audio Blocking I/O'
EXPORTS EXPORTS
; Explicit exports can go here ; Explicit exports can go here
Pa_Initialize @1 Pa_Initialize @1
Pa_Terminate @2 Pa_Terminate @2
Pa_GetHostError @3 Pa_GetHostError @3
Pa_GetErrorText @4 Pa_GetErrorText @4
Pa_CountDevices @5 Pa_CountDevices @5
Pa_GetDefaultInputDeviceID @6 Pa_GetDefaultInputDeviceID @6
Pa_GetDefaultOutputDeviceID @7 Pa_GetDefaultOutputDeviceID @7
Pa_GetDeviceInfo @8 Pa_GetDeviceInfo @8
Pa_OpenStream @9 Pa_OpenStream @9
Pa_OpenDefaultStream @10 Pa_OpenDefaultStream @10
Pa_CloseStream @11 Pa_CloseStream @11
Pa_StartStream @12 Pa_StartStream @12
Pa_StopStream @13 Pa_StopStream @13
Pa_StreamActive @14 Pa_StreamActive @14
Pa_StreamTime @15 Pa_StreamTime @15
Pa_GetCPULoad @16 Pa_GetCPULoad @16
Pa_GetMinNumBuffers @17 Pa_GetMinNumBuffers @17
Pa_Sleep @18 Pa_Sleep @18
OpenAudioStream @19 OpenAudioStream @19
CloseAudioStream @20 CloseAudioStream @20
WriteAudioStream @21 WriteAudioStream @21
ReadAudioStream @22 ReadAudioStream @22
Pa_GetSampleSize @23 Pa_GetSampleSize @23
;123456789012345678901234567890123456 ;123456789012345678901234567890123456
;000000000111111111122222222223333333 ;000000000111111111122222222223333333

View File

@ -1,12 +1,12 @@
prefix=@prefix@ prefix=@prefix@
exec_prefix=@exec_prefix@ exec_prefix=@exec_prefix@
libdir=@libdir@ libdir=@libdir@
includedir=@includedir@ includedir=@includedir@
Name: PortAudio Name: PortAudio
Description: Portable audio I/O Description: Portable audio I/O
Requires: Requires:
Version: 19 Version: 19
Libs: -L${libdir} -lportaudio @LIBS@ Libs: -L${libdir} -lportaudio @LIBS@
Cflags: -I${includedir} @THREAD_CFLAGS@ Cflags: -I${includedir} @THREAD_CFLAGS@

View File

@ -1,220 +1,220 @@
import os.path, copy, sys import os.path, copy, sys
def checkSymbol(conf, header, library=None, symbol=None, autoAdd=True, critical=False, pkgName=None): def checkSymbol(conf, header, library=None, symbol=None, autoAdd=True, critical=False, pkgName=None):
""" Check for symbol in library, optionally look only for header. """ Check for symbol in library, optionally look only for header.
@param conf: Configure instance. @param conf: Configure instance.
@param header: The header file where the symbol is declared. @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 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 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 autoAdd: Automatically link with this library if check is positive.
@param critical: Raise on error? @param critical: Raise on error?
@param pkgName: Optional name of pkg-config entry for library, to determine build parameters. @param pkgName: Optional name of pkg-config entry for library, to determine build parameters.
@return: True/False @return: True/False
""" """
origEnv = conf.env.Copy() # Copy unmodified environment so we can restore it upon error origEnv = conf.env.Copy() # Copy unmodified environment so we can restore it upon error
env = conf.env env = conf.env
if library is None: if library is None:
library = "c" # Standard library library = "c" # Standard library
autoAdd = False autoAdd = False
if pkgName is not None: if pkgName is not None:
origLibs = copy.copy(env.get("LIBS", None)) origLibs = copy.copy(env.get("LIBS", None))
try: env.ParseConfig("pkg-config --silence-errors %s --cflags --libs" % pkgName) try: env.ParseConfig("pkg-config --silence-errors %s --cflags --libs" % pkgName)
except: pass except: pass
else: else:
# I see no other way of checking that the parsing succeeded, if it did add no more linking parameters # 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: if env.get("LIBS", None) != origLibs:
autoAdd = False autoAdd = False
try: try:
if not conf.CheckCHeader(header, include_quotes="<>"): if not conf.CheckCHeader(header, include_quotes="<>"):
raise ConfigurationError("missing header %s" % header) raise ConfigurationError("missing header %s" % header)
if symbol is not None and not conf.CheckLib(library, symbol, language="C", autoadd=autoAdd): 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)) raise ConfigurationError("missing symbol %s in library %s" % (symbol, library))
except ConfigurationError: except ConfigurationError:
conf.env = origEnv conf.env = origEnv
if not critical: if not critical:
return False return False
raise raise
return True return True
import SCons.Errors import SCons.Errors
# Import common variables # Import common variables
# Could use '#' to refer to top-level SConstruct directory, but looks like env.SConsignFile doesn't interpret this at least :( # 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")) sconsDir = os.path.abspath(os.path.join("build", "scons"))
try: try:
Import("Platform", "Posix", "ConfigurationError", "ApiVer") Import("Platform", "Posix", "ConfigurationError", "ApiVer")
except SCons.Errors.UserError: except SCons.Errors.UserError:
# The common objects must be exported first # The common objects must be exported first
SConscript(os.path.join(sconsDir, "SConscript_common")) SConscript(os.path.join(sconsDir, "SConscript_common"))
Import("Platform", "Posix", "ConfigurationError", "ApiVer") Import("Platform", "Posix", "ConfigurationError", "ApiVer")
Import("env") Import("env")
# This will be manipulated # This will be manipulated
env = env.Copy() env = env.Copy()
# We operate with a set of needed libraries and optional libraries, the latter stemming from host API implementations. # 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 # 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. # configuration. If the corresponding library for a host API implementation isn't found, the implementation is left out.
neededLibs = [] neededLibs = []
optionalImpls = {} optionalImpls = {}
if Platform in Posix: if Platform in Posix:
env.Append(CPPPATH=os.path.join("os", "unix")) env.Append(CPPPATH=os.path.join("os", "unix"))
neededLibs += [("pthread", "pthread.h", "pthread_create"), ("m", "math.h", "sin")] neededLibs += [("pthread", "pthread.h", "pthread_create"), ("m", "math.h", "sin")]
if env["useALSA"]: if env["useALSA"]:
optionalImpls["ALSA"] = ("asound", "alsa/asoundlib.h", "snd_pcm_open") optionalImpls["ALSA"] = ("asound", "alsa/asoundlib.h", "snd_pcm_open")
if env["useJACK"]: if env["useJACK"]:
optionalImpls["JACK"] = ("jack", "jack/jack.h", "jack_client_new") optionalImpls["JACK"] = ("jack", "jack/jack.h", "jack_client_new")
if env["useOSS"]: if env["useOSS"]:
# TODO: It looks like the prefix for soundcard.h depends on the platform # TODO: It looks like the prefix for soundcard.h depends on the platform
optionalImpls["OSS"] = ("oss", "sys/soundcard.h", None) optionalImpls["OSS"] = ("oss", "sys/soundcard.h", None)
if Platform == 'netbsd': if Platform == 'netbsd':
optionalImpls["OSS"] = ("ossaudio", "sys/soundcard.h", "_oss_ioctl") optionalImpls["OSS"] = ("ossaudio", "sys/soundcard.h", "_oss_ioctl")
if env["useASIHPI"]: if env["useASIHPI"]:
optionalImpls["ASIHPI"] = ("hpi", "asihpi/hpi.h", "HPI_SubSysCreate") optionalImpls["ASIHPI"] = ("hpi", "asihpi/hpi.h", "HPI_SubSysCreate")
if env["useCOREAUDIO"]: if env["useCOREAUDIO"]:
optionalImpls["COREAUDIO"] = ("CoreAudio", "CoreAudio/CoreAudio.h", None) optionalImpls["COREAUDIO"] = ("CoreAudio", "CoreAudio/CoreAudio.h", None)
else: else:
raise ConfigurationError("unknown platform %s" % Platform) raise ConfigurationError("unknown platform %s" % Platform)
if Platform == "darwin": if Platform == "darwin":
env.Append(LINKFLAGS="-framework CoreFoundation -framework CoreServices -framework CoreAudio -framework AudioToolBox -framework AudioUnit") env.Append(LINKFLAGS="-framework CoreFoundation -framework CoreServices -framework CoreAudio -framework AudioToolBox -framework AudioUnit")
elif Platform == "cygwin": elif Platform == "cygwin":
env.Append(LIBS=["winmm"]) env.Append(LIBS=["winmm"])
elif Platform == "irix": elif Platform == "irix":
neededLibs += [("audio", "dmedia/audio.h", "alOpenPort"), ("dmedia", "dmedia/dmedia.h", "dmGetUST")] neededLibs += [("audio", "dmedia/audio.h", "alOpenPort"), ("dmedia", "dmedia/dmedia.h", "dmGetUST")]
env.Append(CPPDEFINES=["PA_USE_SGI"]) env.Append(CPPDEFINES=["PA_USE_SGI"])
def CheckCTypeSize(context, tp): def CheckCTypeSize(context, tp):
""" Check size of C type. """ Check size of C type.
@param context: A configuration context. @param context: A configuration context.
@param tp: The type to check. @param tp: The type to check.
@return: Size of type, in bytes. @return: Size of type, in bytes.
""" """
context.Message("Checking the size of C type %s..." % tp) context.Message("Checking the size of C type %s..." % tp)
ret = context.TryRun(""" ret = context.TryRun("""
#include <stdio.h> #include <stdio.h>
int main() { int main() {
printf("%%d", sizeof(%s)); printf("%%d", sizeof(%s));
return 0; return 0;
} }
""" % tp, ".c") """ % tp, ".c")
if not ret[0]: if not ret[0]:
context.Result(" Couldn't obtain size of type %s!" % tp) context.Result(" Couldn't obtain size of type %s!" % tp)
return None return None
assert ret[1] assert ret[1]
sz = int(ret[1]) sz = int(ret[1])
context.Result("%d" % sz) context.Result("%d" % sz)
return sz return sz
""" """
if sys.byteorder == "little": if sys.byteorder == "little":
env.Append(CPPDEFINES=["PA_LITTLE_ENDIAN"]) env.Append(CPPDEFINES=["PA_LITTLE_ENDIAN"])
elif sys.byteorder == "big": elif sys.byteorder == "big":
env.Append(CPPDEFINES=["PA_BIG_ENDIAN"]) env.Append(CPPDEFINES=["PA_BIG_ENDIAN"])
else: else:
raise ConfigurationError("unknown byte order: %s" % sys.byteorder) raise ConfigurationError("unknown byte order: %s" % sys.byteorder)
""" """
if env["enableDebugOutput"]: if env["enableDebugOutput"]:
env.Append(CPPDEFINES=["PA_ENABLE_DEBUG_OUTPUT"]) env.Append(CPPDEFINES=["PA_ENABLE_DEBUG_OUTPUT"])
# Start configuration # Start configuration
# Use an absolute path for conf_dir, otherwise it gets created both relative to current directory and build directory # 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 = env.Configure(log_file=os.path.join(sconsDir, "sconf.log"), custom_tests={"CheckCTypeSize": CheckCTypeSize},
conf_dir=os.path.join(sconsDir, ".sconf_temp")) conf_dir=os.path.join(sconsDir, ".sconf_temp"))
conf.env.Append(CPPDEFINES=["SIZEOF_SHORT=%d" % conf.CheckCTypeSize("short")]) 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_INT=%d" % conf.CheckCTypeSize("int")])
conf.env.Append(CPPDEFINES=["SIZEOF_LONG=%d" % conf.CheckCTypeSize("long")]) conf.env.Append(CPPDEFINES=["SIZEOF_LONG=%d" % conf.CheckCTypeSize("long")])
if checkSymbol(conf, "time.h", "rt", "clock_gettime"): if checkSymbol(conf, "time.h", "rt", "clock_gettime"):
conf.env.Append(CPPDEFINES=["HAVE_CLOCK_GETTIME"]) conf.env.Append(CPPDEFINES=["HAVE_CLOCK_GETTIME"])
if checkSymbol(conf, "time.h", symbol="nanosleep"): if checkSymbol(conf, "time.h", symbol="nanosleep"):
conf.env.Append(CPPDEFINES=["HAVE_NANOSLEEP"]) conf.env.Append(CPPDEFINES=["HAVE_NANOSLEEP"])
if conf.CheckCHeader("sys/soundcard.h"): if conf.CheckCHeader("sys/soundcard.h"):
conf.env.Append(CPPDEFINES=["HAVE_SYS_SOUNDCARD_H"]) conf.env.Append(CPPDEFINES=["HAVE_SYS_SOUNDCARD_H"])
if conf.CheckCHeader("linux/soundcard.h"): if conf.CheckCHeader("linux/soundcard.h"):
conf.env.Append(CPPDEFINES=["HAVE_LINUX_SOUNDCARD_H"]) conf.env.Append(CPPDEFINES=["HAVE_LINUX_SOUNDCARD_H"])
if conf.CheckCHeader("machine/soundcard.h"): if conf.CheckCHeader("machine/soundcard.h"):
conf.env.Append(CPPDEFINES=["HAVE_MACHINE_SOUNDCARD_H"]) conf.env.Append(CPPDEFINES=["HAVE_MACHINE_SOUNDCARD_H"])
# Look for needed libraries and link with them # Look for needed libraries and link with them
for lib, hdr, sym in neededLibs: for lib, hdr, sym in neededLibs:
checkSymbol(conf, hdr, lib, sym, critical=True) checkSymbol(conf, hdr, lib, sym, critical=True)
# Look for host API libraries, if a library isn't found disable corresponding host API implementation. # Look for host API libraries, if a library isn't found disable corresponding host API implementation.
for name, val in optionalImpls.items(): for name, val in optionalImpls.items():
lib, hdr, sym = val lib, hdr, sym = val
if checkSymbol(conf, hdr, lib, sym, critical=False, pkgName=name.lower()): if checkSymbol(conf, hdr, lib, sym, critical=False, pkgName=name.lower()):
conf.env.Append(CPPDEFINES=["PA_USE_%s=1" % name.upper()]) conf.env.Append(CPPDEFINES=["PA_USE_%s=1" % name.upper()])
else: else:
del optionalImpls[name] del optionalImpls[name]
# Configuration finished # Configuration finished
env = conf.Finish() env = conf.Finish()
# PA infrastructure # 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 \ 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()] 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")) CommonSources.append(os.path.join("hostapi", "skeleton", "pa_hostapi_skeleton.c"))
# Host APIs implementations # Host APIs implementations
ImplSources = [] ImplSources = []
if Platform in Posix: if Platform in Posix:
ImplSources += [os.path.join("os", "unix", f) for f in "pa_unix_hostapis.c pa_unix_util.c".split()] ImplSources += [os.path.join("os", "unix", f) for f in "pa_unix_hostapis.c pa_unix_util.c".split()]
if "ALSA" in optionalImpls: if "ALSA" in optionalImpls:
ImplSources.append(os.path.join("hostapi", "alsa", "pa_linux_alsa.c")) ImplSources.append(os.path.join("hostapi", "alsa", "pa_linux_alsa.c"))
if "JACK" in optionalImpls: if "JACK" in optionalImpls:
ImplSources.append(os.path.join("hostapi", "jack", "pa_jack.c")) ImplSources.append(os.path.join("hostapi", "jack", "pa_jack.c"))
if "OSS" in optionalImpls: if "OSS" in optionalImpls:
ImplSources.append(os.path.join("hostapi", "oss", "pa_unix_oss.c")) ImplSources.append(os.path.join("hostapi", "oss", "pa_unix_oss.c"))
if "ASIHPI" in optionalImpls: if "ASIHPI" in optionalImpls:
ImplSources.append(os.path.join("hostapi", "asihpi", "pa_linux_asihpi.c")) ImplSources.append(os.path.join("hostapi", "asihpi", "pa_linux_asihpi.c"))
if "COREAUDIO" in optionalImpls: if "COREAUDIO" in optionalImpls:
ImplSources.append([os.path.join("hostapi", "coreaudio", f) for f in """ 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 pa_mac_core.c pa_mac_core_blocking.c pa_mac_core_utilities.c
""".split()]) """.split()])
sources = CommonSources + ImplSources sources = CommonSources + ImplSources
sharedLibEnv = env.Copy() sharedLibEnv = env.Copy()
if Platform in Posix: 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 # Add soname to library, this is so a reference is made to the versioned library in programs linking against libportaudio.so
if Platform != 'darwin': if Platform != 'darwin':
sharedLibEnv.AppendUnique(SHLINKFLAGS="-Wl,-soname=libportaudio.so.%d" % int(ApiVer.split(".")[0])) sharedLibEnv.AppendUnique(SHLINKFLAGS="-Wl,-soname=libportaudio.so.%d" % int(ApiVer.split(".")[0]))
sharedLib = sharedLibEnv.SharedLibrary(target="portaudio", source=sources) sharedLib = sharedLibEnv.SharedLibrary(target="portaudio", source=sources)
staticLib = env.StaticLibrary(target="portaudio", source=sources) staticLib = env.StaticLibrary(target="portaudio", source=sources)
if Platform in Posix: if Platform in Posix:
prefix = env["prefix"] prefix = env["prefix"]
includeDir = os.path.join(prefix, "include") includeDir = os.path.join(prefix, "include")
libDir = os.path.join(prefix, "lib") libDir = os.path.join(prefix, "lib")
testNames = ["patest_sine", "paqa_devs", "paqa_errs", "patest1", "patest_buffer", "patest_callbackstop", "patest_clip", \ 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_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_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_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_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_underflow", "patest_wire", "patest_write_sine", "pa_devs", "pa_fuzz", "pa_minlat", \
"patest_sine_channelmaps",] "patest_sine_channelmaps",]
# The test directory ("bin") should be in the top-level PA directory # 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"), tests = [env.Program(target=os.path.join("#", "bin", name), source=[os.path.join("#", "test", name + ".c"),
staticLib]) for name in testNames] staticLib]) for name in testNames]
# Detect host APIs # Detect host APIs
hostApis = [] hostApis = []
for cppdef in env["CPPDEFINES"]: for cppdef in env["CPPDEFINES"]:
if cppdef.startswith("PA_USE_"): if cppdef.startswith("PA_USE_"):
hostApis.append(cppdef[7:-2]) hostApis.append(cppdef[7:-2])
Return("sources", "sharedLib", "staticLib", "tests", "env", "hostApis") Return("sources", "sharedLib", "staticLib", "tests", "env", "hostApis")

View File

@ -1,147 +1,147 @@
ASIO-README.txt ASIO-README.txt
This document contains information to help you compile PortAudio with This document contains information to help you compile PortAudio with
ASIO support. If you find any omissions or errors in this document ASIO support. If you find any omissions or errors in this document
please notify us on the PortAudio mailing list. please notify us on the PortAudio mailing list.
NOTE: The Macintosh sections of this document are provided for historical NOTE: The Macintosh sections of this document are provided for historical
reference. They refer to pre-OS X Macintosh. PortAudio no longer 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. supports pre-OS X Macintosh. Steinberg does not support ASIO on Mac OS X.
Building PortAudio with ASIO support Building PortAudio with ASIO support
------------------------------------ ------------------------------------
To build PortAudio with ASIO support you need to compile and link with 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 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 PortAudio files from src/common/ and platform specific files from
src/os/win/ (for Win32). src/os/win/ (for Win32).
If you are compiling with a non-Microsoft compiler on Windows, also If you are compiling with a non-Microsoft compiler on Windows, also
compile and link with iasiothiscallresolver.cpp (see below for compile and link with iasiothiscallresolver.cpp (see below for
an explanation). an explanation).
For some platforms (MingW, Cygwin/MingW), you may simply For some platforms (MingW, Cygwin/MingW), you may simply
be able to type: be able to type:
./configure --with-host_os=mingw --with-winapi=asio [--with-asiodir=/usr/local/asiosdk2] ./configure --with-host_os=mingw --with-winapi=asio [--with-asiodir=/usr/local/asiosdk2]
make make
and life will be good. Make sure you update the above with the correct local and life will be good. Make sure you update the above with the correct local
path to the ASIO SDK. path to the ASIO SDK.
For Microsoft Visual C++ there is an build tutorial here: For Microsoft Visual C++ there is an build tutorial here:
http://www.portaudio.com/trac/wiki/TutorialDir/Compile/WindowsASIOMSVC http://www.portaudio.com/trac/wiki/TutorialDir/Compile/WindowsASIOMSVC
Obtaining the ASIO SDK Obtaining the ASIO SDK
---------------------- ----------------------
In order to build PortAudio with ASIO support, you need to download 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 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 SDK available to anyone free of charge, however they do not permit its
source code to be distributed. source code to be distributed.
NOTE: In some cases the ASIO SDK may require patching, see below NOTE: In some cases the ASIO SDK may require patching, see below
for further details. for further details.
http://www.steinberg.net/en/company/developer.html http://www.steinberg.net/en/company/developer.html
If the above link is broken search Google for: If the above link is broken search Google for:
"download steinberg ASIO SDK" "download steinberg ASIO SDK"
Building the ASIO SDK on Windows Building the ASIO SDK on Windows
-------------------------------- --------------------------------
To build the ASIO SDK on Windows you need to compile and link with the To build the ASIO SDK on Windows you need to compile and link with the
following files from the ASIO SDK: following files from the ASIO SDK:
asio_sdk\common\asio.cpp asio_sdk\common\asio.cpp
asio_sdk\host\asiodrivers.cpp asio_sdk\host\asiodrivers.cpp
asio_sdk\host\pc\asiolist.cpp asio_sdk\host\pc\asiolist.cpp
You may also need to adjust your include paths to support inclusion of You may also need to adjust your include paths to support inclusion of
header files from the above directories. header files from the above directories.
The ASIO SDK depends on the following COM API functions: The ASIO SDK depends on the following COM API functions:
CoInitialize, CoUninitialize, CoCreateInstance, CLSIDFromString CoInitialize, CoUninitialize, CoCreateInstance, CLSIDFromString
For compilation with MinGW you will need to link with -lole32, for For compilation with MinGW you will need to link with -lole32, for
Borland compilers link with Import32.lib. Borland compilers link with Import32.lib.
Non-Microsoft (MSVC) Compilers on Windows including Borland and GCC Non-Microsoft (MSVC) Compilers on Windows including Borland and GCC
------------------------------------------------------------------- -------------------------------------------------------------------
Steinberg did not specify a calling convention in the IASIO interface Steinberg did not specify a calling convention in the IASIO interface
definition. This causes the Microsoft compiler to use the proprietary definition. This causes the Microsoft compiler to use the proprietary
thiscall convention which is not compatible with other compilers, such thiscall convention which is not compatible with other compilers, such
as compilers from Borland (BCC and C++Builder) and GNU (gcc). as compilers from Borland (BCC and C++Builder) and GNU (gcc).
Steinberg's ASIO SDK will compile but crash on initialization if Steinberg's ASIO SDK will compile but crash on initialization if
compiled with a non-Microsoft compiler on Windows. compiled with a non-Microsoft compiler on Windows.
PortAudio solves this problem using the iasiothiscallresolver library PortAudio solves this problem using the iasiothiscallresolver library
which is included in the distribution. When building ASIO support for which is included in the distribution. When building ASIO support for
non-Microsoft compilers, be sure to compile and link with non-Microsoft compilers, be sure to compile and link with
iasiothiscallresolver.cpp. Note that iasiothiscallresolver includes iasiothiscallresolver.cpp. Note that iasiothiscallresolver includes
conditional directives which cause it to have no effect if it is conditional directives which cause it to have no effect if it is
compiled with a Microsoft compiler, or on the Macintosh. compiled with a Microsoft compiler, or on the Macintosh.
If you use configure and make (see above), this should be handled If you use configure and make (see above), this should be handled
automatically for you. automatically for you.
For further information about the IASIO thiscall problem see this page: For further information about the IASIO thiscall problem see this page:
http://www.rossbencina.com/code/iasio-thiscall-resolver http://www.rossbencina.com/code/iasio-thiscall-resolver
Building the ASIO SDK on (Pre-OS X) Macintosh Building the ASIO SDK on (Pre-OS X) Macintosh
--------------------------------------------- ---------------------------------------------
To build the ASIO SDK on Macintosh you need to compile and link with the To build the ASIO SDK on Macintosh you need to compile and link with the
following files from the ASIO SDK: following files from the ASIO SDK:
host/asiodrivers.cpp host/asiodrivers.cpp
host/mac/asioshlib.cpp host/mac/asioshlib.cpp
host/mac/codefragements.cpp host/mac/codefragements.cpp
You may also need to adjust your include paths to support inclusion of You may also need to adjust your include paths to support inclusion of
header files from the above directories. header files from the above directories.
(Pre-OS X) Macintosh ASIO SDK Bug Patch (Pre-OS X) Macintosh ASIO SDK Bug Patch
--------------------------------------- ---------------------------------------
There is a bug in the ASIO SDK that causes the Macintosh version to 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. often fail during initialization. Below is a patch that you can apply.
In codefragments.cpp replace getFrontProcessDirectory function with In codefragments.cpp replace getFrontProcessDirectory function with
the following one (GetFrontProcess replaced by GetCurrentProcess). the following one (GetFrontProcess replaced by GetCurrentProcess).
bool CodeFragments::getFrontProcessDirectory(void *specs) bool CodeFragments::getFrontProcessDirectory(void *specs)
{ {
FSSpec *fss = (FSSpec *)specs; FSSpec *fss = (FSSpec *)specs;
ProcessInfoRec pif; ProcessInfoRec pif;
ProcessSerialNumber psn; ProcessSerialNumber psn;
memset(&psn,0,(long)sizeof(ProcessSerialNumber)); memset(&psn,0,(long)sizeof(ProcessSerialNumber));
// if(GetFrontProcess(&psn) == noErr) // wrong !!! // if(GetFrontProcess(&psn) == noErr) // wrong !!!
if(GetCurrentProcess(&psn) == noErr) // correct !!! if(GetCurrentProcess(&psn) == noErr) // correct !!!
{ {
pif.processName = 0; pif.processName = 0;
pif.processAppSpec = fss; pif.processAppSpec = fss;
pif.processInfoLength = sizeof(ProcessInfoRec); pif.processInfoLength = sizeof(ProcessInfoRec);
if(GetProcessInformation(&psn, &pif) == noErr) if(GetProcessInformation(&psn, &pif) == noErr)
return true; return true;
} }
return false; return false;
} }
### ###

View File

@ -1,196 +1,196 @@
Notes on status of CoreAudio Implementation of PortAudio Notes on status of CoreAudio Implementation of PortAudio
Document Last Updated December 9, 2005 Document Last Updated December 9, 2005
There are currently two implementations of PortAudio for Mac Core Audio. 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 The original is in pa_mac_core_old.c, and the newer, default implementation
is in pa_mac_core.c. is in pa_mac_core.c.
Only pa_mac_core.c is currently developed and supported as it uses apple's 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 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 with pa_mac_core_old.c (eg. "cp pa_mac_core_auhal.c
pa_mac_core.c"), then run configure and make as usual. pa_mac_core.c"), then run configure and make as usual.
------------------------------------------- -------------------------------------------
Notes on Newer/Default AUHAL implementation: Notes on Newer/Default AUHAL implementation:
by Bjorn Roche by Bjorn Roche
Last Updated December 9, 2005 Last Updated December 9, 2005
Principle of Operation: Principle of Operation:
This implementation uses AUHAL for audio I/O. To some extent, it also 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 operates at the "HAL" Layer, though this behavior can be limited by
platform specific flags (see pa_mac_core.h for details). The default 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 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. don't cause interruptions if other devices are using the device.
Major Software Elements Used: Apple's HAL AUs provide output SR Major Software Elements Used: Apple's HAL AUs provide output SR
conversion transparently, however, only on output, so this conversion transparently, however, only on output, so this
implementation uses AudioConverters to convert the sample rate on input. implementation uses AudioConverters to convert the sample rate on input.
A PortAudio ring buffer is used to buffer input when sample rate A PortAudio ring buffer is used to buffer input when sample rate
conversion is required or when separate audio units are used for duplex conversion is required or when separate audio units are used for duplex
IO. Finally, a PortAudio buffer processor is used to convert formats and IO. Finally, a PortAudio buffer processor is used to convert formats and
provide additional buffers if needed. Internally, interleaved floating provide additional buffers if needed. Internally, interleaved floating
point data streams are used exclusively - the audio unit converts from point data streams are used exclusively - the audio unit converts from
the audio hardware's native format to interleaved float PCM and the audio hardware's native format to interleaved float PCM and
PortAudio's Buffer processor is used for conversion to user formats. PortAudio's Buffer processor is used for conversion to user formats.
Simplex Input: Simplex input uses a single callback. If sample rate Simplex Input: Simplex input uses a single callback. If sample rate
conversion is required, a ring buffer and AudioConverter are used as conversion is required, a ring buffer and AudioConverter are used as
well. well.
Simplex output: Simplex output uses a single callback. No ring buffer or Simplex output: Simplex output uses a single callback. No ring buffer or
audio converter is used because AUHAL does its own output SR conversion. 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 Duplex, one device (no SR conversion): When one device is used, a single
callback is used. This achieves very low latency. callback is used. This achieves very low latency.
Duplex, separate devices or SR conversion: When SR conversion is Duplex, separate devices or SR conversion: When SR conversion is
required, data must be buffered before it is converted and data is not 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 always available at the same times on input and output, so SR conversion
requires the same treatment as separate devices. The input callback requires the same treatment as separate devices. The input callback
reads data and puts it in the ring buffer. The output callback reads the 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 data off the ring buffer, into an audio converter and finally to the
buffer processor. buffer processor.
Platform Specific Options: Platform Specific Options:
By using the flags in pa_mac_core.h, the user may specify several 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 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 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 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 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 change the device for optimal playback ("Pro" mode), which may interrupt
other programs playing back audio, or simple use a sample-rate coversion, other programs playing back audio, or simple use a sample-rate coversion,
which allows for friendlier sharing of the device ("Play Nice" mode). which allows for friendlier sharing of the device ("Play Nice" mode).
Additionally, the user may define a "channel mapping" by calling Additionally, the user may define a "channel mapping" by calling
paSetupMacCoreChannelMap() on their stream info structure before opening paSetupMacCoreChannelMap() on their stream info structure before opening
the stream with it. See below for creating a channel map. the stream with it. See below for creating a channel map.
Known issues: Known issues:
- Buffering: No buffering beyond that provided by core audio is provided - Buffering: No buffering beyond that provided by core audio is provided
except where absolutely needed for the implementation to work. This may cause except where absolutely needed for the implementation to work. This may cause
issues with large framesPerBuffer settings and it also means that no additional 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 will be provided even if a large latency setting is selected.
- Latency: Latency settings are generally ignored. They may be used as a - Latency: Latency settings are generally ignored. They may be used as a
hint for buffer size in paHostFramesPerBufferUnspecified, or the value may hint for buffer size in paHostFramesPerBufferUnspecified, or the value may
be used in cases where additional buffering is needed, such as doing input and be used in cases where additional buffering is needed, such as doing input and
output on seperate devices. Latency settings are always automatically bound output on seperate devices. Latency settings are always automatically bound
to "safe" values, however, so setting extreme values here should not be to "safe" values, however, so setting extreme values here should not be
an issue. an issue.
- Buffer Size: paHostFramesPerBufferUnspecified and specific host buffer sizes - Buffer Size: paHostFramesPerBufferUnspecified and specific host buffer sizes
are supported. paHostFramesPerBufferUnspecified works best in "pro" mode, are supported. paHostFramesPerBufferUnspecified works best in "pro" mode,
where the buffer size and sample rate of the audio device is most likely 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 to match the expected values. In the case of paHostFramesPerBuffer, an
appropriate framesPerBuffer value will be used that guarantees minimum appropriate framesPerBuffer value will be used that guarantees minimum
requested latency if that's possible. requested latency if that's possible.
- Timing info. It reports on stream time, but I'm probably doing something - Timing info. It reports on stream time, but I'm probably doing something
wrong since patest_sine_time often reports negative latency numbers. Also, wrong since patest_sine_time often reports negative latency numbers. Also,
there are currently issues with some devices whehn plugging/unplugging there are currently issues with some devices whehn plugging/unplugging
devices. devices.
- xrun detection: The only xrun detection performed is when reading - xrun detection: The only xrun detection performed is when reading
and writing the ring buffer. There is probably more that can be done. and writing the ring buffer. There is probably more that can be done.
- abort/stop issues: stopping a stream is always a complete operation, - 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 but latency should be low enough to make the lack of a separate abort
unnecessary. Apple clarifies its AudioOutputUnitStop() call here: unnecessary. Apple clarifies its AudioOutputUnitStop() call here:
http://lists.apple.com/archives/coreaudio-api/2005/Dec/msg00055.html http://lists.apple.com/archives/coreaudio-api/2005/Dec/msg00055.html
- blocking interface: should work fine. - blocking interface: should work fine.
- multichannel: It has been tested successfully on multichannel hardware - multichannel: It has been tested successfully on multichannel hardware
from MOTU: traveler and 896HD. Also Presonus firepod and others. It is from MOTU: traveler and 896HD. Also Presonus firepod and others. It is
believed to work with all Core Audio devices, including virtual devices believed to work with all Core Audio devices, including virtual devices
such as soundflower. such as soundflower.
- sample rate conversion quality: By default, SR conversion is the maximum - 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 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 render quyality property is used to set the sample rate conversion quality
as "documented" here: as "documented" here:
http://lists.apple.com/archives/coreaudio-api/2004/Jan/msg00141.html http://lists.apple.com/archives/coreaudio-api/2004/Jan/msg00141.html
- x86/Universal Binary: Universal binaries can be build. - x86/Universal Binary: Universal binaries can be build.
Creating a channel map: Creating a channel map:
How to create the map array - Text taken From AUHAL.rtfd : How to create the map array - Text taken From AUHAL.rtfd :
[3] Channel Maps [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: 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: 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) 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.) 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: Next, for each channel of your app's output, set:
channelMapArray[deviceOutputChannel] = desiredAppOutputChannel. 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 } 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: Where the formats are:
Input Element == 0: 2 channels (- client format - settable) Input Element == 0: 2 channels (- client format - settable)
Output Element == 0: 6 channels (- device format - NOT 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!) 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: 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. 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: Next, for each channel of input you require, set:
channelMapArray[desiredAppInputChannel] = deviceOutputChannel; 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 } 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: Where the formats are:
Input Element == 0: 2 channels (- device format - NOT settable) Input Element == 0: 2 channels (- device format - NOT settable)
Output Element == 0: 6 channels (- client format - settable) Output Element == 0: 6 channels (- client format - settable)
---------------------------------------- ----------------------------------------
Notes on Original implementation: Notes on Original implementation:
by Phil Burk and Darren Gibbs by Phil Burk and Darren Gibbs
Last updated March 20, 2002 Last updated March 20, 2002
WHAT WORKS WHAT WORKS
Output with very low latency, <10 msec. Output with very low latency, <10 msec.
Half duplex input or output. Half duplex input or output.
Full duplex on the same CoreAudio device. Full duplex on the same CoreAudio device.
The paFLoat32, paInt16, paInt8, paUInt8 sample formats. The paFLoat32, paInt16, paInt8, paUInt8 sample formats.
Pa_GetCPULoad() Pa_GetCPULoad()
Pa_StreamTime() Pa_StreamTime()
KNOWN BUGS OR LIMITATIONS KNOWN BUGS OR LIMITATIONS
We do not yet support simultaneous input and output on different We do not yet support simultaneous input and output on different
devices. Note that some CoreAudio devices like the Roland UH30 look devices. Note that some CoreAudio devices like the Roland UH30 look
like one device but are actually two different CoreAudio devices. The like one device but are actually two different CoreAudio devices. The
Built-In audio is typically one CoreAudio device. Built-In audio is typically one CoreAudio device.
Mono doesn't work. Mono doesn't work.
DEVICE MAPPING DEVICE MAPPING
CoreAudio devices can support both input and output. But the sample CoreAudio devices can support both input and output. But the sample
rates supported may be different. So we have map one or two PortAudio rates supported may be different. So we have map one or two PortAudio
device to each CoreAudio device depending on whether it supports device to each CoreAudio device depending on whether it supports
input, output or both. input, output or both.
When we query devices, we first get a list of CoreAudio devices. Then 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 we scan the list and add a PortAudio device for each CoreAudio device
that supports input. Then we make a scan for output devices. that supports input. Then we make a scan for output devices.

File diff suppressed because it is too large Load Diff

View File

@ -1,25 +1,25 @@
************** **************
* WASAPI API * * WASAPI API *
************** **************
---------------------------------------- ----------------------------------------
Microsoft Visual Studio 2005SP1/2008/10 Microsoft Visual Studio 2005SP1/2008/10
---------------------------------------- ----------------------------------------
No specific actions are needed to compile WASAPI API under Visual Studio. 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 You are only required to install min. Windows Vista SDK (v6.0A) prior
compilation. compilation.
---------------------------------------- ----------------------------------------
MinGW (GCC 32-bit)/ MinGW64 (GCC 64-bit) MinGW (GCC 32-bit)/ MinGW64 (GCC 64-bit)
---------------------------------------- ----------------------------------------
To compile under MinGW you are required to include 'mingw-include' directory To compile under MinGW you are required to include 'mingw-include' directory
which contains necessary files with WASAPI API. These files are modified which contains necessary files with WASAPI API. These files are modified
in order to be compiled by MinGW compiler. These files are taken from 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 Windows Vista SDK (v6.0A). MinGW compilation is tested and proved to be
fully working under 32-bit and 64-bit modes. fully working under 32-bit and 64-bit modes.
MinGW (32-bit) tested: gcc version 4.4.0 (GCC) MinGW (32-bit) tested: gcc version 4.4.0 (GCC)
MinGW64 (64-bit) tested: gcc version 4.4.4 20100226 (prerelease) (GCC) MinGW64 (64-bit) tested: gcc version 4.4.4 20100226 (prerelease) (GCC)
PortAudio PortAudio
/Dmitry Kostjuchenko/ /Dmitry Kostjuchenko/
04.03.2010 04.03.2010

View File

@ -1,85 +1,85 @@
Notes about WDM-KS host API Notes about WDM-KS host API
--------------------------- ---------------------------
Status history Status history
-------------- --------------
16th January 2011: 16th January 2011:
Added support for WaveRT device API (Vista and later) for even lesser Added support for WaveRT device API (Vista and later) for even lesser
latency support. latency support.
10th November 2005: 10th November 2005:
Made following changes: Made following changes:
* OpenStream: Try all PaSampleFormats internally if the the chosen * OpenStream: Try all PaSampleFormats internally if the the chosen
format is not supported natively. This fixed several problems format is not supported natively. This fixed several problems
with soundcards that did not take kindly to using 24-bit 3-byte formats. with soundcards that did not take kindly to using 24-bit 3-byte formats.
* OpenStream: Make the minimum framesPerHostIBuffer (and framesPerHostOBuffer) * OpenStream: Make the minimum framesPerHostIBuffer (and framesPerHostOBuffer)
the default frameSize for the playback/recording pin. the default frameSize for the playback/recording pin.
* ProcessingThread: Added a switch to only call PaUtil_EndBufferProcessing * ProcessingThread: Added a switch to only call PaUtil_EndBufferProcessing
if the total input frames equals the total output frames if the total input frames equals the total output frames
5th September 2004: 5th September 2004:
This is the first public version of the code. It should be considered 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 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 system. So far it has only been tested in the author's development
environment, which means a Win2k/SP2 PIII laptop with integrated environment, which means a Win2k/SP2 PIII laptop with integrated
SoundMAX driver and USB Tascam US-428 compiled with both MinGW SoundMAX driver and USB Tascam US-428 compiled with both MinGW
(GCC 3.3) and MSVC++6 using the MS DirectX 9 SDK. (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 It has been most widely tested with the MinGW build, with most of the
test programs (particularly paqa_devs and paqa_errs) passing. test programs (particularly paqa_devs and paqa_errs) passing.
There are some notable failures: patest_out_underflow and both of the There are some notable failures: patest_out_underflow and both of the
blocking I/O tests (as blocking I/O is not implemented). 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 At this point the code needs to be tested with a much wider variety
of configurations and feedback provided from testers regarding of configurations and feedback provided from testers regarding
both working and failing cases. both working and failing cases.
What is the WDM-KS host API? What is the WDM-KS host API?
---------------------------- ----------------------------
PortAudio for Windows currently has 3 functional host implementations. PortAudio for Windows currently has 3 functional host implementations.
MME uses the oldest Windows audio API which does not offer good MME uses the oldest Windows audio API which does not offer good
play/record latency. play/record latency.
DirectX improves this, but still imposes a penalty DirectX improves this, but still imposes a penalty
of 10s of milliseconds due to the system mixing of streams from of 10s of milliseconds due to the system mixing of streams from
multiple applications. multiple applications.
ASIO offers very good latency, but requires special drivers which are ASIO offers very good latency, but requires special drivers which are
not always available for cheaper audio hardware. Also, when ASIO not always available for cheaper audio hardware. Also, when ASIO
drivers are available, they are not always so robust because they drivers are available, they are not always so robust because they
bypass all of the standardised Windows device driver architecture bypass all of the standardised Windows device driver architecture
and hit the hardware their own way. and hit the hardware their own way.
Alternatively there are a couple of free (but closed source) ASIO Alternatively there are a couple of free (but closed source) ASIO
implementations which connect to the lower level Windows implementations which connect to the lower level Windows
"Kernel Streaming" API, but again these require special installation "Kernel Streaming" API, but again these require special installation
by the user, and can be limited in functionality or difficult to use. by the user, and can be limited in functionality or difficult to use.
This is where the PortAudio "WDM-KS" host implementation comes in. This is where the PortAudio "WDM-KS" host implementation comes in.
It directly connects PortAudio to the same Kernel Streaming API which It directly connects PortAudio to the same Kernel Streaming API which
those ASIO bridges use. This avoids the mixing penatly of DirectX, 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 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 advantage of working with ANY Windows audio hardware which is available
through the normal MME/DirectX routes without the user requiring through the normal MME/DirectX routes without the user requiring
any additional device drivers to be installed, and allowing all any additional device drivers to be installed, and allowing all
device selection to be done through the normal PortAudio API. device selection to be done through the normal PortAudio API.
Note that in general you should only be using this host API if your 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), application has a real requirement for very low latency audio (<20ms),
either because you are generating sounds in real-time based upon either because you are generating sounds in real-time based upon
user input, or you a processing recorded audio in real time. 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 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 block that device from being used by the rest of system through
the higher level APIs, or conversely, if the system is using 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 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. 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. In PortAudio terms, this means having a stream Open on a WDMKS device.
Usage Usage
----- -----
To add the WDMKS backend to your program which is already using To add the WDMKS backend to your program which is already using
PortAudio, you must define PA_USE_WDMKS=1 in your build file, 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. and include the pa_win_wdmks\pa_win_wdmks.c into your build.
The file should compile in both C and C++. The file should compile in both C and C++.
You will need a DirectX SDK installed on your system for the You will need a DirectX SDK installed on your system for the
ks.h and ksmedia.h header files. ks.h and ksmedia.h header files.
You will need to link to the system "setupapi" library. You will need to link to the system "setupapi" library.
Note that if you use MinGW, you will get more warnings from 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 the DX header files when using GCC(C), and still a few warnings
with G++(CPP). with G++(CPP).

View File

@ -1,144 +1,144 @@
/* /*
* Microsoft COM initialization routines * Microsoft COM initialization routines
* Copyright (c) 1999-2011 Ross Bencina, Dmitry Kostjuchenko * Copyright (c) 1999-2011 Ross Bencina, Dmitry Kostjuchenko
* *
* Based on the Open Source API proposed by Ross Bencina * Based on the Open Source API proposed by Ross Bencina
* Copyright (c) 1999-2011 Ross Bencina, Phil Burk * Copyright (c) 1999-2011 Ross Bencina, Phil Burk
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files * a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction, * (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, * including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software, * publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so, * and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions: * subject to the following conditions:
* *
* The above copyright notice and this permission notice shall be * The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software. * included in all copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
/* /*
* The text above constitutes the entire PortAudio license; however, * The text above constitutes the entire PortAudio license; however,
* the PortAudio community also makes the following non-binding requests: * the PortAudio community also makes the following non-binding requests:
* *
* Any person wishing to distribute modifications to the Software is * Any person wishing to distribute modifications to the Software is
* requested to send the modifications to the original developer so that * requested to send the modifications to the original developer so that
* they can be incorporated into the canonical version. It is also * they can be incorporated into the canonical version. It is also
* requested that these non-binding requests be included along with the * requested that these non-binding requests be included along with the
* license above. * license above.
*/ */
/** @file /** @file
@ingroup win_src @ingroup win_src
@brief Microsoft COM initialization routines. @brief Microsoft COM initialization routines.
*/ */
#include <windows.h> #include <windows.h>
#include <objbase.h> #include <objbase.h>
#include "portaudio.h" #include "portaudio.h"
#include "pa_util.h" #include "pa_util.h"
#include "pa_debugprint.h" #include "pa_debugprint.h"
#include "pa_win_coinitialize.h" #include "pa_win_coinitialize.h"
#if (defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER >= 1200))) && !defined(_WIN32_WCE) /* MSC version 6 and above */ #if (defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER >= 1200))) && !defined(_WIN32_WCE) /* MSC version 6 and above */
#pragma comment( lib, "ole32.lib" ) #pragma comment( lib, "ole32.lib" )
#endif #endif
/* use some special bit patterns here to try to guard against uninitialized memory errors */ /* use some special bit patterns here to try to guard against uninitialized memory errors */
#define PAWINUTIL_COM_INITIALIZED (0xb38f) #define PAWINUTIL_COM_INITIALIZED (0xb38f)
#define PAWINUTIL_COM_NOT_INITIALIZED (0xf1cd) #define PAWINUTIL_COM_NOT_INITIALIZED (0xf1cd)
PaError PaWinUtil_CoInitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult ) PaError PaWinUtil_CoInitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult )
{ {
HRESULT hr; HRESULT hr;
comInitializationResult->state = PAWINUTIL_COM_NOT_INITIALIZED; comInitializationResult->state = PAWINUTIL_COM_NOT_INITIALIZED;
/* /*
If COM is already initialized CoInitialize will either return If COM is already initialized CoInitialize will either return
FALSE, or RPC_E_CHANGED_MODE if it was initialised in a different 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 threading mode. In either case we shouldn't consider it an error
but we need to be careful to not call CoUninitialize() if but we need to be careful to not call CoUninitialize() if
RPC_E_CHANGED_MODE was returned. RPC_E_CHANGED_MODE was returned.
*/ */
hr = CoInitialize(0); /* use legacy-safe equivalent to CoInitializeEx(NULL, COINIT_APARTMENTTHREADED) */ hr = CoInitialize(0); /* use legacy-safe equivalent to CoInitializeEx(NULL, COINIT_APARTMENTTHREADED) */
if( FAILED(hr) && hr != RPC_E_CHANGED_MODE ) if( FAILED(hr) && hr != RPC_E_CHANGED_MODE )
{ {
PA_DEBUG(("CoInitialize(0) failed. hr=%d\n", hr)); PA_DEBUG(("CoInitialize(0) failed. hr=%d\n", hr));
if( hr == E_OUTOFMEMORY ) if( hr == E_OUTOFMEMORY )
return paInsufficientMemory; return paInsufficientMemory;
{ {
char *lpMsgBuf; char *lpMsgBuf;
FormatMessage( FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, NULL,
hr, hr,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf, (LPTSTR) &lpMsgBuf,
0, 0,
NULL NULL
); );
PaUtil_SetLastHostErrorInfo( hostApiType, hr, lpMsgBuf ); PaUtil_SetLastHostErrorInfo( hostApiType, hr, lpMsgBuf );
LocalFree( lpMsgBuf ); LocalFree( lpMsgBuf );
} }
return paUnanticipatedHostError; return paUnanticipatedHostError;
} }
if( hr != RPC_E_CHANGED_MODE ) if( hr != RPC_E_CHANGED_MODE )
{ {
comInitializationResult->state = PAWINUTIL_COM_INITIALIZED; comInitializationResult->state = PAWINUTIL_COM_INITIALIZED;
/* /*
Memorize calling thread id and report warning on Uninitialize if Memorize calling thread id and report warning on Uninitialize if
calling thread is different as CoInitialize must match CoUninitialize calling thread is different as CoInitialize must match CoUninitialize
in the same thread. in the same thread.
*/ */
comInitializationResult->initializingThreadId = GetCurrentThreadId(); comInitializationResult->initializingThreadId = GetCurrentThreadId();
} }
return paNoError; return paNoError;
} }
void PaWinUtil_CoUninitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult ) void PaWinUtil_CoUninitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult )
{ {
if( comInitializationResult->state != PAWINUTIL_COM_NOT_INITIALIZED if( comInitializationResult->state != PAWINUTIL_COM_NOT_INITIALIZED
&& comInitializationResult->state != PAWINUTIL_COM_INITIALIZED ){ && comInitializationResult->state != PAWINUTIL_COM_INITIALIZED ){
PA_DEBUG(("ERROR: PaWinUtil_CoUninitialize called without calling PaWinUtil_CoInitialize\n")); PA_DEBUG(("ERROR: PaWinUtil_CoUninitialize called without calling PaWinUtil_CoInitialize\n"));
} }
if( comInitializationResult->state == PAWINUTIL_COM_INITIALIZED ) if( comInitializationResult->state == PAWINUTIL_COM_INITIALIZED )
{ {
DWORD currentThreadId = GetCurrentThreadId(); DWORD currentThreadId = GetCurrentThreadId();
if( comInitializationResult->initializingThreadId != currentThreadId ) if( comInitializationResult->initializingThreadId != currentThreadId )
{ {
PA_DEBUG(("ERROR: failed PaWinUtil_CoUninitialize calling thread[%d] does not match initializing thread[%d]\n", PA_DEBUG(("ERROR: failed PaWinUtil_CoUninitialize calling thread[%d] does not match initializing thread[%d]\n",
currentThreadId, comInitializationResult->initializingThreadId)); currentThreadId, comInitializationResult->initializingThreadId));
} }
else else
{ {
CoUninitialize(); CoUninitialize();
comInitializationResult->state = PAWINUTIL_COM_NOT_INITIALIZED; comInitializationResult->state = PAWINUTIL_COM_NOT_INITIALIZED;
} }
} }
} }

View File

@ -1,94 +1,94 @@
/* /*
* Microsoft COM initialization routines * Microsoft COM initialization routines
* Copyright (c) 1999-2011 Ross Bencina, Phil Burk * Copyright (c) 1999-2011 Ross Bencina, Phil Burk
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files * a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction, * (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, * including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software, * publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so, * and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions: * subject to the following conditions:
* *
* The above copyright notice and this permission notice shall be * The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software. * included in all copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
/* /*
* The text above constitutes the entire PortAudio license; however, * The text above constitutes the entire PortAudio license; however,
* the PortAudio community also makes the following non-binding requests: * the PortAudio community also makes the following non-binding requests:
* *
* Any person wishing to distribute modifications to the Software is * Any person wishing to distribute modifications to the Software is
* requested to send the modifications to the original developer so that * requested to send the modifications to the original developer so that
* they can be incorporated into the canonical version. It is also * they can be incorporated into the canonical version. It is also
* requested that these non-binding requests be included along with the * requested that these non-binding requests be included along with the
* license above. * license above.
*/ */
/** @file /** @file
@ingroup win_src @ingroup win_src
@brief Microsoft COM initialization routines. @brief Microsoft COM initialization routines.
*/ */
#ifndef PA_WIN_COINITIALIZE_H #ifndef PA_WIN_COINITIALIZE_H
#define PA_WIN_COINITIALIZE_H #define PA_WIN_COINITIALIZE_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
{ {
#endif /* __cplusplus */ #endif /* __cplusplus */
/** /**
@brief Data type used to hold the result of an attempt to initialize COM @brief Data type used to hold the result of an attempt to initialize COM
using PaWinUtil_CoInitialize. Must be retained between a call to using PaWinUtil_CoInitialize. Must be retained between a call to
PaWinUtil_CoInitialize and a matching call to PaWinUtil_CoUninitialize. PaWinUtil_CoInitialize and a matching call to PaWinUtil_CoUninitialize.
*/ */
typedef struct PaWinUtilComInitializationResult{ typedef struct PaWinUtilComInitializationResult{
int state; int state;
int initializingThreadId; int initializingThreadId;
} PaWinUtilComInitializationResult; } PaWinUtilComInitializationResult;
/** /**
@brief Initialize Microsoft COM subsystem on the current thread. @brief Initialize Microsoft COM subsystem on the current thread.
@param hostApiType the host API type id of the caller. Used for error reporting. @param hostApiType the host API type id of the caller. Used for error reporting.
@param comInitializationResult An output parameter. The value pointed to by @param comInitializationResult An output parameter. The value pointed to by
this parameter stores information required by PaWinUtil_CoUninitialize this parameter stores information required by PaWinUtil_CoUninitialize
to correctly uninitialize COM. The value should be retained and later to correctly uninitialize COM. The value should be retained and later
passed to PaWinUtil_CoUninitialize. passed to PaWinUtil_CoUninitialize.
If PaWinUtil_CoInitialize returns paNoError, the caller must later call If PaWinUtil_CoInitialize returns paNoError, the caller must later call
PaWinUtil_CoUninitialize once. PaWinUtil_CoUninitialize once.
*/ */
PaError PaWinUtil_CoInitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult ); PaError PaWinUtil_CoInitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult );
/** /**
@brief Uninitialize the Microsoft COM subsystem on the current thread using @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 the result of a previous call to PaWinUtil_CoInitialize. Must be called on the same
thread as PaWinUtil_CoInitialize. thread as PaWinUtil_CoInitialize.
@param hostApiType the host API type id of the caller. Used for error reporting. @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 @param comInitializationResult An input parameter. A pointer to a value previously
initialized by a call to PaWinUtil_CoInitialize. initialized by a call to PaWinUtil_CoInitialize.
*/ */
void PaWinUtil_CoUninitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult ); void PaWinUtil_CoUninitialize( PaHostApiTypeId hostApiType, PaWinUtilComInitializationResult *comInitializationResult );
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif /* __cplusplus */ #endif /* __cplusplus */
#endif /* PA_WIN_COINITIALIZE_H */ #endif /* PA_WIN_COINITIALIZE_H */

View File

@ -1,370 +1,370 @@
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// ///
/// Beats-per-minute (BPM) detection routine. /// Beats-per-minute (BPM) detection routine.
/// ///
/// The beat detection algorithm works as follows: /// The beat detection algorithm works as follows:
/// - Use function 'inputSamples' to input a chunks of samples to the class for /// - 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 /// 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. /// 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, /// - 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. /// 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 /// Simple averaging is used for anti-alias filtering because the resulting signal
/// quality isn't of that high importance. /// quality isn't of that high importance.
/// - Decimated sound data is enveloped, i.e. the amplitude shape is detected by /// - 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 /// 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 /// are below a couple of times the general RMS amplitude level are cut away to
/// leave only notable peaks there. /// leave only notable peaks there.
/// - Repeating sound patterns (e.g. beats) are detected by calculating short-term /// - Repeating sound patterns (e.g. beats) are detected by calculating short-term
/// autocorrelation function of the enveloped signal. /// autocorrelation function of the enveloped signal.
/// - After whole sound data file has been analyzed as above, the bpm level is /// - 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 /// 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. /// function, calculates it's precise location and converts this reading to bpm's.
/// ///
/// Author : Copyright (c) Olli Parviainen /// Author : Copyright (c) Olli Parviainen
/// Author e-mail : oparviai 'at' iki.fi /// Author e-mail : oparviai 'at' iki.fi
/// SoundTouch WWW: http://www.surina.net/soundtouch /// SoundTouch WWW: http://www.surina.net/soundtouch
/// ///
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// Last changed : $Date: 2012-08-30 16:45:25 -0300 (qui, 30 ago 2012) $ // Last changed : $Date: 2012-08-30 16:45:25 -0300 (qui, 30 ago 2012) $
// File revision : $Revision: 4 $ // File revision : $Revision: 4 $
// //
// $Id: BPMDetect.cpp 149 2012-08-30 19:45:25Z oparviai $ // $Id: BPMDetect.cpp 149 2012-08-30 19:45:25Z oparviai $
// //
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// License : // License :
// //
// SoundTouch audio processing library // SoundTouch audio processing library
// Copyright (c) Olli Parviainen // Copyright (c) Olli Parviainen
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public // modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either // License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version. // 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, // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details. // Lesser General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public // You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software // License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// //
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
#include <math.h> #include <math.h>
#include <assert.h> #include <assert.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include "FIFOSampleBuffer.h" #include "FIFOSampleBuffer.h"
#include "PeakFinder.h" #include "PeakFinder.h"
#include "BPMDetect.h" #include "BPMDetect.h"
using namespace soundtouch; using namespace soundtouch;
#define INPUT_BLOCK_SAMPLES 2048 #define INPUT_BLOCK_SAMPLES 2048
#define DECIMATED_BLOCK_SAMPLES 256 #define DECIMATED_BLOCK_SAMPLES 256
/// decay constant for calculating RMS volume sliding average approximation /// decay constant for calculating RMS volume sliding average approximation
/// (time constant is about 10 sec) /// (time constant is about 10 sec)
const float avgdecay = 0.99986f; const float avgdecay = 0.99986f;
/// Normalization coefficient for calculating RMS sliding average approximation. /// Normalization coefficient for calculating RMS sliding average approximation.
const float avgnorm = (1 - avgdecay); const float avgnorm = (1 - avgdecay);
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Enable following define to create bpm analysis file: // Enable following define to create bpm analysis file:
// #define _CREATE_BPM_DEBUG_FILE // #define _CREATE_BPM_DEBUG_FILE
#ifdef _CREATE_BPM_DEBUG_FILE #ifdef _CREATE_BPM_DEBUG_FILE
#define DEBUGFILE_NAME "c:\\temp\\soundtouch-bpm-debug.txt" #define DEBUGFILE_NAME "c:\\temp\\soundtouch-bpm-debug.txt"
static void _SaveDebugData(const float *data, int minpos, int maxpos, double coeff) static void _SaveDebugData(const float *data, int minpos, int maxpos, double coeff)
{ {
FILE *fptr = fopen(DEBUGFILE_NAME, "wt"); FILE *fptr = fopen(DEBUGFILE_NAME, "wt");
int i; int i;
if (fptr) if (fptr)
{ {
printf("\n\nWriting BPM debug data into file " DEBUGFILE_NAME "\n\n"); printf("\n\nWriting BPM debug data into file " DEBUGFILE_NAME "\n\n");
for (i = minpos; i < maxpos; i ++) for (i = minpos; i < maxpos; i ++)
{ {
fprintf(fptr, "%d\t%.1lf\t%f\n", i, coeff / (double)i, data[i]); fprintf(fptr, "%d\t%.1lf\t%f\n", i, coeff / (double)i, data[i]);
} }
fclose(fptr); fclose(fptr);
} }
} }
#else #else
#define _SaveDebugData(a,b,c,d) #define _SaveDebugData(a,b,c,d)
#endif #endif
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
BPMDetect::BPMDetect(int numChannels, int aSampleRate) BPMDetect::BPMDetect(int numChannels, int aSampleRate)
{ {
this->sampleRate = aSampleRate; this->sampleRate = aSampleRate;
this->channels = numChannels; this->channels = numChannels;
decimateSum = 0; decimateSum = 0;
decimateCount = 0; decimateCount = 0;
envelopeAccu = 0; envelopeAccu = 0;
// Initialize RMS volume accumulator to RMS level of 1500 (out of 32768) that's // 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 // safe initial RMS signal level value for song data. This value is then adapted
// to the actual level during processing. // to the actual level during processing.
#ifdef SOUNDTOUCH_INTEGER_SAMPLES #ifdef SOUNDTOUCH_INTEGER_SAMPLES
// integer samples // integer samples
RMSVolumeAccu = (1500 * 1500) / avgnorm; RMSVolumeAccu = (1500 * 1500) / avgnorm;
#else #else
// float samples, scaled to range [-1..+1[ // float samples, scaled to range [-1..+1[
RMSVolumeAccu = (0.045f * 0.045f) / avgnorm; RMSVolumeAccu = (0.045f * 0.045f) / avgnorm;
#endif #endif
// choose decimation factor so that result is approx. 1000 Hz // choose decimation factor so that result is approx. 1000 Hz
decimateBy = sampleRate / 1000; decimateBy = sampleRate / 1000;
assert(decimateBy > 0); assert(decimateBy > 0);
assert(INPUT_BLOCK_SAMPLES < decimateBy * DECIMATED_BLOCK_SAMPLES); assert(INPUT_BLOCK_SAMPLES < decimateBy * DECIMATED_BLOCK_SAMPLES);
// Calculate window length & starting item according to desired min & max bpms // Calculate window length & starting item according to desired min & max bpms
windowLen = (60 * sampleRate) / (decimateBy * MIN_BPM); windowLen = (60 * sampleRate) / (decimateBy * MIN_BPM);
windowStart = (60 * sampleRate) / (decimateBy * MAX_BPM); windowStart = (60 * sampleRate) / (decimateBy * MAX_BPM);
assert(windowLen > windowStart); assert(windowLen > windowStart);
// allocate new working objects // allocate new working objects
xcorr = new float[windowLen]; xcorr = new float[windowLen];
memset(xcorr, 0, windowLen * sizeof(float)); memset(xcorr, 0, windowLen * sizeof(float));
// allocate processing buffer // allocate processing buffer
buffer = new FIFOSampleBuffer(); buffer = new FIFOSampleBuffer();
// we do processing in mono mode // we do processing in mono mode
buffer->setChannels(1); buffer->setChannels(1);
buffer->clear(); buffer->clear();
} }
BPMDetect::~BPMDetect() BPMDetect::~BPMDetect()
{ {
delete[] xcorr; delete[] xcorr;
delete buffer; delete buffer;
} }
/// convert to mono, low-pass filter & decimate to about 500 Hz. /// convert to mono, low-pass filter & decimate to about 500 Hz.
/// return number of outputted samples. /// return number of outputted samples.
/// ///
/// Decimation is used to remove the unnecessary frequencies and thus to reduce /// Decimation is used to remove the unnecessary frequencies and thus to reduce
/// the amount of data needed to be processed as calculating autocorrelation /// the amount of data needed to be processed as calculating autocorrelation
/// function is a very-very heavy operation. /// function is a very-very heavy operation.
/// ///
/// Anti-alias filtering is done simply by averaging the samples. This is really a /// 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 /// 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 /// (it'd also be difficult to design a high-quality filter with steep cut-off at very
/// narrow band) /// narrow band)
int BPMDetect::decimate(SAMPLETYPE *dest, const SAMPLETYPE *src, int numsamples) int BPMDetect::decimate(SAMPLETYPE *dest, const SAMPLETYPE *src, int numsamples)
{ {
int count, outcount; int count, outcount;
LONG_SAMPLETYPE out; LONG_SAMPLETYPE out;
assert(channels > 0); assert(channels > 0);
assert(decimateBy > 0); assert(decimateBy > 0);
outcount = 0; outcount = 0;
for (count = 0; count < numsamples; count ++) for (count = 0; count < numsamples; count ++)
{ {
int j; int j;
// convert to mono and accumulate // convert to mono and accumulate
for (j = 0; j < channels; j ++) for (j = 0; j < channels; j ++)
{ {
decimateSum += src[j]; decimateSum += src[j];
} }
src += j; src += j;
decimateCount ++; decimateCount ++;
if (decimateCount >= decimateBy) if (decimateCount >= decimateBy)
{ {
// Store every Nth sample only // Store every Nth sample only
out = (LONG_SAMPLETYPE)(decimateSum / (decimateBy * channels)); out = (LONG_SAMPLETYPE)(decimateSum / (decimateBy * channels));
decimateSum = 0; decimateSum = 0;
decimateCount = 0; decimateCount = 0;
#ifdef SOUNDTOUCH_INTEGER_SAMPLES #ifdef SOUNDTOUCH_INTEGER_SAMPLES
// check ranges for sure (shouldn't actually be necessary) // check ranges for sure (shouldn't actually be necessary)
if (out > 32767) if (out > 32767)
{ {
out = 32767; out = 32767;
} }
else if (out < -32768) else if (out < -32768)
{ {
out = -32768; out = -32768;
} }
#endif // SOUNDTOUCH_INTEGER_SAMPLES #endif // SOUNDTOUCH_INTEGER_SAMPLES
dest[outcount] = (SAMPLETYPE)out; dest[outcount] = (SAMPLETYPE)out;
outcount ++; outcount ++;
} }
} }
return outcount; return outcount;
} }
// Calculates autocorrelation function of the sample history buffer // Calculates autocorrelation function of the sample history buffer
void BPMDetect::updateXCorr(int process_samples) void BPMDetect::updateXCorr(int process_samples)
{ {
int offs; int offs;
SAMPLETYPE *pBuffer; SAMPLETYPE *pBuffer;
assert(buffer->numSamples() >= (uint)(process_samples + windowLen)); assert(buffer->numSamples() >= (uint)(process_samples + windowLen));
pBuffer = buffer->ptrBegin(); pBuffer = buffer->ptrBegin();
for (offs = windowStart; offs < windowLen; offs ++) for (offs = windowStart; offs < windowLen; offs ++)
{ {
LONG_SAMPLETYPE sum; LONG_SAMPLETYPE sum;
int i; int i;
sum = 0; sum = 0;
for (i = 0; i < process_samples; i ++) for (i = 0; i < process_samples; i ++)
{ {
sum += pBuffer[i] * pBuffer[i + offs]; // scaling the sub-result shouldn't be necessary sum += pBuffer[i] * pBuffer[i + offs]; // scaling the sub-result shouldn't be necessary
} }
// xcorr[offs] *= xcorr_decay; // decay 'xcorr' here with suitable coefficients // xcorr[offs] *= xcorr_decay; // decay 'xcorr' here with suitable coefficients
// if it's desired that the system adapts automatically to // if it's desired that the system adapts automatically to
// various bpms, e.g. in processing continouos music stream. // various bpms, e.g. in processing continouos music stream.
// The 'xcorr_decay' should be a value that's smaller than but // The 'xcorr_decay' should be a value that's smaller than but
// close to one, and should also depend on 'process_samples' value. // close to one, and should also depend on 'process_samples' value.
xcorr[offs] += (float)sum; xcorr[offs] += (float)sum;
} }
} }
// Calculates envelope of the sample data // Calculates envelope of the sample data
void BPMDetect::calcEnvelope(SAMPLETYPE *samples, int numsamples) void BPMDetect::calcEnvelope(SAMPLETYPE *samples, int numsamples)
{ {
const static double decay = 0.7f; // decay constant for smoothing the envelope const static double decay = 0.7f; // decay constant for smoothing the envelope
const static double norm = (1 - decay); const static double norm = (1 - decay);
int i; int i;
LONG_SAMPLETYPE out; LONG_SAMPLETYPE out;
double val; double val;
for (i = 0; i < numsamples; i ++) for (i = 0; i < numsamples; i ++)
{ {
// calc average RMS volume // calc average RMS volume
RMSVolumeAccu *= avgdecay; RMSVolumeAccu *= avgdecay;
val = (float)fabs((float)samples[i]); val = (float)fabs((float)samples[i]);
RMSVolumeAccu += val * val; RMSVolumeAccu += val * val;
// cut amplitudes that are below cutoff ~2 times RMS volume // cut amplitudes that are below cutoff ~2 times RMS volume
// (we're interested in peak values, not the silent moments) // (we're interested in peak values, not the silent moments)
if (val < 0.5 * sqrt(RMSVolumeAccu * avgnorm)) if (val < 0.5 * sqrt(RMSVolumeAccu * avgnorm))
{ {
val = 0; val = 0;
} }
// smooth amplitude envelope // smooth amplitude envelope
envelopeAccu *= decay; envelopeAccu *= decay;
envelopeAccu += val; envelopeAccu += val;
out = (LONG_SAMPLETYPE)(envelopeAccu * norm); out = (LONG_SAMPLETYPE)(envelopeAccu * norm);
#ifdef SOUNDTOUCH_INTEGER_SAMPLES #ifdef SOUNDTOUCH_INTEGER_SAMPLES
// cut peaks (shouldn't be necessary though) // cut peaks (shouldn't be necessary though)
if (out > 32767) out = 32767; if (out > 32767) out = 32767;
#endif // SOUNDTOUCH_INTEGER_SAMPLES #endif // SOUNDTOUCH_INTEGER_SAMPLES
samples[i] = (SAMPLETYPE)out; samples[i] = (SAMPLETYPE)out;
} }
} }
void BPMDetect::inputSamples(const SAMPLETYPE *samples, int numSamples) void BPMDetect::inputSamples(const SAMPLETYPE *samples, int numSamples)
{ {
SAMPLETYPE decimated[DECIMATED_BLOCK_SAMPLES]; SAMPLETYPE decimated[DECIMATED_BLOCK_SAMPLES];
// iterate so that max INPUT_BLOCK_SAMPLES processed per iteration // iterate so that max INPUT_BLOCK_SAMPLES processed per iteration
while (numSamples > 0) while (numSamples > 0)
{ {
int block; int block;
int decSamples; int decSamples;
block = (numSamples > INPUT_BLOCK_SAMPLES) ? INPUT_BLOCK_SAMPLES : numSamples; block = (numSamples > INPUT_BLOCK_SAMPLES) ? INPUT_BLOCK_SAMPLES : numSamples;
// decimate. note that converts to mono at the same time // decimate. note that converts to mono at the same time
decSamples = decimate(decimated, samples, block); decSamples = decimate(decimated, samples, block);
samples += block * channels; samples += block * channels;
numSamples -= block; numSamples -= block;
// envelope new samples and add them to buffer // envelope new samples and add them to buffer
calcEnvelope(decimated, decSamples); calcEnvelope(decimated, decSamples);
buffer->putSamples(decimated, decSamples); buffer->putSamples(decimated, decSamples);
} }
// when the buffer has enought samples for processing... // when the buffer has enought samples for processing...
if ((int)buffer->numSamples() > windowLen) if ((int)buffer->numSamples() > windowLen)
{ {
int processLength; int processLength;
// how many samples are processed // how many samples are processed
processLength = (int)buffer->numSamples() - windowLen; processLength = (int)buffer->numSamples() - windowLen;
// ... calculate autocorrelations for oldest samples... // ... calculate autocorrelations for oldest samples...
updateXCorr(processLength); updateXCorr(processLength);
// ... and remove them from the buffer // ... and remove them from the buffer
buffer->receiveSamples(processLength); buffer->receiveSamples(processLength);
} }
} }
void BPMDetect::removeBias() void BPMDetect::removeBias()
{ {
int i; int i;
float minval = 1e12f; // arbitrary large number float minval = 1e12f; // arbitrary large number
for (i = windowStart; i < windowLen; i ++) for (i = windowStart; i < windowLen; i ++)
{ {
if (xcorr[i] < minval) if (xcorr[i] < minval)
{ {
minval = xcorr[i]; minval = xcorr[i];
} }
} }
for (i = windowStart; i < windowLen; i ++) for (i = windowStart; i < windowLen; i ++)
{ {
xcorr[i] -= minval; xcorr[i] -= minval;
} }
} }
float BPMDetect::getBpm() float BPMDetect::getBpm()
{ {
double peakPos; double peakPos;
double coeff; double coeff;
PeakFinder peakFinder; PeakFinder peakFinder;
coeff = 60.0 * ((double)sampleRate / (double)decimateBy); coeff = 60.0 * ((double)sampleRate / (double)decimateBy);
// save bpm debug analysis data if debug data enabled // save bpm debug analysis data if debug data enabled
_SaveDebugData(xcorr, windowStart, windowLen, coeff); _SaveDebugData(xcorr, windowStart, windowLen, coeff);
// remove bias from xcorr data // remove bias from xcorr data
removeBias(); removeBias();
// find peak position // find peak position
peakPos = peakFinder.detectPeak(xcorr, windowStart, windowLen); peakPos = peakFinder.detectPeak(xcorr, windowStart, windowLen);
assert(decimateBy != 0); assert(decimateBy != 0);
if (peakPos < 1e-9) return 0.0; // detection failed. if (peakPos < 1e-9) return 0.0; // detection failed.
// calculate BPM // calculate BPM
return (float) (coeff / peakPos); return (float) (coeff / peakPos);
} }

View File

@ -1,71 +1,71 @@
## Process this file with automake to create Makefile.in ## Process this file with automake to create Makefile.in
## ##
## $Id: Makefile.am 138 2012-04-01 20:00:09Z oparviai $ ## $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 ## 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 ## 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 ## 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 ## Foundation; either version 2 of the License, or (at your option) any later
## version. ## version.
## ##
## SoundTouch is distributed in the hope that it will be useful, but WITHOUT ANY ## 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 ## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
## A PARTICULAR PURPOSE. See the GNU General Public License for more details. ## 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 ## 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 ## this program; if not, write to the Free Software Foundation, Inc., 59 Temple
## Place - Suite 330, Boston, MA 02111-1307, USA ## Place - Suite 330, Boston, MA 02111-1307, USA
include $(top_srcdir)/config/am_include.mk include $(top_srcdir)/config/am_include.mk
# set to something if you want other stuff to be included in the distribution tarball # 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 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 noinst_HEADERS=AAFilter.h cpu_detect.h cpu_detect_x86.cpp FIRFilter.h RateTransposer.h TDStretch.h PeakFinder.h
lib_LTLIBRARIES=libSoundTouch.la 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 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 # Compiler flags
AM_CXXFLAGS=-O3 -fcheck-new -I../../include AM_CXXFLAGS=-O3 -fcheck-new -I../../include
# Compile the files that need MMX and SSE individually. # Compile the files that need MMX and SSE individually.
libSoundTouch_la_LIBADD=libSoundTouchMMX.la libSoundTouchSSE.la libSoundTouch_la_LIBADD=libSoundTouchMMX.la libSoundTouchSSE.la
noinst_LTLIBRARIES=libSoundTouchMMX.la libSoundTouchSSE.la noinst_LTLIBRARIES=libSoundTouchMMX.la libSoundTouchSSE.la
libSoundTouchMMX_la_SOURCES=mmx_optimized.cpp libSoundTouchMMX_la_SOURCES=mmx_optimized.cpp
libSoundTouchSSE_la_SOURCES=sse_optimized.cpp libSoundTouchSSE_la_SOURCES=sse_optimized.cpp
# We enable optimizations by default. # We enable optimizations by default.
# If MMX is supported compile with -mmmx. # If MMX is supported compile with -mmmx.
# Do not assume -msse is also supported. # Do not assume -msse is also supported.
if HAVE_MMX if HAVE_MMX
libSoundTouchMMX_la_CXXFLAGS = -mmmx $(AM_CXXFLAGS) libSoundTouchMMX_la_CXXFLAGS = -mmmx $(AM_CXXFLAGS)
else else
libSoundTouchMMX_la_CXXFLAGS = $(AM_CXXFLAGS) libSoundTouchMMX_la_CXXFLAGS = $(AM_CXXFLAGS)
endif endif
# We enable optimizations by default. # We enable optimizations by default.
# If SSE is supported compile with -msse. # If SSE is supported compile with -msse.
if HAVE_SSE if HAVE_SSE
libSoundTouchSSE_la_CXXFLAGS = -msse $(AM_CXXFLAGS) libSoundTouchSSE_la_CXXFLAGS = -msse $(AM_CXXFLAGS)
else else
libSoundTouchSSE_la_CXXFLAGS = $(AM_CXXFLAGS) libSoundTouchSSE_la_CXXFLAGS = $(AM_CXXFLAGS)
endif endif
# Let the user disable optimizations if he wishes to. # Let the user disable optimizations if he wishes to.
if !X86_OPTIMIZATIONS if !X86_OPTIMIZATIONS
libSoundTouchMMX_la_CXXFLAGS = $(AM_CXXFLAGS) libSoundTouchMMX_la_CXXFLAGS = $(AM_CXXFLAGS)
libSoundTouchSSE_la_CXXFLAGS = $(AM_CXXFLAGS) libSoundTouchSSE_la_CXXFLAGS = $(AM_CXXFLAGS)
endif endif
# other linking flags to add # other linking flags to add
# noinst_LTLIBRARIES = libSoundTouchOpt.la # noinst_LTLIBRARIES = libSoundTouchOpt.la
# libSoundTouch_la_LIBADD = libSoundTouchOpt.la # libSoundTouch_la_LIBADD = libSoundTouchOpt.la
# libSoundTouchOpt_la_SOURCES = mmx_optimized.cpp sse_optimized.cpp # libSoundTouchOpt_la_SOURCES = mmx_optimized.cpp sse_optimized.cpp
# libSoundTouchOpt_la_CXXFLAGS = -O3 -msse -fcheck-new -I../../include # libSoundTouchOpt_la_CXXFLAGS = -O3 -msse -fcheck-new -I../../include

View File

@ -1,276 +1,276 @@
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// ///
/// Peak detection routine. /// Peak detection routine.
/// ///
/// The routine detects highest value on an array of values and calculates the /// 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. /// precise peak location as a mass-center of the 'hump' around the peak value.
/// ///
/// Author : Copyright (c) Olli Parviainen /// Author : Copyright (c) Olli Parviainen
/// Author e-mail : oparviai 'at' iki.fi /// Author e-mail : oparviai 'at' iki.fi
/// SoundTouch WWW: http://www.surina.net/soundtouch /// SoundTouch WWW: http://www.surina.net/soundtouch
/// ///
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// Last changed : $Date: 2012-12-28 17:52:47 -0200 (sex, 28 dez 2012) $ // Last changed : $Date: 2012-12-28 17:52:47 -0200 (sex, 28 dez 2012) $
// File revision : $Revision: 4 $ // File revision : $Revision: 4 $
// //
// $Id: PeakFinder.cpp 164 2012-12-28 19:52:47Z oparviai $ // $Id: PeakFinder.cpp 164 2012-12-28 19:52:47Z oparviai $
// //
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// License : // License :
// //
// SoundTouch audio processing library // SoundTouch audio processing library
// Copyright (c) Olli Parviainen // Copyright (c) Olli Parviainen
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public // modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either // License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version. // 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, // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details. // Lesser General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public // You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software // License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// //
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
#include <math.h> #include <math.h>
#include <assert.h> #include <assert.h>
#include "PeakFinder.h" #include "PeakFinder.h"
using namespace soundtouch; using namespace soundtouch;
#define max(x, y) (((x) > (y)) ? (x) : (y)) #define max(x, y) (((x) > (y)) ? (x) : (y))
PeakFinder::PeakFinder() PeakFinder::PeakFinder()
{ {
minPos = maxPos = 0; minPos = maxPos = 0;
} }
// Finds real 'top' of a peak hump from neighnourhood of the given 'peakpos'. // Finds real 'top' of a peak hump from neighnourhood of the given 'peakpos'.
int PeakFinder::findTop(const float *data, int peakpos) const int PeakFinder::findTop(const float *data, int peakpos) const
{ {
int i; int i;
int start, end; int start, end;
float refvalue; float refvalue;
refvalue = data[peakpos]; refvalue = data[peakpos];
// seek within ±10 points // seek within ±10 points
start = peakpos - 10; start = peakpos - 10;
if (start < minPos) start = minPos; if (start < minPos) start = minPos;
end = peakpos + 10; end = peakpos + 10;
if (end > maxPos) end = maxPos; if (end > maxPos) end = maxPos;
for (i = start; i <= end; i ++) for (i = start; i <= end; i ++)
{ {
if (data[i] > refvalue) if (data[i] > refvalue)
{ {
peakpos = i; peakpos = i;
refvalue = data[i]; refvalue = data[i];
} }
} }
// failure if max value is at edges of seek range => it's not peak, it's at slope. // 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; if ((peakpos == start) || (peakpos == end)) return 0;
return peakpos; return peakpos;
} }
// Finds 'ground level' of a peak hump by starting from 'peakpos' and proceeding // 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 // to direction defined by 'direction' until next 'hump' after minimum value will
// begin // begin
int PeakFinder::findGround(const float *data, int peakpos, int direction) const int PeakFinder::findGround(const float *data, int peakpos, int direction) const
{ {
int lowpos; int lowpos;
int pos; int pos;
int climb_count; int climb_count;
float refvalue; float refvalue;
float delta; float delta;
climb_count = 0; climb_count = 0;
refvalue = data[peakpos]; refvalue = data[peakpos];
lowpos = peakpos; lowpos = peakpos;
pos = peakpos; pos = peakpos;
while ((pos > minPos+1) && (pos < maxPos-1)) while ((pos > minPos+1) && (pos < maxPos-1))
{ {
int prevpos; int prevpos;
prevpos = pos; prevpos = pos;
pos += direction; pos += direction;
// calculate derivate // calculate derivate
delta = data[pos] - data[prevpos]; delta = data[pos] - data[prevpos];
if (delta <= 0) if (delta <= 0)
{ {
// going downhill, ok // going downhill, ok
if (climb_count) if (climb_count)
{ {
climb_count --; // decrease climb count climb_count --; // decrease climb count
} }
// check if new minimum found // check if new minimum found
if (data[pos] < refvalue) if (data[pos] < refvalue)
{ {
// new minimum found // new minimum found
lowpos = pos; lowpos = pos;
refvalue = data[pos]; refvalue = data[pos];
} }
} }
else else
{ {
// going uphill, increase climbing counter // going uphill, increase climbing counter
climb_count ++; climb_count ++;
if (climb_count > 5) break; // we've been climbing too long => it's next uphill => quit if (climb_count > 5) break; // we've been climbing too long => it's next uphill => quit
} }
} }
return lowpos; return lowpos;
} }
// Find offset where the value crosses the given level, when starting from 'peakpos' and // Find offset where the value crosses the given level, when starting from 'peakpos' and
// proceeds to direction defined in 'direction' // proceeds to direction defined in 'direction'
int PeakFinder::findCrossingLevel(const float *data, float level, int peakpos, int direction) const int PeakFinder::findCrossingLevel(const float *data, float level, int peakpos, int direction) const
{ {
float peaklevel; float peaklevel;
int pos; int pos;
peaklevel = data[peakpos]; peaklevel = data[peakpos];
assert(peaklevel >= level); assert(peaklevel >= level);
pos = peakpos; pos = peakpos;
while ((pos >= minPos) && (pos < maxPos)) while ((pos >= minPos) && (pos < maxPos))
{ {
if (data[pos + direction] < level) return pos; // crossing found if (data[pos + direction] < level) return pos; // crossing found
pos += direction; pos += direction;
} }
return -1; // not found return -1; // not found
} }
// Calculates the center of mass location of 'data' array items between 'firstPos' and 'lastPos' // 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 double PeakFinder::calcMassCenter(const float *data, int firstPos, int lastPos) const
{ {
int i; int i;
float sum; float sum;
float wsum; float wsum;
sum = 0; sum = 0;
wsum = 0; wsum = 0;
for (i = firstPos; i <= lastPos; i ++) for (i = firstPos; i <= lastPos; i ++)
{ {
sum += (float)i * data[i]; sum += (float)i * data[i];
wsum += data[i]; wsum += data[i];
} }
if (wsum < 1e-6) return 0; if (wsum < 1e-6) return 0;
return sum / wsum; return sum / wsum;
} }
/// get exact center of peak near given position by calculating local mass of center /// get exact center of peak near given position by calculating local mass of center
double PeakFinder::getPeakCenter(const float *data, int peakpos) const double PeakFinder::getPeakCenter(const float *data, int peakpos) const
{ {
float peakLevel; // peak level float peakLevel; // peak level
int crosspos1, crosspos2; // position where the peak 'hump' crosses cutting level int crosspos1, crosspos2; // position where the peak 'hump' crosses cutting level
float cutLevel; // cutting value float cutLevel; // cutting value
float groundLevel; // ground level of the peak float groundLevel; // ground level of the peak
int gp1, gp2; // bottom positions of the peak 'hump' int gp1, gp2; // bottom positions of the peak 'hump'
// find ground positions. // find ground positions.
gp1 = findGround(data, peakpos, -1); gp1 = findGround(data, peakpos, -1);
gp2 = findGround(data, peakpos, 1); gp2 = findGround(data, peakpos, 1);
groundLevel = 0.5f * (data[gp1] + data[gp2]); groundLevel = 0.5f * (data[gp1] + data[gp2]);
peakLevel = data[peakpos]; peakLevel = data[peakpos];
// calculate 70%-level of the peak // calculate 70%-level of the peak
cutLevel = 0.70f * peakLevel + 0.30f * groundLevel; cutLevel = 0.70f * peakLevel + 0.30f * groundLevel;
// find mid-level crossings // find mid-level crossings
crosspos1 = findCrossingLevel(data, cutLevel, peakpos, -1); crosspos1 = findCrossingLevel(data, cutLevel, peakpos, -1);
crosspos2 = findCrossingLevel(data, cutLevel, peakpos, 1); crosspos2 = findCrossingLevel(data, cutLevel, peakpos, 1);
if ((crosspos1 < 0) || (crosspos2 < 0)) return 0; // no crossing, no peak.. if ((crosspos1 < 0) || (crosspos2 < 0)) return 0; // no crossing, no peak..
// calculate mass center of the peak surroundings // calculate mass center of the peak surroundings
return calcMassCenter(data, crosspos1, crosspos2); return calcMassCenter(data, crosspos1, crosspos2);
} }
double PeakFinder::detectPeak(const float *data, int aminPos, int amaxPos) double PeakFinder::detectPeak(const float *data, int aminPos, int amaxPos)
{ {
int i; int i;
int peakpos; // position of peak level int peakpos; // position of peak level
double highPeak, peak; double highPeak, peak;
this->minPos = aminPos; this->minPos = aminPos;
this->maxPos = amaxPos; this->maxPos = amaxPos;
// find absolute peak // find absolute peak
peakpos = minPos; peakpos = minPos;
peak = data[minPos]; peak = data[minPos];
for (i = minPos + 1; i < maxPos; i ++) for (i = minPos + 1; i < maxPos; i ++)
{ {
if (data[i] > peak) if (data[i] > peak)
{ {
peak = data[i]; peak = data[i];
peakpos = i; peakpos = i;
} }
} }
// Calculate exact location of the highest peak mass center // Calculate exact location of the highest peak mass center
highPeak = getPeakCenter(data, peakpos); highPeak = getPeakCenter(data, peakpos);
peak = highPeak; peak = highPeak;
// Now check if the highest peak were in fact harmonic of the true base beat peak // 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 // - sometimes the highest peak can be Nth harmonic of the true base peak yet
// just a slightly higher than the true base // just a slightly higher than the true base
for (i = 3; i < 10; i ++) for (i = 3; i < 10; i ++)
{ {
double peaktmp, harmonic; double peaktmp, harmonic;
int i1,i2; int i1,i2;
harmonic = (double)i * 0.5; harmonic = (double)i * 0.5;
peakpos = (int)(highPeak / harmonic + 0.5f); peakpos = (int)(highPeak / harmonic + 0.5f);
if (peakpos < minPos) break; if (peakpos < minPos) break;
peakpos = findTop(data, peakpos); // seek true local maximum index peakpos = findTop(data, peakpos); // seek true local maximum index
if (peakpos == 0) continue; // no local max here if (peakpos == 0) continue; // no local max here
// calculate mass-center of possible harmonic peak // calculate mass-center of possible harmonic peak
peaktmp = getPeakCenter(data, peakpos); peaktmp = getPeakCenter(data, peakpos);
// accept harmonic peak if // accept harmonic peak if
// (a) it is found // (a) it is found
// (b) is within ±4% of the expected harmonic interval // (b) is within ±4% of the expected harmonic interval
// (c) has at least half x-corr value of the max. peak // (c) has at least half x-corr value of the max. peak
double diff = harmonic * peaktmp / highPeak; double diff = harmonic * peaktmp / highPeak;
if ((diff < 0.96) || (diff > 1.04)) continue; // peak too afar from expected if ((diff < 0.96) || (diff > 1.04)) continue; // peak too afar from expected
// now compare to highest detected peak // now compare to highest detected peak
i1 = (int)(highPeak + 0.5); i1 = (int)(highPeak + 0.5);
i2 = (int)(peaktmp + 0.5); i2 = (int)(peaktmp + 0.5);
if (data[i2] >= 0.4*data[i1]) if (data[i2] >= 0.4*data[i1])
{ {
// The harmonic is at least half as high primary peak, // The harmonic is at least half as high primary peak,
// thus use the harmonic peak instead // thus use the harmonic peak instead
peak = peaktmp; peak = peaktmp;
} }
} }
return peak; return peak;
} }

View File

@ -1,97 +1,97 @@
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// ///
/// The routine detects highest value on an array of values and calculates the /// 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. /// precise peak location as a mass-center of the 'hump' around the peak value.
/// ///
/// Author : Copyright (c) Olli Parviainen /// Author : Copyright (c) Olli Parviainen
/// Author e-mail : oparviai 'at' iki.fi /// Author e-mail : oparviai 'at' iki.fi
/// SoundTouch WWW: http://www.surina.net/soundtouch /// SoundTouch WWW: http://www.surina.net/soundtouch
/// ///
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// Last changed : $Date: 2011-12-30 18:33:46 -0200 (sex, 30 dez 2011) $ // Last changed : $Date: 2011-12-30 18:33:46 -0200 (sex, 30 dez 2011) $
// File revision : $Revision: 4 $ // File revision : $Revision: 4 $
// //
// $Id: PeakFinder.h 132 2011-12-30 20:33:46Z oparviai $ // $Id: PeakFinder.h 132 2011-12-30 20:33:46Z oparviai $
// //
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// License : // License :
// //
// SoundTouch audio processing library // SoundTouch audio processing library
// Copyright (c) Olli Parviainen // Copyright (c) Olli Parviainen
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public // modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either // License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version. // 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, // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details. // Lesser General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public // You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software // License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// //
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
#ifndef _PeakFinder_H_ #ifndef _PeakFinder_H_
#define _PeakFinder_H_ #define _PeakFinder_H_
namespace soundtouch namespace soundtouch
{ {
class PeakFinder class PeakFinder
{ {
protected: protected:
/// Min, max allowed peak positions within the data vector /// Min, max allowed peak positions within the data vector
int minPos, maxPos; int minPos, maxPos;
/// Calculates the mass center between given vector items. /// Calculates the mass center between given vector items.
double calcMassCenter(const float *data, ///< Data vector. double calcMassCenter(const float *data, ///< Data vector.
int firstPos, ///< Index of first vector item beloging to the peak. int firstPos, ///< Index of first vector item beloging to the peak.
int lastPos ///< Index of last vector item beloging to the peak. int lastPos ///< Index of last vector item beloging to the peak.
) const; ) const;
/// Finds the data vector index where the monotoniously decreasing signal crosses the /// Finds the data vector index where the monotoniously decreasing signal crosses the
/// given level. /// given level.
int findCrossingLevel(const float *data, ///< Data vector. int findCrossingLevel(const float *data, ///< Data vector.
float level, ///< Goal crossing level. float level, ///< Goal crossing level.
int peakpos, ///< Peak position index within the data vector. int peakpos, ///< Peak position index within the data vector.
int direction /// Direction where to proceed from the peak: 1 = right, -1 = left. int direction /// Direction where to proceed from the peak: 1 = right, -1 = left.
) const; ) const;
// Finds real 'top' of a peak hump from neighnourhood of the given 'peakpos'. // Finds real 'top' of a peak hump from neighnourhood of the given 'peakpos'.
int findTop(const float *data, int peakpos) const; int findTop(const float *data, int peakpos) const;
/// Finds the 'ground' level, i.e. smallest level between two neighbouring peaks, to right- /// Finds the 'ground' level, i.e. smallest level between two neighbouring peaks, to right-
/// or left-hand side of the given peak position. /// or left-hand side of the given peak position.
int findGround(const float *data, /// Data vector. int findGround(const float *data, /// Data vector.
int peakpos, /// Peak position index within the data vector. int peakpos, /// Peak position index within the data vector.
int direction /// Direction where to proceed from the peak: 1 = right, -1 = left. int direction /// Direction where to proceed from the peak: 1 = right, -1 = left.
) const; ) const;
/// get exact center of peak near given position by calculating local mass of center /// get exact center of peak near given position by calculating local mass of center
double getPeakCenter(const float *data, int peakpos) const; double getPeakCenter(const float *data, int peakpos) const;
public: public:
/// Constructor. /// Constructor.
PeakFinder(); PeakFinder();
/// Detect exact peak position of the data vector by finding the largest peak 'hump' /// Detect exact peak position of the data vector by finding the largest peak 'hump'
/// and calculating the mass-center location of the peak hump. /// and calculating the mass-center location of the peak hump.
/// ///
/// \return The location of the largest base harmonic 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 double detectPeak(const float *data, /// Data vector to be analyzed. The data vector has
/// to be at least 'maxPos' items long. /// to be at least 'maxPos' items long.
int minPos, ///< Min allowed peak location within the vector data. int minPos, ///< Min allowed peak location within the vector data.
int maxPos ///< Max allowed peak location within the vector data. int maxPos ///< Max allowed peak location within the vector data.
); );
}; };
} }
#endif // _PeakFinder_H_ #endif // _PeakFinder_H_

View File

@ -1,116 +1,116 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Devel|Win32"> <ProjectConfiguration Include="Devel|Win32">
<Configuration>Devel</Configuration> <Configuration>Devel</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}</ProjectGuid> <ProjectGuid>{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}</ProjectGuid>
<RootNamespace>SoundTouch</RootNamespace> <RootNamespace>SoundTouch</RootNamespace>
<ProjectName>SoundTouch</ProjectName> <ProjectName>SoundTouch</ProjectName>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v110_xp</PlatformToolset> <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v110_xp</PlatformToolset> <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110_xp</PlatformToolset> <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdparty.props" /> <Import Project="..\3rdparty.props" />
<Import Project="..\..\common\vsprops\CodeGen_Devel.props" /> <Import Project="..\..\common\vsprops\CodeGen_Devel.props" />
<Import Project="..\..\common\vsprops\IncrementalLinking.props" /> <Import Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdparty.props" /> <Import Project="..\3rdparty.props" />
<Import Project="..\..\common\vsprops\CodeGen_Release.props" /> <Import Project="..\..\common\vsprops\CodeGen_Release.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdparty.props" /> <Import Project="..\3rdparty.props" />
<Import Project="..\..\common\vsprops\CodeGen_Debug.props" /> <Import Project="..\..\common\vsprops\CodeGen_Debug.props" />
<Import Project="..\..\common\vsprops\IncrementalLinking.props" /> <Import Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup> <PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(ProjectName)-dev</TargetName> <TargetName Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(ProjectName)-dev</TargetName>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="3dnow_win.cpp" /> <ClCompile Include="3dnow_win.cpp" />
<ClCompile Include="AAFilter.cpp" /> <ClCompile Include="AAFilter.cpp" />
<ClCompile Include="cpu_detect_x86_win.cpp" /> <ClCompile Include="cpu_detect_x86_win.cpp" />
<ClCompile Include="FIFOSampleBuffer.cpp" /> <ClCompile Include="FIFOSampleBuffer.cpp" />
<ClCompile Include="FIRFilter.cpp" /> <ClCompile Include="FIRFilter.cpp" />
<ClCompile Include="mmx_optimized.cpp" /> <ClCompile Include="mmx_optimized.cpp" />
<ClCompile Include="RateTransposer.cpp" /> <ClCompile Include="RateTransposer.cpp" />
<ClCompile Include="SoundTouch.cpp" /> <ClCompile Include="SoundTouch.cpp" />
<ClCompile Include="sse_optimized.cpp" /> <ClCompile Include="sse_optimized.cpp" />
<ClCompile Include="TDStretch.cpp" /> <ClCompile Include="TDStretch.cpp" />
<ClCompile Include="WavFile.cpp" /> <ClCompile Include="WavFile.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="AAFilter.h" /> <ClInclude Include="AAFilter.h" />
<ClInclude Include="BPMDetect.h" /> <ClInclude Include="BPMDetect.h" />
<ClInclude Include="cpu_detect.h" /> <ClInclude Include="cpu_detect.h" />
<ClInclude Include="FIFOSampleBuffer.h" /> <ClInclude Include="FIFOSampleBuffer.h" />
<ClInclude Include="FIFOSamplePipe.h" /> <ClInclude Include="FIFOSamplePipe.h" />
<ClInclude Include="FIRFilter.h" /> <ClInclude Include="FIRFilter.h" />
<ClInclude Include="RateTransposer.h" /> <ClInclude Include="RateTransposer.h" />
<ClInclude Include="SoundTouch.h" /> <ClInclude Include="SoundTouch.h" />
<ClInclude Include="STTypes.h" /> <ClInclude Include="STTypes.h" />
<ClInclude Include="TDStretch.h" /> <ClInclude Include="TDStretch.h" />
<ClInclude Include="WavFile.h" /> <ClInclude Include="WavFile.h" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@ -1,83 +1,83 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<Filter Include="Source Files"> <Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter> </Filter>
<Filter Include="Header Files"> <Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="3dnow_win.cpp"> <ClCompile Include="3dnow_win.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="AAFilter.cpp"> <ClCompile Include="AAFilter.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="cpu_detect_x86_win.cpp"> <ClCompile Include="cpu_detect_x86_win.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="FIFOSampleBuffer.cpp"> <ClCompile Include="FIFOSampleBuffer.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="FIRFilter.cpp"> <ClCompile Include="FIRFilter.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="mmx_optimized.cpp"> <ClCompile Include="mmx_optimized.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="RateTransposer.cpp"> <ClCompile Include="RateTransposer.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="SoundTouch.cpp"> <ClCompile Include="SoundTouch.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sse_optimized.cpp"> <ClCompile Include="sse_optimized.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="TDStretch.cpp"> <ClCompile Include="TDStretch.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="WavFile.cpp"> <ClCompile Include="WavFile.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="AAFilter.h"> <ClInclude Include="AAFilter.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="BPMDetect.h"> <ClInclude Include="BPMDetect.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="cpu_detect.h"> <ClInclude Include="cpu_detect.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="FIFOSampleBuffer.h"> <ClInclude Include="FIFOSampleBuffer.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="FIFOSamplePipe.h"> <ClInclude Include="FIFOSamplePipe.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="FIRFilter.h"> <ClInclude Include="FIRFilter.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="RateTransposer.h"> <ClInclude Include="RateTransposer.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="SoundTouch.h"> <ClInclude Include="SoundTouch.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="STTypes.h"> <ClInclude Include="STTypes.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="TDStretch.h"> <ClInclude Include="TDStretch.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="WavFile.h"> <ClInclude Include="WavFile.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,137 +1,137 @@
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// ///
/// Generic version of the x86 CPU extension detection routine. /// Generic version of the x86 CPU extension detection routine.
/// ///
/// This file is for GNU & other non-Windows compilers, see 'cpu_detect_x86_win.cpp' /// This file is for GNU & other non-Windows compilers, see 'cpu_detect_x86_win.cpp'
/// for the Microsoft compiler version. /// for the Microsoft compiler version.
/// ///
/// Author : Copyright (c) Olli Parviainen /// Author : Copyright (c) Olli Parviainen
/// Author e-mail : oparviai 'at' iki.fi /// Author e-mail : oparviai 'at' iki.fi
/// SoundTouch WWW: http://www.surina.net/soundtouch /// SoundTouch WWW: http://www.surina.net/soundtouch
/// ///
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// Last changed : $Date: 2012-11-08 16:44:37 -0200 (qui, 08 nov 2012) $ // Last changed : $Date: 2012-11-08 16:44:37 -0200 (qui, 08 nov 2012) $
// File revision : $Revision: 4 $ // File revision : $Revision: 4 $
// //
// $Id: cpu_detect_x86.cpp 159 2012-11-08 18:44:37Z oparviai $ // $Id: cpu_detect_x86.cpp 159 2012-11-08 18:44:37Z oparviai $
// //
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// License : // License :
// //
// SoundTouch audio processing library // SoundTouch audio processing library
// Copyright (c) Olli Parviainen // Copyright (c) Olli Parviainen
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public // modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either // License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version. // 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, // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details. // Lesser General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public // You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software // License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// //
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
#include "cpu_detect.h" #include "cpu_detect.h"
#include "STTypes.h" #include "STTypes.h"
#if defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS) #if defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS)
#if defined(__GNUC__) && defined(__i386__) #if defined(__GNUC__) && defined(__i386__)
// gcc // gcc
#include "cpuid.h" #include "cpuid.h"
#elif defined(_M_IX86) #elif defined(_M_IX86)
// windows non-gcc // windows non-gcc
#include <intrin.h> #include <intrin.h>
#define bit_MMX (1 << 23) #define bit_MMX (1 << 23)
#define bit_SSE (1 << 25) #define bit_SSE (1 << 25)
#define bit_SSE2 (1 << 26) #define bit_SSE2 (1 << 26)
#endif #endif
#endif #endif
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// //
// processor instructions extension detection routines // processor instructions extension detection routines
// //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// Flag variable indicating whick ISA extensions are disabled (for debugging) // Flag variable indicating whick ISA extensions are disabled (for debugging)
static uint _dwDisabledISA = 0x00; // 0xffffffff; //<- use this to disable all extensions static uint _dwDisabledISA = 0x00; // 0xffffffff; //<- use this to disable all extensions
// Disables given set of instruction extensions. See SUPPORT_... defines. // Disables given set of instruction extensions. See SUPPORT_... defines.
void disableExtensions(uint dwDisableMask) void disableExtensions(uint dwDisableMask)
{ {
_dwDisabledISA = dwDisableMask; _dwDisabledISA = dwDisableMask;
} }
/// Checks which instruction set extensions are supported by the CPU. /// Checks which instruction set extensions are supported by the CPU.
uint detectCPUextensions(void) uint detectCPUextensions(void)
{ {
/// If building for a 64bit system (no Itanium) and the user wants optimizations. /// If building for a 64bit system (no Itanium) and the user wants optimizations.
/// Return the OR of SUPPORT_{MMX,SSE,SSE2}. 11001 or 0x19. /// Return the OR of SUPPORT_{MMX,SSE,SSE2}. 11001 or 0x19.
/// Keep the _dwDisabledISA test (2 more operations, could be eliminated). /// Keep the _dwDisabledISA test (2 more operations, could be eliminated).
#if ((defined(__GNUC__) && defined(__x86_64__)) \ #if ((defined(__GNUC__) && defined(__x86_64__)) \
|| defined(_M_X64)) \ || defined(_M_X64)) \
&& defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS) && defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS)
return 0x19 & ~_dwDisabledISA; return 0x19 & ~_dwDisabledISA;
/// If building for a 32bit system and the user wants optimizations. /// If building for a 32bit system and the user wants optimizations.
/// Keep the _dwDisabledISA test (2 more operations, could be eliminated). /// Keep the _dwDisabledISA test (2 more operations, could be eliminated).
#elif ((defined(__GNUC__) && defined(__i386__)) \ #elif ((defined(__GNUC__) && defined(__i386__)) \
|| defined(_M_IX86)) \ || defined(_M_IX86)) \
&& defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS) && defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS)
if (_dwDisabledISA == 0xffffffff) return 0; if (_dwDisabledISA == 0xffffffff) return 0;
uint res = 0; uint res = 0;
#if defined(__GNUC__) #if defined(__GNUC__)
// GCC version of cpuid. Requires GCC 4.3.0 or later for __cpuid intrinsic support. // 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. 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. // Check if no cpuid support.
if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) return 0; // always disable extensions. if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) return 0; // always disable extensions.
if (edx & bit_MMX) res = res | SUPPORT_MMX; if (edx & bit_MMX) res = res | SUPPORT_MMX;
if (edx & bit_SSE) res = res | SUPPORT_SSE; if (edx & bit_SSE) res = res | SUPPORT_SSE;
if (edx & bit_SSE2) res = res | SUPPORT_SSE2; if (edx & bit_SSE2) res = res | SUPPORT_SSE2;
#else #else
// Window / VS version of cpuid. Notice that Visual Studio 2005 or later required // Window / VS version of cpuid. Notice that Visual Studio 2005 or later required
// for __cpuid intrinsic support. // for __cpuid intrinsic support.
int reg[4] = {-1}; int reg[4] = {-1};
// Check if no cpuid support. // Check if no cpuid support.
__cpuid(reg,0); __cpuid(reg,0);
if ((unsigned int)reg[0] == 0) return 0; // always disable extensions. if ((unsigned int)reg[0] == 0) return 0; // always disable extensions.
__cpuid(reg,1); __cpuid(reg,1);
if ((unsigned int)reg[3] & bit_MMX) res = res | SUPPORT_MMX; 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_SSE) res = res | SUPPORT_SSE;
if ((unsigned int)reg[3] & bit_SSE2) res = res | SUPPORT_SSE2; if ((unsigned int)reg[3] & bit_SSE2) res = res | SUPPORT_SSE2;
#endif #endif
return res & ~_dwDisabledISA; return res & ~_dwDisabledISA;
#else #else
/// One of these is true: /// One of these is true:
/// 1) We don't want optimizations. /// 1) We don't want optimizations.
/// 2) Using an unsupported compiler. /// 2) Using an unsupported compiler.
/// 3) Running on a non-x86 platform. /// 3) Running on a non-x86 platform.
return 0; return 0;
#endif #endif
} }

View File

@ -1,26 +1,26 @@
Folder: /3rdparty Folder: /3rdparty
This folder contains libraries written and (un?)maintained by people or parties 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 outside the Pcsx2 DevTeam. Libraries or code snippets written by the PCSX2 team
are housed in /common instead. are housed in /common instead.
Cross-Compilation: Cross-Compilation:
Most libraries includes in /3rdparty come as either default installations in Linux Most libraries includes in /3rdparty come as either default installations in Linux
distributions, or are easily obtainable. Using the PCSX2 versions included here is 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. optional in such cases, however using the distro-provided packages is not recommended.
(using PCSX2 included versions may help resolve versioning issues). (using PCSX2 included versions may help resolve versioning issues).
Note that wxWidgets includes *only* MSW projects and files. Linux and Mac platforms Note that wxWidgets includes *only* MSW projects and files. Linux and Mac platforms
are assumed to have wx already available in your distributions. are assumed to have wx already available in your distributions.
Modifications: Modifications:
Most of these libs in /3rdparty have been tailored slightly from the original 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 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 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 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, 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 however folder renames or svn homesite changes may not have all relevant history
necessary to make an accurate merge. necessary to make an accurate merge.

View File

@ -1,476 +1,476 @@
PTHREADS-WIN32 RELEASE 2.8.0 (2006-12-22) PTHREADS-WIN32 RELEASE 2.8.0 (2006-12-22)
----------------------------------------- -----------------------------------------
Web Site: http://sources.redhat.com/pthreads-win32/ Web Site: http://sources.redhat.com/pthreads-win32/
FTP Site: ftp://sources.redhat.com/pub/pthreads-win32 FTP Site: ftp://sources.redhat.com/pub/pthreads-win32
Maintainer: Ross Johnson <rpj@callisto.canberra.edu.au> Maintainer: Ross Johnson <rpj@callisto.canberra.edu.au>
We are pleased to announce the availability of a new release of We are pleased to announce the availability of a new release of
Pthreads-win32, an Open Source Software implementation of the Pthreads-win32, an Open Source Software implementation of the
Threads component of the POSIX 1003.1 2001 Standard for Microsoft's Threads component of the POSIX 1003.1 2001 Standard for Microsoft's
Win32 environment. Some functions from other sections of POSIX Win32 environment. Some functions from other sections of POSIX
1003.1 2001 are also supported including semaphores and scheduling 1003.1 2001 are also supported including semaphores and scheduling
functions. functions.
Some common non-portable functions are also implemented for Some common non-portable functions are also implemented for
additional compatibility, as are a few functions specific additional compatibility, as are a few functions specific
to pthreads-win32 for easier integration with Win32 applications. to pthreads-win32 for easier integration with Win32 applications.
Pthreads-win32 is free software, distributed under the GNU Lesser Pthreads-win32 is free software, distributed under the GNU Lesser
General Public License (LGPL). General Public License (LGPL).
Acknowledgements Acknowledgements
---------------- ----------------
This library is based originally on a Win32 pthreads This library is based originally on a Win32 pthreads
implementation contributed by John Bossom <John.Bossom@cognos.com>. implementation contributed by John Bossom <John.Bossom@cognos.com>.
The implementation of Condition Variables uses algorithms developed The implementation of Condition Variables uses algorithms developed
by Alexander Terekhov and Louis Thomas. by Alexander Terekhov and Louis Thomas.
The implementation of POSIX mutexes has been improved by Thomas Pfaff The implementation of POSIX mutexes has been improved by Thomas Pfaff
and later by Alexander Terekhov. and later by Alexander Terekhov.
The implementation of Spinlocks and Barriers was contributed The implementation of Spinlocks and Barriers was contributed
by Ross Johnson. by Ross Johnson.
The implementation of read/write locks was contributed by The implementation of read/write locks was contributed by
Aurelio Medina and improved by Alexander Terekhov. Aurelio Medina and improved by Alexander Terekhov.
Many others have contributed significant time and effort to solve crutial Many others have contributed significant time and effort to solve crutial
problems in order to make the library workable, robust and reliable. problems in order to make the library workable, robust and reliable.
Thanks to Xavier Leroy for granting permission to use and modify his Thanks to Xavier Leroy for granting permission to use and modify his
LinuxThreads manual pages. LinuxThreads manual pages.
Thanks to The Open Group for making the Single Unix Specification Thanks to The Open Group for making the Single Unix Specification
publicly available - many of the manual pages included in the package publicly available - many of the manual pages included in the package
were extracted from it. were extracted from it.
There is also a separate CONTRIBUTORS file. This file and others are There is also a separate CONTRIBUTORS file. This file and others are
on the web site: on the web site:
http://sources.redhat.com/pthreads-win32 http://sources.redhat.com/pthreads-win32
As much as possible, the ChangeLog file acknowledges contributions to the As much as possible, the ChangeLog file acknowledges contributions to the
code base in more detail. code base in more detail.
Changes since the last release Changes since the last release
------------------------------ ------------------------------
These are now documented in the NEWS file. These are now documented in the NEWS file.
See the ChangeLog file also. See the ChangeLog file also.
Known Bugs Known Bugs
---------- ----------
These are now documented in the BUGS file. These are now documented in the BUGS file.
Level of standards conformance Level of standards conformance
------------------------------ ------------------------------
The following POSIX 1003.1 2001 options are defined and set to 200112L: The following POSIX 1003.1 2001 options are defined and set to 200112L:
_POSIX_THREADS _POSIX_THREADS
_POSIX_THREAD_SAFE_FUNCTIONS _POSIX_THREAD_SAFE_FUNCTIONS
_POSIX_THREAD_ATTR_STACKSIZE _POSIX_THREAD_ATTR_STACKSIZE
_POSIX_THREAD_PRIORITY_SCHEDULING _POSIX_THREAD_PRIORITY_SCHEDULING
_POSIX_SEMAPHORES _POSIX_SEMAPHORES
_POSIX_READER_WRITER_LOCKS _POSIX_READER_WRITER_LOCKS
_POSIX_SPIN_LOCKS _POSIX_SPIN_LOCKS
_POSIX_BARRIERS _POSIX_BARRIERS
The following POSIX 1003.1 2001 options are defined and set to -1: The following POSIX 1003.1 2001 options are defined and set to -1:
_POSIX_THREAD_ATTR_STACKADDR _POSIX_THREAD_ATTR_STACKADDR
_POSIX_THREAD_PRIO_INHERIT _POSIX_THREAD_PRIO_INHERIT
_POSIX_THREAD_PRIO_PROTECT _POSIX_THREAD_PRIO_PROTECT
_POSIX_THREAD_PROCESS_SHARED _POSIX_THREAD_PROCESS_SHARED
The following POSIX 1003.1 2001 limits are defined and set: The following POSIX 1003.1 2001 limits are defined and set:
_POSIX_THREAD_THREADS_MAX _POSIX_THREAD_THREADS_MAX
_POSIX_SEM_VALUE_MAX _POSIX_SEM_VALUE_MAX
_POSIX_SEM_NSEMS_MAX _POSIX_SEM_NSEMS_MAX
_POSIX_THREAD_KEYS_MAX _POSIX_THREAD_KEYS_MAX
_POSIX_THREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
PTHREAD_STACK_MIN PTHREAD_STACK_MIN
PTHREAD_THREADS_MAX PTHREAD_THREADS_MAX
SEM_VALUE_MAX SEM_VALUE_MAX
SEM_NSEMS_MAX SEM_NSEMS_MAX
PTHREAD_KEYS_MAX PTHREAD_KEYS_MAX
PTHREAD_DESTRUCTOR_ITERATIONS PTHREAD_DESTRUCTOR_ITERATIONS
The following functions are implemented: The following functions are implemented:
--------------------------- ---------------------------
PThreads PThreads
--------------------------- ---------------------------
pthread_attr_init pthread_attr_init
pthread_attr_destroy pthread_attr_destroy
pthread_attr_getdetachstate pthread_attr_getdetachstate
pthread_attr_getstackaddr pthread_attr_getstackaddr
pthread_attr_getstacksize pthread_attr_getstacksize
pthread_attr_setdetachstate pthread_attr_setdetachstate
pthread_attr_setstackaddr pthread_attr_setstackaddr
pthread_attr_setstacksize pthread_attr_setstacksize
pthread_create pthread_create
pthread_detach pthread_detach
pthread_equal pthread_equal
pthread_exit pthread_exit
pthread_join pthread_join
pthread_once pthread_once
pthread_self pthread_self
pthread_cancel pthread_cancel
pthread_cleanup_pop pthread_cleanup_pop
pthread_cleanup_push pthread_cleanup_push
pthread_setcancelstate pthread_setcancelstate
pthread_setcanceltype pthread_setcanceltype
pthread_testcancel pthread_testcancel
--------------------------- ---------------------------
Thread Specific Data Thread Specific Data
--------------------------- ---------------------------
pthread_key_create pthread_key_create
pthread_key_delete pthread_key_delete
pthread_setspecific pthread_setspecific
pthread_getspecific pthread_getspecific
--------------------------- ---------------------------
Mutexes Mutexes
--------------------------- ---------------------------
pthread_mutexattr_init pthread_mutexattr_init
pthread_mutexattr_destroy pthread_mutexattr_destroy
pthread_mutexattr_getpshared pthread_mutexattr_getpshared
pthread_mutexattr_setpshared pthread_mutexattr_setpshared
pthread_mutexattr_gettype pthread_mutexattr_gettype
pthread_mutexattr_settype (types: PTHREAD_MUTEX_DEFAULT pthread_mutexattr_settype (types: PTHREAD_MUTEX_DEFAULT
PTHREAD_MUTEX_NORMAL PTHREAD_MUTEX_NORMAL
PTHREAD_MUTEX_ERRORCHECK PTHREAD_MUTEX_ERRORCHECK
PTHREAD_MUTEX_RECURSIVE ) PTHREAD_MUTEX_RECURSIVE )
pthread_mutex_init pthread_mutex_init
pthread_mutex_destroy pthread_mutex_destroy
pthread_mutex_lock pthread_mutex_lock
pthread_mutex_trylock pthread_mutex_trylock
pthread_mutex_timedlock pthread_mutex_timedlock
pthread_mutex_unlock pthread_mutex_unlock
--------------------------- ---------------------------
Condition Variables Condition Variables
--------------------------- ---------------------------
pthread_condattr_init pthread_condattr_init
pthread_condattr_destroy pthread_condattr_destroy
pthread_condattr_getpshared pthread_condattr_getpshared
pthread_condattr_setpshared pthread_condattr_setpshared
pthread_cond_init pthread_cond_init
pthread_cond_destroy pthread_cond_destroy
pthread_cond_wait pthread_cond_wait
pthread_cond_timedwait pthread_cond_timedwait
pthread_cond_signal pthread_cond_signal
pthread_cond_broadcast pthread_cond_broadcast
--------------------------- ---------------------------
Read/Write Locks Read/Write Locks
--------------------------- ---------------------------
pthread_rwlock_init pthread_rwlock_init
pthread_rwlock_destroy pthread_rwlock_destroy
pthread_rwlock_tryrdlock pthread_rwlock_tryrdlock
pthread_rwlock_trywrlock pthread_rwlock_trywrlock
pthread_rwlock_rdlock pthread_rwlock_rdlock
pthread_rwlock_timedrdlock pthread_rwlock_timedrdlock
pthread_rwlock_rwlock pthread_rwlock_rwlock
pthread_rwlock_timedwrlock pthread_rwlock_timedwrlock
pthread_rwlock_unlock pthread_rwlock_unlock
pthread_rwlockattr_init pthread_rwlockattr_init
pthread_rwlockattr_destroy pthread_rwlockattr_destroy
pthread_rwlockattr_getpshared pthread_rwlockattr_getpshared
pthread_rwlockattr_setpshared pthread_rwlockattr_setpshared
--------------------------- ---------------------------
Spin Locks Spin Locks
--------------------------- ---------------------------
pthread_spin_init pthread_spin_init
pthread_spin_destroy pthread_spin_destroy
pthread_spin_lock pthread_spin_lock
pthread_spin_unlock pthread_spin_unlock
pthread_spin_trylock pthread_spin_trylock
--------------------------- ---------------------------
Barriers Barriers
--------------------------- ---------------------------
pthread_barrier_init pthread_barrier_init
pthread_barrier_destroy pthread_barrier_destroy
pthread_barrier_wait pthread_barrier_wait
pthread_barrierattr_init pthread_barrierattr_init
pthread_barrierattr_destroy pthread_barrierattr_destroy
pthread_barrierattr_getpshared pthread_barrierattr_getpshared
pthread_barrierattr_setpshared pthread_barrierattr_setpshared
--------------------------- ---------------------------
Semaphores Semaphores
--------------------------- ---------------------------
sem_init sem_init
sem_destroy sem_destroy
sem_post sem_post
sem_wait sem_wait
sem_trywait sem_trywait
sem_timedwait sem_timedwait
sem_getvalue (# free if +ve, # of waiters if -ve) sem_getvalue (# free if +ve, # of waiters if -ve)
sem_open (returns an error ENOSYS) sem_open (returns an error ENOSYS)
sem_close (returns an error ENOSYS) sem_close (returns an error ENOSYS)
sem_unlink (returns an error ENOSYS) sem_unlink (returns an error ENOSYS)
--------------------------- ---------------------------
RealTime Scheduling RealTime Scheduling
--------------------------- ---------------------------
pthread_attr_getschedparam pthread_attr_getschedparam
pthread_attr_setschedparam pthread_attr_setschedparam
pthread_attr_getinheritsched pthread_attr_getinheritsched
pthread_attr_setinheritsched pthread_attr_setinheritsched
pthread_attr_getschedpolicy (only supports SCHED_OTHER) pthread_attr_getschedpolicy (only supports SCHED_OTHER)
pthread_attr_setschedpolicy (only supports SCHED_OTHER) pthread_attr_setschedpolicy (only supports SCHED_OTHER)
pthread_getschedparam pthread_getschedparam
pthread_setschedparam pthread_setschedparam
pthread_getconcurrency pthread_getconcurrency
pthread_setconcurrency pthread_setconcurrency
pthread_attr_getscope pthread_attr_getscope
pthread_attr_setscope (only supports PTHREAD_SCOPE_SYSTEM) pthread_attr_setscope (only supports PTHREAD_SCOPE_SYSTEM)
sched_get_priority_max sched_get_priority_max
sched_get_priority_min sched_get_priority_min
sched_rr_get_interval (returns an error ENOTSUP) sched_rr_get_interval (returns an error ENOTSUP)
sched_setscheduler (only supports SCHED_OTHER) sched_setscheduler (only supports SCHED_OTHER)
sched_getscheduler (only supports SCHED_OTHER) sched_getscheduler (only supports SCHED_OTHER)
sched_yield sched_yield
--------------------------- ---------------------------
Signals Signals
--------------------------- ---------------------------
pthread_sigmask pthread_sigmask
pthread_kill (only supports zero sig value, pthread_kill (only supports zero sig value,
for thread validity checking) for thread validity checking)
--------------------------- ---------------------------
Non-portable routines (see the README.NONPORTABLE file for usage) Non-portable routines (see the README.NONPORTABLE file for usage)
--------------------------- ---------------------------
pthread_getw32threadhandle_np pthread_getw32threadhandle_np
pthread_timechange_handler_np pthread_timechange_handler_np
pthread_delay_np pthread_delay_np
pthread_mutexattr_getkind_np pthread_mutexattr_getkind_np
pthread_mutexattr_setkind_np (types: PTHREAD_MUTEX_FAST_NP, pthread_mutexattr_setkind_np (types: PTHREAD_MUTEX_FAST_NP,
PTHREAD_MUTEX_ERRORCHECK_NP, PTHREAD_MUTEX_ERRORCHECK_NP,
PTHREAD_MUTEX_RECURSIVE_NP, PTHREAD_MUTEX_RECURSIVE_NP,
PTHREAD_MUTEX_ADAPTIVE_NP, PTHREAD_MUTEX_ADAPTIVE_NP,
PTHREAD_MUTEX_TIMED_NP) PTHREAD_MUTEX_TIMED_NP)
pthread_num_processors_np pthread_num_processors_np
pthread_win32_process_attach_np (Required when statically linking pthread_win32_process_attach_np (Required when statically linking
the library) the library)
pthread_win32_process_detach_np (Required when statically linking pthread_win32_process_detach_np (Required when statically linking
the library) the library)
pthread_win32_thread_attach_np (Required when statically linking pthread_win32_thread_attach_np (Required when statically linking
the library) the library)
pthread_win32_thread_detach_np (Required when statically linking pthread_win32_thread_detach_np (Required when statically linking
the library) the library)
--------------------------- ---------------------------
Static Initializers Static Initializers
--------------------------- ---------------------------
PTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
PTHREAD_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
PTHREAD_RECURSIVE_MUTEX_INITIALIZER PTHREAD_RECURSIVE_MUTEX_INITIALIZER
PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
PTHREAD_ERRORCHECK_MUTEX_INITIALIZER PTHREAD_ERRORCHECK_MUTEX_INITIALIZER
PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
PTHREAD_COND_INITIALIZER PTHREAD_COND_INITIALIZER
PTHREAD_RWLOCK_INITIALIZER PTHREAD_RWLOCK_INITIALIZER
PTHREAD_SPINLOCK_INITIALIZER PTHREAD_SPINLOCK_INITIALIZER
--------------------------- ---------------------------
Thread-Safe C Runtime Library (macros) Thread-Safe C Runtime Library (macros)
--------------------------- ---------------------------
strtok_r strtok_r
asctime_r asctime_r
ctime_r ctime_r
gmtime_r gmtime_r
localtime_r localtime_r
rand_r rand_r
The following functions are not implemented: The following functions are not implemented:
--------------------------- ---------------------------
RealTime Scheduling RealTime Scheduling
--------------------------- ---------------------------
pthread_mutex_getprioceiling pthread_mutex_getprioceiling
pthread_mutex_setprioceiling pthread_mutex_setprioceiling
pthread_mutex_attr_getprioceiling pthread_mutex_attr_getprioceiling
pthread_mutex_attr_getprotocol pthread_mutex_attr_getprotocol
pthread_mutex_attr_setprioceiling pthread_mutex_attr_setprioceiling
pthread_mutex_attr_setprotocol pthread_mutex_attr_setprotocol
--------------------------- ---------------------------
Fork Handlers Fork Handlers
--------------------------- ---------------------------
pthread_atfork pthread_atfork
--------------------------- ---------------------------
Stdio Stdio
--------------------------- ---------------------------
flockfile flockfile
ftrylockfile ftrylockfile
funlockfile funlockfile
getc_unlocked getc_unlocked
getchar_unlocked getchar_unlocked
putc_unlocked putc_unlocked
putchar_unlocked putchar_unlocked
--------------------------- ---------------------------
Thread-Safe C Runtime Library Thread-Safe C Runtime Library
--------------------------- ---------------------------
readdir_r readdir_r
getgrgid_r getgrgid_r
getgrnam_r getgrnam_r
getpwuid_r getpwuid_r
getpwnam_r getpwnam_r
--------------------------- ---------------------------
Signals Signals
--------------------------- ---------------------------
sigtimedwait sigtimedwait
sigwait sigwait
sigwaitinfo sigwaitinfo
--------------------------- ---------------------------
General General
--------------------------- ---------------------------
sysconf sysconf
The library includes two non-API functions for creating cancellation The library includes two non-API functions for creating cancellation
points in applications and libraries: points in applications and libraries:
pthreadCancelableWait pthreadCancelableWait
pthreadCancelableTimedWait pthreadCancelableTimedWait
Availability Availability
------------ ------------
The prebuilt DLL, export libs (for both MSVC and Mingw32), and the header 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 files (pthread.h, semaphore.h, sched.h) are available along with the
complete source code. complete source code.
The source code can be found at: The source code can be found at:
ftp://sources.redhat.com/pub/pthreads-win32 ftp://sources.redhat.com/pub/pthreads-win32
and as individual source code files at and as individual source code files at
ftp://sources.redhat.com/pub/pthreads-win32/source ftp://sources.redhat.com/pub/pthreads-win32/source
The pre-built DLL, export libraries and include files can be found at: The pre-built DLL, export libraries and include files can be found at:
ftp://sources.redhat.com/pub/pthreads-win32/dll-latest ftp://sources.redhat.com/pub/pthreads-win32/dll-latest
Mailing List Mailing List
------------ ------------
There is a mailing list for discussing pthreads on Win32. To join, There is a mailing list for discussing pthreads on Win32. To join,
send email to: send email to:
pthreads-win32-subscribe@sourceware.cygnus.com pthreads-win32-subscribe@sourceware.cygnus.com
Application Development Environments Application Development Environments
------------------------------------ ------------------------------------
See the README file for more information. See the README file for more information.
MSVC: MSVC:
MSVC using SEH works. Distribute pthreadVSE.dll with your application. MSVC using SEH works. Distribute pthreadVSE.dll with your application.
MSVC using C++ EH works. Distribute pthreadVCE.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. MSVC using C setjmp/longjmp works. Distribute pthreadVC.dll with your application.
Mingw32: Mingw32:
See the FAQ, Questions 6 and 10. See the FAQ, Questions 6 and 10.
Mingw using C++ EH works. Distribute pthreadGCE.dll with your application. Mingw using C++ EH works. Distribute pthreadGCE.dll with your application.
Mingw using C setjmp/longjmp works. Distribute pthreadGC.dll with your application. Mingw using C setjmp/longjmp works. Distribute pthreadGC.dll with your application.
Cygwin: (http://sourceware.cygnus.com/cygwin/) Cygwin: (http://sourceware.cygnus.com/cygwin/)
Developers using Cygwin will not need pthreads-win32 since it has POSIX threads Developers using Cygwin will not need pthreads-win32 since it has POSIX threads
support. Refer to its documentation for details and extent. support. Refer to its documentation for details and extent.
UWIN: UWIN:
UWIN is a complete Unix-like environment for Windows from AT&T. Pthreads-win32 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 doesn't currently support UWIN (and vice versa), but that may change in the
future. future.
Generally: Generally:
For convenience, the following pre-built files are available on the FTP site For convenience, the following pre-built files are available on the FTP site
(see Availability above): (see Availability above):
pthread.h - for POSIX 1c threads pthread.h - for POSIX 1c threads
semaphore.h - for POSIX 1b semaphores semaphore.h - for POSIX 1b semaphores
sched.h - for POSIX 1b scheduling sched.h - for POSIX 1b scheduling
pthreadVCE.dll - built with MSVC++ compiler using C++ EH pthreadVCE.dll - built with MSVC++ compiler using C++ EH
pthreadVCE.lib pthreadVCE.lib
pthreadVC.dll - built with MSVC compiler using C setjmp/longjmp pthreadVC.dll - built with MSVC compiler using C setjmp/longjmp
pthreadVC.lib pthreadVC.lib
pthreadVSE.dll - built with MSVC compiler using SEH pthreadVSE.dll - built with MSVC compiler using SEH
pthreadVSE.lib pthreadVSE.lib
pthreadGCE.dll - built with Mingw32 G++ 2.95.2-1 pthreadGCE.dll - built with Mingw32 G++ 2.95.2-1
pthreadGC.dll - built with Mingw32 GCC 2.95.2-1 using setjmp/longjmp pthreadGC.dll - built with Mingw32 GCC 2.95.2-1 using setjmp/longjmp
libpthreadGCE.a - derived from pthreadGCE.dll libpthreadGCE.a - derived from pthreadGCE.dll
libpthreadGC.a - derived from pthreadGC.dll libpthreadGC.a - derived from pthreadGC.dll
gcc.dll - needed if distributing applications that use gcc.dll - needed if distributing applications that use
pthreadGCE.dll (but see the FAQ Q 10 for the latest pthreadGCE.dll (but see the FAQ Q 10 for the latest
related information) related information)
These are the only files you need in order to build POSIX threads These are the only files you need in order to build POSIX threads
applications for Win32 using either MSVC or Mingw32. applications for Win32 using either MSVC or Mingw32.
See the FAQ file in the source tree for additional information. See the FAQ file in the source tree for additional information.
Documentation Documentation
------------- -------------
For the authoritative reference, see the online POSIX For the authoritative reference, see the online POSIX
standard reference at: standard reference at:
http://www.OpenGroup.org http://www.OpenGroup.org
For POSIX Thread API programming, several reference books are For POSIX Thread API programming, several reference books are
available: available:
Programming with POSIX Threads Programming with POSIX Threads
David R. Butenhof David R. Butenhof
Addison-Wesley (pub) Addison-Wesley (pub)
Pthreads Programming Pthreads Programming
By Bradford Nichols, Dick Buttlar & Jacqueline Proulx Farrell By Bradford Nichols, Dick Buttlar & Jacqueline Proulx Farrell
O'Reilly (pub) O'Reilly (pub)
On the web: see the links at the bottom of the pthreads-win32 site: On the web: see the links at the bottom of the pthreads-win32 site:
http://sources.redhat.com/pthreads-win32/ http://sources.redhat.com/pthreads-win32/
Currently, there is no documentation included in the package apart Currently, there is no documentation included in the package apart
from the copious comments in the source code. from the copious comments in the source code.
Enjoy! Enjoy!
Ross Johnson Ross Johnson

View File

@ -1,133 +1,133 @@
---------- ----------
Known bugs Known bugs
---------- ----------
1. Not strictly a bug, more of a gotcha. 1. Not strictly a bug, more of a gotcha.
Under MS VC++ (only tested with version 6.0), a term_func Under MS VC++ (only tested with version 6.0), a term_func
set via the standard C++ set_terminate() function causes the set via the standard C++ set_terminate() function causes the
application to abort. application to abort.
Notes from the MSVC++ manual: Notes from the MSVC++ manual:
1) A term_func() should call exit(), otherwise 1) A term_func() should call exit(), otherwise
abort() will be called on return to the caller. abort() will be called on return to the caller.
A call to abort() raises SIGABRT and the default signal handler A call to abort() raises SIGABRT and the default signal handler
for all signals terminates the calling program with for all signals terminates the calling program with
exit code 3. exit code 3.
2) A term_func() must not throw an exception. Therefore 2) A term_func() must not throw an exception. Therefore
term_func() should not call pthread_exit(), which term_func() should not call pthread_exit(), which
works by throwing an exception (pthreadVCE or pthreadVSE) works by throwing an exception (pthreadVCE or pthreadVSE)
or by calling longjmp (pthreadVC). or by calling longjmp (pthreadVC).
Workaround: avoid using pthread_exit() in C++ applications. Exit Workaround: avoid using pthread_exit() in C++ applications. Exit
threads by dropping through the end of the thread routine. threads by dropping through the end of the thread routine.
2. Cancellation problems in optimised code 2. Cancellation problems in optimised code
- Milan Gardian - Milan Gardian
This is suspected to be a compiler bug in VC6.0, and also seen in 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 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 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 and Visual C++ 2005 Express Edition Beta2 pass tests\semaphore4.c
(which exposes the bug). (which exposes the bug).
Workaround [rpj - 2 Feb 2002] Workaround [rpj - 2 Feb 2002]
----------------------------- -----------------------------
[Please note: this workaround did not solve a similar problem in [Please note: this workaround did not solve a similar problem in
snapshot-2004-11-03 or later, even though similar symptoms were seen. 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 tests\semaphore4.c fails in that snapshot for the VCE version of the
DLL.] DLL.]
The problem disappears when /Ob0 is used, i.e. /O2 /Ob0 works OK, 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 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. specific about where it's switched off and on by using a pragma.
So the inlining optimisation is interfering with the way that cleanup So the inlining optimisation is interfering with the way that cleanup
handlers are run. It appears to relate to auto-inlining of class methods 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 since this is the only auto inlining that is performed at /O1 optimisation
(functions with the "inline" qualifier are also inlined, but the problem (functions with the "inline" qualifier are also inlined, but the problem
doesn't appear to involve any such functions in the library or testsuite). 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 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 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. it in, say, pthread.h where pthread_cleanup_push defined as a macro.
#pragma inline_depth(0) #pragma inline_depth(0)
pthread_cleanup_push(handlerFunc, (void *) &arg); pthread_cleanup_push(handlerFunc, (void *) &arg);
/* ... */ /* ... */
pthread_cleanup_pop(0); pthread_cleanup_pop(0);
#pragma inline_depth() #pragma inline_depth()
Note the empty () pragma value after the pop macro. This resets depth to the Note the empty () pragma value after the pop macro. This resets depth to the
default. Or you can specify a non-zero depth here. default. Or you can specify a non-zero depth here.
The pragma is also needed (and now used) within the library itself wherever The pragma is also needed (and now used) within the library itself wherever
cleanup handlers are used (condvar.c and rwlock.c). cleanup handlers are used (condvar.c and rwlock.c).
Use of these pragmas allows compiler optimisations /O1 and /O2 to be Use of these pragmas allows compiler optimisations /O1 and /O2 to be
used for either or both the library and applications. used for either or both the library and applications.
Experimenting further, I found that wrapping the actual cleanup handler Experimenting further, I found that wrapping the actual cleanup handler
function with #pragma auto_inline(off|on) does NOT work. function with #pragma auto_inline(off|on) does NOT work.
MSVC6.0 doesn't appear to support the C99 standard's _Pragma directive, MSVC6.0 doesn't appear to support the C99 standard's _Pragma directive,
however, later versions may. This form is embeddable inside #define however, later versions may. This form is embeddable inside #define
macros, which would be ideal because it would mean that it could be added 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 to the push/pop macro definitions in pthread.h and hidden from the
application programmer. application programmer.
[/rpj] [/rpj]
Original problem description Original problem description
---------------------------- ----------------------------
The cancellation (actually, cleanup-after-cancel) tests fail when using VC The cancellation (actually, cleanup-after-cancel) tests fail when using VC
(professional) optimisation switches (/O1 or /O2) in pthreads library. I (professional) optimisation switches (/O1 or /O2) in pthreads library. I
have not investigated which concrete optimisation technique causes this have not investigated which concrete optimisation technique causes this
problem (/Og, /Oi, /Ot, /Oy, /Ob1, /Gs, /Gf, /Gy, etc.), but here is a problem (/Og, /Oi, /Ot, /Oy, /Ob1, /Gs, /Gf, /Gy, etc.), but here is a
summary of builds and corresponding failures: summary of builds and corresponding failures:
* pthreads VSE (optimised tests): OK * pthreads VSE (optimised tests): OK
* pthreads VCE (optimised tests): Failed "cleanup1" test (runtime) * pthreads VCE (optimised tests): Failed "cleanup1" test (runtime)
* pthreads VSE (DLL in CRT, optimised tests): OK * pthreads VSE (DLL in CRT, optimised tests): OK
* pthreads VCE (DLL in CRT, optimised tests): Failed "cleanup1" test * pthreads VCE (DLL in CRT, optimised tests): Failed "cleanup1" test
(runtime) (runtime)
Please note that while in VSE version of the pthreads library the 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 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 VCE version addition of optimisation (/O2 in this case) causes the tests to
fail uniformly - either in "cleanup0" or "cleanup1" test cases. fail uniformly - either in "cleanup0" or "cleanup1" test cases.
Please note that all the tests above use default pthreads DLL (no Please note that all the tests above use default pthreads DLL (no
optimisations, linked with either static or DLL CRT, based on test type). optimisations, linked with either static or DLL CRT, based on test type).
Therefore the problem lies not within the pthreads DLL but within the Therefore the problem lies not within the pthreads DLL but within the
compiled client code (the application using pthreads -> involvement of compiled client code (the application using pthreads -> involvement of
"pthread.h"). "pthread.h").
I think the message of this section is that usage of VCE version of pthreads 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 in applications relying on cancellation/cleanup AND using optimisations for
creation of production code is highly unreliable for the current version of creation of production code is highly unreliable for the current version of
the pthreads library. the pthreads library.
3. The Borland Builder 5.5 version of the library produces memory read exceptions 3. The Borland Builder 5.5 version of the library produces memory read exceptions
in some tests. in some tests.
4. pthread_barrier_wait() can deadlock if the number of potential calling 4. pthread_barrier_wait() can deadlock if the number of potential calling
threads for a particular barrier is greater than the barrier count parameter threads for a particular barrier is greater than the barrier count parameter
given to pthread_barrier_init() for that barrier. given to pthread_barrier_init() for that barrier.
This is due to the very lightweight implementation of pthread-win32 barriers. This is due to the very lightweight implementation of pthread-win32 barriers.
To cope with more than "count" possible waiters, barriers must effectively To cope with more than "count" possible waiters, barriers must effectively
implement all the same safeguards as condition variables, making them much implement all the same safeguards as condition variables, making them much
"heavier" than at present. "heavier" than at present.
The workaround is to ensure that no more than "count" threads attempt to wait The workaround is to ensure that no more than "count" threads attempt to wait
at the barrier. at the barrier.
5. Canceling a thread blocked on pthread_once appears not to work in the MSVC++ 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 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, clues on this at present. All other versions pass this test ok - pthreadsVC.dll,
pthreadsVSE.dll, pthreadsGC.dll and pthreadsGCE.dll. pthreadsVSE.dll, pthreadsGC.dll and pthreadsGCE.dll.

View File

@ -1,129 +1,129 @@
Contributors (in approximate order of appearance) Contributors (in approximate order of appearance)
[See also the ChangeLog file where individuals are [See also the ChangeLog file where individuals are
attributed in log entries. Likewise in the FAQ file.] attributed in log entries. Likewise in the FAQ file.]
Ben Elliston bje at cygnus dot com Ben Elliston bje at cygnus dot com
Initiated the project; Initiated the project;
setup the project infrastructure (CVS, web page, etc.); setup the project infrastructure (CVS, web page, etc.);
early prototype routines. early prototype routines.
Ross Johnson rpj at callisto dot canberra dot edu dot au Ross Johnson rpj at callisto dot canberra dot edu dot au
early prototype routines; early prototype routines;
ongoing project coordination/maintenance; ongoing project coordination/maintenance;
implementation of spin locks and barriers; implementation of spin locks and barriers;
various enhancements; various enhancements;
bug fixes; bug fixes;
documentation; documentation;
testsuite. testsuite.
Robert Colquhoun rjc at trump dot net dot au Robert Colquhoun rjc at trump dot net dot au
Early bug fixes. Early bug fixes.
John E. Bossom John dot Bossom at cognos dot com John E. Bossom John dot Bossom at cognos dot com
Contributed substantial original working implementation; Contributed substantial original working implementation;
bug fixes; bug fixes;
ongoing guidance and standards interpretation. ongoing guidance and standards interpretation.
Anders Norlander anorland at hem2 dot passagen dot se Anders Norlander anorland at hem2 dot passagen dot se
Early enhancements and runtime checking for supported Early enhancements and runtime checking for supported
Win32 routines. Win32 routines.
Tor Lillqvist tml at iki dot fi Tor Lillqvist tml at iki dot fi
General enhancements; General enhancements;
early bug fixes to condition variables. early bug fixes to condition variables.
Scott Lightner scott at curriculum dot com Scott Lightner scott at curriculum dot com
Bug fix. Bug fix.
Kevin Ruland Kevin dot Ruland at anheuser-busch dot com Kevin Ruland Kevin dot Ruland at anheuser-busch dot com
Various bug fixes. Various bug fixes.
Mike Russo miker at eai dot com Mike Russo miker at eai dot com
Bug fix. Bug fix.
Mark E. Armstrong avail at pacbell dot net Mark E. Armstrong avail at pacbell dot net
Bug fixes. Bug fixes.
Lorin Hochstein lmh at xiphos dot ca Lorin Hochstein lmh at xiphos dot ca
general bug fixes; bug fixes to condition variables. general bug fixes; bug fixes to condition variables.
Peter Slacik Peter dot Slacik at tatramed dot sk Peter Slacik Peter dot Slacik at tatramed dot sk
Bug fixes. Bug fixes.
Mumit Khan khan at xraylith dot wisc dot edu Mumit Khan khan at xraylith dot wisc dot edu
Fixes to work with Mingw32. Fixes to work with Mingw32.
Milan Gardian mg at tatramed dot sk Milan Gardian mg at tatramed dot sk
Bug fixes and reports/analyses of obscure problems. Bug fixes and reports/analyses of obscure problems.
Aurelio Medina aureliom at crt dot com Aurelio Medina aureliom at crt dot com
First implementation of read-write locks. First implementation of read-write locks.
Graham Dumpleton Graham dot Dumpleton at ra dot pad dot otc dot telstra dot com dot au Graham Dumpleton Graham dot Dumpleton at ra dot pad dot otc dot telstra dot com dot au
Bug fix in condition variables. Bug fix in condition variables.
Tristan Savatier tristan at mpegtv dot com Tristan Savatier tristan at mpegtv dot com
WinCE port. WinCE port.
Erik Hensema erik at hensema dot xs4all dot nl Erik Hensema erik at hensema dot xs4all dot nl
Bug fixes. Bug fixes.
Rich Peters rpeters at micro-magic dot com Rich Peters rpeters at micro-magic dot com
Todd Owen towen at lucidcalm dot dropbear dot id dot au Todd Owen towen at lucidcalm dot dropbear dot id dot au
Bug fixes to dll loading. Bug fixes to dll loading.
Jason Nye jnye at nbnet dot nb dot ca Jason Nye jnye at nbnet dot nb dot ca
Implementation of async cancelation. Implementation of async cancelation.
Fred Forester fforest at eticomm dot net Fred Forester fforest at eticomm dot net
Kevin D. Clark kclark at cabletron dot com Kevin D. Clark kclark at cabletron dot com
David Baggett dmb at itasoftware dot com David Baggett dmb at itasoftware dot com
Bug fixes. Bug fixes.
Paul Redondo paul at matchvision dot com Paul Redondo paul at matchvision dot com
Scott McCaskill scott at 3dfx dot com Scott McCaskill scott at 3dfx dot com
Bug fixes. Bug fixes.
Jef Gearhart jgearhart at tpssys dot com Jef Gearhart jgearhart at tpssys dot com
Bug fix. Bug fix.
Arthur Kantor akantor at bexusa dot com Arthur Kantor akantor at bexusa dot com
Mutex enhancements. Mutex enhancements.
Steven Reddie smr at essemer dot com dot au Steven Reddie smr at essemer dot com dot au
Bug fix. Bug fix.
Alexander Terekhov TEREKHOV at de dot ibm dot com Alexander Terekhov TEREKHOV at de dot ibm dot com
Re-implemented and improved read-write locks; Re-implemented and improved read-write locks;
(with Louis Thomas) re-implemented and improved (with Louis Thomas) re-implemented and improved
condition variables; condition variables;
enhancements to semaphores; enhancements to semaphores;
enhancements to mutexes; enhancements to mutexes;
new mutex implementation in 'futex' style; new mutex implementation in 'futex' style;
suggested a robust implementation of pthread_once suggested a robust implementation of pthread_once
similar to that implemented by V.Kliathcko; similar to that implemented by V.Kliathcko;
system clock change handling re CV timeouts; system clock change handling re CV timeouts;
bug fixes. bug fixes.
Thomas Pfaff tpfaff at gmx dot net Thomas Pfaff tpfaff at gmx dot net
Changes to make C version usable with C++ applications; Changes to make C version usable with C++ applications;
re-implemented mutex routines to avoid Win32 mutexes re-implemented mutex routines to avoid Win32 mutexes
and TryEnterCriticalSection; and TryEnterCriticalSection;
procedure to fix Mingw32 thread-safety issues. procedure to fix Mingw32 thread-safety issues.
Franco Bez franco dot bez at gmx dot de Franco Bez franco dot bez at gmx dot de
procedure to fix Mingw32 thread-safety issues. procedure to fix Mingw32 thread-safety issues.
Louis Thomas lthomas at arbitrade dot com Louis Thomas lthomas at arbitrade dot com
(with Alexander Terekhov) re-implemented and improved (with Alexander Terekhov) re-implemented and improved
condition variables. condition variables.
David Korn dgk at research dot att dot com David Korn dgk at research dot att dot com
Ported to UWIN. Ported to UWIN.
Phil Frisbie, Jr. phil at hawksoft dot com Phil Frisbie, Jr. phil at hawksoft dot com
Bug fix. Bug fix.
Ralf Brese Ralf dot Brese at pdb4 dot siemens dot de Ralf Brese Ralf dot Brese at pdb4 dot siemens dot de
Bug fix. Bug fix.
prionx at juno dot com prionx at juno dot com prionx at juno dot com prionx at juno dot com
Bug fixes. Bug fixes.
Max Woodbury mtew at cds dot duke dot edu Max Woodbury mtew at cds dot duke dot edu
POSIX versioning conditionals; POSIX versioning conditionals;
reduced namespace pollution; reduced namespace pollution;
idea to separate routines to reduce statically idea to separate routines to reduce statically
linked image sizes. linked image sizes.
Rob Fanner rfanner at stonethree dot com Rob Fanner rfanner at stonethree dot com
Bug fix. Bug fix.
Michael Johnson michaelj at maine dot rr dot com Michael Johnson michaelj at maine dot rr dot com
Bug fix. Bug fix.
Nicolas Barry boozai at yahoo dot com Nicolas Barry boozai at yahoo dot com
Bug fixes. Bug fixes.
Piet van Bruggen pietvb at newbridges dot nl Piet van Bruggen pietvb at newbridges dot nl
Bug fix. Bug fix.
Makoto Kato raven at oldskool dot jp Makoto Kato raven at oldskool dot jp
AMD64 port. AMD64 port.
Panagiotis E. Hadjidoukas peh at hpclab dot ceid dot upatras dot gr Panagiotis E. Hadjidoukas peh at hpclab dot ceid dot upatras dot gr
Contributed the QueueUserAPCEx package which Contributed the QueueUserAPCEx package which
makes preemptive async cancelation possible. makes preemptive async cancelation possible.
Will Bryant will dot bryant at ecosm dot com Will Bryant will dot bryant at ecosm dot com
Borland compiler patch and makefile. Borland compiler patch and makefile.
Anuj Goyal anuj dot goyal at gmail dot com Anuj Goyal anuj dot goyal at gmail dot com
Port to Digital Mars compiler. Port to Digital Mars compiler.
Gottlob Frege gottlobfrege at gmail dot com Gottlob Frege gottlobfrege at gmail dot com
re-implemented pthread_once (version 2) re-implemented pthread_once (version 2)
(pthread_once cancellation added by rpj). (pthread_once cancellation added by rpj).
Vladimir Kliatchko vladimir at kliatchko dot com Vladimir Kliatchko vladimir at kliatchko dot com
reimplemented pthread_once with the same form reimplemented pthread_once with the same form
as described by A.Terekhov (later version 2); as described by A.Terekhov (later version 2);
implementation of MCS (Mellor-Crummey/Scott) locks. implementation of MCS (Mellor-Crummey/Scott) locks.

View File

@ -1,150 +1,150 @@
pthreads-win32 - a POSIX threads library for Microsoft Windows pthreads-win32 - a POSIX threads library for Microsoft Windows
This file is Copyrighted This file is Copyrighted
------------------------ ------------------------
This file is covered under the following Copyright: This file is covered under the following Copyright:
Copyright (C) 2001,2006 Ross P. Johnson Copyright (C) 2001,2006 Ross P. Johnson
All rights reserved. All rights reserved.
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
Pthreads-win32 is covered by the GNU Lesser General Public License Pthreads-win32 is covered by the GNU Lesser General Public License
------------------------------------------------------------------ ------------------------------------------------------------------
Pthreads-win32 is open software; you can redistribute it and/or Pthreads-win32 is open software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License modify it under the terms of the GNU Lesser General Public License
as published by the Free Software Foundation version 2.1 of the as published by the Free Software Foundation version 2.1 of the
License. License.
Pthreads-win32 is several binary link libraries, several modules, Pthreads-win32 is several binary link libraries, several modules,
associated interface definition files and scripts used to control associated interface definition files and scripts used to control
its compilation and installation. its compilation and installation.
Pthreads-win32 is distributed in the hope that it will be useful, Pthreads-win32 is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details. GNU Lesser General Public License for more details.
A copy of the GNU Lesser General Public License is distributed with A copy of the GNU Lesser General Public License is distributed with
pthreads-win32 under the filename: pthreads-win32 under the filename:
COPYING.LIB COPYING.LIB
You should have received a copy of the version 2.1 GNU Lesser General You should have received a copy of the version 2.1 GNU Lesser General
Public License with pthreads-win32; if not, write to: Public License with pthreads-win32; if not, write to:
Free Software Foundation, Inc. Free Software Foundation, Inc.
59 Temple Place 59 Temple Place
Suite 330 Suite 330
Boston, MA 02111-1307 Boston, MA 02111-1307
USA USA
The contact addresses for pthreads-win32 is as follows: The contact addresses for pthreads-win32 is as follows:
Web: http://sources.redhat.com/pthreads-win32 Web: http://sources.redhat.com/pthreads-win32
Email: Ross Johnson Email: Ross Johnson
Please use: Firstname.Lastname@homemail.com.au Please use: Firstname.Lastname@homemail.com.au
Pthreads-win32 copyrights and exception files Pthreads-win32 copyrights and exception files
--------------------------------------------- ---------------------------------------------
With the exception of the files listed below, Pthreads-win32 With the exception of the files listed below, Pthreads-win32
is covered under the following GNU Lesser General Public License is covered under the following GNU Lesser General Public License
Copyrights: Copyrights:
Pthreads-win32 - POSIX Threads Library for Win32 Pthreads-win32 - POSIX Threads Library for Win32
Copyright(C) 1998 John E. Bossom Copyright(C) 1998 John E. Bossom
Copyright(C) 1999,2006 Pthreads-win32 contributors Copyright(C) 1999,2006 Pthreads-win32 contributors
The current list of contributors is contained The current list of contributors is contained
in the file CONTRIBUTORS included with the source in the file CONTRIBUTORS included with the source
code distribution. The current list of CONTRIBUTORS code distribution. The current list of CONTRIBUTORS
can also be seen at the following WWW location: can also be seen at the following WWW location:
http://sources.redhat.com/pthreads-win32/contributors.html http://sources.redhat.com/pthreads-win32/contributors.html
Contact Email: Ross Johnson Contact Email: Ross Johnson
Please use: Firstname.Lastname@homemail.com.au Please use: Firstname.Lastname@homemail.com.au
These files are not covered under one of the Copyrights listed above: These files are not covered under one of the Copyrights listed above:
COPYING COPYING
COPYING.LIB COPYING.LIB
tests/rwlock7.c tests/rwlock7.c
This file, COPYING, is distributed under the Copyright found at the This file, COPYING, is distributed under the Copyright found at the
top of this file. It is important to note that you may distribute 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. 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 The file COPYING.LIB, which contains a copy of the version 2.1
GNU Lesser General Public License, is itself copyrighted by the GNU Lesser General Public License, is itself copyrighted by the
Free Software Foundation, Inc. Please note that the Free Software Free Software Foundation, Inc. Please note that the Free Software
Foundation, Inc. does NOT have a copyright over Pthreads-win32, Foundation, Inc. does NOT have a copyright over Pthreads-win32,
only the COPYING.LIB that is supplied with pthreads-win32. only the COPYING.LIB that is supplied with pthreads-win32.
The file tests/rwlock7.c is derived from code written by The file tests/rwlock7.c is derived from code written by
Dave Butenhof for his book 'Programming With POSIX(R) Threads'. Dave Butenhof for his book 'Programming With POSIX(R) Threads'.
The original code was obtained by free download from his website The original code was obtained by free download from his website
http://home.earthlink.net/~anneart/family/Threads/source.html http://home.earthlink.net/~anneart/family/Threads/source.html
and did not contain a copyright or author notice. It is assumed to and did not contain a copyright or author notice. It is assumed to
be freely distributable. be freely distributable.
In all cases one may use and distribute these exception files freely. In all cases one may use and distribute these exception files freely.
And because one may freely distribute the LGPL covered files, the And because one may freely distribute the LGPL covered files, the
entire pthreads-win32 source may be freely used and distributed. entire pthreads-win32 source may be freely used and distributed.
General Copyleft and License info General Copyleft and License info
--------------------------------- ---------------------------------
For general information on Copylefts, see: For general information on Copylefts, see:
http://www.gnu.org/copyleft/ http://www.gnu.org/copyleft/
For information on GNU Lesser General Public Licenses, see: For information on GNU Lesser General Public Licenses, see:
http://www.gnu.org/copyleft/lesser.html http://www.gnu.org/copyleft/lesser.html
http://www.gnu.org/copyleft/lesser.txt http://www.gnu.org/copyleft/lesser.txt
Why pthreads-win32 did not use the GNU General Public License Why pthreads-win32 did not use the GNU General Public License
------------------------------------------------------------- -------------------------------------------------------------
The goal of the pthreads-win32 project has been to The goal of the pthreads-win32 project has been to
provide a quality and complete implementation of the POSIX provide a quality and complete implementation of the POSIX
threads API for Microsoft Windows within the limits imposed threads API for Microsoft Windows within the limits imposed
by virtue of it being a stand-alone library and not by virtue of it being a stand-alone library and not
linked directly to other POSIX compliant libraries. For linked directly to other POSIX compliant libraries. For
example, some functions and features, such as those based example, some functions and features, such as those based
on POSIX signals, are missing. on POSIX signals, are missing.
Pthreads-win32 is a library, available in several different Pthreads-win32 is a library, available in several different
versions depending on supported compilers, and may be used versions depending on supported compilers, and may be used
as a dynamically linked module or a statically linked set of as a dynamically linked module or a statically linked set of
binary modules. It is not an application on it's own. binary modules. It is not an application on it's own.
It was fully intended that pthreads-win32 be usable with It was fully intended that pthreads-win32 be usable with
commercial software not covered by either the GPL or the LGPL commercial software not covered by either the GPL or the LGPL
licenses. Pthreads-win32 has many contributors to it's licenses. Pthreads-win32 has many contributors to it's
code base, many of whom have done so because they have code base, many of whom have done so because they have
used the library in commercial or proprietry software used the library in commercial or proprietry software
projects. projects.
Releasing pthreads-win32 under the LGPL ensures that the Releasing pthreads-win32 under the LGPL ensures that the
library can be used widely, while at the same time ensures library can be used widely, while at the same time ensures
that bug fixes and improvements to the pthreads-win32 code that bug fixes and improvements to the pthreads-win32 code
itself is returned to benefit all current and future users itself is returned to benefit all current and future users
of the library. of the library.
Although pthreads-win32 makes it possible for applications Although pthreads-win32 makes it possible for applications
that use POSIX threads to be ported to Win32 platforms, the that use POSIX threads to be ported to Win32 platforms, the
broader goal of the project is to encourage the use of open broader goal of the project is to encourage the use of open
standards, and in particular, to make it just a little easier standards, and in particular, to make it just a little easier
for developers writing Win32 applications to consider for developers writing Win32 applications to consider
widening the potential market for their products. widening the potential market for their products.

View File

@ -1,403 +1,403 @@
========================================= =========================================
PTHREADS-WIN32 Frequently Asked Questions PTHREADS-WIN32 Frequently Asked Questions
========================================= =========================================
INDEX INDEX
----- -----
Q 1 What is it? Q 1 What is it?
Q 2 Which of the several dll versions do I use? Q 2 Which of the several dll versions do I use?
or, or,
What are all these pthread*.dll and pthread*.lib files? What are all these pthread*.dll and pthread*.lib files?
Q 3 What is the library naming convention? Q 3 What is the library naming convention?
Q 4 Cleanup code default style or: it used to work when I built Q 4 Cleanup code default style or: it used to work when I built
the library myself, but now it doesn't - why? the library myself, but now it doesn't - why?
Q 5 Why is the default library version now less exception-friendly? 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 6 Should I use Cygwin or Mingw32 as a development environment?
Q 7 Now that pthreads-win32 builds under Mingw32, why do I get Q 7 Now that pthreads-win32 builds under Mingw32, why do I get
memory access violations (segfaults)? memory access violations (segfaults)?
Q 8 How do I use pthread.dll for Win32 (Visual C++ 5.0) Q 8 How do I use pthread.dll for Win32 (Visual C++ 5.0)
Q 9 Cancelation doesn't work for me, why? Q 9 Cancelation doesn't work for me, why?
Q 10 How do I generate pthreadGCE.dll and libpthreadw32.a for use Q 10 How do I generate pthreadGCE.dll and libpthreadw32.a for use
with Mingw32? with Mingw32?
============================================================================= =============================================================================
Q 1 What is it? Q 1 What is it?
--- ---
Pthreads-win32 is an Open Source Software implementation of the Pthreads-win32 is an Open Source Software implementation of the
Threads component of the POSIX 1003.1c 1995 Standard for Microsoft's Threads component of the POSIX 1003.1c 1995 Standard for Microsoft's
Win32 environment. Some functions from POSIX 1003.1b are also Win32 environment. Some functions from POSIX 1003.1b are also
supported including semaphores. Other related functions include supported including semaphores. Other related functions include
the set of read-write lock functions. The library also supports the set of read-write lock functions. The library also supports
some of the functionality of the Open Group's Single Unix some of the functionality of the Open Group's Single Unix
specification, version 2, namely mutex types. specification, version 2, namely mutex types.
See the file "ANNOUNCE" for more information including standards See the file "ANNOUNCE" for more information including standards
conformance details and list of supported routines. conformance details and list of supported routines.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Q 2 Which of the several dll versions do I use? Q 2 Which of the several dll versions do I use?
--- or, --- or,
What are all these pthread*.dll and pthread*.lib files? What are all these pthread*.dll and pthread*.lib files?
Simply, you only use one of them, but you need to choose carefully. 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 The most important choice you need to make is whether to use a
version that uses exceptions internally, or not (there are versions version that uses exceptions internally, or not (there are versions
of the library that use exceptions as part of the thread of the library that use exceptions as part of the thread
cancelation and cleanup implementation, and one that uses cancelation and cleanup implementation, and one that uses
setjmp/longjmp instead). setjmp/longjmp instead).
There is some contension amongst POSIX threads experts as There is some contension amongst POSIX threads experts as
to how POSIX threads cancelation and exit should work to how POSIX threads cancelation and exit should work
with languages that include exceptions and handlers, e.g. with languages that include exceptions and handlers, e.g.
C++ and even C (Microsoft's Structured Exceptions). C++ and even C (Microsoft's Structured Exceptions).
The issue is: should cancelation of a thread in, say, The issue is: should cancelation of a thread in, say,
a C++ application cause object destructors and C++ exception a C++ application cause object destructors and C++ exception
handlers to be invoked as the stack unwinds during thread handlers to be invoked as the stack unwinds during thread
exit, or not? exit, or not?
There seems to be more opinion in favour of using the There seems to be more opinion in favour of using the
standard C version of the library (no EH) with C++ applications standard C version of the library (no EH) with C++ applications
since this appears to be the assumption commercial pthreads since this appears to be the assumption commercial pthreads
implementations make. Therefore, if you use an EH version implementations make. Therefore, if you use an EH version
of pthreads-win32 then you may be under the illusion that of pthreads-win32 then you may be under the illusion that
your application will be portable, when in fact it is likely to your application will be portable, when in fact it is likely to
behave very differently linked with other pthreads libraries. behave very differently linked with other pthreads libraries.
Now you may be asking: why have you kept the EH versions of Now you may be asking: why have you kept the EH versions of
the library? the library?
There are a couple of reasons: There are a couple of reasons:
- there is division amongst the experts and so the code may - there is division amongst the experts and so the code may
be needed in the future. (Yes, it's in the repository and we be needed in the future. (Yes, it's in the repository and we
can get it out anytime in the future, but ...) can get it out anytime in the future, but ...)
- pthreads-win32 is one of the few implementations, and possibly - pthreads-win32 is one of the few implementations, and possibly
the only freely available one, that has EH versions. It may be the only freely available one, that has EH versions. It may be
useful to people who want to play with or study application useful to people who want to play with or study application
behaviour under these conditions. behaviour under these conditions.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Q 3 What is the library naming convention? Q 3 What is the library naming convention?
--- ---
Because the library is being built using various exception Because the library is being built using various exception
handling schemes and compilers - and because the library handling schemes and compilers - and because the library
may not work reliably if these are mixed in an application, may not work reliably if these are mixed in an application,
each different version of the library has it's own name. each different version of the library has it's own name.
Note 1: the incompatibility is really between EH implementations Note 1: the incompatibility is really between EH implementations
of the different compilers. It should be possible to use the of the different compilers. It should be possible to use the
standard C version from either compiler with C++ applications standard C version from either compiler with C++ applications
built with a different compiler. If you use an EH version of built with a different compiler. If you use an EH version of
the library, then you must use the same compiler for the the library, then you must use the same compiler for the
application. This is another complication and dependency that application. This is another complication and dependency that
can be avoided by using only the standard C library version. can be avoided by using only the standard C library version.
Note 2: if you use a standard C pthread*.dll with a C++ Note 2: if you use a standard C pthread*.dll with a C++
application, then any functions that you define that are application, then any functions that you define that are
intended to be called via pthread_cleanup_push() must be intended to be called via pthread_cleanup_push() must be
__cdecl. __cdecl.
Note 3: the intention is to also name either the VC or GC Note 3: the intention is to also name either the VC or GC
version (it should be arbitrary) as pthread.dll, including version (it should be arbitrary) as pthread.dll, including
pthread.lib and libpthread.a as appropriate. pthread.lib and libpthread.a as appropriate.
In general: In general:
pthread[VG]{SE,CE,C}.dll pthread[VG]{SE,CE,C}.dll
pthread[VG]{SE,CE,C}.lib pthread[VG]{SE,CE,C}.lib
where: where:
[VG] indicates the compiler [VG] indicates the compiler
V - MS VC V - MS VC
G - GNU C G - GNU C
{SE,CE,C} indicates the exception handling scheme {SE,CE,C} indicates the exception handling scheme
SE - Structured EH SE - Structured EH
CE - C++ EH CE - C++ EH
C - no exceptions - uses setjmp/longjmp C - no exceptions - uses setjmp/longjmp
For example: For example:
pthreadVSE.dll (MSVC/SEH) pthreadVSE.dll (MSVC/SEH)
pthreadGCE.dll (GNUC/C++ EH) pthreadGCE.dll (GNUC/C++ EH)
pthreadGC.dll (GNUC/not dependent on exceptions) pthreadGC.dll (GNUC/not dependent on exceptions)
The GNU library archive file names have changed to: The GNU library archive file names have changed to:
libpthreadGCE.a libpthreadGCE.a
libpthreadGC.a libpthreadGC.a
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Q 4 Cleanup code default style or: it used to work when I built Q 4 Cleanup code default style or: it used to work when I built
--- the library myself, but now it doesn't - why? --- the library myself, but now it doesn't - why?
Up to and including snapshot 2001-07-12, if not defined, the cleanup Up to and including snapshot 2001-07-12, if not defined, the cleanup
style was determined automatically from the compiler used, and one style was determined automatically from the compiler used, and one
of the following was defined accordingly: of the following was defined accordingly:
__CLEANUP_SEH MSVC only __CLEANUP_SEH MSVC only
__CLEANUP_CXX C++, including MSVC++, GNU G++ __CLEANUP_CXX C++, including MSVC++, GNU G++
__CLEANUP_C C, including GNU GCC, not MSVC __CLEANUP_C C, including GNU GCC, not MSVC
These defines determine the style of cleanup (see pthread.h) and, These defines determine the style of cleanup (see pthread.h) and,
most importantly, the way that cancelation and thread exit (via most importantly, the way that cancelation and thread exit (via
pthread_exit) is performed (see the routine ptw32_throw() in private.c). pthread_exit) is performed (see the routine ptw32_throw() in private.c).
In short, the exceptions versions of the library throw an exception In short, the exceptions versions of the library throw an exception
when a thread is canceled or exits (via pthread_exit()), which is when a thread is canceled or exits (via pthread_exit()), which is
caught by a handler in the thread startup routine, so that the caught by a handler in the thread startup routine, so that the
the correct stack unwinding occurs regardless of where the thread the correct stack unwinding occurs regardless of where the thread
is when it's canceled or exits via pthread_exit(). is when it's canceled or exits via pthread_exit().
After snapshot 2001-07-12, unless your build explicitly defines (e.g. After snapshot 2001-07-12, unless your build explicitly defines (e.g.
via a compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then via a compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then
the build now ALWAYS defaults to __CLEANUP_C style cleanup. This style the build now ALWAYS defaults to __CLEANUP_C style cleanup. This style
uses setjmp/longjmp in the cancelation and pthread_exit implementations, uses setjmp/longjmp in the cancelation and pthread_exit implementations,
and therefore won't do stack unwinding even when linked to applications 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 that have it (e.g. C++ apps). This is for consistency with most/all
commercial Unix POSIX threads implementations. commercial Unix POSIX threads implementations.
Although it was not clearly documented before, it is still necessary to Although it was not clearly documented before, it is still necessary to
build your application using the same __CLEANUP_* define as was build your application using the same __CLEANUP_* define as was
used for the version of the library that you link with, so that the 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 correct parts of pthread.h are included. That is, the possible
defines require the following library versions: defines require the following library versions:
__CLEANUP_SEH pthreadVSE.dll __CLEANUP_SEH pthreadVSE.dll
__CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll
__CLEANUP_C pthreadVC.dll or pthreadGC.dll __CLEANUP_C pthreadVC.dll or pthreadGC.dll
THE POINT OF ALL THIS IS: if you have not been defining one of these 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 explicitly, then the defaults have been set according to the compiler
and language you are using, as described at the top of this and language you are using, as described at the top of this
section. section.
THIS NOW CHANGES, as has been explained above. For example: THIS NOW CHANGES, as has been explained above. For example:
If you were building your application with MSVC++ i.e. using C++ If you were building your application with MSVC++ i.e. using C++
exceptions (rather than SEH) and not explicitly defining one of exceptions (rather than SEH) and not explicitly defining one of
__CLEANUP_*, then __CLEANUP_C++ was defined for you in pthread.h. __CLEANUP_*, then __CLEANUP_C++ was defined for you in pthread.h.
You should have been linking with pthreadVCE.dll, which does You should have been linking with pthreadVCE.dll, which does
stack unwinding. stack unwinding.
If you now build your application as you had before, pthread.h will now 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 set __CLEANUP_C as the default style, and you will need to link
with pthreadVC.dll. Stack unwinding will now NOT occur when a with pthreadVC.dll. Stack unwinding will now NOT occur when a
thread is canceled, nor when the thread calls pthread_exit(). thread is canceled, nor when the thread calls pthread_exit().
Your application will now most likely behave differently to previous Your application will now most likely behave differently to previous
versions, and in non-obvious ways. Most likely is that local versions, and in non-obvious ways. Most likely is that local
objects may not be destroyed or cleaned up after a thread objects may not be destroyed or cleaned up after a thread
is canceled. is canceled.
If you want the same behaviour as before, then you must now define If you want the same behaviour as before, then you must now define
__CLEANUP_C++ explicitly using a compiler option and link with __CLEANUP_C++ explicitly using a compiler option and link with
pthreadVCE.dll as you did before. pthreadVCE.dll as you did before.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Q 5 Why is the default library version now less exception-friendly? Q 5 Why is the default library version now less exception-friendly?
--- ---
Because most commercial Unix POSIX threads implementations don't allow you to 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.) 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 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 and non-portable. We still provide the choice but you must now consciously
make it. make it.
WHY NOT REMOVE THE EXCEPTIONS VERSIONS OF THE LIBRARY ALTOGETHER? WHY NOT REMOVE THE EXCEPTIONS VERSIONS OF THE LIBRARY ALTOGETHER?
There are a few reasons: There are a few reasons:
- because there are well respected POSIX threads people who believe - because there are well respected POSIX threads people who believe
that POSIX threads implementations should be exceptions-aware and that POSIX threads implementations should be exceptions-aware and
do the expected thing in that context. (There are equally respected do the expected thing in that context. (There are equally respected
people who believe it should not be easily accessible, if it's there people who believe it should not be easily accessible, if it's there
at all.) at all.)
- because pthreads-win32 is one of the few implementations that has - because pthreads-win32 is one of the few implementations that has
the choice, perhaps the only freely available one, and so offers the choice, perhaps the only freely available one, and so offers
a laboratory to people who may want to explore the effects; a laboratory to people who may want to explore the effects;
- although the code will always be around somewhere for anyone who - 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 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. nearly as visible to people who may have a use for it.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Q 6 Should I use Cygwin or Mingw32 as a development environment? Q 6 Should I use Cygwin or Mingw32 as a development environment?
--- ---
Important: see Q7 also. Important: see Q7 also.
Use Mingw32 with the MSVCRT library to build applications that use Use Mingw32 with the MSVCRT library to build applications that use
the pthreads DLL. the pthreads DLL.
Cygwin's own internal support for POSIX threads is growing. Cygwin's own internal support for POSIX threads is growing.
Consult that project's documentation for more information. Consult that project's documentation for more information.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Q 7 Now that pthreads-win32 builds under Mingw32, why do I get Q 7 Now that pthreads-win32 builds under Mingw32, why do I get
--- memory access violations (segfaults)? --- memory access violations (segfaults)?
The latest Mingw32 package has thread-safe exception handling (see Q10). The latest Mingw32 package has thread-safe exception handling (see Q10).
Also, see Q6 above. Also, see Q6 above.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Q 8 How do I use pthread.dll for Win32 (Visual C++ 5.0) 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 > 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. > 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 > 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)? > direct me to a resource(s) where I can acquire such information)?
> >
> Thank you, > Thank you,
> >
You should have a .dll, .lib, .def, and three .h files. It is recommended 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 that you use pthreadVC.dll, rather than pthreadVCE.dll or pthreadVSE.dll
(see Q2 above). (see Q2 above).
The .dll can go in any directory listed in your PATH environment The .dll can go in any directory listed in your PATH environment
variable, so putting it into C:\WINDOWS should work. variable, so putting it into C:\WINDOWS should work.
The .lib file can go in any directory listed in your LIB environment The .lib file can go in any directory listed in your LIB environment
variable. variable.
The .h files can go in any directory listed in your INCLUDE The .h files can go in any directory listed in your INCLUDE
environment variable. environment variable.
Or you might prefer to put the .lib and .h files into a new directory 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 and add its path to LIB and INCLUDE. You can probably do this easiest
by editing the file:- by editing the file:-
C:\Program Files\DevStudio\vc\bin\vcvars32.bat C:\Program Files\DevStudio\vc\bin\vcvars32.bat
The .def file isn't used by anything in the pre-compiled version but The .def file isn't used by anything in the pre-compiled version but
is included for information. is included for information.
Cheers. Cheers.
Ross Ross
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Q 9 Cancelation doesn't work for me, why? Q 9 Cancelation doesn't work for me, why?
--- ---
> I'm investigating a problem regarding thread cancelation. The thread I want > I'm investigating a problem regarding thread cancelation. The thread I want
> to cancel has PTHREAD_CANCEL_ASYNCHRONOUS, however, this piece of code > to cancel has PTHREAD_CANCEL_ASYNCHRONOUS, however, this piece of code
> blocks on the join(): > blocks on the join():
> >
> if ((retv = Pthread_cancel( recvThread )) == 0) > if ((retv = Pthread_cancel( recvThread )) == 0)
> { > {
> retv = Pthread_join( recvThread, 0 ); > retv = Pthread_join( recvThread, 0 );
> } > }
> >
> Pthread_* are just macro's; they call pthread_*. > Pthread_* are just macro's; they call pthread_*.
> >
> The thread recvThread seems to block on a select() call. It doesn't get > The thread recvThread seems to block on a select() call. It doesn't get
> cancelled. > cancelled.
> >
> Two questions: > Two questions:
> >
> 1) is this normal behaviour? > 1) is this normal behaviour?
> >
> 2) if not, how does the cancel mechanism work? I'm not very familliar to > 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 > win32 programming, so I don't really understand how the *Event() family of
> calls work. > calls work.
The answer to your first question is, normal POSIX behaviour would The answer to your first question is, normal POSIX behaviour would
be to asynchronously cancel the thread. However, even that doesn't be to asynchronously cancel the thread. However, even that doesn't
guarantee cancelation as the standard only says it should be guarantee cancelation as the standard only says it should be
cancelled as soon as possible. cancelled as soon as possible.
Snapshot 99-11-02 or earlier only partially supports asynchronous cancellation. Snapshot 99-11-02 or earlier only partially supports asynchronous cancellation.
Snapshots since then simulate async cancelation by poking the address of Snapshots since then simulate async cancelation by poking the address of
a cancelation routine into the PC of the threads context. This requires 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 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 proceed. This is not true async cancelation, but it is as close as we've
been able to get to it. been able to get to it.
If the thread you're trying to cancel is blocked (for instance, it could be 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 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, (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 pthreads-win32 from snapshot 2004-05-16 can automatically recognise and use the
QueueUserAPCEx package by Panagiotis E. Hadjidoukas. This package is available QueueUserAPCEx package by Panagiotis E. Hadjidoukas. This package is available
from the pthreads-win32 ftp site and is included in the pthreads-win32 from the pthreads-win32 ftp site and is included in the pthreads-win32
self-unpacking zip from 2004-05-16 onwards. self-unpacking zip from 2004-05-16 onwards.
Using deferred cancelation would normally be the way to go, however, Using deferred cancelation would normally be the way to go, however,
even though the POSIX threads standard lists a number of C library even though the POSIX threads standard lists a number of C library
functions that are defined as deferred cancelation points, there is functions that are defined as deferred cancelation points, there is
no hookup between those which are provided by Windows and the no hookup between those which are provided by Windows and the
pthreads-win32 library. pthreads-win32 library.
Incidently, it's worth noting for code portability that the older POSIX Incidently, it's worth noting for code portability that the older POSIX
threads standards cancelation point lists didn't include "select" because 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 (as I read in Butenhof) it wasn't part of POSIX. However, it does appear in
the SUSV3. the SUSV3.
Effectively, the only mandatory cancelation points that pthreads-win32 Effectively, the only mandatory cancelation points that pthreads-win32
recognises are those the library implements itself, ie. recognises are those the library implements itself, ie.
pthread_testcancel pthread_testcancel
pthread_cond_wait pthread_cond_wait
pthread_cond_timedwait pthread_cond_timedwait
pthread_join pthread_join
sem_wait sem_wait
sem_timedwait sem_timedwait
pthread_delay_np pthread_delay_np
The following routines from the non-mandatory list in SUSV3 are The following routines from the non-mandatory list in SUSV3 are
cancelation points in pthreads-win32: cancelation points in pthreads-win32:
pthread_rwlock_wrlock pthread_rwlock_wrlock
pthread_rwlock_timedwrlock pthread_rwlock_timedwrlock
The following routines from the non-mandatory list in SUSV3 are not The following routines from the non-mandatory list in SUSV3 are not
cancelation points in pthreads-win32: cancelation points in pthreads-win32:
pthread_rwlock_rdlock pthread_rwlock_rdlock
pthread_rwlock_timedrdlock pthread_rwlock_timedrdlock
Pthreads-win32 also provides two functions that allow you to create Pthreads-win32 also provides two functions that allow you to create
cancelation points within your application, but only for cases where cancelation points within your application, but only for cases where
a thread is going to block on a Win32 handle. These are: a thread is going to block on a Win32 handle. These are:
pthreadCancelableWait(HANDLE waitHandle) /* Infinite wait */ pthreadCancelableWait(HANDLE waitHandle) /* Infinite wait */
pthreadCancelableTimedWait(HANDLE waitHandle, DWORD timeout) pthreadCancelableTimedWait(HANDLE waitHandle, DWORD timeout)
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Q 10 How do I create thread-safe applications using Q 10 How do I create thread-safe applications using
---- pthreadGCE.dll, libpthreadw32.a and Mingw32? ---- pthreadGCE.dll, libpthreadw32.a and Mingw32?
This should not be a problem with recent versions of MinGW32. This should not be a problem with recent versions of MinGW32.
For early versions, see Thomas Pfaff's email at: For early versions, see Thomas Pfaff's email at:
http://sources.redhat.com/ml/pthreads-win32/2002/msg00000.html http://sources.redhat.com/ml/pthreads-win32/2002/msg00000.html
------------------------------------------------------------------------------ ------------------------------------------------------------------------------

View File

@ -1,4 +1,4 @@
CVS Repository maintainers CVS Repository maintainers
Ross Johnson rpj@ise.canberra.edu.au Ross Johnson rpj@ise.canberra.edu.au
Ben Elliston bje@cygnus.com Ben Elliston bje@cygnus.com

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,20 @@
----------------------------------- -----------------------------------
-- Air's Notes on Using PThreads -- -- Air's Notes on Using PThreads --
----------------------------------- -----------------------------------
The official name of the DLL is "w32pthreads.dll" -- I use the prefix to indicate with 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 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 for details); just in case pthreads-win32 dlls in another universe were to be conflicting
interests. interests.
I created a subfolder for pthreads' publically exposed header files, since "config.h" was I created a subfolder for pthreads' publically exposed header files, since "config.h" was
rather brutal include file namespace pollution. >_< rather brutal include file namespace pollution. >_<
Important: pthread_cond is an inherently flawed concept, and is quite incredibly slow 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 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! 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 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 be little or no reason to have to use those within the context of a high performance app
like Pcsx2. like Pcsx2.

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
Things that aren't done yet Things that aren't done yet
--------------------------- ---------------------------
1. Implement PTHREAD_PROCESS_SHARED for semaphores, mutexes, 1. Implement PTHREAD_PROCESS_SHARED for semaphores, mutexes,
condition variables, read/write locks, barriers. condition variables, read/write locks, barriers.

View File

@ -1,21 +1,21 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" /> <ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup> <PropertyGroup>
<_PropertySheetDisplayName>pthreads</_PropertySheetDisplayName> <_PropertySheetDisplayName>pthreads</_PropertySheetDisplayName>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup> <ItemDefinitionGroup>
<Link> <Link>
<AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>.\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>.\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile>
<ExceptionHandling>Async</ExceptionHandling> <ExceptionHandling>Async</ExceptionHandling>
</ClCompile> </ClCompile>
<Lib /> <Lib />
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup /> <ItemGroup />
</Project> </Project>

File diff suppressed because it is too large Load Diff

View File

@ -1,389 +1,389 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<Filter Include="Source Files"> <Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter> </Filter>
<Filter Include="Source Files\piecesparts"> <Filter Include="Source Files\piecesparts">
<UniqueIdentifier>{72eda860-6ad5-4e65-831a-6f9fc4136bec}</UniqueIdentifier> <UniqueIdentifier>{72eda860-6ad5-4e65-831a-6f9fc4136bec}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Header Files"> <Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter> </Filter>
<Filter Include="Docs"> <Filter Include="Docs">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions> <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="pthread_cancel.c"> <ClCompile Include="pthread_cancel.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutex_lock.c"> <ClCompile Include="pthread_mutex_lock.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutex_trylock.c"> <ClCompile Include="pthread_mutex_trylock.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutex_unlock.c"> <ClCompile Include="pthread_mutex_unlock.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_testcancel.c"> <ClCompile Include="pthread_testcancel.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32pch.c"> <ClCompile Include="ptw32pch.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_trywait.c"> <ClCompile Include="sem_trywait.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_wait.c"> <ClCompile Include="sem_wait.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_destroy.c"> <ClCompile Include="pthread_attr_destroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getdetachstate.c"> <ClCompile Include="pthread_attr_getdetachstate.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getinheritsched.c"> <ClCompile Include="pthread_attr_getinheritsched.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getschedparam.c"> <ClCompile Include="pthread_attr_getschedparam.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getschedpolicy.c"> <ClCompile Include="pthread_attr_getschedpolicy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getscope.c"> <ClCompile Include="pthread_attr_getscope.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getstackaddr.c"> <ClCompile Include="pthread_attr_getstackaddr.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getstacksize.c"> <ClCompile Include="pthread_attr_getstacksize.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_init.c"> <ClCompile Include="pthread_attr_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setdetachstate.c"> <ClCompile Include="pthread_attr_setdetachstate.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setinheritsched.c"> <ClCompile Include="pthread_attr_setinheritsched.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setschedparam.c"> <ClCompile Include="pthread_attr_setschedparam.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setschedpolicy.c"> <ClCompile Include="pthread_attr_setschedpolicy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setscope.c"> <ClCompile Include="pthread_attr_setscope.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setstackaddr.c"> <ClCompile Include="pthread_attr_setstackaddr.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setstacksize.c"> <ClCompile Include="pthread_attr_setstacksize.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrier_destroy.c"> <ClCompile Include="pthread_barrier_destroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrier_init.c"> <ClCompile Include="pthread_barrier_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrier_wait.c"> <ClCompile Include="pthread_barrier_wait.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrierattr_destroy.c"> <ClCompile Include="pthread_barrierattr_destroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrierattr_getpshared.c"> <ClCompile Include="pthread_barrierattr_getpshared.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrierattr_init.c"> <ClCompile Include="pthread_barrierattr_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrierattr_setpshared.c"> <ClCompile Include="pthread_barrierattr_setpshared.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_delay_np.c"> <ClCompile Include="pthread_delay_np.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_detach.c"> <ClCompile Include="pthread_detach.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_equal.c"> <ClCompile Include="pthread_equal.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_exit.c"> <ClCompile Include="pthread_exit.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_getconcurrency.c"> <ClCompile Include="pthread_getconcurrency.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_getschedparam.c"> <ClCompile Include="pthread_getschedparam.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_getspecific.c"> <ClCompile Include="pthread_getspecific.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_getw32threadhandle_np.c"> <ClCompile Include="pthread_getw32threadhandle_np.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_join.c"> <ClCompile Include="pthread_join.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_key_create.c"> <ClCompile Include="pthread_key_create.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_key_delete.c"> <ClCompile Include="pthread_key_delete.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_kill.c"> <ClCompile Include="pthread_kill.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutex_destroy.c"> <ClCompile Include="pthread_mutex_destroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutex_init.c"> <ClCompile Include="pthread_mutex_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutex_timedlock.c"> <ClCompile Include="pthread_mutex_timedlock.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_destroy.c"> <ClCompile Include="pthread_mutexattr_destroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_getkind_np.c"> <ClCompile Include="pthread_mutexattr_getkind_np.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_getpshared.c"> <ClCompile Include="pthread_mutexattr_getpshared.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_gettype.c"> <ClCompile Include="pthread_mutexattr_gettype.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_init.c"> <ClCompile Include="pthread_mutexattr_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_setkind_np.c"> <ClCompile Include="pthread_mutexattr_setkind_np.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_setpshared.c"> <ClCompile Include="pthread_mutexattr_setpshared.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_settype.c"> <ClCompile Include="pthread_mutexattr_settype.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_num_processors_np.c"> <ClCompile Include="pthread_num_processors_np.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_once.c"> <ClCompile Include="pthread_once.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_self.c"> <ClCompile Include="pthread_self.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_setcancelstate.c"> <ClCompile Include="pthread_setcancelstate.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_setcanceltype.c"> <ClCompile Include="pthread_setcanceltype.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_setconcurrency.c"> <ClCompile Include="pthread_setconcurrency.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_setschedparam.c"> <ClCompile Include="pthread_setschedparam.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_setspecific.c"> <ClCompile Include="pthread_setspecific.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_destroy.c"> <ClCompile Include="pthread_spin_destroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_init.c"> <ClCompile Include="pthread_spin_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_lock.c"> <ClCompile Include="pthread_spin_lock.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_trylock.c"> <ClCompile Include="pthread_spin_trylock.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_unlock.c"> <ClCompile Include="pthread_spin_unlock.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_timechange_handler_np.c"> <ClCompile Include="pthread_timechange_handler_np.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_win32_attach_detach_np.c"> <ClCompile Include="pthread_win32_attach_detach_np.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_calloc.c"> <ClCompile Include="ptw32_calloc.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_callUserDestroyRoutines.c"> <ClCompile Include="ptw32_callUserDestroyRoutines.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_cond_check_need_init.c"> <ClCompile Include="ptw32_cond_check_need_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_getprocessors.c"> <ClCompile Include="ptw32_getprocessors.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_InterlockedCompareExchange.c"> <ClCompile Include="ptw32_InterlockedCompareExchange.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_is_attr.c"> <ClCompile Include="ptw32_is_attr.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_MCS_lock.c"> <ClCompile Include="ptw32_MCS_lock.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_mutex_check_need_init.c"> <ClCompile Include="ptw32_mutex_check_need_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_new.c"> <ClCompile Include="ptw32_new.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_processInitialize.c"> <ClCompile Include="ptw32_processInitialize.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_processTerminate.c"> <ClCompile Include="ptw32_processTerminate.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_relmillisecs.c"> <ClCompile Include="ptw32_relmillisecs.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_reuse.c"> <ClCompile Include="ptw32_reuse.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_rwlock_cancelwrwait.c"> <ClCompile Include="ptw32_rwlock_cancelwrwait.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_rwlock_check_need_init.c"> <ClCompile Include="ptw32_rwlock_check_need_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_semwait.c"> <ClCompile Include="ptw32_semwait.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_spinlock_check_need_init.c"> <ClCompile Include="ptw32_spinlock_check_need_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_threadDestroy.c"> <ClCompile Include="ptw32_threadDestroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_threadStart.c"> <ClCompile Include="ptw32_threadStart.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_throw.c"> <ClCompile Include="ptw32_throw.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_timespec.c"> <ClCompile Include="ptw32_timespec.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_tkAssocCreate.c"> <ClCompile Include="ptw32_tkAssocCreate.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_tkAssocDestroy.c"> <ClCompile Include="ptw32_tkAssocDestroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sched_get_priority_max.c"> <ClCompile Include="sched_get_priority_max.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sched_get_priority_min.c"> <ClCompile Include="sched_get_priority_min.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sched_getscheduler.c"> <ClCompile Include="sched_getscheduler.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sched_setscheduler.c"> <ClCompile Include="sched_setscheduler.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sched_yield.c"> <ClCompile Include="sched_yield.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_close.c"> <ClCompile Include="sem_close.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_destroy.c"> <ClCompile Include="sem_destroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_getvalue.c"> <ClCompile Include="sem_getvalue.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_init.c"> <ClCompile Include="sem_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_open.c"> <ClCompile Include="sem_open.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_post.c"> <ClCompile Include="sem_post.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_post_multiple.c"> <ClCompile Include="sem_post_multiple.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_timedwait.c"> <ClCompile Include="sem_timedwait.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_unlink.c"> <ClCompile Include="sem_unlink.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="ptw32pch.h"> <ClInclude Include="ptw32pch.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="include\implement.h"> <ClInclude Include="include\implement.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="include\need_errno.h"> <ClInclude Include="include\need_errno.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="include\pthread.h"> <ClInclude Include="include\pthread.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="resource.h"> <ClInclude Include="resource.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="include\sched.h"> <ClInclude Include="include\sched.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="include\semaphore.h"> <ClInclude Include="include\semaphore.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="ANNOUNCE"> <None Include="ANNOUNCE">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="BUGS"> <None Include="BUGS">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="CONTRIBUTORS"> <None Include="CONTRIBUTORS">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="COPYING"> <None Include="COPYING">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="FAQ"> <None Include="FAQ">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="MAINTAINERS"> <None Include="MAINTAINERS">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="NEWS"> <None Include="NEWS">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="PCSX2.txt"> <None Include="PCSX2.txt">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,317 +1,317 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Devel|Win32"> <ProjectConfiguration Include="Devel|Win32">
<Configuration>Devel</Configuration> <Configuration>Devel</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectName>w32pthreads.v4</ProjectName> <ProjectName>w32pthreads.v4</ProjectName>
<ProjectGuid>{26511268-2902-4997-8421-ECD7055F9E28}</ProjectGuid> <ProjectGuid>{26511268-2902-4997-8421-ECD7055F9E28}</ProjectGuid>
<RootNamespace>pthreads</RootNamespace> <RootNamespace>pthreads</RootNamespace>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization> <WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v110_xp</PlatformToolset> <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v110_xp</PlatformToolset> <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110_xp</PlatformToolset> <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdpartyDLL.props" /> <Import Project="..\3rdpartyDLL.props" />
<Import Project="..\..\common\vsprops\CodeGen_Devel.props" /> <Import Project="..\..\common\vsprops\CodeGen_Devel.props" />
<Import Project="..\..\common\vsprops\IncrementalLinking.props" /> <Import Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdpartyDLL.props" /> <Import Project="..\3rdpartyDLL.props" />
<Import Project="..\..\common\vsprops\CodeGen_Release.props" /> <Import Project="..\..\common\vsprops\CodeGen_Release.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdpartyDLL.props" /> <Import Project="..\3rdpartyDLL.props" />
<Import Project="..\..\common\vsprops\CodeGen_Debug.props" /> <Import Project="..\..\common\vsprops\CodeGen_Debug.props" />
<Import Project="..\..\common\vsprops\IncrementalLinking.props" /> <Import Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup> <PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(ProjectName)-dev</TargetName> <TargetName Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(ProjectName)-dev</TargetName>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(SolutionDir)bin\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(SolutionDir)bin\</OutDir>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Async</ExceptionHandling> <ExceptionHandling>Async</ExceptionHandling>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(SolutionDir)bin\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>$(SolutionDir)bin\$(TargetName)$(TargetExt)</OutputFile>
<ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary> <ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Async</ExceptionHandling> <ExceptionHandling>Async</ExceptionHandling>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(SolutionDir)bin\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>$(SolutionDir)bin\$(TargetName)$(TargetExt)</OutputFile>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Async</ExceptionHandling> <ExceptionHandling>Async</ExceptionHandling>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(SolutionDir)bin\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>$(SolutionDir)bin\$(TargetName)$(TargetExt)</OutputFile>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="cleanup.c" /> <ClCompile Include="cleanup.c" />
<ClCompile Include="create.c" /> <ClCompile Include="create.c" />
<ClCompile Include="dll.c" /> <ClCompile Include="dll.c" />
<ClCompile Include="errno.c" /> <ClCompile Include="errno.c" />
<ClCompile Include="global.c" /> <ClCompile Include="global.c" />
<ClCompile Include="ptw32_cancel.c" /> <ClCompile Include="ptw32_cancel.c" />
<ClCompile Include="ptw32pch.c"> <ClCompile Include="ptw32pch.c">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="signal.c" /> <ClCompile Include="signal.c" />
<ClCompile Include="w32_CancelableWait.c" /> <ClCompile Include="w32_CancelableWait.c" />
<ClCompile Include="pthread_barrier_destroy.c" /> <ClCompile Include="pthread_barrier_destroy.c" />
<ClCompile Include="pthread_barrier_init.c" /> <ClCompile Include="pthread_barrier_init.c" />
<ClCompile Include="pthread_barrier_wait.c" /> <ClCompile Include="pthread_barrier_wait.c" />
<ClCompile Include="pthread_barrierattr_destroy.c" /> <ClCompile Include="pthread_barrierattr_destroy.c" />
<ClCompile Include="pthread_barrierattr_getpshared.c" /> <ClCompile Include="pthread_barrierattr_getpshared.c" />
<ClCompile Include="pthread_barrierattr_init.c" /> <ClCompile Include="pthread_barrierattr_init.c" />
<ClCompile Include="pthread_barrierattr_setpshared.c" /> <ClCompile Include="pthread_barrierattr_setpshared.c" />
<ClCompile Include="pthread_cancel.c" /> <ClCompile Include="pthread_cancel.c" />
<ClCompile Include="pthread_delay_np.c" /> <ClCompile Include="pthread_delay_np.c" />
<ClCompile Include="pthread_detach.c" /> <ClCompile Include="pthread_detach.c" />
<ClCompile Include="pthread_equal.c" /> <ClCompile Include="pthread_equal.c" />
<ClCompile Include="pthread_exit.c" /> <ClCompile Include="pthread_exit.c" />
<ClCompile Include="pthread_getconcurrency.c" /> <ClCompile Include="pthread_getconcurrency.c" />
<ClCompile Include="pthread_getschedparam.c" /> <ClCompile Include="pthread_getschedparam.c" />
<ClCompile Include="pthread_getspecific.c" /> <ClCompile Include="pthread_getspecific.c" />
<ClCompile Include="pthread_getw32threadhandle_np.c" /> <ClCompile Include="pthread_getw32threadhandle_np.c" />
<ClCompile Include="pthread_join.c" /> <ClCompile Include="pthread_join.c" />
<ClCompile Include="pthread_key_create.c" /> <ClCompile Include="pthread_key_create.c" />
<ClCompile Include="pthread_key_delete.c" /> <ClCompile Include="pthread_key_delete.c" />
<ClCompile Include="pthread_kill.c" /> <ClCompile Include="pthread_kill.c" />
<ClCompile Include="pthread_num_processors_np.c" /> <ClCompile Include="pthread_num_processors_np.c" />
<ClCompile Include="pthread_once.c" /> <ClCompile Include="pthread_once.c" />
<ClCompile Include="pthread_self.c" /> <ClCompile Include="pthread_self.c" />
<ClCompile Include="pthread_setcancelstate.c" /> <ClCompile Include="pthread_setcancelstate.c" />
<ClCompile Include="pthread_setcanceltype.c" /> <ClCompile Include="pthread_setcanceltype.c" />
<ClCompile Include="pthread_setconcurrency.c" /> <ClCompile Include="pthread_setconcurrency.c" />
<ClCompile Include="pthread_setschedparam.c" /> <ClCompile Include="pthread_setschedparam.c" />
<ClCompile Include="pthread_setspecific.c" /> <ClCompile Include="pthread_setspecific.c" />
<ClCompile Include="pthread_testcancel.c" /> <ClCompile Include="pthread_testcancel.c" />
<ClCompile Include="pthread_win32_attach_detach_np.c" /> <ClCompile Include="pthread_win32_attach_detach_np.c" />
<ClCompile Include="ptw32_calloc.c" /> <ClCompile Include="ptw32_calloc.c" />
<ClCompile Include="ptw32_callUserDestroyRoutines.c" /> <ClCompile Include="ptw32_callUserDestroyRoutines.c" />
<ClCompile Include="ptw32_getprocessors.c" /> <ClCompile Include="ptw32_getprocessors.c" />
<ClCompile Include="ptw32_is_attr.c" /> <ClCompile Include="ptw32_is_attr.c" />
<ClCompile Include="ptw32_MCS_lock.c" /> <ClCompile Include="ptw32_MCS_lock.c" />
<ClCompile Include="ptw32_mutex_check_need_init.c" /> <ClCompile Include="ptw32_mutex_check_need_init.c" />
<ClCompile Include="ptw32_new.c" /> <ClCompile Include="ptw32_new.c" />
<ClCompile Include="ptw32_processInitialize.c" /> <ClCompile Include="ptw32_processInitialize.c" />
<ClCompile Include="ptw32_processTerminate.c" /> <ClCompile Include="ptw32_processTerminate.c" />
<ClCompile Include="ptw32_relmillisecs.c" /> <ClCompile Include="ptw32_relmillisecs.c" />
<ClCompile Include="ptw32_reuse.c" /> <ClCompile Include="ptw32_reuse.c" />
<ClCompile Include="ptw32_semwait.c" /> <ClCompile Include="ptw32_semwait.c" />
<ClCompile Include="ptw32_threadDestroy.c" /> <ClCompile Include="ptw32_threadDestroy.c" />
<ClCompile Include="ptw32_threadStart.c" /> <ClCompile Include="ptw32_threadStart.c" />
<ClCompile Include="ptw32_throw.c" /> <ClCompile Include="ptw32_throw.c" />
<ClCompile Include="ptw32_timespec.c" /> <ClCompile Include="ptw32_timespec.c" />
<ClCompile Include="ptw32_tkAssocCreate.c" /> <ClCompile Include="ptw32_tkAssocCreate.c" />
<ClCompile Include="ptw32_tkAssocDestroy.c" /> <ClCompile Include="ptw32_tkAssocDestroy.c" />
<ClCompile Include="sched_get_priority_max.c" /> <ClCompile Include="sched_get_priority_max.c" />
<ClCompile Include="sched_get_priority_min.c" /> <ClCompile Include="sched_get_priority_min.c" />
<ClCompile Include="sched_getscheduler.c" /> <ClCompile Include="sched_getscheduler.c" />
<ClCompile Include="sched_setscheduler.c" /> <ClCompile Include="sched_setscheduler.c" />
<ClCompile Include="sched_yield.c" /> <ClCompile Include="sched_yield.c" />
<ClCompile Include="pthread_rwlock_destroy.c" /> <ClCompile Include="pthread_rwlock_destroy.c" />
<ClCompile Include="pthread_rwlock_init.c" /> <ClCompile Include="pthread_rwlock_init.c" />
<ClCompile Include="pthread_rwlock_rdlock.c" /> <ClCompile Include="pthread_rwlock_rdlock.c" />
<ClCompile Include="pthread_rwlock_timedrdlock.c" /> <ClCompile Include="pthread_rwlock_timedrdlock.c" />
<ClCompile Include="pthread_rwlock_timedwrlock.c" /> <ClCompile Include="pthread_rwlock_timedwrlock.c" />
<ClCompile Include="pthread_rwlock_tryrdlock.c" /> <ClCompile Include="pthread_rwlock_tryrdlock.c" />
<ClCompile Include="pthread_rwlock_trywrlock.c" /> <ClCompile Include="pthread_rwlock_trywrlock.c" />
<ClCompile Include="pthread_rwlock_unlock.c" /> <ClCompile Include="pthread_rwlock_unlock.c" />
<ClCompile Include="pthread_rwlock_wrlock.c" /> <ClCompile Include="pthread_rwlock_wrlock.c" />
<ClCompile Include="pthread_rwlockattr_destroy.c" /> <ClCompile Include="pthread_rwlockattr_destroy.c" />
<ClCompile Include="pthread_rwlockattr_getpshared.c" /> <ClCompile Include="pthread_rwlockattr_getpshared.c" />
<ClCompile Include="pthread_rwlockattr_init.c" /> <ClCompile Include="pthread_rwlockattr_init.c" />
<ClCompile Include="pthread_rwlockattr_setpshared.c" /> <ClCompile Include="pthread_rwlockattr_setpshared.c" />
<ClCompile Include="ptw32_rwlock_cancelwrwait.c" /> <ClCompile Include="ptw32_rwlock_cancelwrwait.c" />
<ClCompile Include="ptw32_rwlock_check_need_init.c" /> <ClCompile Include="ptw32_rwlock_check_need_init.c" />
<ClCompile Include="pthread_cond_destroy.c" /> <ClCompile Include="pthread_cond_destroy.c" />
<ClCompile Include="pthread_cond_init.c" /> <ClCompile Include="pthread_cond_init.c" />
<ClCompile Include="pthread_cond_signal.c" /> <ClCompile Include="pthread_cond_signal.c" />
<ClCompile Include="pthread_cond_wait.c" /> <ClCompile Include="pthread_cond_wait.c" />
<ClCompile Include="pthread_condattr_destroy.c" /> <ClCompile Include="pthread_condattr_destroy.c" />
<ClCompile Include="pthread_condattr_getpshared.c" /> <ClCompile Include="pthread_condattr_getpshared.c" />
<ClCompile Include="pthread_condattr_init.c" /> <ClCompile Include="pthread_condattr_init.c" />
<ClCompile Include="pthread_condattr_setpshared.c" /> <ClCompile Include="pthread_condattr_setpshared.c" />
<ClCompile Include="pthread_timechange_handler_np.c" /> <ClCompile Include="pthread_timechange_handler_np.c" />
<ClCompile Include="ptw32_cond_check_need_init.c" /> <ClCompile Include="ptw32_cond_check_need_init.c" />
<ClCompile Include="pthread_attr_destroy.c" /> <ClCompile Include="pthread_attr_destroy.c" />
<ClCompile Include="pthread_attr_getdetachstate.c" /> <ClCompile Include="pthread_attr_getdetachstate.c" />
<ClCompile Include="pthread_attr_getinheritsched.c" /> <ClCompile Include="pthread_attr_getinheritsched.c" />
<ClCompile Include="pthread_attr_getschedparam.c" /> <ClCompile Include="pthread_attr_getschedparam.c" />
<ClCompile Include="pthread_attr_getschedpolicy.c" /> <ClCompile Include="pthread_attr_getschedpolicy.c" />
<ClCompile Include="pthread_attr_getscope.c" /> <ClCompile Include="pthread_attr_getscope.c" />
<ClCompile Include="pthread_attr_getstackaddr.c" /> <ClCompile Include="pthread_attr_getstackaddr.c" />
<ClCompile Include="pthread_attr_getstacksize.c" /> <ClCompile Include="pthread_attr_getstacksize.c" />
<ClCompile Include="pthread_attr_init.c" /> <ClCompile Include="pthread_attr_init.c" />
<ClCompile Include="pthread_attr_setdetachstate.c" /> <ClCompile Include="pthread_attr_setdetachstate.c" />
<ClCompile Include="pthread_attr_setinheritsched.c" /> <ClCompile Include="pthread_attr_setinheritsched.c" />
<ClCompile Include="pthread_attr_setschedparam.c" /> <ClCompile Include="pthread_attr_setschedparam.c" />
<ClCompile Include="pthread_attr_setschedpolicy.c" /> <ClCompile Include="pthread_attr_setschedpolicy.c" />
<ClCompile Include="pthread_attr_setscope.c" /> <ClCompile Include="pthread_attr_setscope.c" />
<ClCompile Include="pthread_attr_setstackaddr.c" /> <ClCompile Include="pthread_attr_setstackaddr.c" />
<ClCompile Include="pthread_attr_setstacksize.c" /> <ClCompile Include="pthread_attr_setstacksize.c" />
<ClCompile Include="pthread_mutex_destroy.c" /> <ClCompile Include="pthread_mutex_destroy.c" />
<ClCompile Include="pthread_mutex_init.c" /> <ClCompile Include="pthread_mutex_init.c" />
<ClCompile Include="pthread_mutex_lock.c" /> <ClCompile Include="pthread_mutex_lock.c" />
<ClCompile Include="pthread_mutex_timedlock.c" /> <ClCompile Include="pthread_mutex_timedlock.c" />
<ClCompile Include="pthread_mutex_trylock.c" /> <ClCompile Include="pthread_mutex_trylock.c" />
<ClCompile Include="pthread_mutex_unlock.c" /> <ClCompile Include="pthread_mutex_unlock.c" />
<ClCompile Include="pthread_mutexattr_destroy.c" /> <ClCompile Include="pthread_mutexattr_destroy.c" />
<ClCompile Include="pthread_mutexattr_getkind_np.c" /> <ClCompile Include="pthread_mutexattr_getkind_np.c" />
<ClCompile Include="pthread_mutexattr_getpshared.c" /> <ClCompile Include="pthread_mutexattr_getpshared.c" />
<ClCompile Include="pthread_mutexattr_gettype.c" /> <ClCompile Include="pthread_mutexattr_gettype.c" />
<ClCompile Include="pthread_mutexattr_init.c" /> <ClCompile Include="pthread_mutexattr_init.c" />
<ClCompile Include="pthread_mutexattr_setkind_np.c" /> <ClCompile Include="pthread_mutexattr_setkind_np.c" />
<ClCompile Include="pthread_mutexattr_setpshared.c" /> <ClCompile Include="pthread_mutexattr_setpshared.c" />
<ClCompile Include="pthread_mutexattr_settype.c" /> <ClCompile Include="pthread_mutexattr_settype.c" />
<ClCompile Include="sem_close.c" /> <ClCompile Include="sem_close.c" />
<ClCompile Include="sem_destroy.c" /> <ClCompile Include="sem_destroy.c" />
<ClCompile Include="sem_getvalue.c" /> <ClCompile Include="sem_getvalue.c" />
<ClCompile Include="sem_init.c" /> <ClCompile Include="sem_init.c" />
<ClCompile Include="sem_open.c" /> <ClCompile Include="sem_open.c" />
<ClCompile Include="sem_post.c" /> <ClCompile Include="sem_post.c" />
<ClCompile Include="sem_post_multiple.c" /> <ClCompile Include="sem_post_multiple.c" />
<ClCompile Include="sem_timedwait.c" /> <ClCompile Include="sem_timedwait.c" />
<ClCompile Include="sem_trywait.c" /> <ClCompile Include="sem_trywait.c" />
<ClCompile Include="sem_unlink.c" /> <ClCompile Include="sem_unlink.c" />
<ClCompile Include="sem_wait.c" /> <ClCompile Include="sem_wait.c" />
<ClCompile Include="pthread_spin_destroy.c"> <ClCompile Include="pthread_spin_destroy.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_init.c"> <ClCompile Include="pthread_spin_init.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_lock.c"> <ClCompile Include="pthread_spin_lock.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_trylock.c"> <ClCompile Include="pthread_spin_trylock.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_unlock.c"> <ClCompile Include="pthread_spin_unlock.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_spinlock_check_need_init.c"> <ClCompile Include="ptw32_spinlock_check_need_init.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="config.h" /> <ClInclude Include="config.h" />
<ClInclude Include="ptw32pch.h" /> <ClInclude Include="ptw32pch.h" />
<ClInclude Include="include\implement.h" /> <ClInclude Include="include\implement.h" />
<ClInclude Include="include\need_errno.h" /> <ClInclude Include="include\need_errno.h" />
<ClInclude Include="include\pthread.h" /> <ClInclude Include="include\pthread.h" />
<ClInclude Include="resource.h" /> <ClInclude Include="resource.h" />
<ClInclude Include="include\sched.h" /> <ClInclude Include="include\sched.h" />
<ClInclude Include="include\semaphore.h" /> <ClInclude Include="include\semaphore.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="ANNOUNCE" /> <None Include="ANNOUNCE" />
<None Include="BUGS" /> <None Include="BUGS" />
<None Include="CONTRIBUTORS" /> <None Include="CONTRIBUTORS" />
<None Include="COPYING" /> <None Include="COPYING" />
<None Include="FAQ" /> <None Include="FAQ" />
<None Include="MAINTAINERS" /> <None Include="MAINTAINERS" />
<None Include="NEWS" /> <None Include="NEWS" />
<None Include="PCSX2.txt" /> <None Include="PCSX2.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="w32pthreads.rc" /> <ResourceCompile Include="w32pthreads.rc" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@ -1,436 +1,436 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<Filter Include="Source Files"> <Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter> </Filter>
<Filter Include="Source Files\piecesparts"> <Filter Include="Source Files\piecesparts">
<UniqueIdentifier>{ae009302-94c7-467a-b26b-43840fa3e460}</UniqueIdentifier> <UniqueIdentifier>{ae009302-94c7-467a-b26b-43840fa3e460}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\rwlock"> <Filter Include="Source Files\rwlock">
<UniqueIdentifier>{37ecf3aa-bd9a-4735-86c2-63bbe4b3f038}</UniqueIdentifier> <UniqueIdentifier>{37ecf3aa-bd9a-4735-86c2-63bbe4b3f038}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\cond"> <Filter Include="Source Files\cond">
<UniqueIdentifier>{1116e265-921b-4084-8577-f93db3396cf4}</UniqueIdentifier> <UniqueIdentifier>{1116e265-921b-4084-8577-f93db3396cf4}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\attr"> <Filter Include="Source Files\attr">
<UniqueIdentifier>{480f878f-fdc5-4011-a3fe-ec96c6a7df0f}</UniqueIdentifier> <UniqueIdentifier>{480f878f-fdc5-4011-a3fe-ec96c6a7df0f}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\mutex"> <Filter Include="Source Files\mutex">
<UniqueIdentifier>{44610aac-9831-4cc3-bc5e-2221ec190b96}</UniqueIdentifier> <UniqueIdentifier>{44610aac-9831-4cc3-bc5e-2221ec190b96}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\semaphore"> <Filter Include="Source Files\semaphore">
<UniqueIdentifier>{dae54675-56e0-41c3-9c1b-894156ab6794}</UniqueIdentifier> <UniqueIdentifier>{dae54675-56e0-41c3-9c1b-894156ab6794}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\spin"> <Filter Include="Source Files\spin">
<UniqueIdentifier>{6f9cc070-859d-42a9-a96b-77c80d2ccd5e}</UniqueIdentifier> <UniqueIdentifier>{6f9cc070-859d-42a9-a96b-77c80d2ccd5e}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Header Files"> <Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter> </Filter>
<Filter Include="Docs"> <Filter Include="Docs">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions> <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="cleanup.c"> <ClCompile Include="cleanup.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="create.c"> <ClCompile Include="create.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="dll.c"> <ClCompile Include="dll.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="errno.c"> <ClCompile Include="errno.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="global.c"> <ClCompile Include="global.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_cancel.c"> <ClCompile Include="ptw32_cancel.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32pch.c"> <ClCompile Include="ptw32pch.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="signal.c"> <ClCompile Include="signal.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="w32_CancelableWait.c"> <ClCompile Include="w32_CancelableWait.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrier_destroy.c"> <ClCompile Include="pthread_barrier_destroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrier_init.c"> <ClCompile Include="pthread_barrier_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrier_wait.c"> <ClCompile Include="pthread_barrier_wait.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrierattr_destroy.c"> <ClCompile Include="pthread_barrierattr_destroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrierattr_getpshared.c"> <ClCompile Include="pthread_barrierattr_getpshared.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrierattr_init.c"> <ClCompile Include="pthread_barrierattr_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_barrierattr_setpshared.c"> <ClCompile Include="pthread_barrierattr_setpshared.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_cancel.c"> <ClCompile Include="pthread_cancel.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_delay_np.c"> <ClCompile Include="pthread_delay_np.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_detach.c"> <ClCompile Include="pthread_detach.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_equal.c"> <ClCompile Include="pthread_equal.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_exit.c"> <ClCompile Include="pthread_exit.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_getconcurrency.c"> <ClCompile Include="pthread_getconcurrency.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_getschedparam.c"> <ClCompile Include="pthread_getschedparam.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_getspecific.c"> <ClCompile Include="pthread_getspecific.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_getw32threadhandle_np.c"> <ClCompile Include="pthread_getw32threadhandle_np.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_join.c"> <ClCompile Include="pthread_join.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_key_create.c"> <ClCompile Include="pthread_key_create.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_key_delete.c"> <ClCompile Include="pthread_key_delete.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_kill.c"> <ClCompile Include="pthread_kill.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_num_processors_np.c"> <ClCompile Include="pthread_num_processors_np.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_once.c"> <ClCompile Include="pthread_once.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_self.c"> <ClCompile Include="pthread_self.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_setcancelstate.c"> <ClCompile Include="pthread_setcancelstate.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_setcanceltype.c"> <ClCompile Include="pthread_setcanceltype.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_setconcurrency.c"> <ClCompile Include="pthread_setconcurrency.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_setschedparam.c"> <ClCompile Include="pthread_setschedparam.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_setspecific.c"> <ClCompile Include="pthread_setspecific.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_testcancel.c"> <ClCompile Include="pthread_testcancel.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_win32_attach_detach_np.c"> <ClCompile Include="pthread_win32_attach_detach_np.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_calloc.c"> <ClCompile Include="ptw32_calloc.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_callUserDestroyRoutines.c"> <ClCompile Include="ptw32_callUserDestroyRoutines.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_getprocessors.c"> <ClCompile Include="ptw32_getprocessors.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_is_attr.c"> <ClCompile Include="ptw32_is_attr.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_MCS_lock.c"> <ClCompile Include="ptw32_MCS_lock.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_mutex_check_need_init.c"> <ClCompile Include="ptw32_mutex_check_need_init.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_new.c"> <ClCompile Include="ptw32_new.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_processInitialize.c"> <ClCompile Include="ptw32_processInitialize.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_processTerminate.c"> <ClCompile Include="ptw32_processTerminate.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_relmillisecs.c"> <ClCompile Include="ptw32_relmillisecs.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_reuse.c"> <ClCompile Include="ptw32_reuse.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_semwait.c"> <ClCompile Include="ptw32_semwait.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_threadDestroy.c"> <ClCompile Include="ptw32_threadDestroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_threadStart.c"> <ClCompile Include="ptw32_threadStart.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_throw.c"> <ClCompile Include="ptw32_throw.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_timespec.c"> <ClCompile Include="ptw32_timespec.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_tkAssocCreate.c"> <ClCompile Include="ptw32_tkAssocCreate.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_tkAssocDestroy.c"> <ClCompile Include="ptw32_tkAssocDestroy.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sched_get_priority_max.c"> <ClCompile Include="sched_get_priority_max.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sched_get_priority_min.c"> <ClCompile Include="sched_get_priority_min.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sched_getscheduler.c"> <ClCompile Include="sched_getscheduler.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sched_setscheduler.c"> <ClCompile Include="sched_setscheduler.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sched_yield.c"> <ClCompile Include="sched_yield.c">
<Filter>Source Files\piecesparts</Filter> <Filter>Source Files\piecesparts</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_rwlock_cancelwrwait.c"> <ClCompile Include="ptw32_rwlock_cancelwrwait.c">
<Filter>Source Files\rwlock</Filter> <Filter>Source Files\rwlock</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_rwlock_check_need_init.c"> <ClCompile Include="ptw32_rwlock_check_need_init.c">
<Filter>Source Files\rwlock</Filter> <Filter>Source Files\rwlock</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_timechange_handler_np.c"> <ClCompile Include="pthread_timechange_handler_np.c">
<Filter>Source Files\cond</Filter> <Filter>Source Files\cond</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_cond_check_need_init.c"> <ClCompile Include="ptw32_cond_check_need_init.c">
<Filter>Source Files\cond</Filter> <Filter>Source Files\cond</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_destroy.c"> <ClCompile Include="pthread_attr_destroy.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getdetachstate.c"> <ClCompile Include="pthread_attr_getdetachstate.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getinheritsched.c"> <ClCompile Include="pthread_attr_getinheritsched.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getschedparam.c"> <ClCompile Include="pthread_attr_getschedparam.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getschedpolicy.c"> <ClCompile Include="pthread_attr_getschedpolicy.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getscope.c"> <ClCompile Include="pthread_attr_getscope.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getstackaddr.c"> <ClCompile Include="pthread_attr_getstackaddr.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_getstacksize.c"> <ClCompile Include="pthread_attr_getstacksize.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_init.c"> <ClCompile Include="pthread_attr_init.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setdetachstate.c"> <ClCompile Include="pthread_attr_setdetachstate.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setinheritsched.c"> <ClCompile Include="pthread_attr_setinheritsched.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setschedparam.c"> <ClCompile Include="pthread_attr_setschedparam.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setschedpolicy.c"> <ClCompile Include="pthread_attr_setschedpolicy.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setscope.c"> <ClCompile Include="pthread_attr_setscope.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setstackaddr.c"> <ClCompile Include="pthread_attr_setstackaddr.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_attr_setstacksize.c"> <ClCompile Include="pthread_attr_setstacksize.c">
<Filter>Source Files\attr</Filter> <Filter>Source Files\attr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutex_destroy.c"> <ClCompile Include="pthread_mutex_destroy.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutex_init.c"> <ClCompile Include="pthread_mutex_init.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutex_lock.c"> <ClCompile Include="pthread_mutex_lock.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutex_timedlock.c"> <ClCompile Include="pthread_mutex_timedlock.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutex_trylock.c"> <ClCompile Include="pthread_mutex_trylock.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutex_unlock.c"> <ClCompile Include="pthread_mutex_unlock.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_destroy.c"> <ClCompile Include="pthread_mutexattr_destroy.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_getkind_np.c"> <ClCompile Include="pthread_mutexattr_getkind_np.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_getpshared.c"> <ClCompile Include="pthread_mutexattr_getpshared.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_gettype.c"> <ClCompile Include="pthread_mutexattr_gettype.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_init.c"> <ClCompile Include="pthread_mutexattr_init.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_setkind_np.c"> <ClCompile Include="pthread_mutexattr_setkind_np.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_setpshared.c"> <ClCompile Include="pthread_mutexattr_setpshared.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_mutexattr_settype.c"> <ClCompile Include="pthread_mutexattr_settype.c">
<Filter>Source Files\mutex</Filter> <Filter>Source Files\mutex</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_close.c"> <ClCompile Include="sem_close.c">
<Filter>Source Files\semaphore</Filter> <Filter>Source Files\semaphore</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_destroy.c"> <ClCompile Include="sem_destroy.c">
<Filter>Source Files\semaphore</Filter> <Filter>Source Files\semaphore</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_getvalue.c"> <ClCompile Include="sem_getvalue.c">
<Filter>Source Files\semaphore</Filter> <Filter>Source Files\semaphore</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_init.c"> <ClCompile Include="sem_init.c">
<Filter>Source Files\semaphore</Filter> <Filter>Source Files\semaphore</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_open.c"> <ClCompile Include="sem_open.c">
<Filter>Source Files\semaphore</Filter> <Filter>Source Files\semaphore</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_post.c"> <ClCompile Include="sem_post.c">
<Filter>Source Files\semaphore</Filter> <Filter>Source Files\semaphore</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_post_multiple.c"> <ClCompile Include="sem_post_multiple.c">
<Filter>Source Files\semaphore</Filter> <Filter>Source Files\semaphore</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_timedwait.c"> <ClCompile Include="sem_timedwait.c">
<Filter>Source Files\semaphore</Filter> <Filter>Source Files\semaphore</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_trywait.c"> <ClCompile Include="sem_trywait.c">
<Filter>Source Files\semaphore</Filter> <Filter>Source Files\semaphore</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_unlink.c"> <ClCompile Include="sem_unlink.c">
<Filter>Source Files\semaphore</Filter> <Filter>Source Files\semaphore</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="sem_wait.c"> <ClCompile Include="sem_wait.c">
<Filter>Source Files\semaphore</Filter> <Filter>Source Files\semaphore</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_destroy.c"> <ClCompile Include="pthread_spin_destroy.c">
<Filter>Source Files\spin</Filter> <Filter>Source Files\spin</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_init.c"> <ClCompile Include="pthread_spin_init.c">
<Filter>Source Files\spin</Filter> <Filter>Source Files\spin</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_lock.c"> <ClCompile Include="pthread_spin_lock.c">
<Filter>Source Files\spin</Filter> <Filter>Source Files\spin</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_trylock.c"> <ClCompile Include="pthread_spin_trylock.c">
<Filter>Source Files\spin</Filter> <Filter>Source Files\spin</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_unlock.c"> <ClCompile Include="pthread_spin_unlock.c">
<Filter>Source Files\spin</Filter> <Filter>Source Files\spin</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_spinlock_check_need_init.c"> <ClCompile Include="ptw32_spinlock_check_need_init.c">
<Filter>Source Files\spin</Filter> <Filter>Source Files\spin</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="config.h"> <ClInclude Include="config.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="ptw32pch.h"> <ClInclude Include="ptw32pch.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="include\implement.h"> <ClInclude Include="include\implement.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="include\need_errno.h"> <ClInclude Include="include\need_errno.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="include\pthread.h"> <ClInclude Include="include\pthread.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="resource.h"> <ClInclude Include="resource.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="include\sched.h"> <ClInclude Include="include\sched.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="include\semaphore.h"> <ClInclude Include="include\semaphore.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="ANNOUNCE"> <None Include="ANNOUNCE">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="BUGS"> <None Include="BUGS">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="CONTRIBUTORS"> <None Include="CONTRIBUTORS">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="COPYING"> <None Include="COPYING">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="FAQ"> <None Include="FAQ">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="MAINTAINERS"> <None Include="MAINTAINERS">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="NEWS"> <None Include="NEWS">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
<None Include="PCSX2.txt"> <None Include="PCSX2.txt">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</None> </None>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="w32pthreads.rc"> <ResourceCompile Include="w32pthreads.rc">
<Filter>Docs</Filter> <Filter>Docs</Filter>
</ResourceCompile> </ResourceCompile>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,314 +1,314 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Devel|Win32"> <ProjectConfiguration Include="Devel|Win32">
<Configuration>Devel</Configuration> <Configuration>Devel</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectName>w32pthreads.v4</ProjectName> <ProjectName>w32pthreads.v4</ProjectName>
<ProjectGuid>{26511268-2902-4997-8421-ECD7055F9E28}</ProjectGuid> <ProjectGuid>{26511268-2902-4997-8421-ECD7055F9E28}</ProjectGuid>
<RootNamespace>pthreads</RootNamespace> <RootNamespace>pthreads</RootNamespace>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization> <WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdpartyDLL.props" /> <Import Project="..\3rdpartyDLL.props" />
<Import Project="..\..\common\vsprops\CodeGen_Devel.props" /> <Import Project="..\..\common\vsprops\CodeGen_Devel.props" />
<Import Project="..\..\common\vsprops\IncrementalLinking.props" /> <Import Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdpartyDLL.props" /> <Import Project="..\3rdpartyDLL.props" />
<Import Project="..\..\common\vsprops\CodeGen_Release.props" /> <Import Project="..\..\common\vsprops\CodeGen_Release.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" /> <Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdpartyDLL.props" /> <Import Project="..\3rdpartyDLL.props" />
<Import Project="..\..\common\vsprops\CodeGen_Debug.props" /> <Import Project="..\..\common\vsprops\CodeGen_Debug.props" />
<Import Project="..\..\common\vsprops\IncrementalLinking.props" /> <Import Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup> <PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(ProjectName)-dev</TargetName> <TargetName Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(ProjectName)-dev</TargetName>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(SolutionDir)bin\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(SolutionDir)bin\</OutDir>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Async</ExceptionHandling> <ExceptionHandling>Async</ExceptionHandling>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(SolutionDir)bin\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>$(SolutionDir)bin\$(TargetName)$(TargetExt)</OutputFile>
<ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary> <ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Async</ExceptionHandling> <ExceptionHandling>Async</ExceptionHandling>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(SolutionDir)bin\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>$(SolutionDir)bin\$(TargetName)$(TargetExt)</OutputFile>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;PTW32_BUILD;__CLEANUP_SEH;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Async</ExceptionHandling> <ExceptionHandling>Async</ExceptionHandling>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>ptw32pch.h</PrecompiledHeaderFile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(SolutionDir)bin\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>$(SolutionDir)bin\$(TargetName)$(TargetExt)</OutputFile>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="cleanup.c" /> <ClCompile Include="cleanup.c" />
<ClCompile Include="create.c" /> <ClCompile Include="create.c" />
<ClCompile Include="dll.c" /> <ClCompile Include="dll.c" />
<ClCompile Include="errno.c" /> <ClCompile Include="errno.c" />
<ClCompile Include="global.c" /> <ClCompile Include="global.c" />
<ClCompile Include="ptw32_cancel.c" /> <ClCompile Include="ptw32_cancel.c" />
<ClCompile Include="ptw32pch.c"> <ClCompile Include="ptw32pch.c">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="signal.c" /> <ClCompile Include="signal.c" />
<ClCompile Include="w32_CancelableWait.c" /> <ClCompile Include="w32_CancelableWait.c" />
<ClCompile Include="pthread_barrier_destroy.c" /> <ClCompile Include="pthread_barrier_destroy.c" />
<ClCompile Include="pthread_barrier_init.c" /> <ClCompile Include="pthread_barrier_init.c" />
<ClCompile Include="pthread_barrier_wait.c" /> <ClCompile Include="pthread_barrier_wait.c" />
<ClCompile Include="pthread_barrierattr_destroy.c" /> <ClCompile Include="pthread_barrierattr_destroy.c" />
<ClCompile Include="pthread_barrierattr_getpshared.c" /> <ClCompile Include="pthread_barrierattr_getpshared.c" />
<ClCompile Include="pthread_barrierattr_init.c" /> <ClCompile Include="pthread_barrierattr_init.c" />
<ClCompile Include="pthread_barrierattr_setpshared.c" /> <ClCompile Include="pthread_barrierattr_setpshared.c" />
<ClCompile Include="pthread_cancel.c" /> <ClCompile Include="pthread_cancel.c" />
<ClCompile Include="pthread_delay_np.c" /> <ClCompile Include="pthread_delay_np.c" />
<ClCompile Include="pthread_detach.c" /> <ClCompile Include="pthread_detach.c" />
<ClCompile Include="pthread_equal.c" /> <ClCompile Include="pthread_equal.c" />
<ClCompile Include="pthread_exit.c" /> <ClCompile Include="pthread_exit.c" />
<ClCompile Include="pthread_getconcurrency.c" /> <ClCompile Include="pthread_getconcurrency.c" />
<ClCompile Include="pthread_getschedparam.c" /> <ClCompile Include="pthread_getschedparam.c" />
<ClCompile Include="pthread_getspecific.c" /> <ClCompile Include="pthread_getspecific.c" />
<ClCompile Include="pthread_getw32threadhandle_np.c" /> <ClCompile Include="pthread_getw32threadhandle_np.c" />
<ClCompile Include="pthread_join.c" /> <ClCompile Include="pthread_join.c" />
<ClCompile Include="pthread_key_create.c" /> <ClCompile Include="pthread_key_create.c" />
<ClCompile Include="pthread_key_delete.c" /> <ClCompile Include="pthread_key_delete.c" />
<ClCompile Include="pthread_kill.c" /> <ClCompile Include="pthread_kill.c" />
<ClCompile Include="pthread_num_processors_np.c" /> <ClCompile Include="pthread_num_processors_np.c" />
<ClCompile Include="pthread_once.c" /> <ClCompile Include="pthread_once.c" />
<ClCompile Include="pthread_self.c" /> <ClCompile Include="pthread_self.c" />
<ClCompile Include="pthread_setcancelstate.c" /> <ClCompile Include="pthread_setcancelstate.c" />
<ClCompile Include="pthread_setcanceltype.c" /> <ClCompile Include="pthread_setcanceltype.c" />
<ClCompile Include="pthread_setconcurrency.c" /> <ClCompile Include="pthread_setconcurrency.c" />
<ClCompile Include="pthread_setschedparam.c" /> <ClCompile Include="pthread_setschedparam.c" />
<ClCompile Include="pthread_setspecific.c" /> <ClCompile Include="pthread_setspecific.c" />
<ClCompile Include="pthread_testcancel.c" /> <ClCompile Include="pthread_testcancel.c" />
<ClCompile Include="pthread_win32_attach_detach_np.c" /> <ClCompile Include="pthread_win32_attach_detach_np.c" />
<ClCompile Include="ptw32_calloc.c" /> <ClCompile Include="ptw32_calloc.c" />
<ClCompile Include="ptw32_callUserDestroyRoutines.c" /> <ClCompile Include="ptw32_callUserDestroyRoutines.c" />
<ClCompile Include="ptw32_getprocessors.c" /> <ClCompile Include="ptw32_getprocessors.c" />
<ClCompile Include="ptw32_is_attr.c" /> <ClCompile Include="ptw32_is_attr.c" />
<ClCompile Include="ptw32_MCS_lock.c" /> <ClCompile Include="ptw32_MCS_lock.c" />
<ClCompile Include="ptw32_mutex_check_need_init.c" /> <ClCompile Include="ptw32_mutex_check_need_init.c" />
<ClCompile Include="ptw32_new.c" /> <ClCompile Include="ptw32_new.c" />
<ClCompile Include="ptw32_processInitialize.c" /> <ClCompile Include="ptw32_processInitialize.c" />
<ClCompile Include="ptw32_processTerminate.c" /> <ClCompile Include="ptw32_processTerminate.c" />
<ClCompile Include="ptw32_relmillisecs.c" /> <ClCompile Include="ptw32_relmillisecs.c" />
<ClCompile Include="ptw32_reuse.c" /> <ClCompile Include="ptw32_reuse.c" />
<ClCompile Include="ptw32_semwait.c" /> <ClCompile Include="ptw32_semwait.c" />
<ClCompile Include="ptw32_threadDestroy.c" /> <ClCompile Include="ptw32_threadDestroy.c" />
<ClCompile Include="ptw32_threadStart.c" /> <ClCompile Include="ptw32_threadStart.c" />
<ClCompile Include="ptw32_throw.c" /> <ClCompile Include="ptw32_throw.c" />
<ClCompile Include="ptw32_timespec.c" /> <ClCompile Include="ptw32_timespec.c" />
<ClCompile Include="ptw32_tkAssocCreate.c" /> <ClCompile Include="ptw32_tkAssocCreate.c" />
<ClCompile Include="ptw32_tkAssocDestroy.c" /> <ClCompile Include="ptw32_tkAssocDestroy.c" />
<ClCompile Include="sched_get_priority_max.c" /> <ClCompile Include="sched_get_priority_max.c" />
<ClCompile Include="sched_get_priority_min.c" /> <ClCompile Include="sched_get_priority_min.c" />
<ClCompile Include="sched_getscheduler.c" /> <ClCompile Include="sched_getscheduler.c" />
<ClCompile Include="sched_setscheduler.c" /> <ClCompile Include="sched_setscheduler.c" />
<ClCompile Include="sched_yield.c" /> <ClCompile Include="sched_yield.c" />
<ClCompile Include="pthread_rwlock_destroy.c" /> <ClCompile Include="pthread_rwlock_destroy.c" />
<ClCompile Include="pthread_rwlock_init.c" /> <ClCompile Include="pthread_rwlock_init.c" />
<ClCompile Include="pthread_rwlock_rdlock.c" /> <ClCompile Include="pthread_rwlock_rdlock.c" />
<ClCompile Include="pthread_rwlock_timedrdlock.c" /> <ClCompile Include="pthread_rwlock_timedrdlock.c" />
<ClCompile Include="pthread_rwlock_timedwrlock.c" /> <ClCompile Include="pthread_rwlock_timedwrlock.c" />
<ClCompile Include="pthread_rwlock_tryrdlock.c" /> <ClCompile Include="pthread_rwlock_tryrdlock.c" />
<ClCompile Include="pthread_rwlock_trywrlock.c" /> <ClCompile Include="pthread_rwlock_trywrlock.c" />
<ClCompile Include="pthread_rwlock_unlock.c" /> <ClCompile Include="pthread_rwlock_unlock.c" />
<ClCompile Include="pthread_rwlock_wrlock.c" /> <ClCompile Include="pthread_rwlock_wrlock.c" />
<ClCompile Include="pthread_rwlockattr_destroy.c" /> <ClCompile Include="pthread_rwlockattr_destroy.c" />
<ClCompile Include="pthread_rwlockattr_getpshared.c" /> <ClCompile Include="pthread_rwlockattr_getpshared.c" />
<ClCompile Include="pthread_rwlockattr_init.c" /> <ClCompile Include="pthread_rwlockattr_init.c" />
<ClCompile Include="pthread_rwlockattr_setpshared.c" /> <ClCompile Include="pthread_rwlockattr_setpshared.c" />
<ClCompile Include="ptw32_rwlock_cancelwrwait.c" /> <ClCompile Include="ptw32_rwlock_cancelwrwait.c" />
<ClCompile Include="ptw32_rwlock_check_need_init.c" /> <ClCompile Include="ptw32_rwlock_check_need_init.c" />
<ClCompile Include="pthread_cond_destroy.c" /> <ClCompile Include="pthread_cond_destroy.c" />
<ClCompile Include="pthread_cond_init.c" /> <ClCompile Include="pthread_cond_init.c" />
<ClCompile Include="pthread_cond_signal.c" /> <ClCompile Include="pthread_cond_signal.c" />
<ClCompile Include="pthread_cond_wait.c" /> <ClCompile Include="pthread_cond_wait.c" />
<ClCompile Include="pthread_condattr_destroy.c" /> <ClCompile Include="pthread_condattr_destroy.c" />
<ClCompile Include="pthread_condattr_getpshared.c" /> <ClCompile Include="pthread_condattr_getpshared.c" />
<ClCompile Include="pthread_condattr_init.c" /> <ClCompile Include="pthread_condattr_init.c" />
<ClCompile Include="pthread_condattr_setpshared.c" /> <ClCompile Include="pthread_condattr_setpshared.c" />
<ClCompile Include="pthread_timechange_handler_np.c" /> <ClCompile Include="pthread_timechange_handler_np.c" />
<ClCompile Include="ptw32_cond_check_need_init.c" /> <ClCompile Include="ptw32_cond_check_need_init.c" />
<ClCompile Include="pthread_attr_destroy.c" /> <ClCompile Include="pthread_attr_destroy.c" />
<ClCompile Include="pthread_attr_getdetachstate.c" /> <ClCompile Include="pthread_attr_getdetachstate.c" />
<ClCompile Include="pthread_attr_getinheritsched.c" /> <ClCompile Include="pthread_attr_getinheritsched.c" />
<ClCompile Include="pthread_attr_getschedparam.c" /> <ClCompile Include="pthread_attr_getschedparam.c" />
<ClCompile Include="pthread_attr_getschedpolicy.c" /> <ClCompile Include="pthread_attr_getschedpolicy.c" />
<ClCompile Include="pthread_attr_getscope.c" /> <ClCompile Include="pthread_attr_getscope.c" />
<ClCompile Include="pthread_attr_getstackaddr.c" /> <ClCompile Include="pthread_attr_getstackaddr.c" />
<ClCompile Include="pthread_attr_getstacksize.c" /> <ClCompile Include="pthread_attr_getstacksize.c" />
<ClCompile Include="pthread_attr_init.c" /> <ClCompile Include="pthread_attr_init.c" />
<ClCompile Include="pthread_attr_setdetachstate.c" /> <ClCompile Include="pthread_attr_setdetachstate.c" />
<ClCompile Include="pthread_attr_setinheritsched.c" /> <ClCompile Include="pthread_attr_setinheritsched.c" />
<ClCompile Include="pthread_attr_setschedparam.c" /> <ClCompile Include="pthread_attr_setschedparam.c" />
<ClCompile Include="pthread_attr_setschedpolicy.c" /> <ClCompile Include="pthread_attr_setschedpolicy.c" />
<ClCompile Include="pthread_attr_setscope.c" /> <ClCompile Include="pthread_attr_setscope.c" />
<ClCompile Include="pthread_attr_setstackaddr.c" /> <ClCompile Include="pthread_attr_setstackaddr.c" />
<ClCompile Include="pthread_attr_setstacksize.c" /> <ClCompile Include="pthread_attr_setstacksize.c" />
<ClCompile Include="pthread_mutex_destroy.c" /> <ClCompile Include="pthread_mutex_destroy.c" />
<ClCompile Include="pthread_mutex_init.c" /> <ClCompile Include="pthread_mutex_init.c" />
<ClCompile Include="pthread_mutex_lock.c" /> <ClCompile Include="pthread_mutex_lock.c" />
<ClCompile Include="pthread_mutex_timedlock.c" /> <ClCompile Include="pthread_mutex_timedlock.c" />
<ClCompile Include="pthread_mutex_trylock.c" /> <ClCompile Include="pthread_mutex_trylock.c" />
<ClCompile Include="pthread_mutex_unlock.c" /> <ClCompile Include="pthread_mutex_unlock.c" />
<ClCompile Include="pthread_mutexattr_destroy.c" /> <ClCompile Include="pthread_mutexattr_destroy.c" />
<ClCompile Include="pthread_mutexattr_getkind_np.c" /> <ClCompile Include="pthread_mutexattr_getkind_np.c" />
<ClCompile Include="pthread_mutexattr_getpshared.c" /> <ClCompile Include="pthread_mutexattr_getpshared.c" />
<ClCompile Include="pthread_mutexattr_gettype.c" /> <ClCompile Include="pthread_mutexattr_gettype.c" />
<ClCompile Include="pthread_mutexattr_init.c" /> <ClCompile Include="pthread_mutexattr_init.c" />
<ClCompile Include="pthread_mutexattr_setkind_np.c" /> <ClCompile Include="pthread_mutexattr_setkind_np.c" />
<ClCompile Include="pthread_mutexattr_setpshared.c" /> <ClCompile Include="pthread_mutexattr_setpshared.c" />
<ClCompile Include="pthread_mutexattr_settype.c" /> <ClCompile Include="pthread_mutexattr_settype.c" />
<ClCompile Include="sem_close.c" /> <ClCompile Include="sem_close.c" />
<ClCompile Include="sem_destroy.c" /> <ClCompile Include="sem_destroy.c" />
<ClCompile Include="sem_getvalue.c" /> <ClCompile Include="sem_getvalue.c" />
<ClCompile Include="sem_init.c" /> <ClCompile Include="sem_init.c" />
<ClCompile Include="sem_open.c" /> <ClCompile Include="sem_open.c" />
<ClCompile Include="sem_post.c" /> <ClCompile Include="sem_post.c" />
<ClCompile Include="sem_post_multiple.c" /> <ClCompile Include="sem_post_multiple.c" />
<ClCompile Include="sem_timedwait.c" /> <ClCompile Include="sem_timedwait.c" />
<ClCompile Include="sem_trywait.c" /> <ClCompile Include="sem_trywait.c" />
<ClCompile Include="sem_unlink.c" /> <ClCompile Include="sem_unlink.c" />
<ClCompile Include="sem_wait.c" /> <ClCompile Include="sem_wait.c" />
<ClCompile Include="pthread_spin_destroy.c"> <ClCompile Include="pthread_spin_destroy.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_init.c"> <ClCompile Include="pthread_spin_init.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_lock.c"> <ClCompile Include="pthread_spin_lock.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_trylock.c"> <ClCompile Include="pthread_spin_trylock.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="pthread_spin_unlock.c"> <ClCompile Include="pthread_spin_unlock.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="ptw32_spinlock_check_need_init.c"> <ClCompile Include="ptw32_spinlock_check_need_init.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="config.h" /> <ClInclude Include="config.h" />
<ClInclude Include="ptw32pch.h" /> <ClInclude Include="ptw32pch.h" />
<ClInclude Include="include\implement.h" /> <ClInclude Include="include\implement.h" />
<ClInclude Include="include\need_errno.h" /> <ClInclude Include="include\need_errno.h" />
<ClInclude Include="include\pthread.h" /> <ClInclude Include="include\pthread.h" />
<ClInclude Include="resource.h" /> <ClInclude Include="resource.h" />
<ClInclude Include="include\sched.h" /> <ClInclude Include="include\sched.h" />
<ClInclude Include="include\semaphore.h" /> <ClInclude Include="include\semaphore.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="ANNOUNCE" /> <None Include="ANNOUNCE" />
<None Include="BUGS" /> <None Include="BUGS" />
<None Include="CONTRIBUTORS" /> <None Include="CONTRIBUTORS" />
<None Include="COPYING" /> <None Include="COPYING" />
<None Include="FAQ" /> <None Include="FAQ" />
<None Include="MAINTAINERS" /> <None Include="MAINTAINERS" />
<None Include="NEWS" /> <None Include="NEWS" />
<None Include="PCSX2.txt" /> <None Include="PCSX2.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="w32pthreads.rc" /> <ResourceCompile Include="w32pthreads.rc" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@ -1,100 +1,100 @@
// Microsoft Visual C++ generated resource script. // Microsoft Visual C++ generated resource script.
// //
#include "resource.h" #include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS #define APSTUDIO_READONLY_SYMBOLS
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Generated from the TEXTINCLUDE 2 resource. // Generated from the TEXTINCLUDE 2 resource.
// //
#include "afxresmw.h" #include "afxresmw.h"
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS #undef APSTUDIO_READONLY_SYMBOLS
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources // English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32 #ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252) #pragma code_page(1252)
#endif //_WIN32 #endif //_WIN32
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// TEXTINCLUDE // TEXTINCLUDE
// //
1 TEXTINCLUDE 1 TEXTINCLUDE
BEGIN BEGIN
"resource.h\0" "resource.h\0"
END END
2 TEXTINCLUDE 2 TEXTINCLUDE
BEGIN BEGIN
"#include ""afxresmw.h""\r\0" "#include ""afxresmw.h""\r\0"
END END
3 TEXTINCLUDE 3 TEXTINCLUDE
BEGIN BEGIN
"\r\0" "\r\0"
END END
#endif // APSTUDIO_INVOKED #endif // APSTUDIO_INVOKED
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Version // Version
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,8,4,0 FILEVERSION 2,8,4,0
PRODUCTVERSION 2,8,0,0 PRODUCTVERSION 2,8,0,0
FILEFLAGSMASK 0x17L FILEFLAGSMASK 0x17L
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
#else #else
FILEFLAGS 0x0L FILEFLAGS 0x0L
#endif #endif
FILEOS 0x4L FILEOS 0x4L
FILETYPE 0x2L FILETYPE 0x2L
FILESUBTYPE 0x0L FILESUBTYPE 0x0L
BEGIN BEGIN
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
BEGIN BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "Comments", "Built for PCSX2 (SEH, CDECL, Align16)" VALUE "Comments", "Built for PCSX2 (SEH, CDECL, Align16)"
VALUE "FileDescription", "POSIX Threads for Win32" VALUE "FileDescription", "POSIX Threads for Win32"
VALUE "FileVersion", "2.8.pxr4" VALUE "FileVersion", "2.8.pxr4"
VALUE "InternalName", "w32pthreads" VALUE "InternalName", "w32pthreads"
VALUE "LegalCopyright", "Copyright (C) 2009" VALUE "LegalCopyright", "Copyright (C) 2009"
VALUE "OriginalFilename", "w32pthreads.v4" VALUE "OriginalFilename", "w32pthreads.v4"
VALUE "ProductName", "w32pthreads" VALUE "ProductName", "w32pthreads"
VALUE "ProductVersion", "2.8" VALUE "ProductVersion", "2.8"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"
BEGIN BEGIN
VALUE "Translation", 0x409, 1200 VALUE "Translation", 0x409, 1200
END END
END END
#endif // English (U.S.) resources #endif // English (U.S.) resources
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED #ifndef APSTUDIO_INVOKED
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Generated from the TEXTINCLUDE 3 resource. // Generated from the TEXTINCLUDE 3 resource.
// //
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED #endif // not APSTUDIO_INVOKED

View File

@ -1,359 +1,359 @@
/* /*
* Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy) * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy)
* Copyright (c) 2005 - 2007 CACE Technologies, Davis (California) * Copyright (c) 2005 - 2007 CACE Technologies, Davis (California)
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
* are met: * are met:
* *
* 1. Redistributions of source code must retain the above copyright * 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. Neither the name of the Politecnico di Torino, CACE Technologies * 3. Neither the name of the Politecnico di Torino, CACE Technologies
* nor the names of its contributors may be used to endorse or promote * nor the names of its contributors may be used to endorse or promote
* products derived from this software without specific prior written * products derived from this software without specific prior written
* permission. * permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
/** @ingroup packetapi /** @ingroup packetapi
* @{ * @{
*/ */
/** @defgroup packet32h Packet.dll definitions and data structures /** @defgroup packet32h Packet.dll definitions and data structures
* Packet32.h contains the data structures and the definitions used by packet.dll. * 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 * 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 * by the applications that use the functions of this library
* @{ * @{
*/ */
#ifndef __PACKET32 #ifndef __PACKET32
#define __PACKET32 #define __PACKET32
#include <winsock2.h> #include <winsock2.h>
#ifdef HAVE_AIRPCAP_API #ifdef HAVE_AIRPCAP_API
#include <airpcap.h> #include <airpcap.h>
#else #else
#if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_) #if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_)
#define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ #define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_
typedef struct _AirpcapHandle *PAirpcapHandle; typedef struct _AirpcapHandle *PAirpcapHandle;
#endif /* AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ */ #endif /* AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ */
#endif /* HAVE_AIRPCAP_API */ #endif /* HAVE_AIRPCAP_API */
#ifdef HAVE_DAG_API #ifdef HAVE_DAG_API
#include <dagc.h> #include <dagc.h>
#endif /* HAVE_DAG_API */ #endif /* HAVE_DAG_API */
// Working modes // Working modes
#define PACKET_MODE_CAPT 0x0 ///< Capture mode #define PACKET_MODE_CAPT 0x0 ///< Capture mode
#define PACKET_MODE_STAT 0x1 ///< Statistical mode #define PACKET_MODE_STAT 0x1 ///< Statistical mode
#define PACKET_MODE_MON 0x2 ///< Monitoring mode #define PACKET_MODE_MON 0x2 ///< Monitoring mode
#define PACKET_MODE_DUMP 0x10 ///< Dump mode #define PACKET_MODE_DUMP 0x10 ///< Dump mode
#define PACKET_MODE_STAT_DUMP MODE_DUMP | MODE_STAT ///< Statistical dump Mode #define PACKET_MODE_STAT_DUMP MODE_DUMP | MODE_STAT ///< Statistical dump Mode
/// Alignment macro. Defines the alignment size. /// Alignment macro. Defines the alignment size.
#define Packet_ALIGNMENT sizeof(int) #define Packet_ALIGNMENT sizeof(int)
/// Alignment macro. Rounds up to the next even multiple of Packet_ALIGNMENT. /// Alignment macro. Rounds up to the next even multiple of Packet_ALIGNMENT.
#define Packet_WORDALIGN(x) (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1)) #define Packet_WORDALIGN(x) (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1))
#define NdisMediumNull -1 ///< Custom linktype: NDIS doesn't provide an equivalent #define NdisMediumNull -1 ///< Custom linktype: NDIS doesn't provide an equivalent
#define NdisMediumCHDLC -2 ///< 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 NdisMediumPPPSerial -3 ///< Custom linktype: NDIS doesn't provide an equivalent
#define NdisMediumBare80211 -4 ///< 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 NdisMediumRadio80211 -5 ///< Custom linktype: NDIS doesn't provide an equivalent
#define NdisMediumPpi -6 ///< Custom linktype: NDIS doesn't provide an equivalent #define NdisMediumPpi -6 ///< Custom linktype: NDIS doesn't provide an equivalent
// Loopback behaviour definitions // Loopback behaviour definitions
#define NPF_DISABLE_LOOPBACK 1 ///< Drop the packets sent by the NPF driver #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 #define NPF_ENABLE_LOOPBACK 2 ///< Capture the packets sent by the NPF driver
/*! /*!
\brief Network type structure. \brief Network type structure.
This structure is used by the PacketGetNetType() function to return information on the current adapter's type and speed. This structure is used by the PacketGetNetType() function to return information on the current adapter's type and speed.
*/ */
typedef struct NetType typedef struct NetType
{ {
UINT LinkType; ///< The MAC of the current network adapter (see function PacketGetNetType() for more information) 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 ULONGLONG LinkSpeed; ///< The speed of the network in bits per second
}NetType; }NetType;
//some definitions stolen from libpcap //some definitions stolen from libpcap
#ifndef BPF_MAJOR_VERSION #ifndef BPF_MAJOR_VERSION
/*! /*!
\brief A BPF pseudo-assembly program. \brief A BPF pseudo-assembly program.
The program will be injected in the kernel by the PacketSetBPF() function and applied to every incoming packet. The program will be injected in the kernel by the PacketSetBPF() function and applied to every incoming packet.
*/ */
struct bpf_program 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. 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. struct bpf_insn *bf_insns; ///< A pointer to the first instruction of the program.
}; };
/*! /*!
\brief A single BPF pseudo-instruction. \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. 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 struct bpf_insn
{ {
USHORT code; ///< Instruction type and addressing mode. USHORT code; ///< Instruction type and addressing mode.
UCHAR jt; ///< Jump if true UCHAR jt; ///< Jump if true
UCHAR jf; ///< Jump if false UCHAR jf; ///< Jump if false
int k; ///< Generic field used for various purposes. int k; ///< Generic field used for various purposes.
}; };
/*! /*!
\brief Structure that contains a couple of statistics values on the current capture. \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. It is used by packet.dll to return statistics about a capture session.
*/ */
struct bpf_stat struct bpf_stat
{ {
UINT bs_recv; ///< Number of packets that the driver received from the network adapter 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 ///< from the beginning of the current capture. This value includes the packets
///< lost by the driver. ///< lost by the driver.
UINT bs_drop; ///< number of packets that the driver lost from the beginning of a capture. 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. ///< 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. ///< In this situation the packet cannot be stored and the driver rejects it.
UINT ps_ifdrop; ///< drops by interface. XXX not yet supported 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 UINT bs_capt; ///< number of packets that pass the filter, find place in the kernel buffer and
///< thus reach the application. ///< thus reach the application.
}; };
/*! /*!
\brief Packet header. \brief Packet header.
This structure defines the header associated with every packet delivered to the application. This structure defines the header associated with every packet delivered to the application.
*/ */
struct bpf_hdr struct bpf_hdr
{ {
struct timeval bh_tstamp; ///< The timestamp associated with the captured packet. struct timeval bh_tstamp; ///< The timestamp associated with the captured packet.
///< It is stored in a TimeVal structure. ///< It is stored in a TimeVal structure.
UINT bh_caplen; ///< Length of captured portion. The captured portion <b>can be different</b> UINT bh_caplen; ///< Length of captured portion. The captured portion <b>can be different</b>
///< from the original packet, because it is possible (with a proper filter) ///< from the original packet, because it is possible (with a proper filter)
///< to instruct the driver to capture only a portion of the packets. ///< to instruct the driver to capture only a portion of the packets.
UINT bh_datalen; ///< Original length of packet UINT bh_datalen; ///< Original length of packet
USHORT bh_hdrlen; ///< Length of bpf header (this struct plus alignment padding). In some cases, 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 ///< 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 ///< data for performance reasons. This filed can be used to retrieve the actual data
///< of the packet. ///< of the packet.
}; };
/*! /*!
\brief Dump packet header. \brief Dump packet header.
This structure defines the header associated with the packets in a buffer to be used with PacketSendPackets(). 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 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. packet in a dump file. This makes straightforward sending WinPcap dump files to the network.
*/ */
struct dump_bpf_hdr{ struct dump_bpf_hdr{
struct timeval ts; ///< Time stamp of the packet struct timeval ts; ///< Time stamp of the packet
UINT caplen; ///< Length of captured portion. The captured portion can smaller than the 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 ///< the original packet, because it is possible (with a proper filter) to
///< instruct the driver to capture only a portion of the packets. ///< instruct the driver to capture only a portion of the packets.
UINT len; ///< Length of the original packet (off wire). UINT len; ///< Length of the original packet (off wire).
}; };
#endif #endif
struct bpf_stat; struct bpf_stat;
#define DOSNAMEPREFIX TEXT("Packet_") ///< Prefix added to the adapters device names to create the WinPcap devices #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 MAX_LINK_NAME_LENGTH 64 //< Maximum length of the devices symbolic links
#define NMAX_PACKET 65535 #define NMAX_PACKET 65535
/*! /*!
\brief Addresses of a network adapter. \brief Addresses of a network adapter.
This structure is used by the PacketGetNetInfoEx() function to return the IP addresses associated with This structure is used by the PacketGetNetInfoEx() function to return the IP addresses associated with
an adapter. an adapter.
*/ */
typedef struct npf_if_addr { typedef struct npf_if_addr {
struct sockaddr_storage IPAddress; ///< IP address. struct sockaddr_storage IPAddress; ///< IP address.
struct sockaddr_storage SubnetMask; ///< Netmask for that address. struct sockaddr_storage SubnetMask; ///< Netmask for that address.
struct sockaddr_storage Broadcast; ///< Broadcast address. struct sockaddr_storage Broadcast; ///< Broadcast address.
}npf_if_addr; }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_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 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_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. #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 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 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_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_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_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_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_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_AIRPCAP_CARD 16 ///< Flag for ADAPTER_INFO: this is an airpcap card
#define INFO_FLAG_NPFIM_DEVICE 32 #define INFO_FLAG_NPFIM_DEVICE 32
/*! /*!
\brief Describes an opened network adapter. \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 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 should be ignored by the user, since the library offers functions that avoid to cope with low-level parameters
*/ */
typedef struct _ADAPTER { typedef struct _ADAPTER {
HANDLE hFile; ///< \internal Handle to an open instance of the NPF driver. 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. 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 int NumWrites; ///< \internal Number of times a packets written on this adapter will be repeated
///< on the wire. ///< on the wire.
HANDLE ReadEvent; ///< A notification event associated with the read calls on the adapter. HANDLE ReadEvent; ///< A notification event associated with the read calls on the adapter.
///< It can be passed to standard Win32 functions (like WaitForSingleObject ///< It can be passed to standard Win32 functions (like WaitForSingleObject
///< or WaitForMultipleObjects) to wait until the driver's buffer contains some ///< or WaitForMultipleObjects) to wait until the driver's buffer contains some
///< data. It is particularly useful in GUI applications that need to wait ///< data. It is particularly useful in GUI applications that need to wait
///< concurrently on several events. In Windows NT/2000 the PacketSetMinToCopy() ///< 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 ///< function can be used to define the minimum amount of data in the kernel buffer
///< that will cause the event to be signalled. ///< 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 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 ///< ReadEvent will be signaled, also if no packets were captured
CHAR Name[ADAPTER_NAME_LENGTH]; CHAR Name[ADAPTER_NAME_LENGTH];
PWAN_ADAPTER pWanAdapter; 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. 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 #ifdef HAVE_AIRPCAP_API
PAirpcapHandle AirpcapAd; PAirpcapHandle AirpcapAd;
#endif // HAVE_AIRPCAP_API #endif // HAVE_AIRPCAP_API
#ifdef HAVE_NPFIM_API #ifdef HAVE_NPFIM_API
void* NpfImHandle; void* NpfImHandle;
#endif // HAVE_NPFIM_API #endif // HAVE_NPFIM_API
#ifdef HAVE_DAG_API #ifdef HAVE_DAG_API
dagc_t *pDagCard; ///< Pointer to the dagc API adapter descriptor for this adapter 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 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 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 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). 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 #endif // HAVE_DAG_API
} ADAPTER, *LPADAPTER; } ADAPTER, *LPADAPTER;
/*! /*!
\brief Structure that contains a group of packets coming from the driver. \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. This structure defines the header associated with every packet delivered to the application.
*/ */
typedef struct _PACKET { typedef struct _PACKET {
HANDLE hEvent; ///< \deprecated Still present for compatibility with old applications. HANDLE hEvent; ///< \deprecated Still present for compatibility with old applications.
OVERLAPPED OverLapped; ///< \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 PVOID Buffer; ///< Buffer with containing the packets. See the PacketReceivePacket() for
///< details about the organization of the data in this buffer ///< details about the organization of the data in this buffer
UINT Length; ///< Length of the buffer UINT Length; ///< Length of the buffer
DWORD ulBytesReceived; ///< Number of valid bytes present in the buffer, i.e. amount of data DWORD ulBytesReceived; ///< Number of valid bytes present in the buffer, i.e. amount of data
///< received by the last call to PacketReceivePacket() ///< received by the last call to PacketReceivePacket()
BOOLEAN bIoComplete; ///< \deprecated Still present for compatibility with old applications. BOOLEAN bIoComplete; ///< \deprecated Still present for compatibility with old applications.
} PACKET, *LPPACKET; } PACKET, *LPPACKET;
/*! /*!
\brief Structure containing an OID request. \brief Structure containing an OID request.
It is used by the PacketRequest() function to send an OID to the interface card driver. 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, 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. the list of the multicast groups defined on it, and so on.
*/ */
struct _PACKET_OID_DATA { struct _PACKET_OID_DATA {
ULONG Oid; ///< OID code. See the Microsoft DDK documentation or the file ntddndis.h ULONG Oid; ///< OID code. See the Microsoft DDK documentation or the file ntddndis.h
///< for a complete list of valid codes. ///< for a complete list of valid codes.
ULONG Length; ///< Length of the data field ULONG Length; ///< Length of the data field
UCHAR Data[1]; ///< variable-lenght field that contains the information passed to or received UCHAR Data[1]; ///< variable-lenght field that contains the information passed to or received
///< from the adapter. ///< from the adapter.
}; };
typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA; typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/** /**
* @} * @}
*/ */
/* /*
BOOLEAN QueryWinPcapRegistryStringA(CHAR *SubKeyName, BOOLEAN QueryWinPcapRegistryStringA(CHAR *SubKeyName,
CHAR *Value, CHAR *Value,
UINT *pValueLen, UINT *pValueLen,
CHAR *DefaultVal); CHAR *DefaultVal);
BOOLEAN QueryWinPcapRegistryStringW(WCHAR *SubKeyName, BOOLEAN QueryWinPcapRegistryStringW(WCHAR *SubKeyName,
WCHAR *Value, WCHAR *Value,
UINT *pValueLen, UINT *pValueLen,
WCHAR *DefaultVal); WCHAR *DefaultVal);
*/ */
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// EXPORTED FUNCTIONS // EXPORTED FUNCTIONS
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
PCHAR PacketGetVersion(); PCHAR PacketGetVersion();
PCHAR PacketGetDriverVersion(); PCHAR PacketGetDriverVersion();
BOOLEAN PacketSetMinToCopy(LPADAPTER AdapterObject,int nbytes); BOOLEAN PacketSetMinToCopy(LPADAPTER AdapterObject,int nbytes);
BOOLEAN PacketSetNumWrites(LPADAPTER AdapterObject,int nwrites); BOOLEAN PacketSetNumWrites(LPADAPTER AdapterObject,int nwrites);
BOOLEAN PacketSetMode(LPADAPTER AdapterObject,int mode); BOOLEAN PacketSetMode(LPADAPTER AdapterObject,int mode);
BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout); BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout);
BOOLEAN PacketSetBpf(LPADAPTER AdapterObject,struct bpf_program *fp); BOOLEAN PacketSetBpf(LPADAPTER AdapterObject,struct bpf_program *fp);
BOOLEAN PacketSetLoopbackBehavior(LPADAPTER AdapterObject, UINT LoopbackBehavior); BOOLEAN PacketSetLoopbackBehavior(LPADAPTER AdapterObject, UINT LoopbackBehavior);
INT PacketSetSnapLen(LPADAPTER AdapterObject,int snaplen); INT PacketSetSnapLen(LPADAPTER AdapterObject,int snaplen);
BOOLEAN PacketGetStats(LPADAPTER AdapterObject,struct bpf_stat *s); BOOLEAN PacketGetStats(LPADAPTER AdapterObject,struct bpf_stat *s);
BOOLEAN PacketGetStatsEx(LPADAPTER AdapterObject,struct bpf_stat *s); BOOLEAN PacketGetStatsEx(LPADAPTER AdapterObject,struct bpf_stat *s);
BOOLEAN PacketSetBuff(LPADAPTER AdapterObject,int dim); BOOLEAN PacketSetBuff(LPADAPTER AdapterObject,int dim);
BOOLEAN PacketGetNetType (LPADAPTER AdapterObject,NetType *type); BOOLEAN PacketGetNetType (LPADAPTER AdapterObject,NetType *type);
LPADAPTER PacketOpenAdapter(PCHAR AdapterName); LPADAPTER PacketOpenAdapter(PCHAR AdapterName);
BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET pPacket,BOOLEAN Sync); BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET pPacket,BOOLEAN Sync);
INT PacketSendPackets(LPADAPTER AdapterObject,PVOID PacketBuff,ULONG Size, BOOLEAN Sync); INT PacketSendPackets(LPADAPTER AdapterObject,PVOID PacketBuff,ULONG Size, BOOLEAN Sync);
LPPACKET PacketAllocatePacket(void); LPPACKET PacketAllocatePacket(void);
VOID PacketInitPacket(LPPACKET lpPacket,PVOID Buffer,UINT Length); VOID PacketInitPacket(LPPACKET lpPacket,PVOID Buffer,UINT Length);
VOID PacketFreePacket(LPPACKET lpPacket); VOID PacketFreePacket(LPPACKET lpPacket);
BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync); BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync);
BOOLEAN PacketSetHwFilter(LPADAPTER AdapterObject,ULONG Filter); BOOLEAN PacketSetHwFilter(LPADAPTER AdapterObject,ULONG Filter);
BOOLEAN PacketGetAdapterNames(PTSTR pStr,PULONG BufferSize); BOOLEAN PacketGetAdapterNames(PTSTR pStr,PULONG BufferSize);
BOOLEAN PacketGetNetInfoEx(PCHAR AdapterName, npf_if_addr* buffer, PLONG NEntries); BOOLEAN PacketGetNetInfoEx(PCHAR AdapterName, npf_if_addr* buffer, PLONG NEntries);
BOOLEAN PacketRequest(LPADAPTER AdapterObject,BOOLEAN Set,PPACKET_OID_DATA OidData); BOOLEAN PacketRequest(LPADAPTER AdapterObject,BOOLEAN Set,PPACKET_OID_DATA OidData);
HANDLE PacketGetReadEvent(LPADAPTER AdapterObject); HANDLE PacketGetReadEvent(LPADAPTER AdapterObject);
BOOLEAN PacketSetDumpName(LPADAPTER AdapterObject, void *name, int len); BOOLEAN PacketSetDumpName(LPADAPTER AdapterObject, void *name, int len);
BOOLEAN PacketSetDumpLimits(LPADAPTER AdapterObject, UINT maxfilesize, UINT maxnpacks); BOOLEAN PacketSetDumpLimits(LPADAPTER AdapterObject, UINT maxfilesize, UINT maxnpacks);
BOOLEAN PacketIsDumpEnded(LPADAPTER AdapterObject, BOOLEAN sync); BOOLEAN PacketIsDumpEnded(LPADAPTER AdapterObject, BOOLEAN sync);
BOOL PacketStopDriver(); BOOL PacketStopDriver();
VOID PacketCloseAdapter(LPADAPTER lpAdapter); VOID PacketCloseAdapter(LPADAPTER lpAdapter);
BOOLEAN PacketStartOem(PCHAR errorString, UINT errorStringLength); BOOLEAN PacketStartOem(PCHAR errorString, UINT errorStringLength);
BOOLEAN PacketStartOemEx(PCHAR errorString, UINT errorStringLength, ULONG flags); BOOLEAN PacketStartOemEx(PCHAR errorString, UINT errorStringLength, ULONG flags);
PAirpcapHandle PacketGetAirPcapHandle(LPADAPTER AdapterObject); PAirpcapHandle PacketGetAirPcapHandle(LPADAPTER AdapterObject);
// //
// Used by PacketStartOemEx // Used by PacketStartOemEx
// //
#define PACKET_START_OEM_NO_NETMON 0x00000001 #define PACKET_START_OEM_NO_NETMON 0x00000001
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif //__PACKET32 #endif //__PACKET32

View File

@ -1,113 +1,113 @@
/* /*
* Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy) * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy)
* Copyright (c) 2005 - 2006 CACE Technologies, Davis (California) * Copyright (c) 2005 - 2006 CACE Technologies, Davis (California)
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
* are met: * are met:
* *
* 1. Redistributions of source code must retain the above copyright * 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. Neither the name of the Politecnico di Torino, CACE Technologies * 3. Neither the name of the Politecnico di Torino, CACE Technologies
* nor the names of its contributors may be used to endorse or promote * nor the names of its contributors may be used to endorse or promote
* products derived from this software without specific prior written * products derived from this software without specific prior written
* permission. * permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
#ifndef __WIN32_EXTENSIONS_H__ #ifndef __WIN32_EXTENSIONS_H__
#define __WIN32_EXTENSIONS_H__ #define __WIN32_EXTENSIONS_H__
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/* Definitions */ /* Definitions */
/*! /*!
\brief A queue of raw packets that will be sent to the network with pcap_sendqueue_transmit(). \brief A queue of raw packets that will be sent to the network with pcap_sendqueue_transmit().
*/ */
struct pcap_send_queue 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 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. u_int len; ///< Current size of the queue, in bytes.
char *buffer; ///< Buffer containing the packets to be sent. char *buffer; ///< Buffer containing the packets to be sent.
}; };
typedef struct pcap_send_queue pcap_send_queue; typedef struct pcap_send_queue pcap_send_queue;
/*! /*!
\brief This typedef is a support for the pcap_get_airpcap_handle() function \brief This typedef is a support for the pcap_get_airpcap_handle() function
*/ */
#if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_) #if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_)
#define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ #define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_
typedef struct _AirpcapHandle *PAirpcapHandle; typedef struct _AirpcapHandle *PAirpcapHandle;
#endif #endif
#define BPF_MEM_EX_IMM 0xc0 #define BPF_MEM_EX_IMM 0xc0
#define BPF_MEM_EX_IND 0xe0 #define BPF_MEM_EX_IND 0xe0
/*used for ST*/ /*used for ST*/
#define BPF_MEM_EX 0xc0 #define BPF_MEM_EX 0xc0
#define BPF_TME 0x08 #define BPF_TME 0x08
#define BPF_LOOKUP 0x90 #define BPF_LOOKUP 0x90
#define BPF_EXECUTE 0xa0 #define BPF_EXECUTE 0xa0
#define BPF_INIT 0xb0 #define BPF_INIT 0xb0
#define BPF_VALIDATE 0xc0 #define BPF_VALIDATE 0xc0
#define BPF_SET_ACTIVE 0xd0 #define BPF_SET_ACTIVE 0xd0
#define BPF_RESET 0xe0 #define BPF_RESET 0xe0
#define BPF_SET_MEMORY 0x80 #define BPF_SET_MEMORY 0x80
#define BPF_GET_REGISTER_VALUE 0x70 #define BPF_GET_REGISTER_VALUE 0x70
#define BPF_SET_REGISTER_VALUE 0x60 #define BPF_SET_REGISTER_VALUE 0x60
#define BPF_SET_WORKING 0x50 #define BPF_SET_WORKING 0x50
#define BPF_SET_ACTIVE_READ 0x40 #define BPF_SET_ACTIVE_READ 0x40
#define BPF_SET_AUTODELETION 0x30 #define BPF_SET_AUTODELETION 0x30
#define BPF_SEPARATION 0xff #define BPF_SEPARATION 0xff
/* Prototypes */ /* Prototypes */
pcap_send_queue* pcap_sendqueue_alloc(u_int memsize); pcap_send_queue* pcap_sendqueue_alloc(u_int memsize);
void pcap_sendqueue_destroy(pcap_send_queue* queue); 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); 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); u_int pcap_sendqueue_transmit(pcap_t *p, pcap_send_queue* queue, int sync);
HANDLE pcap_getevent(pcap_t *p); HANDLE pcap_getevent(pcap_t *p);
struct pcap_stat *pcap_stats_ex(pcap_t *p, int *pcap_stat_size); struct pcap_stat *pcap_stats_ex(pcap_t *p, int *pcap_stat_size);
int pcap_setuserbuffer(pcap_t *p, int 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(pcap_t *p, char *filename, int maxsize, int maxpacks);
int pcap_live_dump_ended(pcap_t *p, int sync); 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_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); int pcap_start_oem(char* err_str, int flags);
PAirpcapHandle pcap_get_airpcap_handle(pcap_t *p); PAirpcapHandle pcap_get_airpcap_handle(pcap_t *p);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif //__WIN32_EXTENSIONS_H__ #endif //__WIN32_EXTENSIONS_H__

View File

@ -1,444 +1,444 @@
/* /*
* Copyright (c) 2002 - 2003 * Copyright (c) 2002 - 2003
* NetGroup, Politecnico di Torino (Italy) * NetGroup, Politecnico di Torino (Italy)
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
* are met: * are met:
* *
* 1. Redistributions of source code must retain the above copyright * 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. Neither the name of the Politecnico di Torino nor the names of its * 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 * contributors may be used to endorse or promote products derived from
* this software without specific prior written permission. * this software without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
#ifndef __REMOTE_EXT_H__ #ifndef __REMOTE_EXT_H__
#define __REMOTE_EXT_H__ #define __REMOTE_EXT_H__
#ifndef HAVE_REMOTE #ifndef HAVE_REMOTE
#error Please do not include this file directly. Just define HAVE_REMOTE and then include pcap.h #error Please do not include this file directly. Just define HAVE_REMOTE and then include pcap.h
#endif #endif
// Definition for Microsoft Visual Studio // Definition for Microsoft Visual Studio
#if _MSC_VER > 1000 #if _MSC_VER > 1000
#pragma once #pragma once
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/*! /*!
\file remote-ext.h \file remote-ext.h
The goal of this file it to include most of the new definitions that should be The goal of this file it to include most of the new definitions that should be
placed into the pcap.h file. placed into the pcap.h file.
It includes all new definitions (structures and functions like pcap_open(). It includes all new definitions (structures and functions like pcap_open().
Some of the functions are not really a remote feature, but, right now, Some of the functions are not really a remote feature, but, right now,
they are placed here. they are placed here.
*/ */
// All this stuff is public // All this stuff is public
/*! \addtogroup remote_struct /*! \addtogroup remote_struct
\{ \{
*/ */
/*! /*!
\brief Defines the maximum buffer size in which address, port, interface names are kept. \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. 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 This is not used by the user; however it must be aware that an hostname / interface
name longer than this value will be truncated. name longer than this value will be truncated.
*/ */
#define PCAP_BUF_SIZE 1024 #define PCAP_BUF_SIZE 1024
/*! \addtogroup remote_source_ID /*! \addtogroup remote_source_ID
\{ \{
*/ */
/*! /*!
\brief Internal representation of the type of source in use (file, \brief Internal representation of the type of source in use (file,
remote/local interface). remote/local interface).
This indicates a file, i.e. the user want to open a capture from a local file. This indicates a file, i.e. the user want to open a capture from a local file.
*/ */
#define PCAP_SRC_FILE 2 #define PCAP_SRC_FILE 2
/*! /*!
\brief Internal representation of the type of source in use (file, \brief Internal representation of the type of source in use (file,
remote/local interface). remote/local interface).
This indicates a local interface, i.e. the user want to open a capture from 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. a local interface. This does not involve the RPCAP protocol.
*/ */
#define PCAP_SRC_IFLOCAL 3 #define PCAP_SRC_IFLOCAL 3
/*! /*!
\brief Internal representation of the type of source in use (file, \brief Internal representation of the type of source in use (file,
remote/local interface). remote/local interface).
This indicates a remote interface, i.e. the user want to open a capture from 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. an interface on a remote host. This does involve the RPCAP protocol.
*/ */
#define PCAP_SRC_IFREMOTE 4 #define PCAP_SRC_IFREMOTE 4
/*! /*!
\} \}
*/ */
/*! \addtogroup remote_source_string /*! \addtogroup remote_source_string
The formats allowed by the pcap_open() are the following: The formats allowed by the pcap_open() are the following:
- file://path_and_filename [opens a local file] - 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://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/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] - 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] - 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] - (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: The formats allowed by the pcap_findalldevs_ex() are the following:
- file://folder/ [lists all the files in the given folder] - file://folder/ [lists all the files in the given folder]
- rpcap:// [lists all local adapters] - rpcap:// [lists all local adapters]
- rpcap://host:port/ [lists the devices available on a remote host] - 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 Referring to the 'host' and 'port' paramters, they can be either numeric or literal. Since
IPv6 is fully supported, these are the allowed formats: IPv6 is fully supported, these are the allowed formats:
- host (literal): e.g. host.foo.bar - host (literal): e.g. host.foo.bar
- host (numeric IPv4): e.g. 10.11.12.13 - host (numeric IPv4): e.g. 10.11.12.13
- host (numeric IPv4, IPv6 style): 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] - host (numeric IPv6): e.g. [1:2:3::4]
- port: can be either numeric (e.g. '80') or literal (e.g. 'http') - port: can be either numeric (e.g. '80') or literal (e.g. 'http')
Here you find some allowed examples: Here you find some allowed examples:
- rpcap://host.foo.bar/devicename [everything literal, no port number] - rpcap://host.foo.bar/devicename [everything literal, no port number]
- rpcap://host.foo.bar:1234/devicename [everything literal, with 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/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 port number]
- rpcap://[10.11.12.13]:1234/devicename [IPv4 numeric with IPv6 format, 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]/devicename [IPv6 numeric, no port number]
- rpcap://[1:2:3::4]:1234/devicename [IPv6 numeric, with 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] - 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, \brief String that will be used to determine the type of source in use (file,
remote/local interface). remote/local interface).
This string will be prepended to the interface name in order to create a string 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. 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. This string indicates that the user wants to open a capture from a local file.
*/ */
#define PCAP_SRC_FILE_STRING "file://" #define PCAP_SRC_FILE_STRING "file://"
/*! /*!
\brief String that will be used to determine the type of source in use (file, \brief String that will be used to determine the type of source in use (file,
remote/local interface). remote/local interface).
This string will be prepended to the interface name in order to create a string 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. 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 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 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 interface required resides on the local host, the RPCAP protocol is not involved
and the local functions are used. and the local functions are used.
*/ */
#define PCAP_SRC_IF_STRING "rpcap://" #define PCAP_SRC_IF_STRING "rpcap://"
/*! /*!
\} \}
*/ */
/*! /*!
\addtogroup remote_open_flags \addtogroup remote_open_flags
\{ \{
*/ */
/*! /*!
\brief Defines if the adapter has to go in promiscuous mode. \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. 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 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 mode for some other reason (for example because another capture process with
promiscuous mode enabled is currently using that interface). promiscuous mode enabled is currently using that interface).
On on Linux systems with 2.2 or later kernels (that have the "any" device), this 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, flag does not work on the "any" device; if an argument of "any" is supplied,
the 'promisc' flag is ignored. the 'promisc' flag is ignored.
*/ */
#define PCAP_OPENFLAG_PROMISCUOUS 1 #define PCAP_OPENFLAG_PROMISCUOUS 1
/*! /*!
\brief Defines if the data trasfer (in case of a remote \brief Defines if the data trasfer (in case of a remote
capture) has to be done with UDP protocol. capture) has to be done with UDP protocol.
If it is '1' if you want a UDP data connection, '0' if you want 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 TCP data connection; control connection is always TCP-based.
A UDP connection is much lighter, but it does not guarantee that all A UDP connection is much lighter, but it does not guarantee that all
the captured packets arrive to the client workstation. Moreover, the captured packets arrive to the client workstation. Moreover,
it could be harmful in case of network congestion. it could be harmful in case of network congestion.
This flag is meaningless if the source is not a remote interface. This flag is meaningless if the source is not a remote interface.
In that case, it is simply ignored. In that case, it is simply ignored.
*/ */
#define PCAP_OPENFLAG_DATATX_UDP 2 #define PCAP_OPENFLAG_DATATX_UDP 2
/*! /*!
\brief Defines if the remote probe will capture its own generated traffic. \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 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. 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 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. the trace returned back to the collector is does not include this traffic.
*/ */
#define PCAP_OPENFLAG_NOCAPTURE_RPCAP 4 #define PCAP_OPENFLAG_NOCAPTURE_RPCAP 4
/*! /*!
\brief Defines if the local adapter will capture its own generated traffic. \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 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 This is usefult when building applications like bridges, that should ignore the traffic
they just sent. they just sent.
*/ */
#define PCAP_OPENFLAG_NOCAPTURE_LOCAL 8 #define PCAP_OPENFLAG_NOCAPTURE_LOCAL 8
/*! /*!
\brief This flag configures the adapter for maximum responsiveness. \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 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, 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 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 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) is ready to receive them. This is suggested for real time applications (like, for example, a bridge)
that need the best responsiveness.*/ that need the best responsiveness.*/
#define PCAP_OPENFLAG_MAX_RESPONSIVENESS 16 #define PCAP_OPENFLAG_MAX_RESPONSIVENESS 16
/*! /*!
\} \}
*/ */
/*! /*!
\addtogroup remote_samp_methods \addtogroup remote_samp_methods
\{ \{
*/ */
/*! /*!
\brief No sampling has to be done on the current capture. \brief No sampling has to be done on the current capture.
In this case, no sampling algorithms are applied to the current capture. In this case, no sampling algorithms are applied to the current capture.
*/ */
#define PCAP_SAMP_NOSAMP 0 #define PCAP_SAMP_NOSAMP 0
/*! /*!
\brief It defines that only 1 out of N packets must be returned to the user. \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 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. 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 In other words, if 'value = 10', the first packet is returned to the caller, while
the following 9 are discarded. the following 9 are discarded.
*/ */
#define PCAP_SAMP_1_EVERY_N 1 #define PCAP_SAMP_1_EVERY_N 1
/*! /*!
\brief It defines that we have to return 1 packet every N milliseconds. \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 In this case, the 'value' field of the 'pcap_samp' structure indicates the 'waiting
time' in milliseconds before one packet got accepted. time' in milliseconds before one packet got accepted.
In other words, if 'value = 10', the first packet is returned to the caller; the next 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. returned one will be the first packet that arrives when 10ms have elapsed.
*/ */
#define PCAP_SAMP_FIRST_AFTER_N_MS 2 #define PCAP_SAMP_FIRST_AFTER_N_MS 2
/*! /*!
\} \}
*/ */
/*! /*!
\addtogroup remote_auth_methods \addtogroup remote_auth_methods
\{ \{
*/ */
/*! /*!
\brief It defines the NULL authentication. \brief It defines the NULL authentication.
This value has to be used within the 'type' member of the pcap_rmtauth structure. 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 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. can just put every field of struct pcap_rmtauth to zero, and it does work.
*/ */
#define RPCAP_RMTAUTH_NULL 0 #define RPCAP_RMTAUTH_NULL 0
/*! /*!
\brief It defines the username/password authentication. \brief It defines the username/password authentication.
With this type of authentication, the RPCAP protocol will use the username/ With this type of authentication, the RPCAP protocol will use the username/
password provided to authenticate the user on the remote machine. If the 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) authentication is successful (and the user has the right to open network devices)
the RPCAP connection will continue; otherwise it will be dropped. 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. This value has to be used within the 'type' member of the pcap_rmtauth structure.
*/ */
#define RPCAP_RMTAUTH_PWD 1 #define RPCAP_RMTAUTH_PWD 1
/*! /*!
\} \}
*/ */
/*! /*!
\brief This structure keeps the information needed to autheticate \brief This structure keeps the information needed to autheticate
the user on a remote machine. the user on a remote machine.
The remote machine can either grant or refuse the access according The remote machine can either grant or refuse the access according
to the information provided. to the information provided.
In case the NULL authentication is required, both 'username' and In case the NULL authentication is required, both 'username' and
'password' can be NULL pointers. 'password' can be NULL pointers.
This structure is meaningless if the source is not a remote interface; This structure is meaningless if the source is not a remote interface;
in that case, the functions which requires such a structure can accept in that case, the functions which requires such a structure can accept
a NULL pointer as well. a NULL pointer as well.
*/ */
struct pcap_rmtauth struct pcap_rmtauth
{ {
/*! /*!
\brief Type of the authentication required. \brief Type of the authentication required.
In order to provide maximum flexibility, we can support different types In order to provide maximum flexibility, we can support different types
of authentication based on the value of this 'type' variable. The currently of authentication based on the value of this 'type' variable. The currently
supported authentication methods are defined into the supported authentication methods are defined into the
\link remote_auth_methods Remote Authentication Methods Section\endlink. \link remote_auth_methods Remote Authentication Methods Section\endlink.
*/ */
int type; int type;
/*! /*!
\brief Zero-terminated string containing the username that has to be \brief Zero-terminated string containing the username that has to be
used on the remote machine for authentication. used on the remote machine for authentication.
This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication
and it can be NULL. and it can be NULL.
*/ */
char *username; char *username;
/*! /*!
\brief Zero-terminated string containing the password that has to be \brief Zero-terminated string containing the password that has to be
used on the remote machine for authentication. used on the remote machine for authentication.
This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication
and it can be NULL. and it can be NULL.
*/ */
char *password; char *password;
}; };
/*! /*!
\brief This structure defines the information related to sampling. \brief This structure defines the information related to sampling.
In case the sampling is requested, the capturing device should read 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 only a subset of the packets coming from the source. The returned packets depend
on the sampling parameters. on the sampling parameters.
\warning The sampling process is applied <strong>after</strong> the filtering process. \warning The sampling process is applied <strong>after</strong> the filtering process.
In other words, packets are filtered first, then the sampling process selects a 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. subset of the 'filtered' packets and it returns them to the caller.
*/ */
struct pcap_samp struct pcap_samp
{ {
/*! /*!
Method used for sampling. Currently, the supported methods are listed in the Method used for sampling. Currently, the supported methods are listed in the
\link remote_samp_methods Sampling Methods Section\endlink. \link remote_samp_methods Sampling Methods Section\endlink.
*/ */
int method; int method;
/*! /*!
This value depends on the sampling method defined. For its meaning, please check This value depends on the sampling method defined. For its meaning, please check
at the \link remote_samp_methods Sampling Methods Section\endlink. at the \link remote_samp_methods Sampling Methods Section\endlink.
*/ */
int value; int value;
}; };
//! Maximum lenght of an host name (needed for the RPCAP active mode) //! Maximum lenght of an host name (needed for the RPCAP active mode)
#define RPCAP_HOSTLIST_SIZE 1024 #define RPCAP_HOSTLIST_SIZE 1024
/*! /*!
\} \}
*/ // end of public documentation */ // end of public documentation
// Exported functions // Exported functions
/** \name New WinPcap functions /** \name New WinPcap functions
This section lists the new functions that are able to help considerably in writing This section lists the new functions that are able to help considerably in writing
WinPcap programs because of their easiness of use. 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); 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_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_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); int pcap_findalldevs_ex(char *source, struct pcap_rmtauth *auth, pcap_if_t **alldevs, char *errbuf);
struct pcap_samp *pcap_setsampling(pcap_t *p); struct pcap_samp *pcap_setsampling(pcap_t *p);
//\} //\}
// End of new winpcap functions // End of new winpcap functions
/** \name Remote Capture 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); 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_list(char *hostlist, char sep, int size, char *errbuf);
int pcap_remoteact_close(const char *host, char *errbuf); int pcap_remoteact_close(const char *host, char *errbuf);
void pcap_remoteact_cleanup(); void pcap_remoteact_cleanup();
//\} //\}
// End of remote capture functions // End of remote capture functions
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif

View File

@ -1,3 +1,3 @@
Winpcap is version 4.1.2 downloaded from Winpcap is version 4.1.2 downloaded from
https://www.winpcap.org/install/bin/WpdPack_4_1_2.zip https://www.winpcap.org/install/bin/WpdPack_4_1_2.zip
Just the /include and /lib directories are included to keep the size small. Just the /include and /lib directories are included to keep the size small.

View File

@ -1,24 +1,24 @@
/* XPM */ /* XPM */
static const char * addbookm_xpm[] = { static const char * addbookm_xpm[] = {
/* columns rows colors chars-per-pixel */ /* columns rows colors chars-per-pixel */
"16 15 3 1", "16 15 3 1",
". c Black", ". c Black",
"X c #00C000", "X c #00C000",
" c None", " c None",
/* pixels */ /* pixels */
" ....... ", " ....... ",
" .XXXXX. ", " .XXXXX. ",
" .. .XXXXX. ", " .. .XXXXX. ",
" .. .XXXXX. ", " .. .XXXXX. ",
" ...... .XXXXX. ", " ...... .XXXXX. ",
" ...... .XXXXX. ", " ...... .XXXXX. ",
" .. .XXXXX. ", " .. .XXXXX. ",
" .. .XXXXX. ", " .. .XXXXX. ",
" .XXXXX. ", " .XXXXX. ",
" .XXXXX. ", " .XXXXX. ",
" .XXXXX. ", " .XXXXX. ",
" .XXXXX. ", " .XXXXX. ",
" .XX.XX. ", " .XX.XX. ",
" .X. .X. ", " .X. .X. ",
" .. .. " " .. .. "
}; };

View File

@ -1,21 +1,21 @@
/* XPM */ /* XPM */
static const char * back_xpm[] = { static const char * back_xpm[] = {
"16 15 3 1", "16 15 3 1",
" c None", " c None",
". c Black", ". c Black",
"X c Gray100", "X c Gray100",
" ", " ",
" ", " ",
" . ", " . ",
" .. ", " .. ",
" .X. ", " .X. ",
" .XX........ ", " .XX........ ",
" .XXXXXXXXXX. ", " .XXXXXXXXXX. ",
" .XXXXXXXXXXX. ", " .XXXXXXXXXXX. ",
" .XXXXXXXXXXX. ", " .XXXXXXXXXXX. ",
" .XXXXXXXXXX. ", " .XXXXXXXXXX. ",
" .XX........ ", " .XX........ ",
" .X. ", " .X. ",
" .. ", " .. ",
" . ", " . ",
" "}; " "};

View File

@ -1,57 +1,57 @@
/* XPM */ /* XPM */
static const char * cdrom_xpm[] = { static const char * cdrom_xpm[] = {
/* columns rows colors chars-per-pixel */ /* columns rows colors chars-per-pixel */
"16 15 36 1", "16 15 36 1",
"= c #9BACC2", "= c #9BACC2",
"y c #547B99", "y c #547B99",
"$ c #FFFFFF", "$ c #FFFFFF",
"@ c #839CB5", "@ c #839CB5",
"o c #547897", "o c #547897",
"4 c #4D7492", "4 c #4D7492",
"% c #F1F4F7", "% c #F1F4F7",
"X c #5A809C", "X c #5A809C",
"< c #8497A5", "< c #8497A5",
"0 c #7898AD", "0 c #7898AD",
"+ c #CAD2DC", "+ c #CAD2DC",
"r c #ACAEB2", "r c #ACAEB2",
"2 c #BECAD9", "2 c #BECAD9",
"* c #65839D", "* c #65839D",
"e c #DCE2EA", "e c #DCE2EA",
"- c #ADBED2", "- c #ADBED2",
"t c #597B9A", "t c #597B9A",
" c None", " c None",
"1 c #467291", "1 c #467291",
"9 c #D6DFE7", "9 c #D6DFE7",
"O c #7393AB", "O c #7393AB",
"u c #49708B", "u c #49708B",
"5 c #A0BACB", "5 c #A0BACB",
"& c #AABFCD", "& c #AABFCD",
"8 c #B9CBD5", "8 c #B9CBD5",
"; c #B4C4D3", "; c #B4C4D3",
": c #6F90A6", ": c #6F90A6",
"3 c #A8B6CA", "3 c #A8B6CA",
"# c #ADBACE", "# c #ADBACE",
"w c #E4E9ED", "w c #E4E9ED",
". c #8EA9BC", ". c #8EA9BC",
"> c #B3BFD1", "> c #B3BFD1",
", c #C2CBDB", ", c #C2CBDB",
"6 c #C0D1DC", "6 c #C0D1DC",
"7 c #A2B3C5", "7 c #A2B3C5",
"q c #5D7C93", "q c #5D7C93",
/* pixels */ /* pixels */
" .XooOo+ ", " .XooOo+ ",
" X@#$$$%o& ", " X@#$$$%o& ",
" *=-;$$$$$o+ ", " *=-;$$$$$o+ ",
" +O#;-$$$$$$: ", " +O#;-$$$$$$: ",
" o=>,-<1<$2-o ", " o=>,-<1<$2-o ",
" o3>--1$122-* ", " o3>--1$122-* ",
" o=--$<4<22-X ", " o=--$<4<22-X ",
" o5$$$$$26;7* ", " o5$$$$$26;7* ",
" X%$$$$2;-X8 ", " X%$$$$2;-X8 ",
" 90*9$$$-7Xqo ", " 90*9$$$-7Xqo ",
" wXwe@O44X4<r<o ", " wXwe@O44X4<r<o ",
" X8628>22222<<*4", " X8628>22222<<*4",
" ttyyyoo4441uuuo", " ttyyyoo4441uuuo",
" t>$$$$$$$$$$$>o", " t>$$$$$$$$$$$>o",
" XXXtyyyoo44411u" " XXXtyyyoo44411u"
}; };

View File

@ -1,44 +1,44 @@
/* XPM */ /* XPM */
static const char * copy_xpm[] = { static const char * copy_xpm[] = {
/* columns rows colors chars-per-pixel */ /* columns rows colors chars-per-pixel */
"16 15 23 1", "16 15 23 1",
"o c #97C4E7", "o c #97C4E7",
"* c #FFFFFF", "* c #FFFFFF",
"@ c #60A9DA", "@ c #60A9DA",
"= c #D1E5F5", "= c #D1E5F5",
"& c #C3DDF1", "& c #C3DDF1",
". c #7EA6C0", ". c #7EA6C0",
" c None", " c None",
"X c #2F93CD", "X c #2F93CD",
"O c #85BBE2", "O c #85BBE2",
", c #EFF6FC", ", c #EFF6FC",
"; c #DEEDF8", "; c #DEEDF8",
"+ c #72B2DD", "+ c #72B2DD",
"3 c #F7FBFD", "3 c #F7FBFD",
"4 c #FAFCFE", "4 c #FAFCFE",
": c #DAEAF7", ": c #DAEAF7",
"< c #E9F3FA", "< c #E9F3FA",
"1 c #E2EFF8", "1 c #E2EFF8",
"- c #FDFDFE", "- c #FDFDFE",
"% c #B6D5EE", "% c #B6D5EE",
"$ c #A5CCEA", "$ c #A5CCEA",
"> c #E5F0F9", "> c #E5F0F9",
"# c #AFD1EC", "# c #AFD1EC",
"2 c #F4F9FD", "2 c #F4F9FD",
/* pixels */ /* pixels */
" .....XX ", " .....XX ",
" .oO+@X#X ", " .oO+@X#X ",
" .$oO+X##X ", " .$oO+X##X ",
" .%$o........ ", " .%$o........ ",
" .&%$.*=&#o.-. ", " .&%$.*=&#o.-. ",
" .=&%.*;=&#.--. ", " .=&%.*;=&#.--. ",
" .:=&.*>;=&.... ", " .:=&.*>;=&.... ",
" .>:=.*,>;=&#o. ", " .>:=.*,>;=&#o. ",
" .<1:.*2,>:=&#. ", " .<1:.*2,>:=&#. ",
" .2<1.*32,>:=&. ", " .2<1.*32,>:=&. ",
" .32<.*432,>:=. ", " .32<.*432,>:=. ",
" .32<.*-432,>:. ", " .32<.*-432,>:. ",
" .....**-432,>. ", " .....**-432,>. ",
" .***-432,. ", " .***-432,. ",
" .......... " " .......... "
}; };

View File

@ -1,17 +1,17 @@
/* XPM */ /* XPM */
static const char * cross_xpm[] = { static const char * cross_xpm[] = {
/* columns rows colors chars-per-pixel */ /* columns rows colors chars-per-pixel */
"10 10 2 1", "10 10 2 1",
" c Gray0", " c Gray0",
"# c None", "# c None",
/* pixels */ /* pixels */
" ######## ", " ######## ",
" #### ", " #### ",
"# ## #", "# ## #",
"## ##", "## ##",
"### ###", "### ###",
"### ###", "### ###",
"## ##", "## ##",
"# ## #", "# ## #",
" #### ", " #### ",
" ###### "}; " ###### "};

View File

@ -1,46 +1,46 @@
/* XPM */ /* XPM */
static const char * cut_xpm[] = { static const char * cut_xpm[] = {
/* columns rows colors chars-per-pixel */ /* columns rows colors chars-per-pixel */
"16 15 25 1", "16 15 25 1",
"6 c #D8BDC0", "6 c #D8BDC0",
": c #C3C3C4", ": c #C3C3C4",
"- c #FFFFFF", "- c #FFFFFF",
". c #6C6D70", ". c #6C6D70",
"2 c #AD3A45", "2 c #AD3A45",
"o c #DBDBDB", "o c #DBDBDB",
"# c #939495", "# c #939495",
"< c #E42234", "< c #E42234",
"& c #C3C5C8", "& c #C3C5C8",
"; c #C6CCD3", "; c #C6CCD3",
"% c #B7B7B8", "% c #B7B7B8",
" c None", " c None",
"* c #DFE0E2", "* c #DFE0E2",
"5 c #B69596", "5 c #B69596",
"3 c #9C2A35", "3 c #9C2A35",
"1 c #CFCFD0", "1 c #CFCFD0",
", c #AB5C64", ", c #AB5C64",
"+ c #D2D3D4", "+ c #D2D3D4",
"$ c #BCBDBE", "$ c #BCBDBE",
"@ c #C6C8CA", "@ c #C6C8CA",
"> c #CDC0C1", "> c #CDC0C1",
"O c #826F72", "O c #826F72",
"X c #979BA0", "X c #979BA0",
"4 c #9B8687", "4 c #9B8687",
"= c #9FA0A0", "= c #9FA0A0",
/* pixels */ /* pixels */
" .X .o ", " .X .o ",
" O.+ @. ", " O.+ @. ",
" O. .. ", " O. .. ",
" O#$ %.& ", " O#$ %.& ",
" O.*.. ", " O.*.. ",
" #%#.. ", " #%#.. ",
" O=-.. ", " O=-.. ",
" #%#;. ", " #%#;. ",
" OO:=O ", " OO:=O ",
" >,,<, ,<,,1 ", " >,,<, ,<,,1 ",
" ><23<1 1<32<1 ", " ><23<1 1<32<1 ",
" ,2 4< <5 2, ", " ,2 4< <5 2, ",
" <, ,2 2, ,< ", " <, ,2 2, ,< ",
" 23,<5 5<,32 ", " 23,<5 5<,32 ",
" 6225 522> " " 6225 522> "
}; };

View File

@ -1,54 +1,54 @@
/* XPM */ /* XPM */
static const char * deffile_xpm[] = { static const char * deffile_xpm[] = {
/* columns rows colors chars-per-pixel */ /* columns rows colors chars-per-pixel */
"16 16 32 1", "16 16 32 1",
"= c #97C4E7", "= c #97C4E7",
": c #72A8D2", ": c #72A8D2",
"1 c #FFFFFF", "1 c #FFFFFF",
"w c #839CB5", "w c #839CB5",
"X c #6B98B8", "X c #6B98B8",
". c #5A89A6", ". c #5A89A6",
"@ c #3A749C", "@ c #3A749C",
", c #D1E5F5", ", c #D1E5F5",
"< c #67A1CF", "< c #67A1CF",
"> c #F1F4F7", "> c #F1F4F7",
"e c #85A7BC", "e c #85A7BC",
"% c #C3DDF1", "% c #C3DDF1",
"0 c #749BB4", "0 c #749BB4",
"2 c #7EA6C0", "2 c #7EA6C0",
"; c #5F9BC8", "; c #5F9BC8",
" c None", " c None",
"O c #538DB3", "O c #538DB3",
"- c #85BBE2", "- c #85BBE2",
"$ c #D6DFE7", "$ c #D6DFE7",
"9 c #EFF6FC", "9 c #EFF6FC",
"o c #6591AE", "o c #6591AE",
"4 c #F7FBFD", "4 c #F7FBFD",
"8 c #FAFCFE", "8 c #FAFCFE",
"6 c #DAEAF7", "6 c #DAEAF7",
"7 c #E9F3FA", "7 c #E9F3FA",
"q c #FDFDFE", "q c #FDFDFE",
"3 c #E2EFF8", "3 c #E2EFF8",
"# c #8EA9BC", "# c #8EA9BC",
"& c #B6D5EE", "& c #B6D5EE",
"* c #A5CCEA", "* c #A5CCEA",
"5 c #F4F9FD", "5 c #F4F9FD",
"+ c #4581AA", "+ c #4581AA",
/* pixels */ /* pixels */
" ..XooO+@#$ ", " ..XooO+@#$ ",
" .%%&*=-;:;> ", " .%%&*=-;:;> ",
" .,,%&*=<1=X> ", " .,,%&*=<1=X> ",
" #%%%%&*211=X ", " #%%%%&*211=X ",
" #3-----<oXoO ", " #3-----<oXoO ",
" #3456,%&*=-O ", " #3456,%&*=-O ",
" #3--------=O ", " #3--------=O ",
" #355736,%&*o ", " #355736,%&*o ",
" #3--------&o ", " #3--------&o ",
" #38459736,%X ", " #38459736,%X ",
" #3--------,0 ", " #3--------,0 ",
" #31q84597360 ", " #31q84597360 ",
" #3--------3w ", " #3--------3w ",
" #3111q84597e ", " #3111q84597e ",
" ##########e# ", " ##########e# ",
" " " "
}; };

View File

@ -1,24 +1,24 @@
/* XPM */ /* XPM */
static const char * delbookm_xpm[] = { static const char * delbookm_xpm[] = {
/* columns rows colors chars-per-pixel */ /* columns rows colors chars-per-pixel */
"16 15 3 1", "16 15 3 1",
". c Black", ". c Black",
" c None", " c None",
"X c #FF4040", "X c #FF4040",
/* pixels */ /* pixels */
" ....... ", " ....... ",
" .XXXXX. ", " .XXXXX. ",
" . . .XXXXX. ", " . . .XXXXX. ",
" .. .. .XXXXX. ", " .. .. .XXXXX. ",
" ... .XXXXX. ", " ... .XXXXX. ",
" . .XXXXX. ", " . .XXXXX. ",
" ... .XXXXX. ", " ... .XXXXX. ",
" .. .. .XXXXX. ", " .. .. .XXXXX. ",
" . . .XXXXX. ", " . . .XXXXX. ",
" .XXXXX. ", " .XXXXX. ",
" .XXXXX. ", " .XXXXX. ",
" .XXXXX. ", " .XXXXX. ",
" .XX.XX. ", " .XX.XX. ",
" .X. .X. ", " .X. .X. ",
" .. .. " " .. .. "
}; };

View File

@ -1,42 +1,42 @@
/* XPM */ /* XPM */
static const char * delete_xpm[] = { static const char * delete_xpm[] = {
/* columns rows colors chars-per-pixel */ /* columns rows colors chars-per-pixel */
"16 15 21 1", "16 15 21 1",
"2 c #A5AEBD", "2 c #A5AEBD",
"* c #5478B4", "* c #5478B4",
"< c #95A3BB", "< c #95A3BB",
"O c #9AA7BC", "O c #9AA7BC",
"; c #758EB7", "; c #758EB7",
"$ c #6986B6", "$ c #6986B6",
"# c #4971B2", "# c #4971B2",
"& c #8A9CBA", "& c #8A9CBA",
"X c #8598B9", "X c #8598B9",
" c None", " c None",
"o c #ABB2BE", "o c #ABB2BE",
"- c #7F95B9", "- c #7F95B9",
"= c #4E74B3", "= c #4E74B3",
"1 c #A0ABBC", "1 c #A0ABBC",
"+ c #6F8AB7", "+ c #6F8AB7",
". c #B5B9BF", ". c #B5B9BF",
"@ c #3E69B1", "@ c #3E69B1",
", c #90A0BA", ", c #90A0BA",
": c #6483B5", ": c #6483B5",
"> c #5A7BB4", "> c #5A7BB4",
"% c #5F7FB5", "% c #5F7FB5",
/* pixels */ /* pixels */
" ", " ",
" .Xo OO ", " .Xo OO ",
" +@#. $@% ", " +@#. $@% ",
" &@@X .*@*o ", " &@@X .*@*o ",
" =@= .*@*. ", " =@= .*@*. ",
" -@@X*@*. ", " -@@X*@*. ",
" .#@@@$. ", " .#@@@$. ",
" ;@@: ", " ;@@: ",
" ;@@@+ ", " ;@@@+ ",
" .>@#%@@. ", " .>@#%@@. ",
" o*@*oO@@, ", " o*@*oO@@, ",
" <#@*. .@@= ", " <#@*. .@@= ",
"&@@$ :@@1 ", "&@@$ :@@1 ",
";#& 2#>. ", ";#& 2#>. ",
" " " "
}; };

View File

@ -1,52 +1,52 @@
/* XPM */ /* XPM */
static const char * dir_up_xpm[] = { static const char * dir_up_xpm[] = {
/* columns rows colors chars-per-pixel */ /* columns rows colors chars-per-pixel */
"16 15 31 1", "16 15 31 1",
"6 c #9BACC2", "6 c #9BACC2",
"o c #9AEA53", "o c #9AEA53",
"7 c #94A5BD", "7 c #94A5BD",
"8 c #547897", "8 c #547897",
"5 c #839CB5", "5 c #839CB5",
"@ c #376485", "@ c #376485",
"$ c #5A809C", "$ c #5A809C",
"# c #7F99B4", "# c #7F99B4",
": c #D1D9E5", ": c #D1D9E5",
"< c #EAEDF3", "< c #EAEDF3",
"& c #446A8C", "& c #446A8C",
"q c #65839D", "q c #65839D",
"> c #DCE2EA", "> c #DCE2EA",
", c #E1E6EE", ", c #E1E6EE",
"2 c #F5F6F7", "2 c #F5F6F7",
"O c #8DA0B9", "O c #8DA0B9",
" c None", " c None",
"% c #467291", "% c #467291",
". c #305F81", ". c #305F81",
"X c #7393AB", "X c #7393AB",
"+ c #6A89A2", "+ c #6A89A2",
"4 c #A8B6CA", "4 c #A8B6CA",
"1 c #EEF1F3", "1 c #EEF1F3",
"3 c #F8F9FA", "3 c #F8F9FA",
"0 c #215579", "0 c #215579",
"9 c #7F97B0", "9 c #7F97B0",
"* c #B3BFD1", "* c #B3BFD1",
"w c #7A90AC", "w c #7A90AC",
"- c #C2CBDB", "- c #C2CBDB",
"; c #CAD6E1", "; c #CAD6E1",
"= c #BBC4D6", "= c #BBC4D6",
/* pixels */ /* pixels */
" .. ", " .. ",
" X.o. ", " X.o. ",
".... X.ooo. ", ".... X.ooo. ",
".OO+....ooooo. ", ".OO+....ooooo. ",
".OOOOOO@@ooo.. ", ".OOOOOO@@ooo.. ",
".OOOO#OO@ooo.$ ", ".OOOO#OO@ooo.$ ",
".OOOOOOO@ooo.$ ", ".OOOOOOO@ooo.$ ",
".O%............&", ".O%............&",
".O&*=-;:>,<1231.", ".O&*=-;:>,<1231.",
".+.4*=-;:>,<12$.", ".+.4*=-;:>,<12$.",
"..564*=-;:>,<1. ", "..564*=-;:>,<1. ",
".@O764*=-;:>,<. ", ".@O764*=-;:>,<. ",
".89O764*=-;:>$$ ", ".89O764*=-;:>$$ ",
"0qw9O764*=-;:. ", "0qw9O764*=-;:. ",
"0............. " "0............. "
}; };

View File

@ -1,21 +1,21 @@
/* XPM */ /* XPM */
static const char * down_xpm[] = { static const char * down_xpm[] = {
"16 15 3 1", "16 15 3 1",
" c None", " c None",
". c Black", ". c Black",
"X c Gray100", "X c Gray100",
" ", " ",
" ...... ", " ...... ",
" .XXXX. ", " .XXXX. ",
" .XXXX. ", " .XXXX. ",
" .XXXX. ", " .XXXX. ",
" .XXXX. ", " .XXXX. ",
" .XXXX. ", " .XXXX. ",
" .XXXX. ", " .XXXX. ",
" ....XXXX.... ", " ....XXXX.... ",
" .XXXXXXXX. ", " .XXXXXXXX. ",
" .XXXXXX. ", " .XXXXXX. ",
" .XXXX. ", " .XXXX. ",
" .XX. ", " .XX. ",
" .. ", " .. ",
" "}; " "};

View File

@ -1,73 +1,73 @@
/* XPM */ /* XPM */
static const char * exefile_xpm[] = { static const char * exefile_xpm[] = {
/* columns rows colors chars-per-pixel */ /* columns rows colors chars-per-pixel */
"16 16 51 1", "16 16 51 1",
"% c #E8E8EC", "% c #E8E8EC",
"= c #E8E8ED", "= c #E8E8ED",
"z c #CACAD4", "z c #CACAD4",
"8 c #D9D9E1", "8 c #D9D9E1",
"p c #D2D2DA", "p c #D2D2DA",
"u c #E1E1E7", "u c #E1E1E7",
"a c #D2D2DB", "a c #D2D2DB",
"< c #E9E9ED", "< c #E9E9ED",
"q c #DADAE1", "q c #DADAE1",
"+ c #F1F1F4", "+ c #F1F1F4",
"g c #D3D3DB", "g c #D3D3DB",
"1 c #E2E2E8", "1 c #E2E2E8",
"x c #D3D3DC", "x c #D3D3DC",
"5 c #00A5FF", "5 c #00A5FF",
"$ c #EAEAEE", "$ c #EAEAEE",
"4 c #DBDBE2", "4 c #DBDBE2",
"h c #CCCCD6", "h c #CCCCD6",
"y c #D4D4DC", "y c #D4D4DC",
"r c #E3E3E9", "r c #E3E3E9",
"d c #D4D4DD", "d c #D4D4DD",
"7 c #DCDCE2", "7 c #DCDCE2",
": c #EBEBEF", ": c #EBEBEF",
"0 c #DCDCE3", "0 c #DCDCE3",
" c None", " c None",
"O c #F3F3F5", "O c #F3F3F5",
"> c #E4E4E9", "> c #E4E4E9",
"& c #F3F3F6", "& c #F3F3F6",
"j c #D5D5DD", "j c #D5D5DD",
"6 c #E4E4EA", "6 c #E4E4EA",
". c #C6C6D5", ". c #C6C6D5",
"# c #ECECF0", "# c #ECECF0",
"f c #CECED7", "f c #CECED7",
"l c #CECED8", "l c #CECED8",
"e c #D6D6DE", "e c #D6D6DE",
"; c #EDEDF0", "; c #EDEDF0",
"3 c #DEDEE4", "3 c #DEDEE4",
", c #EDEDF1", ", c #EDEDF1",
"c c #CFCFD8", "c c #CFCFD8",
"o c #F5F5F7", "o c #F5F5F7",
"- c #E6E6EB", "- c #E6E6EB",
"w c #D7D7DF", "w c #D7D7DF",
"v c #C8C8D3", "v c #C8C8D3",
"i c #DFDFE5", "i c #DFDFE5",
"@ c #EEEEF2", "@ c #EEEEF2",
"s c #D0D0D9", "s c #D0D0D9",
"X c #9494AD", "X c #9494AD",
"9 c #D8D8DF", "9 c #D8D8DF",
"t c #D8D8E0", "t c #D8D8E0",
"* c #EFEFF2", "* c #EFEFF2",
"2 c #E0E0E6", "2 c #E0E0E6",
"k c #D1D1DA", "k c #D1D1DA",
/* pixels */ /* pixels */
" ........X ", " ........X ",
" .oO+@#$%XX ", " .oO+@#$%XX ",
" .&+*#$=-XXX ", " .&+*#$=-XXX ",
" .+*;:=->XXXX ", " .+*;:=->XXXX ",
" .*,:<->1234X ", " .*,:<->1234X ",
" .,5:5612378X ", " .,5:5612378X ",
" 5,5559530qwX ", " 5,5559530qwX ",
" 55555550q9eX ", " 55555550q9eX ",
" 5555r5555teyX ", " 5555r5555teyX ",
" 55rui559eypX ", " 55rui559eypX ",
" 5555i5555yasX ", " 5555i5555yasX ",
" 5555555dasfX ", " 5555555dasfX ",
" 5355595gsfhX ", " 5355595gsfhX ",
" .3595jgklhzX ", " .3595jgklhzX ",
" .0qwjxkchzvX ", " .0qwjxkchzvX ",
" XXXXXXXXXXXX " " XXXXXXXXXXXX "
}; };

Some files were not shown because too many files have changed in this diff Show More