From: <man...@us...> - 2015-05-15 06:35:16
|
Revision: 5097 http://sourceforge.net/p/modplug/code/5097 Author: manxorist Date: 2015-05-15 06:35:09 +0000 (Fri, 15 May 2015) Log Message: ----------- [Ref] build: Add a proper application manifest aseembly identity to the premake build of OpenMPT. Even though things work without any problem without it, MSDN says this is required. Write 1.0.0.0 as required version field there, as determining the proper OpenMPT version would result in yet another build step that would generate the manifest dynamically. As the version does not matter at all for executables (it matters only for libraries), the old build system did not bother to write the OpenMPT version there either. Use a new file, OpenMPT.manifest and leave the old rt_manif.bin for the old build system alone. Modified Paths: -------------- trunk/OpenMPT/build/premake/mpt-OpenMPT.lua trunk/OpenMPT/build/vs2008/OpenMPT.vcproj trunk/OpenMPT/build/vs2010/OpenMPT.vcxproj trunk/OpenMPT/build/vs2010/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2012/OpenMPT.vcxproj trunk/OpenMPT/build/vs2012/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2013/OpenMPT.vcxproj trunk/OpenMPT/build/vs2013/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2015/OpenMPT.vcxproj trunk/OpenMPT/build/vs2015/OpenMPT.vcxproj.filters Added Paths: ----------- trunk/OpenMPT/mptrack/res/OpenMPT.manifest Modified: trunk/OpenMPT/build/premake/mpt-OpenMPT.lua =================================================================== --- trunk/OpenMPT/build/premake/mpt-OpenMPT.lua 2015-05-15 06:17:44 UTC (rev 5096) +++ trunk/OpenMPT/build/premake/mpt-OpenMPT.lua 2015-05-15 06:35:09 UTC (rev 5097) @@ -18,6 +18,9 @@ "../../build/svn_version", } files { + "../../mptrack/res/OpenMPT.manifest", + } + files { "../../common/*.cpp", "../../common/*.h", "../../soundlib/*.cpp", Modified: trunk/OpenMPT/build/vs2008/OpenMPT.vcproj =================================================================== --- trunk/OpenMPT/build/vs2008/OpenMPT.vcproj 2015-05-15 06:17:44 UTC (rev 5096) +++ trunk/OpenMPT/build/vs2008/OpenMPT.vcproj 2015-05-15 06:35:09 UTC (rev 5097) @@ -85,6 +85,7 @@ /> <Tool Name="VCManifestTool" + AdditionalManifestFiles="../../mptrack/res/OpenMPT.manifest" /> <Tool Name="VCXDCMakeTool" @@ -169,6 +170,7 @@ /> <Tool Name="VCManifestTool" + AdditionalManifestFiles="../../mptrack/res/OpenMPT.manifest" /> <Tool Name="VCXDCMakeTool" @@ -255,6 +257,7 @@ /> <Tool Name="VCManifestTool" + AdditionalManifestFiles="../../mptrack/res/OpenMPT.manifest" /> <Tool Name="VCXDCMakeTool" @@ -342,6 +345,7 @@ /> <Tool Name="VCManifestTool" + AdditionalManifestFiles="../../mptrack/res/OpenMPT.manifest" /> <Tool Name="VCXDCMakeTool" @@ -429,6 +433,7 @@ /> <Tool Name="VCManifestTool" + AdditionalManifestFiles="../../mptrack/res/OpenMPT.manifest" /> <Tool Name="VCXDCMakeTool" @@ -517,6 +522,7 @@ /> <Tool Name="VCManifestTool" + AdditionalManifestFiles="../../mptrack/res/OpenMPT.manifest" /> <Tool Name="VCXDCMakeTool" @@ -1441,6 +1447,14 @@ RelativePath="..\..\mptrack\view_com.h" > </File> + <Filter + Name="res" + > + <File + RelativePath="..\..\mptrack\res\OpenMPT.manifest" + > + </File> + </Filter> </Filter> <Filter Name="pluginBridge" Modified: trunk/OpenMPT/build/vs2010/OpenMPT.vcxproj =================================================================== --- trunk/OpenMPT/build/vs2010/OpenMPT.vcxproj 2015-05-15 06:17:44 UTC (rev 5096) +++ trunk/OpenMPT/build/vs2010/OpenMPT.vcxproj 2015-05-15 06:35:09 UTC (rev 5097) @@ -157,6 +157,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -184,6 +187,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -219,6 +225,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -254,6 +263,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -289,6 +301,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -324,6 +339,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -700,6 +718,9 @@ <ClCompile Include="..\..\unarchiver\unzip.cpp" /> </ItemGroup> <ItemGroup> + <None Include="..\..\mptrack\res\OpenMPT.manifest" /> + </ItemGroup> + <ItemGroup> <ResourceCompile Include="..\..\mptrack\mptrack.rc" /> </ItemGroup> <ItemGroup> Modified: trunk/OpenMPT/build/vs2010/OpenMPT.vcxproj.filters =================================================================== --- trunk/OpenMPT/build/vs2010/OpenMPT.vcxproj.filters 2015-05-15 06:17:44 UTC (rev 5096) +++ trunk/OpenMPT/build/vs2010/OpenMPT.vcxproj.filters 2015-05-15 06:35:09 UTC (rev 5097) @@ -7,6 +7,9 @@ <Filter Include="mptrack"> <UniqueIdentifier>{778900D8-E368-7F73-EC80-0A4A58DFE5D4}</UniqueIdentifier> </Filter> + <Filter Include="mptrack\res"> + <UniqueIdentifier>{3025A28F-9CDA-1A85-25CF-145C91831189}</UniqueIdentifier> + </Filter> <Filter Include="pluginBridge"> <UniqueIdentifier>{E1FAE259-CD5D-72FE-76E3-AAB462253E81}</UniqueIdentifier> </Filter> @@ -30,6 +33,11 @@ </Filter> </ItemGroup> <ItemGroup> + <None Include="..\..\mptrack\res\OpenMPT.manifest"> + <Filter>mptrack\res</Filter> + </None> + </ItemGroup> + <ItemGroup> <ClInclude Include="..\..\common\AudioCriticalSection.h"> <Filter>common</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2012/OpenMPT.vcxproj =================================================================== --- trunk/OpenMPT/build/vs2012/OpenMPT.vcxproj 2015-05-15 06:17:44 UTC (rev 5096) +++ trunk/OpenMPT/build/vs2012/OpenMPT.vcxproj 2015-05-15 06:35:09 UTC (rev 5097) @@ -163,6 +163,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -190,6 +193,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -225,6 +231,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -260,6 +269,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -295,6 +307,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -330,6 +345,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -706,6 +724,9 @@ <ClCompile Include="..\..\unarchiver\unzip.cpp" /> </ItemGroup> <ItemGroup> + <None Include="..\..\mptrack\res\OpenMPT.manifest" /> + </ItemGroup> + <ItemGroup> <ResourceCompile Include="..\..\mptrack\mptrack.rc" /> </ItemGroup> <ItemGroup> Modified: trunk/OpenMPT/build/vs2012/OpenMPT.vcxproj.filters =================================================================== --- trunk/OpenMPT/build/vs2012/OpenMPT.vcxproj.filters 2015-05-15 06:17:44 UTC (rev 5096) +++ trunk/OpenMPT/build/vs2012/OpenMPT.vcxproj.filters 2015-05-15 06:35:09 UTC (rev 5097) @@ -7,6 +7,9 @@ <Filter Include="mptrack"> <UniqueIdentifier>{778900D8-E368-7F73-EC80-0A4A58DFE5D4}</UniqueIdentifier> </Filter> + <Filter Include="mptrack\res"> + <UniqueIdentifier>{3025A28F-9CDA-1A85-25CF-145C91831189}</UniqueIdentifier> + </Filter> <Filter Include="pluginBridge"> <UniqueIdentifier>{E1FAE259-CD5D-72FE-76E3-AAB462253E81}</UniqueIdentifier> </Filter> @@ -30,6 +33,11 @@ </Filter> </ItemGroup> <ItemGroup> + <None Include="..\..\mptrack\res\OpenMPT.manifest"> + <Filter>mptrack\res</Filter> + </None> + </ItemGroup> + <ItemGroup> <ClInclude Include="..\..\common\AudioCriticalSection.h"> <Filter>common</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2013/OpenMPT.vcxproj =================================================================== --- trunk/OpenMPT/build/vs2013/OpenMPT.vcxproj 2015-05-15 06:17:44 UTC (rev 5096) +++ trunk/OpenMPT/build/vs2013/OpenMPT.vcxproj 2015-05-15 06:35:09 UTC (rev 5097) @@ -164,6 +164,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -191,6 +194,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -226,6 +232,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -261,6 +270,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -296,6 +308,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -331,6 +346,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -707,6 +725,9 @@ <ClCompile Include="..\..\unarchiver\unzip.cpp" /> </ItemGroup> <ItemGroup> + <None Include="..\..\mptrack\res\OpenMPT.manifest" /> + </ItemGroup> + <ItemGroup> <ResourceCompile Include="..\..\mptrack\mptrack.rc" /> </ItemGroup> <ItemGroup> Modified: trunk/OpenMPT/build/vs2013/OpenMPT.vcxproj.filters =================================================================== --- trunk/OpenMPT/build/vs2013/OpenMPT.vcxproj.filters 2015-05-15 06:17:44 UTC (rev 5096) +++ trunk/OpenMPT/build/vs2013/OpenMPT.vcxproj.filters 2015-05-15 06:35:09 UTC (rev 5097) @@ -7,6 +7,9 @@ <Filter Include="mptrack"> <UniqueIdentifier>{778900D8-E368-7F73-EC80-0A4A58DFE5D4}</UniqueIdentifier> </Filter> + <Filter Include="mptrack\res"> + <UniqueIdentifier>{3025A28F-9CDA-1A85-25CF-145C91831189}</UniqueIdentifier> + </Filter> <Filter Include="pluginBridge"> <UniqueIdentifier>{E1FAE259-CD5D-72FE-76E3-AAB462253E81}</UniqueIdentifier> </Filter> @@ -30,6 +33,11 @@ </Filter> </ItemGroup> <ItemGroup> + <None Include="..\..\mptrack\res\OpenMPT.manifest"> + <Filter>mptrack\res</Filter> + </None> + </ItemGroup> + <ItemGroup> <ClInclude Include="..\..\common\AudioCriticalSection.h"> <Filter>common</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2015/OpenMPT.vcxproj =================================================================== --- trunk/OpenMPT/build/vs2015/OpenMPT.vcxproj 2015-05-15 06:17:44 UTC (rev 5096) +++ trunk/OpenMPT/build/vs2015/OpenMPT.vcxproj 2015-05-15 06:35:09 UTC (rev 5097) @@ -164,6 +164,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -191,6 +194,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -226,6 +232,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -261,6 +270,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -296,6 +308,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -331,6 +346,9 @@ <DataExecutionPrevention>false</DataExecutionPrevention> <LargeAddressAware>true</LargeAddressAware> </Link> + <Manifest> + <AdditionalManifestFiles>../../mptrack/res/OpenMPT.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> + </Manifest> <PreBuildEvent> <Command>..\..\build\svn_version\update_svn_version_vs_premake.cmd $(IntDir)</Command> </PreBuildEvent> @@ -707,6 +725,9 @@ <ClCompile Include="..\..\unarchiver\unzip.cpp" /> </ItemGroup> <ItemGroup> + <None Include="..\..\mptrack\res\OpenMPT.manifest" /> + </ItemGroup> + <ItemGroup> <ResourceCompile Include="..\..\mptrack\mptrack.rc" /> </ItemGroup> <ItemGroup> Modified: trunk/OpenMPT/build/vs2015/OpenMPT.vcxproj.filters =================================================================== --- trunk/OpenMPT/build/vs2015/OpenMPT.vcxproj.filters 2015-05-15 06:17:44 UTC (rev 5096) +++ trunk/OpenMPT/build/vs2015/OpenMPT.vcxproj.filters 2015-05-15 06:35:09 UTC (rev 5097) @@ -7,6 +7,9 @@ <Filter Include="mptrack"> <UniqueIdentifier>{778900D8-E368-7F73-EC80-0A4A58DFE5D4}</UniqueIdentifier> </Filter> + <Filter Include="mptrack\res"> + <UniqueIdentifier>{3025A28F-9CDA-1A85-25CF-145C91831189}</UniqueIdentifier> + </Filter> <Filter Include="pluginBridge"> <UniqueIdentifier>{E1FAE259-CD5D-72FE-76E3-AAB462253E81}</UniqueIdentifier> </Filter> @@ -30,6 +33,11 @@ </Filter> </ItemGroup> <ItemGroup> + <None Include="..\..\mptrack\res\OpenMPT.manifest"> + <Filter>mptrack\res</Filter> + </None> + </ItemGroup> + <ItemGroup> <ClInclude Include="..\..\common\AudioCriticalSection.h"> <Filter>common</Filter> </ClInclude> Added: trunk/OpenMPT/mptrack/res/OpenMPT.manifest =================================================================== --- trunk/OpenMPT/mptrack/res/OpenMPT.manifest (rev 0) +++ trunk/OpenMPT/mptrack/res/OpenMPT.manifest 2015-05-15 06:35:09 UTC (rev 5097) @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity + type="win32" + name="OpenMPT.OpenMPT" + version="1.0.0.0" + /> + <description>OpenMPT / Open ModPlug Tracker</description> +</assembly> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |