From 1e44ec84bd90ec9078027d1d9d78e83c7d305f2a Mon Sep 17 00:00:00 2001
From: BlueWall
Date: Tue, 31 Aug 2010 17:02:36 -0400
Subject: Build system upgrade:
Upgrading Prebuild.exe to correctly construct build solutions
for crossplatform tools such as xbuild, monodevelop and nant.
NOTE: Module prebuild files will need modification to work,
as the prebuild must correctly define the reference path for
all assemblies shipped in the OpenSimulator ./bin directory.
These include assemblies such as XMLRPC.dll, OpenMetaverse.dll,
Nini.dll, etc. . The entries should follow the form:
See the distributed prebuild.xml for further examples.
Crossplatform tools: xbuild and monodevelop use the
vs2008 OpenSim.sln and the .csproj files in each namespace.
Changes to the Prebuild.exe are against svn 322 and are included
in a patch attached to the mantis. And the dnpb source are
available@ svn co https://dnpb.svn.sourceforge.net/svnroot/dnpb dnpb
The patches are pending application by the dnpb team. After which,
the un-modified upstream Prebuild.exe will work as expected.
---
Prebuild/clean.bat | 1 -
Prebuild/clean.sh | 1 -
Prebuild/doc/prebuild-example1.xml | 300 ----
Prebuild/doc/prebuild-example2.xml | 72 -
Prebuild/doc/prebuild-example3.xml | 113 --
Prebuild/doc/prebuild-example4.xml | 715 --------
Prebuild/doc/prebuild-example5.xml | 187 --
Prebuild/prebuild.xml | 73 -
Prebuild/scripts/Clean.bat | 2 -
Prebuild/scripts/Clean.sh | 4 -
Prebuild/scripts/Help.bat | 2 -
Prebuild/scripts/MonoDevelop.sh | 2 -
Prebuild/scripts/Prebuild.nsi | 231 ---
Prebuild/scripts/SharpDevelop.bat | 4 -
Prebuild/scripts/SharpDevelop2.bat | 4 -
Prebuild/scripts/VS2002.bat | 4 -
Prebuild/scripts/VS2003.bat | 4 -
Prebuild/scripts/VS2005.bat | 4 -
Prebuild/scripts/VS2008.bat | 4 -
Prebuild/scripts/autotools.bat | 4 -
Prebuild/scripts/autotools.sh | 5 -
Prebuild/scripts/makefile.bat | 4 -
Prebuild/scripts/makefile.sh | 10 -
Prebuild/scripts/nant.bat | 4 -
Prebuild/scripts/nant.sh | 2 -
Prebuild/scripts/xcode.bat | 4 -
Prebuild/scripts/xcode.sh | 2 -
Prebuild/src/App.ico | Bin 4286 -> 0 bytes
Prebuild/src/Core/Attributes/DataNodeAttribute.cs | 72 -
.../src/Core/Attributes/OptionNodeAttribute.cs | 71 -
Prebuild/src/Core/Attributes/TargetAttribute.cs | 71 -
Prebuild/src/Core/FatalException.cs | 85 -
Prebuild/src/Core/Interfaces/IDataNode.cs | 47 -
Prebuild/src/Core/Interfaces/ITarget.cs | 51 -
Prebuild/src/Core/Kernel.cs | 831 ---------
Prebuild/src/Core/Nodes/AuthorNode.cs | 89 -
Prebuild/src/Core/Nodes/ConfigurationNode.cs | 178 --
Prebuild/src/Core/Nodes/DataNode.cs | 117 --
Prebuild/src/Core/Nodes/DatabaseProjectNode.cs | 94 --
Prebuild/src/Core/Nodes/DatabaseReferenceNode.cs | 63 -
Prebuild/src/Core/Nodes/DescriptionNode.cs | 89 -
Prebuild/src/Core/Nodes/ExcludeNode.cs | 89 -
Prebuild/src/Core/Nodes/FileNode.cs | 271 ---
Prebuild/src/Core/Nodes/FilesNode.cs | 247 ---
Prebuild/src/Core/Nodes/MatchNode.cs | 330 ----
Prebuild/src/Core/Nodes/OptionsNode.cs | 644 -------
Prebuild/src/Core/Nodes/ProcessNode.cs | 110 --
Prebuild/src/Core/Nodes/ProjectNode.cs | 580 -------
Prebuild/src/Core/Nodes/ReferenceNode.cs | 144 --
Prebuild/src/Core/Nodes/ReferencePathNode.cs | 99 --
Prebuild/src/Core/Nodes/SolutionNode.cs | 358 ----
Prebuild/src/Core/Parse/IfContext.cs | 154 --
Prebuild/src/Core/Parse/Preprocessor.cs | 663 --------
Prebuild/src/Core/Targets/AutotoolsTarget.cs | 1782 --------------------
Prebuild/src/Core/Targets/DebugTarget.cs | 102 --
Prebuild/src/Core/Targets/MakefileTarget.cs | 471 ------
Prebuild/src/Core/Targets/MonoDevelopTarget.cs | 464 -----
Prebuild/src/Core/Targets/NAntTarget.cs | 738 --------
Prebuild/src/Core/Targets/SharpDevelop2Target.cs | 82 -
Prebuild/src/Core/Targets/SharpDevelopTarget.cs | 428 -----
Prebuild/src/Core/Targets/ToolInfo.cs | 197 ---
Prebuild/src/Core/Targets/VS2002Target.cs | 87 -
Prebuild/src/Core/Targets/VS2003Target.cs | 602 -------
Prebuild/src/Core/Targets/VS2005Target.cs | 149 --
Prebuild/src/Core/Targets/VS2008Target.cs | 132 --
Prebuild/src/Core/Targets/VS2010Target.cs | 134 --
Prebuild/src/Core/Targets/VSGenericTarget.cs | 887 ----------
Prebuild/src/Core/Targets/VSVersion.cs | 54 -
Prebuild/src/Core/Targets/XcodeTarget.cs | 596 -------
Prebuild/src/Core/UnknownLanguageException.cs | 63 -
.../src/Core/Utilities/CommandLineCollection.cs | 153 --
Prebuild/src/Core/Utilities/CurrentDirectory.cs | 80 -
Prebuild/src/Core/Utilities/Helper.cs | 654 -------
Prebuild/src/Core/Utilities/Log.cs | 270 ---
Prebuild/src/Core/WarningException.cs | 84 -
Prebuild/src/Prebuild.cs | 165 --
Prebuild/src/Prebuild.snk | Bin 596 -> 0 bytes
Prebuild/src/Properties/AssemblyInfo.cs | 112 --
Prebuild/src/data/autotools.xml | 790 ---------
Prebuild/src/data/dnpb-1.0.xsd | 183 --
Prebuild/src/data/dnpb-1.1.xsd | 184 --
Prebuild/src/data/dnpb-1.2.xsd | 198 ---
Prebuild/src/data/dnpb-1.3.xsd | 206 ---
Prebuild/src/data/dnpb-1.4.xsd | 212 ---
Prebuild/src/data/dnpb-1.5.xsd | 215 ---
Prebuild/src/data/prebuild-1.6.xsd | 231 ---
Prebuild/src/data/prebuild-1.7.xsd | 331 ----
Prebuild/tests/Makefile | 24 -
Prebuild/tests/README.txt | 5 -
Prebuild/tests/include-001.expected | 46 -
Prebuild/tests/include-001.include | 33 -
Prebuild/tests/include-001.prebuild | 22 -
Prebuild/tests/include-002-2.include | 8 -
Prebuild/tests/include-002.expected | 26 -
Prebuild/tests/include-002.include | 14 -
Prebuild/tests/include-002.prebuild | 7 -
bin/Prebuild.exe | Bin 237568 -> 227840 bytes
prebuild.xml | 1176 ++++++-------
runprebuild.sh | 3 -
99 files changed, 560 insertions(+), 19149 deletions(-)
delete mode 100755 Prebuild/clean.bat
delete mode 100755 Prebuild/clean.sh
delete mode 100644 Prebuild/doc/prebuild-example1.xml
delete mode 100644 Prebuild/doc/prebuild-example2.xml
delete mode 100644 Prebuild/doc/prebuild-example3.xml
delete mode 100644 Prebuild/doc/prebuild-example4.xml
delete mode 100644 Prebuild/doc/prebuild-example5.xml
delete mode 100644 Prebuild/prebuild.xml
delete mode 100755 Prebuild/scripts/Clean.bat
delete mode 100755 Prebuild/scripts/Clean.sh
delete mode 100755 Prebuild/scripts/Help.bat
delete mode 100755 Prebuild/scripts/MonoDevelop.sh
delete mode 100644 Prebuild/scripts/Prebuild.nsi
delete mode 100755 Prebuild/scripts/SharpDevelop.bat
delete mode 100755 Prebuild/scripts/SharpDevelop2.bat
delete mode 100755 Prebuild/scripts/VS2002.bat
delete mode 100755 Prebuild/scripts/VS2003.bat
delete mode 100755 Prebuild/scripts/VS2005.bat
delete mode 100755 Prebuild/scripts/VS2008.bat
delete mode 100755 Prebuild/scripts/autotools.bat
delete mode 100755 Prebuild/scripts/autotools.sh
delete mode 100755 Prebuild/scripts/makefile.bat
delete mode 100755 Prebuild/scripts/makefile.sh
delete mode 100755 Prebuild/scripts/nant.bat
delete mode 100755 Prebuild/scripts/nant.sh
delete mode 100755 Prebuild/scripts/xcode.bat
delete mode 100755 Prebuild/scripts/xcode.sh
delete mode 100644 Prebuild/src/App.ico
delete mode 100644 Prebuild/src/Core/Attributes/DataNodeAttribute.cs
delete mode 100644 Prebuild/src/Core/Attributes/OptionNodeAttribute.cs
delete mode 100644 Prebuild/src/Core/Attributes/TargetAttribute.cs
delete mode 100644 Prebuild/src/Core/FatalException.cs
delete mode 100644 Prebuild/src/Core/Interfaces/IDataNode.cs
delete mode 100644 Prebuild/src/Core/Interfaces/ITarget.cs
delete mode 100644 Prebuild/src/Core/Kernel.cs
delete mode 100644 Prebuild/src/Core/Nodes/AuthorNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/ConfigurationNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/DataNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/DatabaseProjectNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/DatabaseReferenceNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/DescriptionNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/ExcludeNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/FileNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/FilesNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/MatchNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/OptionsNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/ProcessNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/ProjectNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/ReferenceNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/ReferencePathNode.cs
delete mode 100644 Prebuild/src/Core/Nodes/SolutionNode.cs
delete mode 100644 Prebuild/src/Core/Parse/IfContext.cs
delete mode 100644 Prebuild/src/Core/Parse/Preprocessor.cs
delete mode 100644 Prebuild/src/Core/Targets/AutotoolsTarget.cs
delete mode 100644 Prebuild/src/Core/Targets/DebugTarget.cs
delete mode 100644 Prebuild/src/Core/Targets/MakefileTarget.cs
delete mode 100644 Prebuild/src/Core/Targets/MonoDevelopTarget.cs
delete mode 100644 Prebuild/src/Core/Targets/NAntTarget.cs
delete mode 100644 Prebuild/src/Core/Targets/SharpDevelop2Target.cs
delete mode 100644 Prebuild/src/Core/Targets/SharpDevelopTarget.cs
delete mode 100644 Prebuild/src/Core/Targets/ToolInfo.cs
delete mode 100644 Prebuild/src/Core/Targets/VS2002Target.cs
delete mode 100644 Prebuild/src/Core/Targets/VS2003Target.cs
delete mode 100644 Prebuild/src/Core/Targets/VS2005Target.cs
delete mode 100644 Prebuild/src/Core/Targets/VS2008Target.cs
delete mode 100644 Prebuild/src/Core/Targets/VS2010Target.cs
delete mode 100644 Prebuild/src/Core/Targets/VSGenericTarget.cs
delete mode 100644 Prebuild/src/Core/Targets/VSVersion.cs
delete mode 100644 Prebuild/src/Core/Targets/XcodeTarget.cs
delete mode 100644 Prebuild/src/Core/UnknownLanguageException.cs
delete mode 100644 Prebuild/src/Core/Utilities/CommandLineCollection.cs
delete mode 100644 Prebuild/src/Core/Utilities/CurrentDirectory.cs
delete mode 100644 Prebuild/src/Core/Utilities/Helper.cs
delete mode 100644 Prebuild/src/Core/Utilities/Log.cs
delete mode 100644 Prebuild/src/Core/WarningException.cs
delete mode 100644 Prebuild/src/Prebuild.cs
delete mode 100644 Prebuild/src/Prebuild.snk
delete mode 100644 Prebuild/src/Properties/AssemblyInfo.cs
delete mode 100644 Prebuild/src/data/autotools.xml
delete mode 100644 Prebuild/src/data/dnpb-1.0.xsd
delete mode 100644 Prebuild/src/data/dnpb-1.1.xsd
delete mode 100644 Prebuild/src/data/dnpb-1.2.xsd
delete mode 100644 Prebuild/src/data/dnpb-1.3.xsd
delete mode 100644 Prebuild/src/data/dnpb-1.4.xsd
delete mode 100644 Prebuild/src/data/dnpb-1.5.xsd
delete mode 100644 Prebuild/src/data/prebuild-1.6.xsd
delete mode 100644 Prebuild/src/data/prebuild-1.7.xsd
delete mode 100644 Prebuild/tests/Makefile
delete mode 100644 Prebuild/tests/README.txt
delete mode 100644 Prebuild/tests/include-001.expected
delete mode 100644 Prebuild/tests/include-001.include
delete mode 100644 Prebuild/tests/include-001.prebuild
delete mode 100644 Prebuild/tests/include-002-2.include
delete mode 100644 Prebuild/tests/include-002.expected
delete mode 100644 Prebuild/tests/include-002.include
delete mode 100644 Prebuild/tests/include-002.prebuild
diff --git a/Prebuild/clean.bat b/Prebuild/clean.bat
deleted file mode 100755
index 1d71cbf..0000000
--- a/Prebuild/clean.bat
+++ /dev/null
@@ -1 +0,0 @@
-NAnt.exe clean
\ No newline at end of file
diff --git a/Prebuild/clean.sh b/Prebuild/clean.sh
deleted file mode 100755
index 900b6ed..0000000
--- a/Prebuild/clean.sh
+++ /dev/null
@@ -1 +0,0 @@
-nant clean
diff --git a/Prebuild/doc/prebuild-example1.xml b/Prebuild/doc/prebuild-example1.xml
deleted file mode 100644
index a2cee42..0000000
--- a/Prebuild/doc/prebuild-example1.xml
+++ /dev/null
@@ -1,300 +0,0 @@
-
-
-
-
-
- TRACE;DEBUG
- false
- false
- false
- 4
- false
- 1591;219;1573;1572;168
- ..\bin
- true
- false
- true
- 285212672
- 4096
- false
- Docs.xml
-
-
-
-
- TRACE
- true
- false
- false
- 4
- false
- 1591;219;1573;1572;168
- ..\bin
- false
- false
- true
- 285212672
- 4096
- false
- Docs.xml
-
-
-
-
-
-
- ..\bin\lib\Utility
- RealmForge.Utility.xml
-
-
-
-
- ..\bin\lib\Utility
- RealmForge.Utility.xml
-
-
- ../bin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\bin\lib\Framework
- RealmForge.Framework.xml
-
-
-
-
- ..\bin\lib\Framework
- RealmForge.Framework.xml
-
-
- ../bin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\bin\lib\Genres
- RealmForge.Genres.xml
-
-
-
-
- ..\bin\lib\Genres
- RealmForge.Genres.xml
-
-
- ../bin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\bin\lib\Forms
- RealmForge.UI.Forms.xml
- true
-
-
-
-
- ..\bin\lib\Forms
- RealmForge.UI.Forms.xml
- true
-
-
- ../bin
-
-
-
-
-
-
-
-
-
-
-
- IDE\Resources\ImagesCaptionIDE.bmp
- IDE\Resources\ImagesCaptionPlain.bmp
- IDE\Resources\ImagesMenuControl.bmp
- IDE\Resources\ImagesPopupMenu.bmp
- IDE\Resources\ImagesTabbedGroups.bmp
- IDE\Resources\ImagesTabControl.bmp
- IDE\Resources\LibraryIcon.ico
- IDE\Resources\TabbedInvalid.cur
- IDE\Resources\TabbedValid.cur
- IDE\Resources\WizardPicture.bmp
- Controls\Trees\tv_minus.bmp
- Controls\Trees\tv_plus.bmp
- Controls\Trees\treeview.bmp
- Controls\Trees\listview.bmp
- IDE\Menus\MenuControl.bmp
- IDE\Controls\InertButton.bmp
- IDE\Controls\TabbedGroups.bmp
- IDE\Controls\TabCOntrol.bmp
- IDE\Controls\WizardControl.bmp
- Forms\IDETest.resx
- Forms\IDEWindow.resx
- Forms\Launcher.resx
- Forms\MainRenderFrame.resx
-
-
-
-
-
-
-
- ..\bin\lib\RAGE
- RealmForge.RAGE.xml
-
-
-
-
- ..\bin\lib\RAGE
- RealmForge.RAGE.xml
-
-
- ../bin
- ../bin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\bin\ScriptLibrary
- RealmForge.ScriptLibrary.xml
-
-
-
-
- ..\bin\ScriptLibrary
- RealmForge.ScriptLibrary.xml
-
-
- ../bin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\bin\lib\Updater
- Updater.xml
-
-
-
-
- ..\bin\lib\Updater
- Updater.xml
-
-
- ../bin
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\bin
- DemoGame.xml
-
-
-
-
- ..\bin
- DemoGame.xml
-
-
- ../bin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Prebuild/doc/prebuild-example2.xml b/Prebuild/doc/prebuild-example2.xml
deleted file mode 100644
index bd23c4f..0000000
--- a/Prebuild/doc/prebuild-example2.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
-
-
- DEBUG;TRACE;WIN32;NET
-
- DEBUG;TRACE;POSIX
-
- false
- bin\Debug
- true
- 1595
-
-
-
-
-
- TRACE;WIN32;NET
-
- TRACE;POSIX
-
- bin\Release
- true
- false
- 1595
-
-
-
- prebuild.xml
-
-
-
-
-
-
- DEBUG;TRACE;WIN32;NET
-
- DEBUG;TRACE;POSIX
-
- false
- bin\Debug
- true
- Prebuild.xml
- 1595
-
-
-
-
-
- TRACE;WIN32;NET
-
- TRACE;POSIX
-
- bin\Release
- true
- false
- Prebuild.xml
- 1595
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Prebuild/doc/prebuild-example3.xml b/Prebuild/doc/prebuild-example3.xml
deleted file mode 100644
index 0111562..0000000
--- a/Prebuild/doc/prebuild-example3.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
-
-
-
-
-
- DEBUG;TRACE;WIN32
-
- DEBUG;TRACE;POSIX
-
- false
- false
- false
- 4
-
-
- false
- 1591;219;1573;1572;168
-
-
- ..\bin
- true
- false
- true
- 285212672
- 4096
- false
- Docs.xml
-
-
-
-
- TRACE
- true
- false
- false
- 4
- false
- 1591;219;1573;1572;168
- ..\bin
- false
- false
- true
- 285212672
- 4096
- false
- Docs.xml
-
-
-
-
-
-
-
- ..\bin\lib\Utility
- RealmForge.Utility.xml
-
-
-
-
- ..\bin\lib\Utility
- RealmForge.Utility.xml
-
-
- ../bin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\bin
- DemoGame.xml
-
-
-
-
- ..\bin
- DemoGame.xml
-
-
- ../bin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Prebuild/doc/prebuild-example4.xml b/Prebuild/doc/prebuild-example4.xml
deleted file mode 100644
index e5861b8..0000000
--- a/Prebuild/doc/prebuild-example4.xml
+++ /dev/null
@@ -1,715 +0,0 @@
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- 1
- 1595
-
-
-
- SdlDotNet.build
- prebuild.xml
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- SdlDotNet.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- SdlDotNet.xml
- false
- 1
- 1595
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- Rectangles.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- Rectangles.xml
- 1
- 1595
-
-
-
-
-
-
- App.ico
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- Gears.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- Gears.xml
- 1
- 1595
-
-
-
-
-
-
-
- App.ico
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- CDPlayer.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- CDPlayer.xml
- 1
- 1595
-
-
-
-
-
-
-
- App.ico
- CDPlayer.cs
-
-
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- MoviePlayer.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- MoviePlayer.xml
- 1
- 1595
-
-
-
-
-
-
- App.ico
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- SimpleGame.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- SimpleGame.xml
- 1
- 1595
-
-
-
-
-
-
- App.ico
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- BombRun.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- BombRun.xml
- 1
- 1595
-
-
-
-
-
-
- App.ico
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- SnowDemo.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- SnowDemo.xml
- 1
- 1595
-
-
-
-
-
-
- App.ico
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- BounceSprites.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- BounceSprites.xml
- 1
- 1595
-
-
-
-
-
-
- App.ico
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- Triad.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- Triad.xml
- 1
- 1595
-
-
-
-
-
-
-
- App.ico
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- GuiExample.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- GuiExample.xml
- 1
- 1595
-
-
-
-
-
-
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- SpriteGuiDemos.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- SpriteGuiDemos.xml
- 1
- 1595
-
-
-
-
-
-
-
- App.ico
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- SdlDotNet.Tests.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- SdlDotNet.Tests.xml
- 1
- 1595
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- AudioExample.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- AudioExample.xml
- 1
- 1595
-
-
-
-
-
-
- App.ico
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- SdlDotNet.Particles.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- SdlDotNet.Particles.xml
- 1
- 1595
-
-
-
-
-
-
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- ParticlesExample.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- ParticlesExample.xml
- 1
- 1595
-
-
-
-
-
-
-
- App.ico
-
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- NeHe.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- NeHe.xml
- 1
- 1595
-
-
-
-
-
-
-
-
-
-
- App.ico
- NeHe.cs
-
-
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- RedBook.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- RedBook.xml
- 1
- 1595
-
-
-
-
-
-
-
-
-
-
- App.ico
- RedBook.cs
-
-
-
-
-
-
-
-
- DEBUG;TRACE
- false
- false
- bin\Debug
- true
- PhysFsTest.xml
- 4
- 1595
-
-
-
-
- TRACE
- true
- false
- bin\Release
- false
- PhysFsTest.xml
- 1
- 1595
-
-
-
-
-
-
-
- App.ico
-
-
-
-
-
diff --git a/Prebuild/doc/prebuild-example5.xml b/Prebuild/doc/prebuild-example5.xml
deleted file mode 100644
index 5221547..0000000
--- a/Prebuild/doc/prebuild-example5.xml
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
-
-
- DEBUG;TRACE;WIN32
- false
- true
- bin\Debug
- Tao.Sdl.xml
- true
-
-
-
-
- TRACE;WIN32
- true
- true
- bin\Release
- Tao.Sdl.xml
- false
-
-
-
- Tao.Sdl.License.txt
- Tao.Sdl.Readme.txt
- Tao.Sdl.snk
- Tao.Sdl.dll.config
-
-
-
-
- AssemblyInfo.cs
- Sdl.cs
- SdlImage.cs
- SdlMixer.cs
- SdlTtf.cs
- SdlNet.cs
- SdlGfx.cs
- Smpeg.cs
- DelegateCallingConventionCdeclAttribute.cs
-
-
-
-
-
- DEBUG;TRACE;WIN32
- false
- false
- bin\Debug
- Tao.Sdl.Tests.xml
- true
-
-
-
-
- TRACE;WIN32
- true
- false
- bin\Release
- Tao.Sdl.Tests.xml
- false
-
-
-
-
-
-
- AssemblyInfo.cs
- SdlTest.cs
- SdlTestVideo.cs
- SdlTestImage.cs
- SdlTestTtf.cs
- SdlTestMixer.cs
- SdlTestGfx.cs
- SmpegTest.cs
-
-
-
-
-
- DEBUG;TRACE;WIN32
- false
- false
- bin\Debug
- true
-
-
-
-
- TRACE;WIN32
- true
- false
- bin\Release
- false
-
-
-
-
-
- AssemblyInfo.cs
- Rectangles.cs
-
-
-
-
-
- DEBUG;TRACE;WIN32
- false
- false
- bin\Debug
- true
-
-
-
-
- TRACE;WIN32
- true
- false
- bin\Release
- false
-
-
-
-
-
- AssemblyInfo.cs
- SmpegPlayer.cs
-
-
-
-
-
- DEBUG;TRACE;WIN32
- false
- false
- bin\Debug
- true
-
-
-
-
- TRACE;WIN32
- true
- false
- bin\Release
- false
-
-
-
-
-
- AssemblyInfo.cs
- GfxPrimitives.cs
-
-
-
-
-
- DEBUG;TRACE;WIN32
- false
- false
- bin\Debug
- true
-
-
-
-
- TRACE;WIN32
- true
- false
- bin\Release
- false
-
-
-
-
- AssemblyInfo.cs
- AppMain.cs
- BuildProcessor.cs
- Options.cs
- ReleaseBuildProcessor.cs
- UsageHelp.cs
-
-
-
-
diff --git a/Prebuild/prebuild.xml b/Prebuild/prebuild.xml
deleted file mode 100644
index 1f81086..0000000
--- a/Prebuild/prebuild.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
-
- DEBUG;TRACE
- false
- bin/Debug
- true
- 1595
-
-
-
-
- TRACE
- bin/Release
- true
- false
- 1595
-
-
-
- prebuild.xml
- prebuild
-
-
- Matthew Holmes (matthew@wildfiregames.com)
- Dan Moorehead (dan05a@gmail.com)
- Dave Hudson (jendave@yahoo.com)
- Rob Loach (http://robloach.net)
- C.J. Adams-Collier (cjac@colliertech.org)
- The Prebuild project generator
-
-
- DEBUG;TRACE
- false
- bin/Debug
- true
- Prebuild.snk
- 1595
-
-
-
-
- TRACE
- bin/Release
- true
- false
- Prebuild.snk
- 1595
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Prebuild/scripts/Clean.bat b/Prebuild/scripts/Clean.bat
deleted file mode 100755
index 806bbe8..0000000
--- a/Prebuild/scripts/Clean.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-cd ..
-Prebuild.exe /clean /yes /removedir obj /file prebuild.xml /build NET_2_0 /pause
diff --git a/Prebuild/scripts/Clean.sh b/Prebuild/scripts/Clean.sh
deleted file mode 100755
index b0a6530..0000000
--- a/Prebuild/scripts/Clean.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-./prebuild /clean /removedir obj /file ../prebuild.xml /pause
-rm -rf ../Makefile
diff --git a/Prebuild/scripts/Help.bat b/Prebuild/scripts/Help.bat
deleted file mode 100755
index 7c843c4..0000000
--- a/Prebuild/scripts/Help.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-cd ..
-Prebuild.exe /usage /pause
\ No newline at end of file
diff --git a/Prebuild/scripts/MonoDevelop.sh b/Prebuild/scripts/MonoDevelop.sh
deleted file mode 100755
index fbd7669..0000000
--- a/Prebuild/scripts/MonoDevelop.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-prebuild /target monodev /file ../prebuild.xml /build NET_1_1 /pause
diff --git a/Prebuild/scripts/Prebuild.nsi b/Prebuild/scripts/Prebuild.nsi
deleted file mode 100644
index 8f9854e..0000000
--- a/Prebuild/scripts/Prebuild.nsi
+++ /dev/null
@@ -1,231 +0,0 @@
-!verbose 3
-
-!define PRODUCT_NAME "Prebuild"
-!define PRODUCT_VERSION "1.3.1"
-!define PRODUCT_PUBLISHER "Prebuild"
-!define PRODUCT_PACKAGE "prebuild"
-!define PRODUCT_WEB_SITE "http://dnpb.sourceforge.net"
-!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Prebuild"
-!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\Prebuild"
-!define PRODUCT_UNINST_ROOT_KEY "HKLM"
-!define PRODUCT_PATH ".."
-
-;!define MUI_WELCOMEFINISHPAGE_BITMAP "PrebuildLogo.bmp"
-;!define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
-;!define MUI_UNWELCOMEFINISHPAGE_BITMAP "PrebuildLogo.bmp"
-;!define MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH
-
-BrandingText "© 2003-2006 David Hudson, http://dnpb.sourceforge.net/"
-SetCompressor lzma
-CRCCheck on
-
-; File Association defines
-;!include "fileassoc.nsh"
-
-; MUI 1.67 compatible ------
-!include "MUI.nsh"
-
-; MUI Settings
-!define MUI_ABORTWARNING
-!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
-!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
-
-;--------------------------------
-;Variables
-
-;--------------------------------
-;Installer Pages
-
-; Welcome page
-!insertmacro MUI_PAGE_WELCOME
-; License page
-!insertmacro MUI_PAGE_LICENSE "..\doc\license.txt"
-; Directory page
-!insertmacro MUI_PAGE_DIRECTORY
-
-; Instfiles page
-!insertmacro MUI_PAGE_INSTFILES
-
-; Finish page
-!insertmacro MUI_PAGE_FINISH
-
-;------------------------------------
-; Uninstaller pages
-!insertmacro MUI_UNPAGE_CONFIRM
-!insertmacro MUI_UNPAGE_INSTFILES
-!insertmacro MUI_UNPAGE_FINISH
-;------------------------------------
-
-; Language files
-!insertmacro MUI_LANGUAGE "English"
-
-; Reserve files
-!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
-
-; MUI end ------
-
-Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
-OutFile "..\${PRODUCT_PACKAGE}-${PRODUCT_VERSION}-setup.exe"
-InstallDir "$PROGRAMFILES\Prebuild"
-InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
-ShowInstDetails show
-ShowUnInstDetails show
-
-; .NET Framework check
-; http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dnnetdep/html/redistdeploy1_1.asp
-; Section "Detecting that the .NET Framework 1.1 is installed"
-Function .onInit
- ReadRegDWORD $R0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" Install
- StrCmp $R0 "" 0 CheckPreviousVersion
- MessageBox MB_OK "Microsoft .NET Framework 1.1 was not found on this system.$\r$\n$\r$\nUnable to continue this installation."
- Abort
-
- CheckPreviousVersion:
- ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName"
- StrCmp $R0 "" CheckOSVersion 0
- MessageBox MB_OK "An old version of Prebuild is installed on this computer, please uninstall first.$\r$\n$\r$\nUnable to continue this installation."
- Abort
-
- CheckOSVersion:
- Call IsSupportedWindowsVersion
- Pop $R0
- StrCmp $R0 "False" NoAbort 0
- MessageBox MB_OK "The operating system you are using is not supported by Prebuild (95/98/ME/NT3.x/NT4.x)."
- Abort
-
- NoAbort:
-FunctionEnd
-
-Section "Source" SecSource
- SetOverwrite ifnewer
- SetOutPath "$INSTDIR\src"
- File /r /x *.swp /x .svn /x *.xml /x *.csproj /x *.user /x *.build /x *.prjx /x *.mdp /x bin /x obj /x *.nsi ${PRODUCT_PATH}\src\*.*
-
- ;Store installation folder
- WriteRegStr HKCU "Software\Prebuild" "" $INSTDIR
-
-SectionEnd
-
-Section "Runtime" SecRuntime
- SetOverwrite ifnewer
- SetOutPath "$INSTDIR"
- File /r /x *.swp /x .svn /x *.nsi /x src /x *.sln /x *.cmbx /x *.mds ${PRODUCT_PATH}\Prebuild.exe ${PRODUCT_PATH}\prebuild.xml
-
- ;Store installation folder
- WriteRegStr HKCU "Software\Prebuild" "" $INSTDIR
-
-SectionEnd
-
-Section "Documentation" SecDocs
- SetOverwrite ifnewer
- SetOutPath "$INSTDIR\doc"
- File /r /x *.swp /x .svn /x *.exe ${PRODUCT_PATH}\doc\*.*
-
- ;Store installation folder
- WriteRegStr HKCU "Software\Prebuild" "" $INSTDIR
-SectionEnd
-
-Section "Scripts" SecScripts
- SetOverwrite ifnewer
- SetOutPath "$INSTDIR\scripts"
- File /r /x *.swp /x .svn /x *.nsi /x *.exe ${PRODUCT_PATH}\scripts\*.*
-
- ;Store installation folder
- WriteRegStr HKCU "Software\Prebuild" "" $INSTDIR
-SectionEnd
-
-;Language strings
-
-Section -AdditionalIcons
- WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
-SectionEnd
-
-Section -Post
- WriteUninstaller "$INSTDIR\uninst.exe"
- WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
- WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
- WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
- WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
- WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
-SectionEnd
-
-Section Uninstall
-
- DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
- DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
- RMDir /r "$INSTDIR"
-
-SectionEnd
-
-; GetWindowsVersion, taken from NSIS help, modified for our purposes
-Function IsSupportedWindowsVersion
-
- Push $R0
- Push $R1
-
- ReadRegStr $R0 HKLM \
- "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-
- IfErrors 0 lbl_winnt
-
- ; we are not NT
- ReadRegStr $R0 HKLM \
- "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
-
- StrCpy $R1 $R0 1
- StrCmp $R1 '4' 0 lbl_error
-
- StrCpy $R1 $R0 3
-
- StrCmp $R1 '4.0' lbl_win32_95
- StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
-
- lbl_win32_95:
- StrCpy $R0 'False'
- Goto lbl_done
-
- lbl_win32_98:
- StrCpy $R0 'False'
- Goto lbl_done
-
- lbl_win32_ME:
- StrCpy $R0 'False'
- Goto lbl_done
-
- lbl_winnt:
-
- StrCpy $R1 $R0 1
-
- StrCmp $R1 '3' lbl_winnt_x
- StrCmp $R1 '4' lbl_winnt_x
-
- StrCpy $R1 $R0 3
-
- StrCmp $R1 '5.0' lbl_winnt_2000
- StrCmp $R1 '5.1' lbl_winnt_XP
- StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
-
- lbl_winnt_x:
- StrCpy $R0 'False'
- Goto lbl_done
-
- lbl_winnt_2000:
- Strcpy $R0 'True'
- Goto lbl_done
-
- lbl_winnt_XP:
- Strcpy $R0 'True'
- Goto lbl_done
-
- lbl_winnt_2003:
- Strcpy $R0 'True'
- Goto lbl_done
-
- lbl_error:
- Strcpy $R0 'False'
- lbl_done:
-
- Pop $R1
- Exch $R0
-
-FunctionEnd
diff --git a/Prebuild/scripts/SharpDevelop.bat b/Prebuild/scripts/SharpDevelop.bat
deleted file mode 100755
index 08fea0b..0000000
--- a/Prebuild/scripts/SharpDevelop.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@rem Generates a combine (.cmbx) and a set of project files (.prjx)
-@rem for SharpDevelop (http://icsharpcode.net/OpenSource/SD/Default.aspx)
-cd ..
-Prebuild.exe /target sharpdev /file prebuild.xml /build NET_1_1 /pause
diff --git a/Prebuild/scripts/SharpDevelop2.bat b/Prebuild/scripts/SharpDevelop2.bat
deleted file mode 100755
index 49120ab..0000000
--- a/Prebuild/scripts/SharpDevelop2.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@rem Generates a combine (.cmbx) and a set of project files (.prjx)
-@rem for SharpDevelop (http://icsharpcode.net/OpenSource/SD/Default.aspx)
-cd ..
-Prebuild.exe /target sharpdev2 /file prebuild.xml /pause
diff --git a/Prebuild/scripts/VS2002.bat b/Prebuild/scripts/VS2002.bat
deleted file mode 100755
index dc5b6a7..0000000
--- a/Prebuild/scripts/VS2002.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@rem Generates a solution (.sln) and a set of project files (.csproj)
-@rem for Microsoft Visual Studio .NET 2002
-cd ..
-Prebuild.exe /target vs2002 /file prebuild.xml /build NET_1_1 /pause
diff --git a/Prebuild/scripts/VS2003.bat b/Prebuild/scripts/VS2003.bat
deleted file mode 100755
index 929a480..0000000
--- a/Prebuild/scripts/VS2003.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@rem Generates a solution (.sln) and a set of project files (.csproj)
-@rem for Microsoft Visual Studio .NET 2002
-cd ..
-Prebuild.exe /target vs2003 /file prebuild.xml /build NET_1_1 /pause
diff --git a/Prebuild/scripts/VS2005.bat b/Prebuild/scripts/VS2005.bat
deleted file mode 100755
index 7a7af1d..0000000
--- a/Prebuild/scripts/VS2005.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@rem Generates a solution (.sln) and a set of project files (.csproj, .vbproj, etc.)
-@rem for Microsoft Visual Studio .NET 2005
-cd ..
-Prebuild.exe /target vs2005 /file prebuild.xml /build NET_2_0 /pause
diff --git a/Prebuild/scripts/VS2008.bat b/Prebuild/scripts/VS2008.bat
deleted file mode 100755
index eb51a82..0000000
--- a/Prebuild/scripts/VS2008.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@rem Generates a solution (.sln) and a set of project files (.csproj, .vbproj, etc.)
-@rem for Microsoft Visual Studio .NET 2008
-cd ..
-Prebuild.exe /target vs2008 /file prebuild.xml /pause
diff --git a/Prebuild/scripts/autotools.bat b/Prebuild/scripts/autotools.bat
deleted file mode 100755
index 43f9a74..0000000
--- a/Prebuild/scripts/autotools.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@rem Generates Makefiles
-@rem for autotools
-cd ..
-Prebuild.exe /target autotools /file prebuild.xml /pause
diff --git a/Prebuild/scripts/autotools.sh b/Prebuild/scripts/autotools.sh
deleted file mode 100755
index 4d140ce..0000000
--- a/Prebuild/scripts/autotools.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-RUNTIME=`which mono`
-
-SCRIPTDIR=`dirname $0`
-${RUNTIME} ${SCRIPTDIR}/../Prebuild.exe /target autotools /file ${SCRIPTDIR}/../prebuild.xml /build NET_2_0
diff --git a/Prebuild/scripts/makefile.bat b/Prebuild/scripts/makefile.bat
deleted file mode 100755
index eef9a69..0000000
--- a/Prebuild/scripts/makefile.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@rem Generates makefiles
-@rem for make
-cd ..
-Prebuild.exe /target makefile /file prebuild.xml /pause
diff --git a/Prebuild/scripts/makefile.sh b/Prebuild/scripts/makefile.sh
deleted file mode 100755
index 2e656cb..0000000
--- a/Prebuild/scripts/makefile.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-./prebuild /target makefile /file ../prebuild.xml /pause
-
-if [ -f ../Makefile ]
-then
- rm -rf ../Makefile
-fi
-
-mv ../Prebuild.make ../Makefile
diff --git a/Prebuild/scripts/nant.bat b/Prebuild/scripts/nant.bat
deleted file mode 100755
index 925467d..0000000
--- a/Prebuild/scripts/nant.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@rem Generates a .build files
-@rem for NAnt
-cd ..
-Prebuild.exe /target nant /file prebuild.xml /pause
diff --git a/Prebuild/scripts/nant.sh b/Prebuild/scripts/nant.sh
deleted file mode 100755
index 0311971..0000000
--- a/Prebuild/scripts/nant.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-prebuild /target nant /file ../prebuild.xml /pause
diff --git a/Prebuild/scripts/xcode.bat b/Prebuild/scripts/xcode.bat
deleted file mode 100755
index 9883edf..0000000
--- a/Prebuild/scripts/xcode.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@rem Generates a Xcode files
-@rem for NAnt
-cd ..
-Prebuild.exe /target xcode /file prebuild.xml /pause
diff --git a/Prebuild/scripts/xcode.sh b/Prebuild/scripts/xcode.sh
deleted file mode 100755
index e9b58f9..0000000
--- a/Prebuild/scripts/xcode.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-prebuild /target xcode /file ../prebuild.xml /pause
diff --git a/Prebuild/src/App.ico b/Prebuild/src/App.ico
deleted file mode 100644
index ac4ea6f..0000000
Binary files a/Prebuild/src/App.ico and /dev/null differ
diff --git a/Prebuild/src/Core/Attributes/DataNodeAttribute.cs b/Prebuild/src/Core/Attributes/DataNodeAttribute.cs
deleted file mode 100644
index f1938a2..0000000
--- a/Prebuild/src/Core/Attributes/DataNodeAttribute.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections.Specialized;
-
-namespace Prebuild.Core.Attributes
-{
- ///
- ///
- ///
- [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple=true)]
- public sealed class DataNodeAttribute : Attribute
- {
- #region Fields
-
- private string m_Name = "unknown";
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The name.
- public DataNodeAttribute(string name)
- {
- m_Name = name;
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return m_Name;
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Attributes/OptionNodeAttribute.cs b/Prebuild/src/Core/Attributes/OptionNodeAttribute.cs
deleted file mode 100644
index 2d6a6a7..0000000
--- a/Prebuild/src/Core/Attributes/OptionNodeAttribute.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-
-namespace Prebuild.Core.Attributes
-{
- ///
- ///
- ///
- [AttributeUsage(AttributeTargets.Field)]
- public sealed class OptionNodeAttribute : Attribute
- {
- #region Fields
-
- private string m_NodeName;
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// Name of the node.
- public OptionNodeAttribute(string nodeName)
- {
- m_NodeName = nodeName;
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the name of the node.
- ///
- /// The name of the node.
- public string NodeName
- {
- get
- {
- return m_NodeName;
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Attributes/TargetAttribute.cs b/Prebuild/src/Core/Attributes/TargetAttribute.cs
deleted file mode 100644
index 5ad62ee..0000000
--- a/Prebuild/src/Core/Attributes/TargetAttribute.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-
-namespace Prebuild.Core.Attributes
-{
- ///
- ///
- ///
- [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
- public sealed class TargetAttribute : Attribute
- {
- #region Fields
-
- private string m_Name;
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The name.
- public TargetAttribute(string name)
- {
- m_Name = name;
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return m_Name;
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/FatalException.cs b/Prebuild/src/Core/FatalException.cs
deleted file mode 100644
index 3487905..0000000
--- a/Prebuild/src/Core/FatalException.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Runtime.Serialization;
-
-namespace Prebuild.Core
-{
- ///
- ///
- ///
- [Serializable()]
- public class FatalException : Exception
- {
- #region Constructors
-
-
- ///
- /// Initializes a new instance of the class.
- ///
- public FatalException()
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The format.
- /// The args.
- public FatalException(string format, params object[] args)
- : base(String.Format(format, args))
- {
- }
-
- ///
- /// Exception with specified string
- ///
- /// Exception message
- public FatalException(string message): base(message)
- {
- }
-
- ///
- ///
- ///
- ///
- ///
- public FatalException(string message, Exception exception) : base(message, exception)
- {
- }
-
- ///
- ///
- ///
- ///
- ///
- protected FatalException(SerializationInfo info, StreamingContext context) : base( info, context )
- {
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Interfaces/IDataNode.cs b/Prebuild/src/Core/Interfaces/IDataNode.cs
deleted file mode 100644
index 986dd2d..0000000
--- a/Prebuild/src/Core/Interfaces/IDataNode.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Xml;
-
-namespace Prebuild.Core.Interfaces
-{
- ///
- ///
- ///
- public interface IDataNode
- {
- ///
- /// Gets or sets the parent.
- ///
- /// The parent.
- IDataNode Parent { get; set; }
- ///
- /// Parses the specified node.
- ///
- /// The node.
- void Parse(XmlNode node);
- }
-}
diff --git a/Prebuild/src/Core/Interfaces/ITarget.cs b/Prebuild/src/Core/Interfaces/ITarget.cs
deleted file mode 100644
index 47115c6..0000000
--- a/Prebuild/src/Core/Interfaces/ITarget.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-
-namespace Prebuild.Core.Interfaces
-{
- ///
- ///
- ///
- public interface ITarget
- {
- ///
- /// Writes the specified kern.
- ///
- /// The kern.
- void Write(Kernel kern);
- ///
- /// Cleans the specified kern.
- ///
- /// The kern.
- void Clean(Kernel kern);
- ///
- /// Gets the name.
- ///
- /// The name.
- string Name { get; }
- }
-}
\ No newline at end of file
diff --git a/Prebuild/src/Core/Kernel.cs b/Prebuild/src/Core/Kernel.cs
deleted file mode 100644
index 95ef04e..0000000
--- a/Prebuild/src/Core/Kernel.cs
+++ /dev/null
@@ -1,831 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2008
-Matthew Holmes (matthew@wildfiregames.com),
-Dan Moorehead (dan05a@gmail.com),
-Rob Loach (http://www.robloach.net),
-C.J. Adams-Collier (cjac@colliertech.org)
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-* Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-* The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-*/
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Collections;
-using System.Collections.Specialized;
-using System.IO;
-using System.Reflection;
-using System.Xml;
-using System.Xml.Schema;
-using System.Text;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-using Prebuild.Core.Parse;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core
-{
- ///
- ///
- ///
- public class Kernel : IDisposable
- {
- #region Inner Classes
-
- private struct NodeEntry
- {
- public Type Type;
- public DataNodeAttribute Attribute;
- }
-
- #endregion
-
- #region Fields
-
- private static readonly Kernel m_Instance = new Kernel();
-
- ///
- /// This must match the version of the schema that is embeeded
- ///
- private const string m_SchemaVersion = "1.7";
- private const string m_Schema = "prebuild-" + m_SchemaVersion + ".xsd";
- private const string m_SchemaURI = "http://dnpb.sourceforge.net/schemas/" + m_Schema;
- bool disposed;
- private Version m_Version;
- private const string m_Revision = "";
- private CommandLineCollection m_CommandLine;
- private Log m_Log;
- private CurrentDirectory m_CurrentWorkingDirectory;
- private XmlSchemaCollection m_Schemas;
-
- private Hashtable m_Targets;
- private Hashtable m_Nodes;
-
- readonly List m_Solutions = new List();
- string m_Target;
- string m_Clean;
- string[] m_RemoveDirectories;
- XmlDocument m_CurrentDoc;
- bool m_PauseAfterFinish;
- string[] m_ProjectGroups;
-
- #endregion
-
- #region Constructors
-
- private Kernel()
- {
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets a value indicating whether [pause after finish].
- ///
- /// true if [pause after finish]; otherwise, false.
- public bool PauseAfterFinish
- {
- get
- {
- return m_PauseAfterFinish;
- }
- }
-
- ///
- /// Gets the instance.
- ///
- /// The instance.
- public static Kernel Instance
- {
- get
- {
- return m_Instance;
- }
- }
-
- ///
- /// Gets the version.
- ///
- /// The version.
- public string Version
- {
- get
- {
- return String.Format("{0}.{1}.{2}{3}", m_Version.Major, m_Version.Minor, m_Version.Build, m_Revision);
- }
- }
-
- ///
- /// Gets the command line.
- ///
- /// The command line.
- public CommandLineCollection CommandLine
- {
- get
- {
- return m_CommandLine;
- }
- }
-
- ///
- /// Gets the targets.
- ///
- /// The targets.
- public Hashtable Targets
- {
- get
- {
- return m_Targets;
- }
- }
-
- ///
- /// Gets the log.
- ///
- /// The log.
- public Log Log
- {
- get
- {
- return m_Log;
- }
- }
-
- ///
- /// Gets the current working directory.
- ///
- /// The current working directory.
- public CurrentDirectory CurrentWorkingDirectory
- {
- get
- {
- return m_CurrentWorkingDirectory;
- }
- }
-
- ///
- /// Gets the solutions.
- ///
- /// The solutions.
- public List Solutions
- {
- get
- {
- return m_Solutions;
- }
- }
-
- ///
- /// Gets the XmlDocument object representing the prebuild.xml
- /// being processed
- ///
- /// The XmlDocument object
- public XmlDocument CurrentDoc
- {
- get
- {
- return m_CurrentDoc;
- }
- }
-
- #endregion
-
- #region Private Methods
-
- private static void RemoveDirectories(string rootDir, string[] dirNames)
- {
- foreach(string dir in Directory.GetDirectories(rootDir))
- {
- string simpleName = Path.GetFileName(dir);
-
- if(Array.IndexOf(dirNames, simpleName) != -1)
- {
- //delete if the name matches one of the directory names to delete
- string fullDirPath = Path.GetFullPath(dir);
- Directory.Delete(fullDirPath,true);
- }
- else//not a match, so check children
- {
- RemoveDirectories(dir,dirNames);
- //recurse, checking children for them
- }
- }
- }
-
-// private void RemoveDirectoryMatches(string rootDir, string dirPattern)
-// {
-// foreach(string dir in Directory.GetDirectories(rootDir))
-// {
-// foreach(string match in Directory.GetDirectories(dir))
-// {//delete all child directories that match
-// Directory.Delete(Path.GetFullPath(match),true);
-// }
-// //recure through the rest checking for nested matches to delete
-// RemoveDirectoryMatches(dir,dirPattern);
-// }
-// }
-
- private void LoadSchema()
- {
- Assembly assembly = this.GetType().Assembly;
- Stream stream = assembly.GetManifestResourceStream("Prebuild.data." + m_Schema);
- if(stream == null)
- {
- //try without the default namespace prepending to it in case was compiled with SharpDevelop or MonoDevelop instead of Visual Studio .NET
- stream = assembly.GetManifestResourceStream(m_Schema);
- if(stream == null)
- {
- throw new System.Reflection.TargetException(string.Format("Could not find the scheme embedded resource file '{0}'.", m_Schema));
- }
- }
- XmlReader schema = new XmlTextReader(stream);
-
- m_Schemas = new XmlSchemaCollection();
- m_Schemas.Add(m_SchemaURI, schema);
- }
-
- private void CacheVersion()
- {
- m_Version = Assembly.GetEntryAssembly().GetName().Version;
- }
-
- private void CacheTargets(Assembly assm)
- {
- foreach(Type t in assm.GetTypes())
- {
- TargetAttribute ta = (TargetAttribute)Helper.CheckType(t, typeof(TargetAttribute), typeof(ITarget));
-
- if(ta == null)
- continue;
-
- if (t.IsAbstract)
- continue;
-
- ITarget target = (ITarget)assm.CreateInstance(t.FullName);
- if (target == null)
- {
- throw new MissingMethodException("Could not create ITarget instance");
- }
-
- m_Targets[ta.Name] = target;
- }
- }
-
- private void CacheNodeTypes(Assembly assm)
- {
- foreach(Type t in assm.GetTypes())
- {
- foreach (DataNodeAttribute dna in t.GetCustomAttributes(typeof(DataNodeAttribute), true))
- {
- NodeEntry ne = new NodeEntry();
- ne.Type = t;
- ne.Attribute = dna;
- m_Nodes[dna.Name] = ne;
- }
- }
- }
-
- private void LogBanner()
- {
- m_Log.Write("Prebuild v" + this.Version);
- m_Log.Write("Copyright (c) 2004-2008");
- m_Log.Write("Matthew Holmes (matthew@wildfiregames.com),");
- m_Log.Write("Dan Moorehead (dan05a@gmail.com),");
- m_Log.Write("David Hudson (jendave@yahoo.com),");
- m_Log.Write("Rob Loach (http://www.robloach.net),");
- m_Log.Write("C.J. Adams-Collier (cjac@colliertech.org),");
-
- m_Log.Write("See 'prebuild /usage' for help");
- m_Log.Write();
- }
-
-
-
- private void ProcessFile(string file)
- {
- ProcessFile(file, this.m_Solutions);
- }
-
- public void ProcessFile(ProcessNode node, SolutionNode parent)
- {
- if (node.IsValid)
- {
- List list = new List();
- ProcessFile(node.Path, list);
-
- foreach (SolutionNode solution in list)
- parent.SolutionsTable[solution.Name] = solution;
- }
- }
-
- ///
- ///
- ///
- ///
- ///
- ///
- public void ProcessFile(string file, IList solutions)
- {
- m_CurrentWorkingDirectory.Push();
-
- string path = file;
- try
- {
- try
- {
- path = Helper.ResolvePath(path);
- }
- catch(ArgumentException)
- {
- m_Log.Write("Could not open Prebuild file: " + path);
- m_CurrentWorkingDirectory.Pop();
- return;
- }
-
- Helper.SetCurrentDir(Path.GetDirectoryName(path));
-
- XmlTextReader reader = new XmlTextReader(path);
-
- Core.Parse.Preprocessor pre = new Core.Parse.Preprocessor();
-
- //register command line arguments as XML variables
- IDictionaryEnumerator dict = m_CommandLine.GetEnumerator();
- while (dict.MoveNext())
- {
- string name = dict.Key.ToString().Trim();
- if (name.Length > 0)
- pre.RegisterVariable(name, dict.Value.ToString());
- }
-
- string xml = pre.Process(reader);//remove script and evaulate pre-proccessing to get schema-conforming XML
-
- // See if the user put into a pseudo target of "prebuild:preprocessed-input" to indicate they want to see the
- // output before the system processes it.
- if (m_CommandLine.WasPassed("ppi"))
- {
- // Get the filename if there is one, otherwise use a default.
- string ppiFile = m_CommandLine["ppi"];
- if (ppiFile == null || ppiFile.Trim().Length == 0)
- {
- ppiFile = "preprocessed-input.xml";
- }
-
- // Write out the string to the given stream.
- try
- {
- using (StreamWriter ppiWriter = new StreamWriter(ppiFile))
- {
- ppiWriter.WriteLine(xml);
- }
- }
- catch(IOException ex)
- {
- Console.WriteLine("Could not write PPI file '{0}': {1}", ppiFile, ex.Message);
- }
-
- // Finish processing this special tag.
- return;
- }
-
- m_CurrentDoc = new XmlDocument();
- try
- {
- XmlValidatingReader validator = new XmlValidatingReader(new XmlTextReader(new StringReader(xml)));
-
- //validate while reading from string into XmlDocument DOM structure in memory
- foreach(XmlSchema schema in m_Schemas)
- {
- validator.Schemas.Add(schema);
- }
- m_CurrentDoc.Load(validator);
- }
- catch(XmlException e)
- {
- throw new XmlException(e.ToString());
- }
-
- //is there a purpose to writing it? An syntax/schema problem would have been found during pre.Process() and reported with details
- if(m_CommandLine.WasPassed("ppo"))
- {
- string ppoFile = m_CommandLine["ppo"];
- if(ppoFile == null || ppoFile.Trim().Length < 1)
- {
- ppoFile = "preprocessed.xml";
- }
-
- StreamWriter writer = null;
- try
- {
- writer = new StreamWriter(ppoFile);
- writer.Write(xml);
- }
- catch(IOException ex)
- {
- Console.WriteLine("Could not write PPO file '{0}': {1}", ppoFile, ex.Message);
- }
- finally
- {
- if(writer != null)
- {
- writer.Close();
- }
- }
- return;
- }
- //start reading the xml config file
- XmlElement rootNode = m_CurrentDoc.DocumentElement;
- //string suggestedVersion = Helper.AttributeValue(rootNode,"version","1.0");
- Helper.CheckForOSVariables = Helper.ParseBoolean(rootNode,"checkOsVars",false);
-
- foreach(XmlNode node in rootNode.ChildNodes)//solutions or if pre-proc instructions
- {
- IDataNode dataNode = ParseNode(node, null);
- if(dataNode is ProcessNode)
- {
- ProcessNode proc = (ProcessNode)dataNode;
- if(proc.IsValid)
- {
- ProcessFile(proc.Path);
- }
- }
- else if(dataNode is SolutionNode)
- {
- solutions.Add((SolutionNode)dataNode);
- }
- }
- }
- catch(XmlSchemaException xse)
- {
- m_Log.Write("XML validation error at line {0} in {1}:\n\n{2}",
- xse.LineNumber, path, xse.Message);
- }
- finally
- {
- m_CurrentWorkingDirectory.Pop();
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Allows the project.
- ///
- /// The project groups flags.
- ///
- public bool AllowProject(string projectGroupsFlags)
- {
- if(m_ProjectGroups != null && m_ProjectGroups.Length > 0)
- {
- if(projectGroupsFlags != null && projectGroupsFlags.Length == 0)
- {
- foreach(string group in projectGroupsFlags.Split('|'))
- {
- if(Array.IndexOf(m_ProjectGroups, group) != -1) //if included in the filter list
- {
- return true;
- }
- }
- }
- return false;//not included in the list or no groups specified for the project
- }
- return true;//no filter specified in the command line args
- }
-
- ///
- /// Gets the type of the node.
- ///
- /// The node.
- ///
- public Type GetNodeType(XmlNode node)
- {
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
- if(!m_Nodes.ContainsKey(node.Name))
- {
- return null;
- }
-
- NodeEntry ne = (NodeEntry)m_Nodes[node.Name];
- return ne.Type;
- }
-
- ///
- ///
- ///
- ///
- ///
- ///
- public IDataNode ParseNode(XmlNode node, IDataNode parent)
- {
- return ParseNode(node, parent, null);
- }
-
- //Create an instance of the data node type that is mapped to the name of the xml DOM node
- ///
- /// Parses the node.
- ///
- /// The node.
- /// The parent.
- /// The pre node.
- ///
- public IDataNode ParseNode(XmlNode node, IDataNode parent, IDataNode preNode)
- {
- IDataNode dataNode;
-
- try
- {
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
- if(preNode == null)
- {
- if(!m_Nodes.ContainsKey(node.Name))
- {
- //throw new XmlException("Unknown XML node: " + node.Name);
- return null;
- }
-
- NodeEntry ne = (NodeEntry)m_Nodes[node.Name];
- Type type = ne.Type;
- //DataNodeAttribute dna = ne.Attribute;
-
- dataNode = (IDataNode)type.Assembly.CreateInstance(type.FullName);
- if(dataNode == null)
- {
- throw new System.Reflection.TargetException("Could not create new parser instance: " + type.FullName);
- }
- }
- else
- dataNode = preNode;
-
- dataNode.Parent = parent;
- dataNode.Parse(node);
- }
- catch(WarningException wex)
- {
- m_Log.Write(LogType.Warning, wex.Message);
- return null;
- }
- catch(FatalException fex)
- {
- m_Log.WriteException(LogType.Error, fex);
- throw;
- }
- catch(Exception ex)
- {
- m_Log.WriteException(LogType.Error, ex);
- throw;
- }
-
- return dataNode;
- }
-
- ///
- /// Initializes the specified target.
- ///
- /// The target.
- /// The args.
- public void Initialize(LogTargets target, string[] args)
- {
- m_Targets = new Hashtable();
- CacheTargets(this.GetType().Assembly);
- m_Nodes = new Hashtable();
- CacheNodeTypes(this.GetType().Assembly);
- CacheVersion();
-
- m_CommandLine = new CommandLineCollection(args);
-
- string logFile = null;
- if(m_CommandLine.WasPassed("log"))
- {
- logFile = m_CommandLine["log"];
-
- if(logFile != null && logFile.Length == 0)
- {
- logFile = "Prebuild.log";
- }
- }
- else
- {
- target = target & ~LogTargets.File; //dont output to a file
- }
-
- m_Log = new Log(target, logFile);
- LogBanner();
-
- m_CurrentWorkingDirectory = new CurrentDirectory();
-
- m_Target = m_CommandLine["target"];
- m_Clean = m_CommandLine["clean"];
- string removeDirs = m_CommandLine["removedir"];
- if(removeDirs != null && removeDirs.Length == 0)
- {
- m_RemoveDirectories = removeDirs.Split('|');
- }
-
- string flags = m_CommandLine["allowedgroups"];//allows filtering by specifying a pipe-delimited list of groups to include
- if(flags != null && flags.Length == 0)
- {
- m_ProjectGroups = flags.Split('|');
- }
- m_PauseAfterFinish = m_CommandLine.WasPassed("pause");
-
- LoadSchema();
- }
-
- ///
- /// Processes this instance.
- ///
- public void Process()
- {
- bool perfomedOtherTask = false;
- if(m_RemoveDirectories != null && m_RemoveDirectories.Length > 0)
- {
- try
- {
- RemoveDirectories(".",m_RemoveDirectories);
- }
- catch(IOException e)
- {
- m_Log.Write("Failed to remove directories named {0}",m_RemoveDirectories);
- m_Log.WriteException(LogType.Error,e);
- }
- catch(UnauthorizedAccessException e)
- {
- m_Log.Write("Failed to remove directories named {0}",m_RemoveDirectories);
- m_Log.WriteException(LogType.Error,e);
- }
- perfomedOtherTask = true;
- }
-
- if(m_Target != null && m_Clean != null)
- {
- m_Log.Write(LogType.Error, "The options /target and /clean cannot be passed together");
- return;
- }
-
- if(m_Target == null && m_Clean == null)
- {
- if(perfomedOtherTask) //finished
- {
- return;
- }
- m_Log.Write(LogType.Error, "Must pass either /target or /clean to process a Prebuild file");
- return;
- }
-
- string file = "./prebuild.xml";
- if(m_CommandLine.WasPassed("file"))
- {
- file = m_CommandLine["file"];
- }
-
- ProcessFile(file);
-
- string target = (m_Target != null ? m_Target.ToLower() : m_Clean.ToLower());
- bool clean = (m_Target == null);
- if(clean && target != null && target.Length == 0)
- {
- target = "all";
- }
- if(clean && target == "all")//default to all if no target was specified for clean
- {
- //check if they passed yes
- if (!m_CommandLine.WasPassed("yes"))
- {
- Console.WriteLine("WARNING: This operation will clean ALL project files for all targets, are you sure? (y/n):");
- string ret = Console.ReadLine();
- if(ret == null)
- {
- return;
- }
- ret = ret.Trim().ToLower();
- if((ret.ToLower() != "y" && ret.ToLower() != "yes"))
- {
- return;
- }
- }
- //clean all targets (just cleaning vs2002 target didn't clean nant)
- foreach(ITarget targ in m_Targets.Values)
- {
- targ.Clean(this);
- }
- }
- else
- {
- if (!m_Targets.Contains(target)) {
- m_Log.Write(LogType.Error, "Unknown Target \"{0}\"", target);
- return;
- }
- ITarget targ = (ITarget)m_Targets[target];
-
- if(clean)
- {
- targ.Clean(this);
- }
- else
- {
- targ.Write(this);
- }
- }
-
- m_Log.Flush();
- }
-
- #endregion
-
- #region IDisposable Members
-
- ///
- ///
- ///
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- ///
- /// Dispose objects
- ///
- ///
- /// If true, it will dispose close the handle
- ///
- ///
- /// Will dispose managed and unmanaged resources.
- ///
- protected virtual void Dispose(bool disposing)
- {
- if (!this.disposed)
- {
- if (disposing)
- {
- if (this.m_Log != null)
- {
- this.m_Log.Close();
- this.m_Log = null;
- }
- }
- }
- this.disposed = true;
- }
-
- ///
- ///
- ///
- ~Kernel()
- {
- this.Dispose(false);
- }
-
- ///
- /// Closes and destroys this object
- ///
- ///
- /// Same as Dispose(true)
- ///
- public void Close()
- {
- Dispose();
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/AuthorNode.cs b/Prebuild/src/Core/Nodes/AuthorNode.cs
deleted file mode 100644
index 20e72c0..0000000
--- a/Prebuild/src/Core/Nodes/AuthorNode.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2007 C.J. Adams-Collier (cjac@colliertech.org)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- ///
- ///
- [DataNode("Author")]
- public class AuthorNode : DataNode
- {
- #region Fields
-
- private string m_Signature;
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the signature.
- ///
- /// The signature.
- public string Signature
- {
- get
- {
- return m_Signature;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Parses the specified node.
- ///
- /// The node.
- public override void Parse(XmlNode node)
- {
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
-
- m_Signature = Helper.InterpolateForEnvironmentVariables(node.InnerText);
- if(m_Signature == null)
- {
- m_Signature = "";
- }
-
- m_Signature = m_Signature.Trim();
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/ConfigurationNode.cs b/Prebuild/src/Core/Nodes/ConfigurationNode.cs
deleted file mode 100644
index 67d78d5..0000000
--- a/Prebuild/src/Core/Nodes/ConfigurationNode.cs
+++ /dev/null
@@ -1,178 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- ///
- ///
- [DataNode("Configuration")]
- public class ConfigurationNode : DataNode, ICloneable, IComparable
- {
- #region Fields
-
- private string m_Name = "unknown";
- private OptionsNode m_Options;
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- public ConfigurationNode()
- {
- m_Options = new OptionsNode();
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets or sets the parent.
- ///
- /// The parent.
- public override IDataNode Parent
- {
- get
- {
- return base.Parent;
- }
- set
- {
- base.Parent = value;
- if(base.Parent is SolutionNode)
- {
- SolutionNode node = (SolutionNode)base.Parent;
- if(node != null && node.Options != null)
- {
- node.Options.CopyTo(m_Options);
- }
- }
- }
- }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return m_Name;
- }
- }
-
- ///
- /// Gets or sets the options.
- ///
- /// The options.
- public OptionsNode Options
- {
- get
- {
- return m_Options;
- }
- set
- {
- m_Options = value;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Parses the specified node.
- ///
- /// The node.
- public override void Parse(XmlNode node)
- {
- m_Name = Helper.AttributeValue(node, "name", m_Name);
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
- foreach(XmlNode child in node.ChildNodes)
- {
- IDataNode dataNode = Kernel.Instance.ParseNode(child, this);
- if(dataNode is OptionsNode)
- {
- ((OptionsNode)dataNode).CopyTo(m_Options);
- }
- }
- }
-
- ///
- /// Copies to.
- ///
- /// The conf.
- public void CopyTo(ConfigurationNode conf)
- {
- m_Options.CopyTo(conf.m_Options);
- }
-
- #endregion
-
- #region ICloneable Members
-
- ///
- /// Creates a new object that is a copy of the current instance.
- ///
- ///
- /// A new object that is a copy of this instance.
- ///
- public object Clone()
- {
- ConfigurationNode ret = new ConfigurationNode();
- ret.m_Name = m_Name;
- m_Options.CopyTo(ret.m_Options);
- return ret;
- }
-
- #endregion
-
- #region IComparable Members
-
- public int CompareTo(object obj)
- {
- ConfigurationNode that = (ConfigurationNode) obj;
- return this.m_Name.CompareTo(that.m_Name);
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/DataNode.cs b/Prebuild/src/Core/Nodes/DataNode.cs
deleted file mode 100644
index 763e6c3..0000000
--- a/Prebuild/src/Core/Nodes/DataNode.cs
+++ /dev/null
@@ -1,117 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using System.IO;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- ///
- ///
- public abstract class DataNode : IDataNode
- {
- #region Fields
-
- private IDataNode parent;
- string[] m_WebTypes = new string[] { "aspx", "ascx", "master", "ashx", "asmx" };
-
- #endregion
-
- #region IDataNode Members
-
- ///
- /// Gets or sets the parent.
- ///
- /// The parent.
- public virtual IDataNode Parent
- {
- get
- {
- return parent;
- }
- set
- {
- parent = value;
- }
- }
- public string[] WebTypes
- {
- get { return m_WebTypes; }
- }
- ///
- /// Parses the specified node.
- ///
- /// The node.
- public virtual void Parse(XmlNode node)
- {
- }
- public BuildAction GetBuildActionByFileName(string fileName)
- {
- string extension = Path.GetExtension(fileName).ToLower();
- foreach (string type in WebTypes)
- {
- if (extension == type)
- return BuildAction.Content;
- }
- return BuildAction.Compile;
- }
- ///
- /// Parses the file type to figure out what type it is
- ///
- ///
- public SubType GetSubTypeByFileName(string fileName)
- {
- string extension = System.IO.Path.GetExtension(fileName).ToLower();
- string designer = String.Format(".designer{0}", extension);
- string path = fileName.ToLower();
- if (extension == ".resx")
- {
- return SubType.Designer;
- }
- else if (path.EndsWith(".settings"))
- {
- return SubType.Settings;
- }
- else
- {
-
- foreach (string type in WebTypes)
- {
- if (path.EndsWith(string.Format("{0}{1}", type, extension)))
- {
- return SubType.CodeBehind;
- }
- }
- }
- return SubType.Code;
- }
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/DatabaseProjectNode.cs b/Prebuild/src/Core/Nodes/DatabaseProjectNode.cs
deleted file mode 100644
index 27c2051..0000000
--- a/Prebuild/src/Core/Nodes/DatabaseProjectNode.cs
+++ /dev/null
@@ -1,94 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Nodes
-{
- [DataNode("DatabaseProject")]
- public class DatabaseProjectNode : DataNode
- {
- string name;
- string path;
- string fullpath;
- Guid guid = Guid.NewGuid();
- readonly List authors = new List();
- readonly List references = new List();
-
- public Guid Guid
- {
- get { return guid; }
- }
-
- public string Name
- {
- get { return name; }
- }
-
- public string Path
- {
- get { return path; }
- }
-
- public string FullPath
- {
- get { return fullpath; }
- }
-
- public IEnumerable References
- {
- get { return references; }
- }
-
- public override void Parse(XmlNode node)
- {
- name = Helper.AttributeValue(node, "name", name);
- path = Helper.AttributeValue(node, "path", name);
-
- try
- {
- fullpath = Helper.ResolvePath(path);
- }
- catch
- {
- throw new WarningException("Could not resolve Solution path: {0}", path);
- }
-
- Kernel.Instance.CurrentWorkingDirectory.Push();
-
- try
- {
- Helper.SetCurrentDir(fullpath);
-
- if (node == null)
- {
- throw new ArgumentNullException("node");
- }
-
- foreach (XmlNode child in node.ChildNodes)
- {
- IDataNode dataNode = Kernel.Instance.ParseNode(child, this);
-
- if (dataNode == null)
- continue;
-
- if (dataNode is AuthorNode)
- authors.Add((AuthorNode)dataNode);
- else if (dataNode is DatabaseReferenceNode)
- references.Add((DatabaseReferenceNode)dataNode);
- }
- }
- finally
- {
- Kernel.Instance.CurrentWorkingDirectory.Pop();
- }
-
- base.Parse(node);
- }
- }
-}
diff --git a/Prebuild/src/Core/Nodes/DatabaseReferenceNode.cs b/Prebuild/src/Core/Nodes/DatabaseReferenceNode.cs
deleted file mode 100644
index 845db24..0000000
--- a/Prebuild/src/Core/Nodes/DatabaseReferenceNode.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using System;
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Nodes
-{
- [DataNode("DatabaseReference")]
- public class DatabaseReferenceNode : DataNode
- {
- string name;
- Guid providerId;
- string connectionString;
-
- public string Name
- {
- get { return name; }
- }
-
- public Guid ProviderId
- {
- get { return providerId; }
- }
-
- public string ConnectionString
- {
- get { return connectionString; }
- }
-
- public override void Parse(System.Xml.XmlNode node)
- {
- name = Helper.AttributeValue(node, "name", name);
-
- string providerName = Helper.AttributeValue(node, "providerName", string.Empty);
- if (providerName != null)
- {
- switch (providerName)
- {
- // digitaljeebus: pulled from HKLM\SOFTWARE\Microsoft\VisualStudio\9.0\DataProviders\*
- // Not sure if these will help other operating systems, or if there's a better way.
- case "Microsoft.SqlServerCe.Client.3.5":
- providerId = new Guid("7C602B5B-ACCB-4acd-9DC0-CA66388C1533"); break;
- case "System.Data.OleDb":
- providerId = new Guid("7F041D59-D76A-44ed-9AA2-FBF6B0548B80"); break;
- case "System.Data.OracleClient":
- providerId = new Guid("8F5C5018-AE09-42cf-B2CC-2CCCC7CFC2BB"); break;
- case "System.Data.SqlClient":
- providerId = new Guid("91510608-8809-4020-8897-FBA057E22D54"); break;
- case "System.Data.Odbc":
- providerId = new Guid("C3D4F4CE-2C48-4381-B4D6-34FA50C51C86"); break;
-
- default:
- throw new ArgumentOutOfRangeException("providerName", providerName, "Could not provider name to an id.");
- }
- }
- else
- providerId = new Guid(Helper.AttributeValue(node, "providerId", Guid.Empty.ToString("B")));
-
- connectionString = Helper.AttributeValue(node, "connectionString", connectionString);
-
- base.Parse(node);
- }
- }
-}
diff --git a/Prebuild/src/Core/Nodes/DescriptionNode.cs b/Prebuild/src/Core/Nodes/DescriptionNode.cs
deleted file mode 100644
index 353a5ae..0000000
--- a/Prebuild/src/Core/Nodes/DescriptionNode.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2007 C.J. Adams-Collier (cjac@colliertech.org)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- /// The object representing the /Prebuild/Solution/Project/Description element
- ///
- [DataNode("Description")]
- public class DescriptionNode : DataNode
- {
- #region Fields
-
- private string m_Value;
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the description Value.
- ///
- /// The description Value.
- public string Value
- {
- get
- {
- return m_Value;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Parses the specified node.
- ///
- /// The node.
- public override void Parse(XmlNode node)
- {
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
-
- m_Value = Helper.InterpolateForEnvironmentVariables(node.InnerText);
- if(m_Value == null)
- {
- m_Value = "";
- }
-
- m_Value = m_Value.Trim();
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/ExcludeNode.cs b/Prebuild/src/Core/Nodes/ExcludeNode.cs
deleted file mode 100644
index 7f04cba..0000000
--- a/Prebuild/src/Core/Nodes/ExcludeNode.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- ///
- ///
- [DataNode("Exclude")]
- public class ExcludeNode : DataNode
- {
- #region Fields
-
- private string m_Pattern = "";
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return m_Pattern;
- }
- }
-
- ///
- /// Gets the pattern.
- ///
- /// The pattern.
- public string Pattern
- {
- get
- {
- return m_Pattern;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Parses the specified node.
- ///
- /// The node.
- public override void Parse(XmlNode node)
- {
- m_Pattern = Helper.AttributeValue( node, "name", m_Pattern );
- m_Pattern = Helper.AttributeValue(node, "pattern", m_Pattern );
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/FileNode.cs b/Prebuild/src/Core/Nodes/FileNode.cs
deleted file mode 100644
index 1520fcb..0000000
--- a/Prebuild/src/Core/Nodes/FileNode.cs
+++ /dev/null
@@ -1,271 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.IO;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-using Prebuild.Core.Targets;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- ///
- ///
- public enum BuildAction
- {
- ///
- ///
- ///
- None,
- ///
- ///
- ///
- Compile,
- ///
- ///
- ///
- Content,
- ///
- ///
- ///
- EmbeddedResource
- }
-
- ///
- ///
- ///
- public enum SubType
- {
- ///
- ///
- ///
- Code,
- ///
- ///
- ///
- Component,
- ///
- ///
- ///
- Designer,
- ///
- ///
- ///
- Form,
- ///
- ///
- ///
- Settings,
- ///
- ///
- ///
- UserControl,
- ///
- ///
- ///
- CodeBehind,
- }
-
- public enum CopyToOutput
- {
- Never,
- Always,
- PreserveNewest
- }
-
- ///
- ///
- ///
- [DataNode("File")]
- public class FileNode : DataNode
- {
- #region Fields
-
- private string m_Path;
- private string m_ResourceName = "";
- private BuildAction? m_BuildAction;
- private bool m_Valid;
- private SubType? m_SubType;
- private CopyToOutput m_CopyToOutput = CopyToOutput.Never;
- private bool m_Link = false;
- private string m_LinkPath = string.Empty;
- private bool m_PreservePath = false;
-
-
- #endregion
-
- #region Properties
-
- ///
- ///
- ///
- public string Path
- {
- get
- {
- return m_Path;
- }
- }
-
- ///
- ///
- ///
- public string ResourceName
- {
- get
- {
- return m_ResourceName;
- }
- }
-
- ///
- ///
- ///
- public BuildAction BuildAction
- {
- get
- {
- if (m_BuildAction != null)
- return m_BuildAction.Value;
- else
- return GetBuildActionByFileName(this.Path);
-
- }
- }
-
- public CopyToOutput CopyToOutput
- {
- get
- {
- return this.m_CopyToOutput;
- }
- }
-
- public bool IsLink
- {
- get
- {
- return this.m_Link;
- }
- }
-
- public string LinkPath
- {
- get
- {
- return this.m_LinkPath;
- }
- }
- ///
- ///
- ///
- public SubType SubType
- {
- get
- {
- if (m_SubType != null)
- return m_SubType.Value;
- else
- return GetSubTypeByFileName(this.Path);
- }
- }
-
- ///
- ///
- ///
- public bool IsValid
- {
- get
- {
- return m_Valid;
- }
- }
-
- ///
- ///
- ///
- ///
- ///
- public bool PreservePath
- {
- get
- {
- return m_PreservePath;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- ///
- ///
- ///
- public override void Parse(XmlNode node)
- {
- string buildAction = Helper.AttributeValue(node, "buildAction", String.Empty);
- if (buildAction != string.Empty)
- m_BuildAction = (BuildAction)Enum.Parse(typeof(BuildAction), buildAction);
- string subType = Helper.AttributeValue(node, "subType", string.Empty);
- if (subType != String.Empty)
- m_SubType = (SubType)Enum.Parse(typeof(SubType), subType);
-
- m_ResourceName = Helper.AttributeValue(node, "resourceName", m_ResourceName.ToString());
- this.m_Link = bool.Parse(Helper.AttributeValue(node, "link", bool.FalseString));
- if ( this.m_Link == true )
- {
- this.m_LinkPath = Helper.AttributeValue( node, "linkPath", string.Empty );
- }
- this.m_CopyToOutput = (CopyToOutput) Enum.Parse(typeof(CopyToOutput), Helper.AttributeValue(node, "copyToOutput", this.m_CopyToOutput.ToString()));
- this.m_PreservePath = bool.Parse( Helper.AttributeValue( node, "preservePath", bool.FalseString ) );
-
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
-
- m_Path = Helper.InterpolateForEnvironmentVariables(node.InnerText);
- if(m_Path == null)
- {
- m_Path = "";
- }
-
- m_Path = m_Path.Trim();
- m_Valid = true;
- if(!File.Exists(m_Path))
- {
- m_Valid = false;
- Kernel.Instance.Log.Write(LogType.Warning, "File does not exist: {0}", m_Path);
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/FilesNode.cs b/Prebuild/src/Core/Nodes/FilesNode.cs
deleted file mode 100644
index dc306c2..0000000
--- a/Prebuild/src/Core/Nodes/FilesNode.cs
+++ /dev/null
@@ -1,247 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using System.IO;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- ///
- ///
- [DataNode("Files")]
- public class FilesNode : DataNode
- {
- #region Fields
-
- private StringCollection m_Files;
- private Hashtable m_BuildActions;
- private Hashtable m_SubTypes;
- private Hashtable m_ResourceNames;
- private Hashtable m_CopyToOutputs;
- private Hashtable m_Links;
- private Hashtable m_LinkPaths;
- private Hashtable m_PreservePaths;
-
- #endregion
-
- #region Constructors
-
- ///
- ///
- ///
- public FilesNode()
- {
- m_Files = new StringCollection();
- m_BuildActions = new Hashtable();
- m_SubTypes = new Hashtable();
- m_ResourceNames = new Hashtable();
- m_CopyToOutputs = new Hashtable();
- m_Links = new Hashtable();
- m_LinkPaths = new Hashtable();
- m_PreservePaths = new Hashtable();
- }
-
- #endregion
-
- #region Properties
-
- ///
- ///
- ///
- public int Count
- {
- get
- {
- return m_Files.Count;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- ///
- ///
- ///
- ///
- public BuildAction GetBuildAction(string file)
- {
- if(!m_BuildActions.ContainsKey(file))
- {
- return BuildAction.Compile;
- }
-
- return (BuildAction)m_BuildActions[file];
- }
-
- public CopyToOutput GetCopyToOutput(string file)
- {
- if (!this.m_CopyToOutputs.ContainsKey(file))
- {
- return CopyToOutput.Never;
- }
- return (CopyToOutput) this.m_CopyToOutputs[file];
- }
-
- public bool GetIsLink(string file)
- {
- if (!this.m_Links.ContainsKey(file))
- {
- return false;
- }
- return (bool) this.m_Links[file];
- }
-
- public string GetLinkPath( string file )
- {
- if ( !this.m_LinkPaths.ContainsKey( file ) )
- {
- return string.Empty;
- }
- return (string)this.m_LinkPaths[ file ];
- }
-
- ///
- ///
- ///
- ///
- ///
- public SubType GetSubType(string file)
- {
- if(!m_SubTypes.ContainsKey(file))
- {
- return SubType.Code;
- }
-
- return (SubType)m_SubTypes[file];
- }
-
- ///
- ///
- ///
- ///
- ///
- public string GetResourceName(string file)
- {
- if(!m_ResourceNames.ContainsKey(file))
- {
- return "";
- }
-
- return (string)m_ResourceNames[file];
- }
-
- ///
- ///
- ///
- ///
- ///
- public bool GetPreservePath( string file )
- {
- if ( !m_PreservePaths.ContainsKey( file ) )
- {
- return false;
- }
-
- return (bool)m_PreservePaths[ file ];
- }
-
- ///
- ///
- ///
- ///
- public override void Parse(XmlNode node)
- {
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
- foreach(XmlNode child in node.ChildNodes)
- {
- IDataNode dataNode = Kernel.Instance.ParseNode(child, this);
- if(dataNode is FileNode)
- {
- FileNode fileNode = (FileNode)dataNode;
- if(fileNode.IsValid)
- {
- if (!m_Files.Contains(fileNode.Path))
- {
- m_Files.Add(fileNode.Path);
- m_BuildActions[fileNode.Path] = fileNode.BuildAction;
- m_SubTypes[fileNode.Path] = fileNode.SubType;
- m_ResourceNames[fileNode.Path] = fileNode.ResourceName;
- this.m_PreservePaths[ fileNode.Path ] = fileNode.PreservePath;
- this.m_Links[ fileNode.Path ] = fileNode.IsLink;
- this.m_LinkPaths[ fileNode.Path ] = fileNode.LinkPath;
- this.m_CopyToOutputs[ fileNode.Path ] = fileNode.CopyToOutput;
-
- }
- }
- }
- else if(dataNode is MatchNode)
- {
- foreach(string file in ((MatchNode)dataNode).Files)
- {
- MatchNode matchNode = (MatchNode)dataNode;
- if (!m_Files.Contains(file))
- {
- m_Files.Add(file);
- m_BuildActions[ file ] = matchNode.BuildAction == null ? GetBuildActionByFileName(file) : matchNode.BuildAction;
- m_SubTypes[file] = matchNode.SubType == null ? GetSubTypeByFileName(file) : matchNode.SubType.Value;
- m_ResourceNames[ file ] = matchNode.ResourceName;
- this.m_PreservePaths[ file ] = matchNode.PreservePath;
- this.m_Links[ file ] = matchNode.IsLink;
- this.m_LinkPaths[ file ] = matchNode.LinkPath;
- this.m_CopyToOutputs[ file ] = matchNode.CopyToOutput;
-
- }
- }
- }
- }
- }
-
- // TODO: Check in to why StringCollection's enumerator doesn't implement
- // IEnumerator?
- ///
- ///
- ///
- ///
- public StringEnumerator GetEnumerator()
- {
- return m_Files.GetEnumerator();
- }
-
- #endregion
-
- }
-}
diff --git a/Prebuild/src/Core/Nodes/MatchNode.cs b/Prebuild/src/Core/Nodes/MatchNode.cs
deleted file mode 100644
index 656d7d0..0000000
--- a/Prebuild/src/Core/Nodes/MatchNode.cs
+++ /dev/null
@@ -1,330 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.IO;
-using System.Text.RegularExpressions;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-using System.Collections;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- ///
- ///
- [DataNode("Match")]
- public class MatchNode : DataNode
- {
- #region Fields
-
- private readonly StringCollection m_Files = new StringCollection();
- private Regex m_Regex;
- private BuildAction? m_BuildAction;
- private SubType? m_SubType;
- string m_ResourceName = "";
- private CopyToOutput m_CopyToOutput;
- private bool m_Link;
- private string m_LinkPath;
- private bool m_PreservePath;
- private readonly List m_Exclusions = new List();
-
- #endregion
-
- #region Properties
-
- ///
- ///
- ///
- public StringCollection Files
- {
- get
- {
- return m_Files;
- }
- }
-
- ///
- ///
- ///
- public BuildAction? BuildAction
- {
- get
- {
- return m_BuildAction;
- }
- }
-
- ///
- ///
- ///
- public SubType? SubType
- {
- get
- {
- return m_SubType;
- }
- }
-
- public CopyToOutput CopyToOutput
- {
- get
- {
- return this.m_CopyToOutput;
- }
- }
-
- public bool IsLink
- {
- get
- {
- return this.m_Link;
- }
- }
-
- public string LinkPath
- {
- get
- {
- return this.m_LinkPath;
- }
- }
- ///
- ///
- ///
- public string ResourceName
- {
- get
- {
- return m_ResourceName;
- }
- }
-
- public bool PreservePath
- {
- get
- {
- return m_PreservePath;
- }
- }
-
- #endregion
-
- #region Private Methods
-
- ///
- /// Recurses the directories.
- ///
- /// The path.
- /// The pattern.
- /// if set to true [recurse].
- /// if set to true [use regex].
- private void RecurseDirectories(string path, string pattern, bool recurse, bool useRegex, List exclusions)
- {
- Match match;
- Boolean excludeFile;
- try
- {
- string[] files;
-
- if(!useRegex)
- {
- files = Directory.GetFiles(path, pattern);
- if(files != null)
- {
- string fileTemp;
- foreach (string file in files)
- {
- excludeFile = false;
- if (file.Substring(0,2) == "./" || file.Substring(0,2) == ".\\")
- {
- fileTemp = file.Substring(2);
- }
- else
- {
- fileTemp = file;
- }
-
- // Check all excludions and set flag if there are any hits.
- foreach ( ExcludeNode exclude in exclusions )
- {
- Regex exRegEx = new Regex( exclude.Pattern );
- match = exRegEx.Match( file );
- excludeFile |= match.Success;
- }
-
- if ( !excludeFile )
- {
- m_Files.Add( fileTemp );
- }
-
- }
- }
- else
- {
- return;
- }
- }
- else
- {
- files = Directory.GetFiles(path);
- foreach(string file in files)
- {
- excludeFile = false;
-
- match = m_Regex.Match(file);
- if(match.Success)
- {
- // Check all excludions and set flag if there are any hits.
- foreach ( ExcludeNode exclude in exclusions )
- {
- Regex exRegEx = new Regex( exclude.Pattern );
- match = exRegEx.Match( file );
- excludeFile |= !match.Success;
- }
-
- if ( !excludeFile )
- {
- m_Files.Add( file );
- }
- }
- }
- }
-
- if(recurse)
- {
- string[] dirs = Directory.GetDirectories(path);
- if(dirs != null && dirs.Length > 0)
- {
- foreach(string str in dirs)
- {
- RecurseDirectories(Helper.NormalizePath(str), pattern, recurse, useRegex, exclusions);
- }
- }
- }
- }
- catch(DirectoryNotFoundException)
- {
- return;
- }
- catch(ArgumentException)
- {
- return;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- ///
- ///
- ///
- public override void Parse(XmlNode node)
- {
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
- string path = Helper.AttributeValue(node, "path", ".");
- string pattern = Helper.AttributeValue(node, "pattern", "*");
- bool recurse = (bool)Helper.TranslateValue(typeof(bool), Helper.AttributeValue(node, "recurse", "false"));
- bool useRegex = (bool)Helper.TranslateValue(typeof(bool), Helper.AttributeValue(node, "useRegex", "false"));
- string buildAction = Helper.AttributeValue(node, "buildAction", String.Empty);
- if (buildAction != string.Empty)
- m_BuildAction = (BuildAction)Enum.Parse(typeof(BuildAction), buildAction);
-
- //TODO: Figure out where the subtype node is being assigned
- //string subType = Helper.AttributeValue(node, "subType", string.Empty);
- //if (subType != String.Empty)
- // m_SubType = (SubType)Enum.Parse(typeof(SubType), subType);
- m_ResourceName = Helper.AttributeValue(node, "resourceName", m_ResourceName.ToString());
- this.m_CopyToOutput = (CopyToOutput) Enum.Parse(typeof(CopyToOutput), Helper.AttributeValue(node, "copyToOutput", this.m_CopyToOutput.ToString()));
- this.m_Link = bool.Parse(Helper.AttributeValue(node, "link", bool.FalseString));
- if ( this.m_Link == true )
- {
- this.m_LinkPath = Helper.AttributeValue( node, "linkPath", string.Empty );
- }
- this.m_PreservePath = bool.Parse( Helper.AttributeValue( node, "preservePath", bool.FalseString ) );
-
-
- if(path != null && path.Length == 0)
- {
- path = ".";//use current directory
- }
- //throw new WarningException("Match must have a 'path' attribute");
-
- if(pattern == null)
- {
- throw new WarningException("Match must have a 'pattern' attribute");
- }
-
- path = Helper.NormalizePath(path);
- if(!Directory.Exists(path))
- {
- throw new WarningException("Match path does not exist: {0}", path);
- }
-
- try
- {
- if(useRegex)
- {
- m_Regex = new Regex(pattern);
- }
- }
- catch(ArgumentException ex)
- {
- throw new WarningException("Could not compile regex pattern: {0}", ex.Message);
- }
-
-
- foreach(XmlNode child in node.ChildNodes)
- {
- IDataNode dataNode = Kernel.Instance.ParseNode(child, this);
- if(dataNode is ExcludeNode)
- {
- ExcludeNode excludeNode = (ExcludeNode)dataNode;
- m_Exclusions.Add( excludeNode );
- }
- }
-
- RecurseDirectories( path, pattern, recurse, useRegex, m_Exclusions );
-
- if(m_Files.Count < 1)
- {
- throw new WarningException("Match returned no files: {0}{1}", Helper.EndPath(path), pattern);
- }
- m_Regex = null;
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/OptionsNode.cs b/Prebuild/src/Core/Nodes/OptionsNode.cs
deleted file mode 100644
index b63034b..0000000
--- a/Prebuild/src/Core/Nodes/OptionsNode.cs
+++ /dev/null
@@ -1,644 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Reflection;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- ///
- ///
- [DataNode("Options")]
- public class OptionsNode : DataNode
- {
- #region Fields
-
- private static Hashtable m_OptionFields;
-
- [OptionNode("CompilerDefines")]
- private string m_CompilerDefines = "";
-
- ///
- ///
- ///
- public string CompilerDefines
- {
- get
- {
- return m_CompilerDefines;
- }
- set
- {
- m_CompilerDefines = value;
- }
- }
-
- [OptionNode("OptimizeCode")]
- private bool m_OptimizeCode;
-
- ///
- ///
- ///
- public bool OptimizeCode
- {
- get
- {
- return m_OptimizeCode;
- }
- set
- {
- m_OptimizeCode = value;
- }
- }
-
- [OptionNode("CheckUnderflowOverflow")]
- private bool m_CheckUnderflowOverflow;
-
- ///
- ///
- ///
- public bool CheckUnderflowOverflow
- {
- get
- {
- return m_CheckUnderflowOverflow;
- }
- set
- {
- m_CheckUnderflowOverflow = value;
- }
- }
-
- [OptionNode("AllowUnsafe")]
- private bool m_AllowUnsafe;
-
- ///
- ///
- ///
- public bool AllowUnsafe
- {
- get
- {
- return m_AllowUnsafe;
- }
- set
- {
- m_AllowUnsafe = value;
- }
- }
-
- [OptionNode("PreBuildEvent")]
- private string m_PreBuildEvent;
-
- ///
- ///
- ///
- public string PreBuildEvent
- {
- get
- {
- return m_PreBuildEvent;
- }
- set
- {
- m_PreBuildEvent = value;
- }
- }
-
- [OptionNode("PostBuildEvent")]
- private string m_PostBuildEvent;
-
- ///
- ///
- ///
- public string PostBuildEvent
- {
- get
- {
- return m_PostBuildEvent;
- }
- set
- {
- m_PostBuildEvent = value;
- }
- }
-
- [OptionNode("PreBuildEventArgs")]
- private string m_PreBuildEventArgs;
-
- ///
- ///
- ///
- public string PreBuildEventArgs
- {
- get
- {
- return m_PreBuildEventArgs;
- }
- set
- {
- m_PreBuildEventArgs = value;
- }
- }
-
- [OptionNode("PostBuildEventArgs")]
- private string m_PostBuildEventArgs;
-
- ///
- ///
- ///
- public string PostBuildEventArgs
- {
- get
- {
- return m_PostBuildEventArgs;
- }
- set
- {
- m_PostBuildEventArgs = value;
- }
- }
-
- [OptionNode("RunPostBuildEvent")]
- private string m_RunPostBuildEvent;
-
- ///
- ///
- ///
- public string RunPostBuildEvent
- {
- get
- {
- return m_RunPostBuildEvent;
- }
- set
- {
- m_RunPostBuildEvent = value;
- }
- }
-
- [OptionNode("RunScript")]
- private string m_RunScript;
-
- ///
- ///
- ///
- public string RunScript
- {
- get
- {
- return m_RunScript;
- }
- set
- {
- m_RunScript = value;
- }
- }
-
- [OptionNode("WarningLevel")]
- private int m_WarningLevel = 4;
-
- ///
- ///
- ///
- public int WarningLevel
- {
- get
- {
- return m_WarningLevel;
- }
- set
- {
- m_WarningLevel = value;
- }
- }
-
- [OptionNode("WarningsAsErrors")]
- private bool m_WarningsAsErrors;
-
- ///
- ///
- ///
- public bool WarningsAsErrors
- {
- get
- {
- return m_WarningsAsErrors;
- }
- set
- {
- m_WarningsAsErrors = value;
- }
- }
-
- [OptionNode("SuppressWarnings")]
- private string m_SuppressWarnings = "";
-
- ///
- ///
- ///
- public string SuppressWarnings
- {
- get
- {
- return m_SuppressWarnings;
- }
- set
- {
- m_SuppressWarnings = value;
- }
- }
-
- [OptionNode("OutputPath")]
- private string m_OutputPath = "bin/";
-
- ///
- ///
- ///
- public string OutputPath
- {
- get
- {
- return m_OutputPath;
- }
- set
- {
- m_OutputPath = value;
- }
- }
-
- [OptionNode("GenerateDocumentation")]
- private bool m_GenerateDocumentation;
-
- ///
- ///
- ///
- public bool GenerateDocumentation
- {
- get
- {
- return m_GenerateDocumentation;
- }
- set
- {
- m_GenerateDocumentation = value;
- }
- }
-
- [OptionNode("GenerateXmlDocFile")]
- private bool m_GenerateXmlDocFile;
-
- ///
- ///
- ///
- public bool GenerateXmlDocFile
- {
- get
- {
- return m_GenerateXmlDocFile;
- }
- set
- {
- m_GenerateXmlDocFile = value;
- }
- }
-
- [OptionNode("XmlDocFile")]
- private string m_XmlDocFile = "";
-
- ///
- ///
- ///
- public string XmlDocFile
- {
- get
- {
- return m_XmlDocFile;
- }
- set
- {
- m_XmlDocFile = value;
- }
- }
-
- [OptionNode("KeyFile")]
- private string m_KeyFile = "";
-
- ///
- ///
- ///
- public string KeyFile
- {
- get
- {
- return m_KeyFile;
- }
- set
- {
- m_KeyFile = value;
- }
- }
-
- [OptionNode("DebugInformation")]
- private bool m_DebugInformation;
-
- ///
- ///
- ///
- public bool DebugInformation
- {
- get
- {
- return m_DebugInformation;
- }
- set
- {
- m_DebugInformation = value;
- }
- }
-
- [OptionNode("RegisterComInterop")]
- private bool m_RegisterComInterop;
-
- ///
- ///
- ///
- public bool RegisterComInterop
- {
- get
- {
- return m_RegisterComInterop;
- }
- set
- {
- m_RegisterComInterop = value;
- }
- }
-
- [OptionNode("RemoveIntegerChecks")]
- private bool m_RemoveIntegerChecks;
-
- ///
- ///
- ///
- public bool RemoveIntegerChecks
- {
- get
- {
- return m_RemoveIntegerChecks;
- }
- set
- {
- m_RemoveIntegerChecks = value;
- }
- }
-
- [OptionNode("IncrementalBuild")]
- private bool m_IncrementalBuild;
-
- ///
- ///
- ///
- public bool IncrementalBuild
- {
- get
- {
- return m_IncrementalBuild;
- }
- set
- {
- m_IncrementalBuild = value;
- }
- }
-
- [OptionNode("BaseAddress")]
- private string m_BaseAddress = "285212672";
-
- ///
- ///
- ///
- public string BaseAddress
- {
- get
- {
- return m_BaseAddress;
- }
- set
- {
- m_BaseAddress = value;
- }
- }
-
- [OptionNode("FileAlignment")]
- private int m_FileAlignment = 4096;
-
- ///
- ///
- ///
- public int FileAlignment
- {
- get
- {
- return m_FileAlignment;
- }
- set
- {
- m_FileAlignment = value;
- }
- }
-
- [OptionNode("NoStdLib")]
- private bool m_NoStdLib;
-
- ///
- ///
- ///
- public bool NoStdLib
- {
- get
- {
- return m_NoStdLib;
- }
- set
- {
- m_NoStdLib = value;
- }
- }
-
- private StringCollection m_FieldsDefined;
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes the class.
- ///
- static OptionsNode()
- {
- Type t = typeof(OptionsNode);
-
- m_OptionFields = new Hashtable();
- foreach(FieldInfo f in t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance))
- {
- object[] attrs = f.GetCustomAttributes(typeof(OptionNodeAttribute), false);
- if(attrs == null || attrs.Length < 1)
- {
- continue;
- }
-
- OptionNodeAttribute ona = (OptionNodeAttribute)attrs[0];
- m_OptionFields[ona.NodeName] = f;
- }
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- public OptionsNode()
- {
- m_FieldsDefined = new StringCollection();
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the at the specified index.
- ///
- ///
- public object this[string index]
- {
- get
- {
- if(!m_OptionFields.ContainsKey(index))
- {
- return null;
- }
-
- FieldInfo f = (FieldInfo)m_OptionFields[index];
- return f.GetValue(this);
- }
- }
-
- ///
- /// Gets the at the specified index.
- ///
- ///
- public object this[string index, object defaultValue]
- {
- get
- {
- object valueObject = this[index];
- if(valueObject != null && valueObject is string && ((string)valueObject).Length == 0)
- {
- return defaultValue;
- }
- return valueObject;
- }
- }
-
-
- #endregion
-
- #region Private Methods
-
- private void FlagDefined(string name)
- {
- if(!m_FieldsDefined.Contains(name))
- {
- m_FieldsDefined.Add(name);
- }
- }
-
- private void SetOption(string nodeName, string val)
- {
- lock(m_OptionFields)
- {
- if(!m_OptionFields.ContainsKey(nodeName))
- {
- return;
- }
-
- FieldInfo f = (FieldInfo)m_OptionFields[nodeName];
- f.SetValue(this, Helper.TranslateValue(f.FieldType, val));
- FlagDefined(f.Name);
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Parses the specified node.
- ///
- /// The node.
- public override void Parse(XmlNode node)
- {
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
-
- foreach(XmlNode child in node.ChildNodes)
- {
- SetOption(child.Name, Helper.InterpolateForEnvironmentVariables(child.InnerText));
- }
- }
-
- ///
- /// Copies to.
- ///
- /// The opt.
- public void CopyTo(OptionsNode opt)
- {
- if(opt == null)
- {
- return;
- }
-
- foreach(FieldInfo f in m_OptionFields.Values)
- {
- if(m_FieldsDefined.Contains(f.Name))
- {
- f.SetValue(opt, f.GetValue(this));
- opt.m_FieldsDefined.Add(f.Name);
- }
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/ProcessNode.cs b/Prebuild/src/Core/Nodes/ProcessNode.cs
deleted file mode 100644
index 6bfbe16..0000000
--- a/Prebuild/src/Core/Nodes/ProcessNode.cs
+++ /dev/null
@@ -1,110 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- ///
- ///
- [DataNode("Process")]
- public class ProcessNode : DataNode
- {
- #region Fields
-
- private string m_Path;
- private bool m_IsValid = true;
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the path.
- ///
- /// The path.
- public string Path
- {
- get
- {
- return m_Path;
- }
- }
-
- ///
- /// Gets a value indicating whether this instance is valid.
- ///
- /// true if this instance is valid; otherwise, false.
- public bool IsValid
- {
- get
- {
- return m_IsValid;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Parses the specified node.
- ///
- /// The node.
- public override void Parse(XmlNode node)
- {
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
-
- m_Path = Helper.InterpolateForEnvironmentVariables(node.InnerText);
- if(m_Path == null)
- {
- m_Path = "";
- }
-
- try
- {
- m_Path = Helper.ResolvePath(m_Path);
- }
- catch(ArgumentException)
- {
- Kernel.Instance.Log.Write(LogType.Warning, "Could not find prebuild file for processing: {0}", m_Path);
- m_IsValid = false;
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/ProjectNode.cs b/Prebuild/src/Core/Nodes/ProjectNode.cs
deleted file mode 100644
index 04af7a3..0000000
--- a/Prebuild/src/Core/Nodes/ProjectNode.cs
+++ /dev/null
@@ -1,580 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- /// A set of values that the Project's type can be
- ///
- public enum ProjectType
- {
- ///
- /// The project is a console executable
- ///
- Exe,
- ///
- /// The project is a windows executable
- ///
- WinExe,
- ///
- /// The project is a library
- ///
- Library,
- ///
- /// The project is a website
- ///
- Web,
- }
-
- ///
- ///
- ///
- public enum ClrRuntime
- {
- ///
- ///
- ///
- Microsoft,
- ///
- ///
- ///
- Mono
- }
- ///
- /// The version of the .NET framework to use (Required for VS2008)
- /// We don't need .NET 1.1 in here, it'll default when using vs2003.
- ///
- public enum FrameworkVersion
- {
- ///
- /// .NET 2.0
- ///
- v2_0,
- ///
- /// .NET 3.0
- ///
- v3_0,
- ///
- /// .NET 3.5
- ///
- v3_5,
- ///
- /// .NET 4.0
- ///
- v4_0,
- }
- ///
- /// The Node object representing /Prebuild/Solution/Project elements
- ///
- [DataNode("Project")]
- public class ProjectNode : DataNode, IComparable
- {
- #region Fields
-
- private string m_Name = "unknown";
- private string m_Path = "";
- private string m_FullPath = "";
- private string m_AssemblyName;
- private string m_AppIcon = "";
- private string m_ConfigFile = "";
- private string m_DesignerFolder = "";
- private string m_Language = "C#";
- private ProjectType m_Type = ProjectType.Exe;
- private ClrRuntime m_Runtime = ClrRuntime.Microsoft;
- private FrameworkVersion m_Framework = FrameworkVersion.v2_0;
- private string m_StartupObject = "";
- private string m_RootNamespace;
- private string m_FilterGroups = "";
- private string m_Version = "";
- private Guid m_Guid;
- private string m_DebugStartParameters;
-
- private Hashtable m_Configurations = new Hashtable();
- private readonly List m_ReferencePaths = new List();
- private readonly List m_References = new List();
- private readonly List m_Authors = new List();
- private FilesNode m_Files;
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return m_Name;
- }
- }
- ///
- /// The version of the .NET Framework to compile under
- ///
- public FrameworkVersion FrameworkVersion
- {
- get
- {
- return this.m_Framework;
- }
- }
- ///
- /// Gets the path.
- ///
- /// The path.
- public string Path
- {
- get
- {
- return m_Path;
- }
- }
-
- ///
- /// Gets the filter groups.
- ///
- /// The filter groups.
- public string FilterGroups
- {
- get
- {
- return m_FilterGroups;
- }
- }
-
- ///
- /// Gets the project's version
- ///
- /// The project's version.
- public string Version
- {
- get
- {
- return m_Version;
- }
- }
-
- ///
- /// Gets the full path.
- ///
- /// The full path.
- public string FullPath
- {
- get
- {
- return m_FullPath;
- }
- }
-
- ///
- /// Gets the name of the assembly.
- ///
- /// The name of the assembly.
- public string AssemblyName
- {
- get
- {
- return m_AssemblyName;
- }
- }
-
- ///
- /// Gets the app icon.
- ///
- /// The app icon.
- public string AppIcon
- {
- get
- {
- return m_AppIcon;
- }
- }
-
- ///
- /// Gets the app icon.
- ///
- /// The app icon.
- public string ConfigFile
- {
- get
- {
- return m_ConfigFile;
- }
- }
-
- ///
- ///
- ///
- public string DesignerFolder
- {
- get
- {
- return m_DesignerFolder;
- }
- }
-
- ///
- /// Gets the language.
- ///
- /// The language.
- public string Language
- {
- get
- {
- return m_Language;
- }
- }
-
- ///
- /// Gets the type.
- ///
- /// The type.
- public ProjectType Type
- {
- get
- {
- return m_Type;
- }
- }
-
- ///
- /// Gets the runtime.
- ///
- /// The runtime.
- public ClrRuntime Runtime
- {
- get
- {
- return m_Runtime;
- }
- }
-
- private bool m_GenerateAssemblyInfoFile = false;
-
- ///
- ///
- ///
- public bool GenerateAssemblyInfoFile
- {
- get
- {
- return m_GenerateAssemblyInfoFile;
- }
- set
- {
- m_GenerateAssemblyInfoFile = value;
- }
- }
-
- ///
- /// Gets the startup object.
- ///
- /// The startup object.
- public string StartupObject
- {
- get
- {
- return m_StartupObject;
- }
- }
-
- ///
- /// Gets the root namespace.
- ///
- /// The root namespace.
- public string RootNamespace
- {
- get
- {
- return m_RootNamespace;
- }
- }
-
- ///
- /// Gets the configurations.
- ///
- /// The configurations.
- public IList Configurations
- {
- get
- {
- ArrayList tmp = new ArrayList(ConfigurationsTable.Values);
- tmp.Sort();
- return tmp;
- }
- }
-
- ///
- /// Gets the configurations table.
- ///
- /// The configurations table.
- public Hashtable ConfigurationsTable
- {
- get
- {
- return m_Configurations;
- }
- }
-
- ///
- /// Gets the reference paths.
- ///
- /// The reference paths.
- public List ReferencePaths
- {
- get
- {
- List tmp = new List(m_ReferencePaths);
- tmp.Sort();
- return tmp;
- }
- }
-
- ///
- /// Gets the references.
- ///
- /// The references.
- public List References
- {
- get
- {
- List tmp = new List(m_References);
- tmp.Sort();
- return tmp;
- }
- }
-
- ///
- /// Gets the Authors list.
- ///
- /// The list of the project's authors.
- public List Authors
- {
- get
- {
- return m_Authors;
- }
- }
-
- ///
- /// Gets the files.
- ///
- /// The files.
- public FilesNode Files
- {
- get
- {
- return m_Files;
- }
- }
-
- ///
- /// Gets or sets the parent.
- ///
- /// The parent.
- public override IDataNode Parent
- {
- get
- {
- return base.Parent;
- }
- set
- {
- base.Parent = value;
- if(base.Parent is SolutionNode && m_Configurations.Count < 1)
- {
- SolutionNode parent = (SolutionNode)base.Parent;
- foreach(ConfigurationNode conf in parent.Configurations)
- {
- m_Configurations[conf.Name] = conf.Clone();
- }
- }
- }
- }
-
- ///
- /// Gets the GUID.
- ///
- /// The GUID.
- public Guid Guid
- {
- get
- {
- return m_Guid;
- }
- }
-
- public string DebugStartParameters
- {
- get
- {
- return m_DebugStartParameters;
- }
- }
-
- #endregion
-
- #region Private Methods
-
- private void HandleConfiguration(ConfigurationNode conf)
- {
- if(String.Compare(conf.Name, "all", true) == 0) //apply changes to all, this may not always be applied first,
- //so it *may* override changes to the same properties for configurations defines at the project level
- {
- foreach(ConfigurationNode confNode in this.m_Configurations.Values)
- {
- conf.CopyTo(confNode);//update the config templates defines at the project level with the overrides
- }
- }
- if(m_Configurations.ContainsKey(conf.Name))
- {
- ConfigurationNode parentConf = (ConfigurationNode)m_Configurations[conf.Name];
- conf.CopyTo(parentConf);//update the config templates defines at the project level with the overrides
- }
- else
- {
- m_Configurations[conf.Name] = conf;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Parses the specified node.
- ///
- /// The node.
- public override void Parse(XmlNode node)
- {
- m_Name = Helper.AttributeValue(node, "name", m_Name);
- m_Path = Helper.AttributeValue(node, "path", m_Path);
- m_FilterGroups = Helper.AttributeValue(node, "filterGroups", m_FilterGroups);
- m_Version = Helper.AttributeValue(node, "version", m_Version);
- m_AppIcon = Helper.AttributeValue(node, "icon", m_AppIcon);
- m_ConfigFile = Helper.AttributeValue(node, "configFile", m_ConfigFile);
- m_DesignerFolder = Helper.AttributeValue(node, "designerFolder", m_DesignerFolder);
- m_AssemblyName = Helper.AttributeValue(node, "assemblyName", m_AssemblyName);
- m_Language = Helper.AttributeValue(node, "language", m_Language);
- m_Type = (ProjectType)Helper.EnumAttributeValue(node, "type", typeof(ProjectType), m_Type);
- m_Runtime = (ClrRuntime)Helper.EnumAttributeValue(node, "runtime", typeof(ClrRuntime), m_Runtime);
- m_Framework = (FrameworkVersion)Helper.EnumAttributeValue(node, "frameworkVersion", typeof(FrameworkVersion), m_Framework);
- m_StartupObject = Helper.AttributeValue(node, "startupObject", m_StartupObject);
- m_RootNamespace = Helper.AttributeValue(node, "rootNamespace", m_RootNamespace);
-
- int hash = m_Name.GetHashCode();
- Guid guidByHash = new Guid(hash, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
- string guid = Helper.AttributeValue(node, "guid", guidByHash.ToString());
- m_Guid = new Guid(guid);
-
- m_GenerateAssemblyInfoFile = Helper.ParseBoolean(node, "generateAssemblyInfoFile", false);
- m_DebugStartParameters = Helper.AttributeValue(node, "debugStartParameters", string.Empty);
-
- if(m_AssemblyName == null || m_AssemblyName.Length < 1)
- {
- m_AssemblyName = m_Name;
- }
-
- if(m_RootNamespace == null || m_RootNamespace.Length < 1)
- {
- m_RootNamespace = m_Name;
- }
-
- m_FullPath = m_Path;
- try
- {
- m_FullPath = Helper.ResolvePath(m_FullPath);
- }
- catch
- {
- throw new WarningException("Could not resolve Solution path: {0}", m_Path);
- }
-
- Kernel.Instance.CurrentWorkingDirectory.Push();
- try
- {
- Helper.SetCurrentDir(m_FullPath);
-
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
-
- foreach(XmlNode child in node.ChildNodes)
- {
- IDataNode dataNode = Kernel.Instance.ParseNode(child, this);
- if(dataNode is ConfigurationNode)
- {
- HandleConfiguration((ConfigurationNode)dataNode);
- }
- else if(dataNode is ReferencePathNode)
- {
- m_ReferencePaths.Add((ReferencePathNode)dataNode);
- }
- else if(dataNode is ReferenceNode)
- {
- m_References.Add((ReferenceNode)dataNode);
- }
- else if(dataNode is AuthorNode)
- {
- m_Authors.Add((AuthorNode)dataNode);
- }
- else if(dataNode is FilesNode)
- {
- m_Files = (FilesNode)dataNode;
- }
- }
- }
- finally
- {
- Kernel.Instance.CurrentWorkingDirectory.Pop();
- }
- }
-
- #endregion
-
- #region IComparable Members
-
- public int CompareTo(object obj)
- {
- ProjectNode that = (ProjectNode)obj;
- return this.m_Name.CompareTo(that.m_Name);
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/ReferenceNode.cs b/Prebuild/src/Core/Nodes/ReferenceNode.cs
deleted file mode 100644
index 9c5d1a3..0000000
--- a/Prebuild/src/Core/Nodes/ReferenceNode.cs
+++ /dev/null
@@ -1,144 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- ///
- ///
- [DataNode("Reference")]
- public class ReferenceNode : DataNode, IComparable
- {
- #region Fields
-
- private string m_Name = "unknown";
- private string m_Path;
- private string m_LocalCopy;
- private string m_Version;
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return m_Name;
- }
- }
-
- ///
- /// Gets the path.
- ///
- /// The path.
- public string Path
- {
- get
- {
- return m_Path;
- }
- }
-
- ///
- /// Gets a value indicating whether [local copy specified].
- ///
- /// true if [local copy specified]; otherwise, false.
- public bool LocalCopySpecified
- {
- get
- {
- return ( m_LocalCopy != null && m_LocalCopy.Length == 0);
- }
- }
-
- ///
- /// Gets a value indicating whether [local copy].
- ///
- /// true if [local copy]; otherwise, false.
- public bool LocalCopy
- {
- get
- {
- if( m_LocalCopy == null)
- {
- return false;
- }
- return bool.Parse(m_LocalCopy);
- }
- }
-
- ///
- /// Gets the version.
- ///
- /// The version.
- public string Version
- {
- get
- {
- return m_Version;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Parses the specified node.
- ///
- /// The node.
- public override void Parse(XmlNode node)
- {
- m_Name = Helper.AttributeValue(node, "name", m_Name);
- m_Path = Helper.AttributeValue(node, "path", m_Path);
- m_LocalCopy = Helper.AttributeValue(node, "localCopy", m_LocalCopy);
- m_Version = Helper.AttributeValue(node, "version", m_Version);
- }
-
- #endregion
-
- #region IComparable Members
-
- public int CompareTo(object obj)
- {
- ReferenceNode that = (ReferenceNode)obj;
- return this.m_Name.CompareTo(that.m_Name);
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/ReferencePathNode.cs b/Prebuild/src/Core/Nodes/ReferencePathNode.cs
deleted file mode 100644
index f0543c2..0000000
--- a/Prebuild/src/Core/Nodes/ReferencePathNode.cs
+++ /dev/null
@@ -1,99 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- ///
- ///
- [DataNode("ReferencePath")]
- public class ReferencePathNode : DataNode, IComparable
- {
- #region Fields
-
- private string m_Path;
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the path.
- ///
- /// The path.
- public string Path
- {
- get
- {
- return m_Path;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Parses the specified node.
- ///
- /// The node.
- public override void Parse(XmlNode node)
- {
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
-
- m_Path = Helper.InterpolateForEnvironmentVariables(node.InnerText);
- if(m_Path == null)
- {
- m_Path = "";
- }
-
- m_Path = m_Path.Trim();
- }
-
- #endregion
-
- #region IComparable Members
-
- public int CompareTo(object obj)
- {
- ReferencePathNode that = (ReferencePathNode)obj;
- return this.m_Path.CompareTo(that.m_Path);
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Nodes/SolutionNode.cs b/Prebuild/src/Core/Nodes/SolutionNode.cs
deleted file mode 100644
index 2a1b8e2..0000000
--- a/Prebuild/src/Core/Nodes/SolutionNode.cs
+++ /dev/null
@@ -1,358 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-using System.Xml;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Nodes
-{
- ///
- ///
- ///
- [DataNode("Solution")]
- [DataNode("EmbeddedSolution")]
- [DebuggerDisplay("{Name}")]
- public class SolutionNode : DataNode
- {
- #region Fields
-
- private Guid m_Guid = Guid.NewGuid();
- private string m_Name = "unknown";
- private string m_Path = "";
- private string m_FullPath = "";
- private string m_ActiveConfig = "Debug";
- private string m_Version = "1.0.0";
-
- private OptionsNode m_Options;
- private FilesNode m_Files;
- private readonly Hashtable m_Configurations = new Hashtable();
- private readonly Hashtable m_Projects = new Hashtable();
- private readonly Hashtable m_DatabaseProjects = new Hashtable();
- private readonly List m_ProjectsOrder = new List();
- private readonly Hashtable m_Solutions = new Hashtable();
-
- #endregion
-
- #region Properties
- public override IDataNode Parent
- {
- get
- {
- return base.Parent;
- }
- set
- {
- if (value is SolutionNode)
- {
- SolutionNode solution = (SolutionNode)value;
- foreach (ConfigurationNode conf in solution.Configurations)
- {
- m_Configurations[conf.Name] = conf.Clone();
- }
- }
-
- base.Parent = value;
- }
- }
-
- public Guid Guid
- {
- get
- {
- return m_Guid;
- }
- set
- {
- m_Guid = value;
- }
- }
- ///
- /// Gets or sets the active config.
- ///
- /// The active config.
- public string ActiveConfig
- {
- get
- {
- return m_ActiveConfig;
- }
- set
- {
- m_ActiveConfig = value;
- }
- }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return m_Name;
- }
- }
-
- ///
- /// Gets the path.
- ///
- /// The path.
- public string Path
- {
- get
- {
- return m_Path;
- }
- }
-
- ///
- /// Gets the full path.
- ///
- /// The full path.
- public string FullPath
- {
- get
- {
- return m_FullPath;
- }
- }
-
- ///
- /// Gets the version.
- ///
- /// The version.
- public string Version
- {
- get
- {
- return m_Version;
- }
- }
-
- ///
- /// Gets the options.
- ///
- /// The options.
- public OptionsNode Options
- {
- get
- {
- return m_Options;
- }
- }
-
- ///
- /// Gets the files.
- ///
- /// The files.
- public FilesNode Files
- {
- get
- {
- return m_Files;
- }
- }
-
- ///
- /// Gets the configurations.
- ///
- /// The configurations.
- public ICollection Configurations
- {
- get
- {
- ArrayList tmp = new ArrayList(ConfigurationsTable.Values);
- tmp.Sort();
- return tmp;
- }
- }
-
- ///
- /// Gets the configurations table.
- ///
- /// The configurations table.
- public Hashtable ConfigurationsTable
- {
- get
- {
- return m_Configurations;
- }
- }
- ///
- /// Gets the database projects.
- ///
- public ICollection DatabaseProjects
- {
- get
- {
- return m_DatabaseProjects.Values;
- }
- }
- ///
- /// Gets the nested solutions.
- ///
- public ICollection Solutions
- {
- get
- {
- return m_Solutions.Values;
- }
- }
- ///
- /// Gets the nested solutions hash table.
- ///
- public Hashtable SolutionsTable
- {
- get
- {
- return this.m_Solutions;
- }
- }
- ///
- /// Gets the projects.
- ///
- /// The projects.
- public ICollection Projects
- {
- get
- {
- ArrayList tmp = new ArrayList(m_Projects.Values);
- tmp.Sort();
- return tmp;
- }
- }
-
- ///
- /// Gets the projects table.
- ///
- /// The projects table.
- public Hashtable ProjectsTable
- {
- get
- {
- return m_Projects;
- }
- }
-
- ///
- /// Gets the projects table.
- ///
- /// The projects table.
- public List ProjectsTableOrder
- {
- get
- {
- return m_ProjectsOrder;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Parses the specified node.
- ///
- /// The node.
- public override void Parse(XmlNode node)
- {
- m_Name = Helper.AttributeValue(node, "name", m_Name);
- m_ActiveConfig = Helper.AttributeValue(node, "activeConfig", m_ActiveConfig);
- m_Path = Helper.AttributeValue(node, "path", m_Path);
- m_Version = Helper.AttributeValue(node, "version", m_Version);
-
- m_FullPath = m_Path;
- try
- {
- m_FullPath = Helper.ResolvePath(m_FullPath);
- }
- catch
- {
- throw new WarningException("Could not resolve solution path: {0}", m_Path);
- }
-
- Kernel.Instance.CurrentWorkingDirectory.Push();
- try
- {
- Helper.SetCurrentDir(m_FullPath);
-
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
-
- foreach(XmlNode child in node.ChildNodes)
- {
- IDataNode dataNode = Kernel.Instance.ParseNode(child, this);
- if(dataNode is OptionsNode)
- {
- m_Options = (OptionsNode)dataNode;
- }
- else if(dataNode is FilesNode)
- {
- m_Files = (FilesNode)dataNode;
- }
- else if(dataNode is ConfigurationNode)
- {
- m_Configurations[((ConfigurationNode)dataNode).Name] = dataNode;
- }
- else if(dataNode is ProjectNode)
- {
- m_Projects[((ProjectNode)dataNode).Name] = dataNode;
- m_ProjectsOrder.Add((ProjectNode)dataNode);
- }
- else if(dataNode is SolutionNode)
- {
- m_Solutions[((SolutionNode)dataNode).Name] = dataNode;
- }
- else if (dataNode is ProcessNode)
- {
- ProcessNode p = (ProcessNode)dataNode;
- Kernel.Instance.ProcessFile(p, this);
- }
- else if (dataNode is DatabaseProjectNode)
- {
- m_DatabaseProjects[((DatabaseProjectNode)dataNode).Name] = dataNode;
- }
- }
- }
- finally
- {
- Kernel.Instance.CurrentWorkingDirectory.Pop();
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Parse/IfContext.cs b/Prebuild/src/Core/Parse/IfContext.cs
deleted file mode 100644
index 3c79d38..0000000
--- a/Prebuild/src/Core/Parse/IfContext.cs
+++ /dev/null
@@ -1,154 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-
-namespace Prebuild.Core.Parse
-{
- ///
- ///
- ///
- public enum IfState
- {
- ///
- ///
- ///
- None,
- ///
- ///
- ///
- If,
- ///
- ///
- ///
- ElseIf,
- ///
- ///
- ///
- Else
- }
-
- ///
- /// Summary description for IfContext.
- ///
- // Inspired by the equivalent WiX class (see www.sourceforge.net/projects/wix/)
- public class IfContext
- {
- #region Properties
-
- bool m_Active;
- bool m_Keep;
- bool m_EverKept;
- IfState m_State = IfState.None;
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// if set to true [active].
- /// if set to true [keep].
- /// The state.
- public IfContext(bool active, bool keep, IfState state)
- {
- m_Active = active;
- m_Keep = keep;
- m_EverKept = keep;
- m_State = state;
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets or sets a value indicating whether this is active.
- ///
- /// true if active; otherwise, false.
- public bool Active
- {
- get
- {
- return m_Active;
- }
- set
- {
- m_Active = value;
- }
- }
-
- ///
- /// Gets or sets a value indicating whether this is keep.
- ///
- /// true if keep; otherwise, false.
- public bool Keep
- {
- get
- {
- return m_Keep;
- }
- set
- {
- m_Keep = value;
- if(m_Keep)
- {
- m_EverKept = true;
- }
- }
- }
-
- ///
- /// Gets a value indicating whether [ever kept].
- ///
- /// true if [ever kept]; otherwise, false.
- public bool EverKept
- {
- get
- {
- return m_EverKept;
- }
- }
-
- ///
- /// Gets or sets the state.
- ///
- /// The state.
- public IfState State
- {
- get
- {
- return m_State;
- }
- set
- {
- m_State = value;
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Parse/Preprocessor.cs b/Prebuild/src/Core/Parse/Preprocessor.cs
deleted file mode 100644
index b2306e4..0000000
--- a/Prebuild/src/Core/Parse/Preprocessor.cs
+++ /dev/null
@@ -1,663 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.IO;
-using System.Text.RegularExpressions;
-using System.Xml;
-
-namespace Prebuild.Core.Parse
-{
- ///
- ///
- ///
- public enum OperatorSymbol
- {
- ///
- ///
- ///
- None,
- ///
- ///
- ///
- Equal,
- ///
- ///
- ///
- NotEqual,
- ///
- ///
- ///
- LessThan,
- ///
- ///
- ///
- GreaterThan,
- ///
- ///
- ///
- LessThanEqual,
- ///
- ///
- ///
- GreaterThanEqual
- }
-
- ///
- ///
- ///
- public class Preprocessor
- {
- #region Constants
-
- ///
- /// Includes the regex to look for file tags in the processing instruction.
- ///
- private static readonly Regex includeFileRegex = new Regex("file=\"(.+?)\"");
-
- #endregion
-
- #region Fields
-
- XmlDocument m_OutDoc;
- Stack m_IfStack;
- Hashtable m_Variables;
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- public Preprocessor()
- {
- m_OutDoc = new XmlDocument();
- m_IfStack = new Stack();
- m_Variables = new Hashtable();
-
- RegisterVariable("OS", GetOS());
- RegisterVariable("RuntimeVersion", Environment.Version.Major);
- RegisterVariable("RuntimeMajor", Environment.Version.Major);
- RegisterVariable("RuntimeMinor", Environment.Version.Minor);
- RegisterVariable("RuntimeRevision", Environment.Version.Revision);
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the processed doc.
- ///
- /// The processed doc.
- public XmlDocument ProcessedDoc
- {
- get
- {
- return m_OutDoc;
- }
- }
-
- #endregion
-
- #region Private Methods
-
- ///
- /// Parts of this code were taken from NAnt and is subject to the GPL
- /// as per NAnt's license. Thanks to the NAnt guys for this little gem.
- ///
- ///
- public static string GetOS()
- {
- PlatformID platId = Environment.OSVersion.Platform;
- if(platId == PlatformID.Win32NT || platId == PlatformID.Win32Windows)
- {
- return "Win32";
- }
-
- if (File.Exists("/System/Library/Frameworks/Cocoa.framework/Cocoa"))
- {
- return "MACOSX";
- }
-
- /*
- * .NET 1.x, under Mono, the UNIX code is 128. Under
- * .NET 2.x, Mono or MS, the UNIX code is 4
- */
- if(Environment.Version.Major == 1)
- {
- if((int)platId == 128)
- {
- return "UNIX";
- }
- }
- else if((int)platId == 4)
- {
- return "UNIX";
- }
-
- return "Unknown";
- }
-
- private static bool CompareNum(OperatorSymbol oper, int val1, int val2)
- {
- switch(oper)
- {
- case OperatorSymbol.Equal:
- return (val1 == val2);
- case OperatorSymbol.NotEqual:
- return (val1 != val2);
- case OperatorSymbol.LessThan:
- return (val1 < val2);
- case OperatorSymbol.LessThanEqual:
- return (val1 <= val2);
- case OperatorSymbol.GreaterThan:
- return (val1 > val2);
- case OperatorSymbol.GreaterThanEqual:
- return (val1 >= val2);
- }
-
- throw new WarningException("Unknown operator type");
- }
-
- private static bool CompareStr(OperatorSymbol oper, string val1, string val2)
- {
- switch(oper)
- {
- case OperatorSymbol.Equal:
- return (val1 == val2);
- case OperatorSymbol.NotEqual:
- return (val1 != val2);
- case OperatorSymbol.LessThan:
- return (val1.CompareTo(val2) < 0);
- case OperatorSymbol.LessThanEqual:
- return (val1.CompareTo(val2) <= 0);
- case OperatorSymbol.GreaterThan:
- return (val1.CompareTo(val2) > 0);
- case OperatorSymbol.GreaterThanEqual:
- return (val1.CompareTo(val2) >= 0);
- }
-
- throw new WarningException("Unknown operator type");
- }
-
- private static char NextChar(int idx, string str)
- {
- if((idx + 1) >= str.Length)
- {
- return Char.MaxValue;
- }
-
- return str[idx + 1];
- }
- // Very very simple expression parser. Can only match expressions of the form
- // :
- // OS = Windows
- // OS != Linux
- // RuntimeMinor > 0
- private bool ParseExpression(string exp)
- {
- if(exp == null)
- {
- throw new ArgumentException("Invalid expression, cannot be null");
- }
-
- exp = exp.Trim();
- if(exp.Length < 1)
- {
- throw new ArgumentException("Invalid expression, cannot be 0 length");
- }
-
- string id = "";
- string str = "";
- OperatorSymbol oper = OperatorSymbol.None;
- bool inStr = false;
- char c;
-
- for(int i = 0; i < exp.Length; i++)
- {
- c = exp[i];
- if(Char.IsWhiteSpace(c))
- {
- continue;
- }
-
- if(Char.IsLetterOrDigit(c) || c == '_')
- {
- if(inStr)
- {
- str += c;
- }
- else
- {
- id += c;
- }
- }
- else if(c == '\"')
- {
- inStr = !inStr;
- if(inStr)
- {
- str = "";
- }
- }
- else
- {
- if(inStr)
- {
- str += c;
- }
- else
- {
- switch(c)
- {
- case '=':
- oper = OperatorSymbol.Equal;
- break;
-
- case '!':
- if(NextChar(i, exp) == '=')
- {
- oper = OperatorSymbol.NotEqual;
- }
-
- break;
-
- case '<':
- if(NextChar(i, exp) == '=')
- {
- oper = OperatorSymbol.LessThanEqual;
- }
- else
- {
- oper = OperatorSymbol.LessThan;
- }
-
- break;
-
- case '>':
- if(NextChar(i, exp) == '=')
- {
- oper = OperatorSymbol.GreaterThanEqual;
- }
- else
- {
- oper = OperatorSymbol.GreaterThan;
- }
-
- break;
- }
- }
- }
- }
-
-
- if(inStr)
- {
- throw new WarningException("Expected end of string in expression");
- }
-
- if(oper == OperatorSymbol.None)
- {
- throw new WarningException("Expected operator in expression");
- }
- else if(id.Length < 1)
- {
- throw new WarningException("Expected identifier in expression");
- }
- else if(str.Length < 1)
- {
- throw new WarningException("Expected value in expression");
- }
-
- bool ret = false;
- try
- {
- object val = m_Variables[id.ToLower()];
- if(val == null)
- {
- throw new WarningException("Unknown identifier '{0}'", id);
- }
-
- int numVal, numVal2;
- string strVal, strVal2;
- Type t = val.GetType();
- if(t.IsAssignableFrom(typeof(int)))
- {
- numVal = (int)val;
- numVal2 = Int32.Parse(str);
- ret = CompareNum(oper, numVal, numVal2);
- }
- else
- {
- strVal = val.ToString();
- strVal2 = str;
- ret = CompareStr(oper, strVal, strVal2);
- }
- }
- catch(ArgumentException ex)
- {
- ex.ToString();
- throw new WarningException("Invalid value type for system variable '{0}', expected int", id);
- }
-
- return ret;
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- ///
- ///
- ///
- ///
- public void RegisterVariable(string name, object variableValue)
- {
- if(name == null || variableValue == null)
- {
- return;
- }
-
- m_Variables[name.ToLower()] = variableValue;
- }
-
- ///
- /// Performs validation on the xml source as well as evaluates conditional and flow expresions
- ///
- /// For invalid use of conditional expressions or for invalid XML syntax. If a XmlValidatingReader is passed, then will also throw exceptions for non-schema-conforming xml
- ///
- /// the output xml
- public string Process(XmlReader initialReader)
- {
- if(initialReader == null)
- {
- throw new ArgumentException("Invalid XML reader to pre-process");
- }
-
- IfContext context = new IfContext(true, true, IfState.None);
- StringWriter xmlText = new StringWriter();
- XmlTextWriter writer = new XmlTextWriter(xmlText);
- writer.Formatting = Formatting.Indented;
-
- // Create a queue of XML readers and add the initial
- // reader to it. Then we process until we run out of
- // readers which lets the operation add more
- // readers to generate a multi-file parser and not require
- // XML fragments that a recursive version would use.
- Stack readerStack = new Stack();
- readerStack.Push(initialReader);
-
- while(readerStack.Count > 0)
- {
- // Pop off the next reader.
- XmlReader reader = (XmlReader) readerStack.Pop();
-
- // Process through this XML reader until it is
- // completed (or it is replaced by the include
- // operation).
- while(reader.Read())
- {
- // The prebuild file has a series of processing
- // instructions which allow for specific
- // inclusions based on operating system or to
- // include additional files.
- if(reader.NodeType == XmlNodeType.ProcessingInstruction)
- {
- bool ignore = false;
-
- switch(reader.LocalName)
- {
- case "include":
- // use regular expressions to parse out the attributes.
- MatchCollection matches = includeFileRegex.Matches(reader.Value);
-
- // make sure there is only one file attribute.
- if(matches.Count > 1)
- {
- throw new WarningException("An node was found, but it specified more than one file.");
- }
-
- if(matches.Count == 0)
- {
- throw new WarningException("An node was found, but it did not specify the file attribute.");
- }
-
- // Push current reader back onto the stack.
- readerStack.Push(reader);
-
- // Pull the file out from the regex and make sure it is a valid file before using it.
- string filename = matches[0].Groups[1].Value;
-
- filename = String.Join(Path.DirectorySeparatorChar.ToString(), filename.Split(new char[] { '/', '\\' }));
-
- if (!filename.Contains("*"))
- {
- FileInfo includeFile = new FileInfo(filename);
-
- if (!includeFile.Exists)
- {
- throw new WarningException("Cannot include file: " + includeFile.FullName);
- }
-
- // Create a new reader object for this file, and push it onto the stack
- XmlReader newReader = new XmlTextReader(includeFile.Open(FileMode.Open, FileAccess.Read, FileShare.Read));
- readerStack.Push(newReader);
- }
- else
- {
- WildCardInclude(readerStack, filename);
- }
-
- // continue reading with whatever reader is on the top of the stack
- reader = (XmlReader)readerStack.Pop();
- ignore = true;
-
- break;
-
- case "if":
- m_IfStack.Push(context);
- context = new IfContext(context.Keep & context.Active, ParseExpression(reader.Value), IfState.If);
- ignore = true;
- break;
-
- case "elseif":
- if(m_IfStack.Count == 0)
- {
- throw new WarningException("Unexpected 'elseif' outside of 'if'");
- }
- else if(context.State != IfState.If && context.State != IfState.ElseIf)
- {
- throw new WarningException("Unexpected 'elseif' outside of 'if'");
- }
-
- context.State = IfState.ElseIf;
- if(!context.EverKept)
- {
- context.Keep = ParseExpression(reader.Value);
- }
- else
- {
- context.Keep = false;
- }
-
- ignore = true;
- break;
-
- case "else":
- if(m_IfStack.Count == 0)
- {
- throw new WarningException("Unexpected 'else' outside of 'if'");
- }
- else if(context.State != IfState.If && context.State != IfState.ElseIf)
- {
- throw new WarningException("Unexpected 'else' outside of 'if'");
- }
-
- context.State = IfState.Else;
- context.Keep = !context.EverKept;
- ignore = true;
- break;
-
- case "endif":
- if(m_IfStack.Count == 0)
- {
- throw new WarningException("Unexpected 'endif' outside of 'if'");
- }
-
- context = (IfContext)m_IfStack.Pop();
- ignore = true;
- break;
- }
-
- if(ignore)
- {
- continue;
- }
- }//end pre-proc instruction
-
- if(!context.Active || !context.Keep)
- {
- continue;
- }
-
- switch(reader.NodeType)
- {
- case XmlNodeType.Element:
- bool empty = reader.IsEmptyElement;
- writer.WriteStartElement(reader.Name);
-
- while (reader.MoveToNextAttribute())
- {
- writer.WriteAttributeString(reader.Name, reader.Value);
- }
-
- if(empty)
- {
- writer.WriteEndElement();
- }
-
- break;
-
- case XmlNodeType.EndElement:
- writer.WriteEndElement();
- break;
-
- case XmlNodeType.Text:
- writer.WriteString(reader.Value);
- break;
-
- case XmlNodeType.CDATA:
- writer.WriteCData(reader.Value);
- break;
-
- default:
- break;
- }
- }
-
- if(m_IfStack.Count != 0)
- {
- throw new WarningException("Mismatched 'if', 'endif' pair");
- }
- }
-
- return xmlText.ToString();
- }
-
- private static void WildCardInclude(Stack readerStack, string include)
- {
- if (!include.Contains("*"))
- {
- return;
- }
-
-// Console.WriteLine("Processing {0}", include);
-
- // Break up the include into pre and post wildcard sections
- string preWildcard = include.Substring(0, include.IndexOf("*"));
- string postWildcard = include.Substring(include.IndexOf("*") + 2);
-
- // If preWildcard is a directory, recurse
- if (Directory.Exists(preWildcard))
- {
- string[] directories = Directory.GetDirectories(preWildcard);
- Array.Sort(directories);
- Array.Reverse(directories);
- foreach (string dirPath in directories )
- {
- Console.WriteLine("Scanning : {0}", dirPath);
-
- string includeFile = Path.Combine(dirPath, postWildcard);
- if (includeFile.Contains("*"))
- {
- // postWildcard included another wildcard, recurse.
- WildCardInclude(readerStack, includeFile);
- }
- else
- {
- FileInfo file = new FileInfo(includeFile);
- if (file.Exists)
- {
- Console.WriteLine("Including File: {0}", includeFile);
- XmlReader newReader = new XmlTextReader(file.Open(FileMode.Open, FileAccess.Read, FileShare.Read));
- readerStack.Push(newReader);
- }
- }
- }
- }
- else
- {
- // preWildcard is not a path to a directory, so the wildcard is in the filename
- string searchFilename = Path.GetFileName(preWildcard.Substring(preWildcard.IndexOf("/") + 1) + "*" + postWildcard);
- // Console.WriteLine("searchFilename: {0}", searchFilename);
-
- string searchDirectory = Path.GetDirectoryName(preWildcard);
- // Console.WriteLine("searchDirectory: {0}", searchDirectory);
-
- string[] files = Directory.GetFiles(searchDirectory, searchFilename);
- Array.Sort(files);
- Array.Reverse(files);
- foreach (string includeFile in files)
- {
- FileInfo file = new FileInfo(includeFile);
- if (file.Exists)
- {
- Console.WriteLine("Including File: {0}", includeFile);
- XmlReader newReader = new XmlTextReader(file.Open(FileMode.Open, FileAccess.Read, FileShare.Read));
- readerStack.Push(newReader);
- }
- }
- }
-
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/AutotoolsTarget.cs b/Prebuild/src/Core/Targets/AutotoolsTarget.cs
deleted file mode 100644
index 5dcbb38..0000000
--- a/Prebuild/src/Core/Targets/AutotoolsTarget.cs
+++ /dev/null
@@ -1,1782 +0,0 @@
-#region BSD License
-/*
-
-Copyright (c) 2004 - 2008
-Matthew Holmes (matthew@wildfiregames.com),
-Dan Moorehead (dan05a@gmail.com),
-Dave Hudson (jendave@yahoo.com),
-C.J. Adams-Collier (cjac@colliertech.org),
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-* Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-
-* The name of the author may not be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-*/
-#endregion
-
-#region MIT X11 license
-
-/*
- Portions of this file authored by Lluis Sanchez Gual
-
- Copyright (C) 2006 Novell, Inc (http://www.novell.com)
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#endregion
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.IO;
-using System.Reflection;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Xml;
-using System.Xml.Xsl;
-using System.Net;
-using System.Diagnostics;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-using Prebuild.Core.Parse;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Targets
-{
- public enum ClrVersion
- {
- Default,
- Net_1_1,
- Net_2_0
- }
-
- public class SystemPackage
- {
- string name;
- string version;
- string description;
- string[] assemblies;
- bool isInternal;
- ClrVersion targetVersion;
-
- public void Initialize(string name,
- string version,
- string description,
- string[] assemblies,
- ClrVersion targetVersion,
- bool isInternal)
- {
- this.isInternal = isInternal;
- this.name = name;
- this.version = version;
- this.assemblies = assemblies;
- this.description = description;
- this.targetVersion = targetVersion;
- }
-
- public string Name
- {
- get { return name; }
- }
-
- public string Version
- {
- get { return version; }
- }
-
- public string Description
- {
- get { return description; }
- }
-
- public ClrVersion TargetVersion
- {
- get { return targetVersion; }
- }
-
- // The package is part of the mono SDK
- public bool IsCorePackage
- {
- get { return name == "mono"; }
- }
-
- // The package has been registered by an add-in, and is not installed
- // in the system.
- public bool IsInternalPackage
- {
- get { return isInternal; }
- }
-
- public string[] Assemblies
- {
- get { return assemblies; }
- }
-
- }
-
-
- ///
- ///
- ///
- [Target("autotools")]
- public class AutotoolsTarget : ITarget
- {
- #region Fields
-
- Kernel m_Kernel;
- XmlDocument autotoolsDoc;
- XmlUrlResolver xr;
- System.Security.Policy.Evidence e;
- Hashtable assemblyPathToPackage = new Hashtable();
- Hashtable assemblyFullNameToPath = new Hashtable();
- Hashtable packagesHash = new Hashtable();
- readonly List packages = new List();
-
- #endregion
-
- #region Private Methods
-
- private void mkdirDashP(string dirName)
- {
- DirectoryInfo di = new DirectoryInfo(dirName);
- if (di.Exists)
- return;
-
- string parentDirName = System.IO.Path.GetDirectoryName(dirName);
- DirectoryInfo parentDi = new DirectoryInfo(parentDirName);
- if (!parentDi.Exists)
- mkdirDashP(parentDirName);
-
- di.Create();
- }
-
- private void chkMkDir(string dirName)
- {
- System.IO.DirectoryInfo di =
- new System.IO.DirectoryInfo(dirName);
-
- if (!di.Exists)
- di.Create();
- }
-
- private void transformToFile(string filename, XsltArgumentList argList, string nodeName)
- {
- // Create an XslTransform for this file
- XslTransform templateTransformer =
- new XslTransform();
-
- // Load up the template
- XmlNode templateNode =
- autotoolsDoc.SelectSingleNode(nodeName + "/*");
- templateTransformer.Load(templateNode.CreateNavigator(), xr, e);
-
- // Create a writer for the transformed template
- XmlTextWriter templateWriter =
- new XmlTextWriter(filename, null);
-
- // Perform transformation, writing the file
- templateTransformer.Transform
- (m_Kernel.CurrentDoc, argList, templateWriter, xr);
- }
-
- string NormalizeAsmName(string name)
- {
- int i = name.IndexOf(", PublicKeyToken=null");
- if (i != -1)
- return name.Substring(0, i).Trim();
- else
- return name;
- }
-
- private void AddAssembly(string assemblyfile, SystemPackage package)
- {
- if (!File.Exists(assemblyfile))
- return;
-
- try
- {
- System.Reflection.AssemblyName an = System.Reflection.AssemblyName.GetAssemblyName(assemblyfile);
- assemblyFullNameToPath[NormalizeAsmName(an.FullName)] = assemblyfile;
- assemblyPathToPackage[assemblyfile] = package;
- }
- catch
- {
- }
- }
-
- private List GetAssembliesWithLibInfo(string line, string file)
- {
- List references = new List();
- List libdirs = new List();
- List retval = new List();
- foreach (string piece in line.Split(' '))
- {
- if (piece.ToLower().Trim().StartsWith("/r:") || piece.ToLower().Trim().StartsWith("-r:"))
- {
- references.Add(ProcessPiece(piece.Substring(3).Trim(), file));
- }
- else if (piece.ToLower().Trim().StartsWith("/lib:") || piece.ToLower().Trim().StartsWith("-lib:"))
- {
- libdirs.Add(ProcessPiece(piece.Substring(5).Trim(), file));
- }
- }
-
- foreach (string refrnc in references)
- {
- foreach (string libdir in libdirs)
- {
- if (File.Exists(libdir + Path.DirectorySeparatorChar + refrnc))
- {
- retval.Add(libdir + Path.DirectorySeparatorChar + refrnc);
- }
- }
- }
-
- return retval;
- }
-
- private List GetAssembliesWithoutLibInfo(string line, string file)
- {
- List references = new List();
- foreach (string reference in line.Split(' '))
- {
- if (reference.ToLower().Trim().StartsWith("/r:") || reference.ToLower().Trim().StartsWith("-r:"))
- {
- string final_ref = reference.Substring(3).Trim();
- references.Add(ProcessPiece(final_ref, file));
- }
- }
- return references;
- }
-
- private string ProcessPiece(string piece, string pcfile)
- {
- int start = piece.IndexOf("${");
- if (start == -1)
- return piece;
-
- int end = piece.IndexOf("}");
- if (end == -1)
- return piece;
-
- string variable = piece.Substring(start + 2, end - start - 2);
- string interp = GetVariableFromPkgConfig(variable, Path.GetFileNameWithoutExtension(pcfile));
- return ProcessPiece(piece.Replace("${" + variable + "}", interp), pcfile);
- }
-
- private string GetVariableFromPkgConfig(string var, string pcfile)
- {
- ProcessStartInfo psi = new ProcessStartInfo("pkg-config");
- psi.RedirectStandardOutput = true;
- psi.UseShellExecute = false;
- psi.Arguments = String.Format("--variable={0} {1}", var, pcfile);
- Process p = new Process();
- p.StartInfo = psi;
- p.Start();
- string ret = p.StandardOutput.ReadToEnd().Trim();
- p.WaitForExit();
- if (String.IsNullOrEmpty(ret))
- return String.Empty;
- return ret;
- }
-
- private void ParsePCFile(string pcfile)
- {
- // Don't register the package twice
- string pname = Path.GetFileNameWithoutExtension(pcfile);
- if (packagesHash.Contains(pname))
- return;
-
- List fullassemblies = null;
- string version = "";
- string desc = "";
-
- SystemPackage package = new SystemPackage();
-
- using (StreamReader reader = new StreamReader(pcfile))
- {
- string line;
- while ((line = reader.ReadLine()) != null)
- {
- string lowerLine = line.ToLower();
- if (lowerLine.StartsWith("libs:") && lowerLine.IndexOf(".dll") != -1)
- {
- string choppedLine = line.Substring(5).Trim();
- if (choppedLine.IndexOf("-lib:") != -1 || choppedLine.IndexOf("/lib:") != -1)
- {
- fullassemblies = GetAssembliesWithLibInfo(choppedLine, pcfile);
- }
- else
- {
- fullassemblies = GetAssembliesWithoutLibInfo(choppedLine, pcfile);
- }
- }
- else if (lowerLine.StartsWith("version:"))
- {
- // "version:".Length == 8
- version = line.Substring(8).Trim();
- }
- else if (lowerLine.StartsWith("description:"))
- {
- // "description:".Length == 12
- desc = line.Substring(12).Trim();
- }
- }
- }
-
- if (fullassemblies == null)
- return;
-
- foreach (string assembly in fullassemblies)
- {
- AddAssembly(assembly, package);
- }
-
- package.Initialize(pname,
- version,
- desc,
- fullassemblies.ToArray(),
- ClrVersion.Default,
- false);
- packages.Add(package);
- packagesHash[pname] = package;
- }
-
- void RegisterSystemAssemblies(string prefix, string version, ClrVersion ver)
- {
- SystemPackage package = new SystemPackage();
- List list = new List();
-
- string dir = Path.Combine(prefix, version);
- if (!Directory.Exists(dir))
- {
- return;
- }
-
- foreach (string assembly in Directory.GetFiles(dir, "*.dll"))
- {
- AddAssembly(assembly, package);
- list.Add(assembly);
- }
-
- package.Initialize("mono",
- version,
- "The Mono runtime",
- list.ToArray(),
- ver,
- false);
- packages.Add(package);
- }
-
- void RunInitialization()
- {
- string versionDir;
-
- if (Environment.Version.Major == 1)
- {
- versionDir = "1.0";
- }
- else
- {
- versionDir = "2.0";
- }
-
- //Pull up assemblies from the installed mono system.
- string prefix = Path.GetDirectoryName(typeof(int).Assembly.Location);
-
- if (prefix.IndexOf(Path.Combine("mono", versionDir)) == -1)
- prefix = Path.Combine(prefix, "mono");
- else
- prefix = Path.GetDirectoryName(prefix);
-
- RegisterSystemAssemblies(prefix, "1.0", ClrVersion.Net_1_1);
- RegisterSystemAssemblies(prefix, "2.0", ClrVersion.Net_2_0);
-
- string search_dirs = Environment.GetEnvironmentVariable("PKG_CONFIG_PATH");
- string libpath = Environment.GetEnvironmentVariable("PKG_CONFIG_LIBPATH");
-
- if (String.IsNullOrEmpty(libpath))
- {
- string path_dirs = Environment.GetEnvironmentVariable("PATH");
- foreach (string pathdir in path_dirs.Split(Path.PathSeparator))
- {
- if (pathdir == null)
- continue;
- if (File.Exists(pathdir + Path.DirectorySeparatorChar + "pkg-config"))
- {
- libpath = Path.Combine(pathdir, "..");
- libpath = Path.Combine(libpath, "lib");
- libpath = Path.Combine(libpath, "pkgconfig");
- break;
- }
- }
- }
- search_dirs += Path.PathSeparator + libpath;
- if (!string.IsNullOrEmpty(search_dirs))
- {
- List scanDirs = new List();
- foreach (string potentialDir in search_dirs.Split(Path.PathSeparator))
- {
- if (!scanDirs.Contains(potentialDir))
- scanDirs.Add(potentialDir);
- }
- foreach (string pcdir in scanDirs)
- {
- if (pcdir == null)
- continue;
-
- if (Directory.Exists(pcdir))
- {
- foreach (string pcfile in Directory.GetFiles(pcdir, "*.pc"))
- {
- ParsePCFile(pcfile);
- }
- }
- }
- }
- }
-
- private void WriteCombine(SolutionNode solution)
- {
- #region "Create Solution directory if it doesn't exist"
- string solutionDir = Path.Combine(solution.FullPath,
- Path.Combine("autotools",
- solution.Name));
- chkMkDir(solutionDir);
- #endregion
-
- #region "Write Solution-level files"
- XsltArgumentList argList = new XsltArgumentList();
- argList.AddParam("solutionName", "", solution.Name);
- // $solutionDir is $rootDir/$solutionName/
- transformToFile(Path.Combine(solutionDir, "configure.ac"),
- argList, "/Autotools/SolutionConfigureAc");
- transformToFile(Path.Combine(solutionDir, "Makefile.am"),
- argList, "/Autotools/SolutionMakefileAm");
- transformToFile(Path.Combine(solutionDir, "autogen.sh"),
- argList, "/Autotools/SolutionAutogenSh");
- #endregion
-
- foreach (ProjectNode project in solution.ProjectsTableOrder)
- {
- m_Kernel.Log.Write(String.Format("Writing project: {0}",
- project.Name));
- WriteProject(solution, project);
- }
- }
- private static string PrependPath(string path)
- {
- string tmpPath = Helper.NormalizePath(path, '/');
- Regex regex = new Regex(@"(\w):/(\w+)");
- Match match = regex.Match(tmpPath);
- if (match.Success || tmpPath[0] == '.' || tmpPath[0] == '/')
- {
- tmpPath = Helper.NormalizePath(tmpPath);
- }
- else
- {
- tmpPath = Helper.NormalizePath("./" + tmpPath);
- }
-
- return tmpPath;
- }
-
- private static string BuildReference(SolutionNode solution,
- ReferenceNode refr)
- {
- string ret = "";
- if (solution.ProjectsTable.ContainsKey(refr.Name))
- {
- ProjectNode project =
- (ProjectNode)solution.ProjectsTable[refr.Name];
- string fileRef = FindFileReference(refr.Name, project);
- string finalPath =
- Helper.NormalizePath(Helper.MakeFilePath(project.FullPath +
- "/$(BUILD_DIR)/$(CONFIG)/",
- refr.Name, "dll"),
- '/');
- ret += finalPath;
- return ret;
- }
- else
- {
- ProjectNode project = (ProjectNode)refr.Parent;
- string fileRef = FindFileReference(refr.Name, project);
-
- if (refr.Path != null || fileRef != null)
- {
- string finalPath = ((refr.Path != null) ?
- Helper.NormalizePath(refr.Path + "/" +
- refr.Name + ".dll",
- '/') :
- fileRef
- );
- ret += Path.Combine(project.Path, finalPath);
- return ret;
- }
-
- try
- {
- //Assembly assem = Assembly.Load(refr.Name);
- //if (assem != null)
- //{
- // int index = refr.Name.IndexOf(",");
- // if ( index > 0)
- // {
- // ret += assem.Location;
- // //Console.WriteLine("Location1: " + assem.Location);
- // }
- // else
- // {
- // ret += (refr.Name + ".dll");
- // //Console.WriteLine("Location2: " + assem.Location);
- // }
- //}
- //else
- //{
- int index = refr.Name.IndexOf(",");
- if (index > 0)
- {
- ret += refr.Name.Substring(0, index) + ".dll";
- //Console.WriteLine("Location3: " + assem.Location);
- }
- else
- {
- ret += (refr.Name + ".dll");
- //Console.WriteLine("Location4: " + assem.Location);
- }
- //}
- }
- catch (System.NullReferenceException e)
- {
- e.ToString();
- int index = refr.Name.IndexOf(",");
- if (index > 0)
- {
- ret += refr.Name.Substring(0, index) + ".dll";
- //Console.WriteLine("Location5: " + assem.Location);
- }
- else
- {
- ret += (refr.Name + ".dll");
- //Console.WriteLine("Location6: " + assem.Location);
- }
- }
- }
- return ret;
- }
-
- private static string BuildReferencePath(SolutionNode solution,
- ReferenceNode refr)
- {
- string ret = "";
- if (solution.ProjectsTable.ContainsKey(refr.Name))
- {
- ProjectNode project =
- (ProjectNode)solution.ProjectsTable[refr.Name];
- string finalPath =
- Helper.NormalizePath(Helper.MakeReferencePath(project.FullPath +
- "/${build.dir}/"),
- '/');
- ret += finalPath;
- return ret;
- }
- else
- {
- ProjectNode project = (ProjectNode)refr.Parent;
- string fileRef = FindFileReference(refr.Name, project);
-
- if (refr.Path != null || fileRef != null)
- {
- string finalPath = ((refr.Path != null) ?
- Helper.NormalizePath(refr.Path, '/') :
- fileRef
- );
- ret += finalPath;
- return ret;
- }
-
- try
- {
- Assembly assem = Assembly.Load(refr.Name);
- if (assem != null)
- {
- ret += "";
- }
- else
- {
- ret += "";
- }
- }
- catch (System.NullReferenceException e)
- {
- e.ToString();
- ret += "";
- }
- }
- return ret;
- }
-
- private static string FindFileReference(string refName,
- ProjectNode project)
- {
- foreach (ReferencePathNode refPath in project.ReferencePaths)
- {
- string fullPath =
- Helper.MakeFilePath(refPath.Path, refName, "dll");
-
- if (File.Exists(fullPath)) {
- return fullPath;
- }
- }
-
- return null;
- }
-
- ///
- /// Gets the XML doc file.
- ///
- /// The project.
- /// The conf.
- ///
- public static string GetXmlDocFile(ProjectNode project, ConfigurationNode conf)
- {
- if (conf == null)
- {
- throw new ArgumentNullException("conf");
- }
- if (project == null)
- {
- throw new ArgumentNullException("project");
- }
- string docFile = (string)conf.Options["XmlDocFile"];
- // if(docFile != null && docFile.Length == 0)//default to assembly name if not specified
- // {
- // return Path.GetFileNameWithoutExtension(project.AssemblyName) + ".xml";
- // }
- return docFile;
- }
-
- ///
- /// Normalizes the path.
- ///
- /// The path.
- ///
- public static string NormalizePath(string path)
- {
- if (path == null)
- {
- return "";
- }
-
- StringBuilder tmpPath;
-
- if (Core.Parse.Preprocessor.GetOS() == "Win32")
- {
- tmpPath = new StringBuilder(path.Replace('\\', '/'));
- tmpPath.Replace("/", @"\\");
- }
- else
- {
- tmpPath = new StringBuilder(path.Replace('\\', '/'));
- tmpPath = tmpPath.Replace('/', Path.DirectorySeparatorChar);
- }
- return tmpPath.ToString();
- }
-
- private void WriteProject(SolutionNode solution, ProjectNode project)
- {
- string solutionDir = Path.Combine(solution.FullPath, Path.Combine("autotools", solution.Name));
- string projectDir = Path.Combine(solutionDir, project.Name);
- string projectVersion = project.Version;
- bool hasAssemblyConfig = false;
- chkMkDir(projectDir);
-
- List
- compiledFiles = new List(),
- contentFiles = new List(),
- embeddedFiles = new List(),
-
- binaryLibs = new List(),
- pkgLibs = new List(),
- systemLibs = new List(),
- runtimeLibs = new List(),
-
- extraDistFiles = new List(),
- localCopyTargets = new List();
-
- // If there exists a .config file for this assembly, copy
- // it to the project folder
-
- // TODO: Support copying .config.osx files
- // TODO: support processing the .config file for native library deps
- string projectAssemblyName = project.Name;
- if (project.AssemblyName != null)
- projectAssemblyName = project.AssemblyName;
-
- if (File.Exists(Path.Combine(project.FullPath, projectAssemblyName) + ".dll.config"))
- {
- hasAssemblyConfig = true;
- System.IO.File.Copy(Path.Combine(project.FullPath, projectAssemblyName + ".dll.config"), Path.Combine(projectDir, projectAssemblyName + ".dll.config"), true);
- extraDistFiles.Add(project.AssemblyName + ".dll.config");
- }
-
- foreach (ConfigurationNode conf in project.Configurations)
- {
- if (conf.Options.KeyFile != string.Empty)
- {
- // Copy snk file into the project's directory
- // Use the snk from the project directory directly
- string source = Path.Combine(project.FullPath, conf.Options.KeyFile);
- string keyFile = conf.Options.KeyFile;
- Regex re = new Regex(".*/");
- keyFile = re.Replace(keyFile, "");
-
- string dest = Path.Combine(projectDir, keyFile);
- // Tell the user if there's a problem copying the file
- try
- {
- mkdirDashP(System.IO.Path.GetDirectoryName(dest));
- System.IO.File.Copy(source, dest, true);
- }
- catch (System.IO.IOException e)
- {
- Console.WriteLine(e.Message);
- }
- }
- }
-
- // Copy compiled, embedded and content files into the project's directory
- foreach (string filename in project.Files)
- {
- string source = Path.Combine(project.FullPath, filename);
- string dest = Path.Combine(projectDir, filename);
-
- if (filename.Contains("AssemblyInfo.cs"))
- {
- // If we've got an AssemblyInfo.cs, pull the version number from it
- string[] sources = { source };
- string[] args = { "" };
- Microsoft.CSharp.CSharpCodeProvider cscp =
- new Microsoft.CSharp.CSharpCodeProvider();
-
- string tempAssemblyFile = Path.Combine(Path.GetTempPath(), project.Name + "-temp.dll");
- System.CodeDom.Compiler.CompilerParameters cparam =
- new System.CodeDom.Compiler.CompilerParameters(args, tempAssemblyFile);
-
- System.CodeDom.Compiler.CompilerResults cr =
- cscp.CompileAssemblyFromFile(cparam, sources);
-
- foreach (System.CodeDom.Compiler.CompilerError error in cr.Errors)
- Console.WriteLine("Error! '{0}'", error.ErrorText);
-
- try {
- string projectFullName = cr.CompiledAssembly.FullName;
- Regex verRegex = new Regex("Version=([\\d\\.]+)");
- Match verMatch = verRegex.Match(projectFullName);
- if (verMatch.Success)
- projectVersion = verMatch.Groups[1].Value;
- }catch{
- Console.WriteLine("Couldn't compile AssemblyInfo.cs");
- }
-
- // Clean up the temp file
- try
- {
- if (File.Exists(tempAssemblyFile))
- File.Delete(tempAssemblyFile);
- }
- catch
- {
- Console.WriteLine("Error! '{0}'", e.ToString());
- }
-
- }
-
- // Tell the user if there's a problem copying the file
- try
- {
- mkdirDashP(System.IO.Path.GetDirectoryName(dest));
- System.IO.File.Copy(source, dest, true);
- }
- catch (System.IO.IOException e)
- {
- Console.WriteLine(e.Message);
- }
-
- switch (project.Files.GetBuildAction(filename))
- {
- case BuildAction.Compile:
- compiledFiles.Add(filename);
- break;
- case BuildAction.Content:
- contentFiles.Add(filename);
- extraDistFiles.Add(filename);
- break;
- case BuildAction.EmbeddedResource:
- embeddedFiles.Add(filename);
- break;
- }
- }
-
- // Set up references
- for (int refNum = 0; refNum < project.References.Count; refNum++)
- {
- ReferenceNode refr = (ReferenceNode)project.References[refNum];
- Assembly refAssembly = Assembly.LoadWithPartialName(refr.Name);
-
- /* Determine which pkg-config (.pc) file refers to
- this assembly */
-
- SystemPackage package = null;
-
- if (packagesHash.Contains(refr.Name)){
- package = (SystemPackage)packagesHash[refr.Name];
-
- }else{
- string assemblyFullName = string.Empty;
- if (refAssembly != null)
- assemblyFullName = refAssembly.FullName;
-
- string assemblyFileName = string.Empty;
- if (assemblyFullName != string.Empty &&
- assemblyFullNameToPath.Contains(assemblyFullName)
- )
- assemblyFileName =
- (string)assemblyFullNameToPath[assemblyFullName];
-
- if (assemblyFileName != string.Empty &&
- assemblyPathToPackage.Contains(assemblyFileName)
- )
- package = (SystemPackage)assemblyPathToPackage[assemblyFileName];
-
- }
-
- /* If we know the .pc file and it is not "mono"
- (already in the path), add a -pkg: argument */
-
- if (package != null &&
- package.Name != "mono" &&
- !pkgLibs.Contains(package.Name)
- )
- pkgLibs.Add(package.Name);
-
- string fileRef =
- FindFileReference(refr.Name, (ProjectNode)refr.Parent);
-
- if (refr.LocalCopy ||
- solution.ProjectsTable.ContainsKey(refr.Name) ||
- fileRef != null ||
- refr.Path != null
- )
- {
-
- /* Attempt to copy the referenced lib to the
- project's directory */
-
- string filename = refr.Name + ".dll";
- string source = filename;
- if (refr.Path != null)
- source = Path.Combine(refr.Path, source);
- source = Path.Combine(project.FullPath, source);
- string dest = Path.Combine(projectDir, filename);
-
- /* Since we depend on this binary dll to build, we
- * will add a compile- time dependency on the
- * copied dll, and add the dll to the list of
- * files distributed with this package
- */
-
- binaryLibs.Add(refr.Name + ".dll");
- extraDistFiles.Add(refr.Name + ".dll");
-
- // TODO: Support copying .config.osx files
- // TODO: Support for determining native dependencies
- if (File.Exists(source + ".config"))
- {
- System.IO.File.Copy(source + ".config", Path.GetDirectoryName(dest), true);
- extraDistFiles.Add(refr.Name + ".dll.config");
- }
-
- try
- {
- System.IO.File.Copy(source, dest, true);
- }
- catch (System.IO.IOException)
- {
- if (solution.ProjectsTable.ContainsKey(refr.Name)){
-
- /* If an assembly is referenced, marked for
- * local copy, in the list of projects for
- * this solution, but does not exist, put a
- * target into the Makefile.am to build the
- * assembly and copy it to this project's
- * directory
- */
-
- ProjectNode sourcePrj =
- ((ProjectNode)(solution.ProjectsTable[refr.Name]));
-
- string target =
- String.Format("{0}:\n" +
- "\t$(MAKE) -C ../{1}\n" +
- "\tln ../{2}/$@ $@\n",
- filename,
- sourcePrj.Name,
- sourcePrj.Name );
-
- localCopyTargets.Add(target);
- }
- }
- }
- else if( !pkgLibs.Contains(refr.Name) )
- {
- // Else, let's assume it's in the GAC or the lib path
- string assemName = string.Empty;
- int index = refr.Name.IndexOf(",");
-
- if (index > 0)
- assemName = refr.Name.Substring(0, index);
- else
- assemName = refr.Name;
-
- m_Kernel.Log.Write(String.Format(
- "Warning: Couldn't find an appropriate assembly " +
- "for reference:\n'{0}'", refr.Name
- ));
- systemLibs.Add(assemName);
- }
- }
-
- const string lineSep = " \\\n\t";
- string compiledFilesString = string.Empty;
- if (compiledFiles.Count > 0)
- compiledFilesString =
- lineSep + string.Join(lineSep, compiledFiles.ToArray());
-
- string embeddedFilesString = "";
- if (embeddedFiles.Count > 0)
- embeddedFilesString =
- lineSep + string.Join(lineSep, embeddedFiles.ToArray());
-
- string contentFilesString = "";
- if (contentFiles.Count > 0)
- contentFilesString =
- lineSep + string.Join(lineSep, contentFiles.ToArray());
-
- string extraDistFilesString = "";
- if (extraDistFiles.Count > 0)
- extraDistFilesString =
- lineSep + string.Join(lineSep, extraDistFiles.ToArray());
-
- string pkgLibsString = "";
- if (pkgLibs.Count > 0)
- pkgLibsString =
- lineSep + string.Join(lineSep, pkgLibs.ToArray());
-
- string binaryLibsString = "";
- if (binaryLibs.Count > 0)
- binaryLibsString =
- lineSep + string.Join(lineSep, binaryLibs.ToArray());
-
- string systemLibsString = "";
- if (systemLibs.Count > 0)
- systemLibsString =
- lineSep + string.Join(lineSep, systemLibs.ToArray());
-
- string localCopyTargetsString = "";
- if (localCopyTargets.Count > 0)
- localCopyTargetsString =
- string.Join("\n", localCopyTargets.ToArray());
-
- string monoPath = "";
- foreach (string runtimeLib in runtimeLibs)
- {
- monoPath += ":`pkg-config --variable=libdir " + runtimeLib + "`";
- }
-
- // Add the project name to the list of transformation
- // parameters
- XsltArgumentList argList = new XsltArgumentList();
- argList.AddParam("projectName", "", project.Name);
- argList.AddParam("solutionName", "", solution.Name);
- argList.AddParam("assemblyName", "", projectAssemblyName);
- argList.AddParam("compiledFiles", "", compiledFilesString);
- argList.AddParam("embeddedFiles", "", embeddedFilesString);
- argList.AddParam("contentFiles", "", contentFilesString);
- argList.AddParam("extraDistFiles", "", extraDistFilesString);
- argList.AddParam("pkgLibs", "", pkgLibsString);
- argList.AddParam("binaryLibs", "", binaryLibsString);
- argList.AddParam("systemLibs", "", systemLibsString);
- argList.AddParam("monoPath", "", monoPath);
- argList.AddParam("localCopyTargets", "", localCopyTargetsString);
- argList.AddParam("projectVersion", "", projectVersion);
- argList.AddParam("hasAssemblyConfig", "", hasAssemblyConfig ? "true" : "");
-
- // Transform the templates
- transformToFile(Path.Combine(projectDir, "configure.ac"), argList, "/Autotools/ProjectConfigureAc");
- transformToFile(Path.Combine(projectDir, "Makefile.am"), argList, "/Autotools/ProjectMakefileAm");
- transformToFile(Path.Combine(projectDir, "autogen.sh"), argList, "/Autotools/ProjectAutogenSh");
-
- if (project.Type == Core.Nodes.ProjectType.Library)
- transformToFile(Path.Combine(projectDir, project.Name + ".pc.in"), argList, "/Autotools/ProjectPcIn");
- if (project.Type == Core.Nodes.ProjectType.Exe || project.Type == Core.Nodes.ProjectType.WinExe)
- transformToFile(Path.Combine(projectDir, project.Name.ToLower() + ".in"), argList, "/Autotools/ProjectWrapperScriptIn");
- }
-
- private void WriteProjectOld(SolutionNode solution, ProjectNode project)
- {
- string projFile = Helper.MakeFilePath(project.FullPath, "Include", "am");
- StreamWriter ss = new StreamWriter(projFile);
- ss.NewLine = "\n";
-
- m_Kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(projFile));
-
- using (ss)
- {
- ss.WriteLine(Helper.AssemblyFullName(project.AssemblyName, project.Type) + ":");
- ss.WriteLine("\tmkdir -p " + Helper.MakePathRelativeTo(solution.FullPath, project.Path) + "/$(BUILD_DIR)/$(CONFIG)/");
- foreach (string file in project.Files)
- {
- if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings)
- {
- ss.Write("\tresgen ");
- ss.Write(Helper.NormalizePath(Path.Combine(project.Path, file.Substring(0, file.LastIndexOf('.')) + ".resx "), '/'));
- if (project.Files.GetResourceName(file) != "")
- {
- ss.WriteLine(Helper.NormalizePath(Path.Combine(project.Path, project.RootNamespace + "." + project.Files.GetResourceName(file) + ".resources"), '/'));
- }
- else
- {
- ss.WriteLine(Helper.NormalizePath(Path.Combine(project.Path, project.RootNamespace + "." + file.Substring(0, file.LastIndexOf('.')) + ".resources"), '/'));
- }
- }
- }
- ss.WriteLine("\t$(CSC)\t/out:" + Helper.MakePathRelativeTo(solution.FullPath, project.Path) + "/$(BUILD_DIR)/$(CONFIG)/" + Helper.AssemblyFullName(project.AssemblyName, project.Type) + " \\");
- ss.WriteLine("\t\t/target:" + project.Type.ToString().ToLower() + " \\");
- if (project.References.Count > 0)
- {
- ss.Write("\t\t/reference:");
- bool firstref = true;
- foreach (ReferenceNode refr in project.References)
- {
- if (firstref)
- {
- firstref = false;
- }
- else
- {
- ss.Write(",");
- }
- ss.Write("{0}", Helper.NormalizePath(Helper.MakePathRelativeTo(solution.FullPath, BuildReference(solution, refr)), '/'));
- }
- ss.WriteLine(" \\");
- }
- //ss.WriteLine("\t\tProperties/AssemblyInfo.cs \\");
-
- foreach (string file in project.Files)
- {
- switch (project.Files.GetBuildAction(file))
- {
- case BuildAction.EmbeddedResource:
- ss.Write("\t\t/resource:");
- ss.WriteLine(Helper.NormalizePath(Path.Combine(project.Path, file), '/') + " \\");
- break;
- default:
- if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings)
- {
- ss.Write("\t\t/resource:");
- if (project.Files.GetResourceName(file) != "")
- {
- ss.WriteLine(Helper.NormalizePath(Path.Combine(project.Path, project.RootNamespace + "." + project.Files.GetResourceName(file) + ".resources"), '/') + "," + project.RootNamespace + "." + project.Files.GetResourceName(file) + ".resources" + " \\");
- }
- else
- {
- ss.WriteLine(Helper.NormalizePath(Path.Combine(project.Path, project.RootNamespace + "." + file.Substring(0, file.LastIndexOf('.')) + ".resources"), '/') + "," + project.RootNamespace + "." + file.Substring(0, file.LastIndexOf('.')) + ".resources" + " \\");
- }
- }
- break;
- }
- }
-
- foreach (ConfigurationNode conf in project.Configurations)
- {
- if (conf.Options.KeyFile != "")
- {
- ss.WriteLine("\t\t/keyfile:" + Helper.NormalizePath(Path.Combine(project.Path, conf.Options.KeyFile), '/') + " \\");
- break;
- }
- }
- foreach (ConfigurationNode conf in project.Configurations)
- {
- if (conf.Options.AllowUnsafe)
- {
- ss.WriteLine("\t\t/unsafe \\");
- break;
- }
- }
- if (project.AppIcon != "")
- {
- ss.WriteLine("\t\t/win32icon:" + Helper.NormalizePath(Path.Combine(project.Path, project.AppIcon), '/') + " \\");
- }
-
- foreach (ConfigurationNode conf in project.Configurations)
- {
- ss.WriteLine("\t\t/define:{0}", conf.Options.CompilerDefines.Replace(';', ',') + " \\");
- break;
- }
-
- foreach (ConfigurationNode conf in project.Configurations)
- {
- if (GetXmlDocFile(project, conf) != "")
- {
- ss.WriteLine("\t\t/doc:" + Helper.MakePathRelativeTo(solution.FullPath, project.Path) + "/$(BUILD_DIR)/$(CONFIG)/" + project.Name + ".xml \\");
- break;
- }
- }
- foreach (string file in project.Files)
- {
- switch (project.Files.GetBuildAction(file))
- {
- case BuildAction.Compile:
- ss.WriteLine("\t\t\\");
- ss.Write("\t\t" + NormalizePath(Path.Combine(Helper.MakePathRelativeTo(solution.FullPath, project.Path), file)));
- break;
- default:
- break;
- }
- }
- ss.WriteLine();
- ss.WriteLine();
-
- if (project.Type == ProjectType.Library)
- {
- ss.WriteLine("install-data-local:");
- ss.WriteLine(" echo \"$(GACUTIL) /i bin/Release/" + project.Name + ".dll /f $(GACUTIL_FLAGS)\"; \\");
- ss.WriteLine(" $(GACUTIL) /i bin/Release/" + project.Name + ".dll /f $(GACUTIL_FLAGS) || exit 1;");
- ss.WriteLine();
- ss.WriteLine("uninstall-local:");
- ss.WriteLine(" echo \"$(GACUTIL) /u " + project.Name + " $(GACUTIL_FLAGS)\"; \\");
- ss.WriteLine(" $(GACUTIL) /u " + project.Name + " $(GACUTIL_FLAGS) || exit 1;");
- ss.WriteLine();
- }
- ss.WriteLine("CLEANFILES = $(BUILD_DIR)/$(CONFIG)/" + Helper.AssemblyFullName(project.AssemblyName, project.Type) + " $(BUILD_DIR)/$(CONFIG)/" + project.AssemblyName + ".mdb $(BUILD_DIR)/$(CONFIG)/" + project.AssemblyName + ".pdb " + project.AssemblyName + ".xml");
- ss.WriteLine("EXTRA_DIST = \\");
- ss.Write(" $(FILES)");
- foreach (ConfigurationNode conf in project.Configurations)
- {
- if (conf.Options.KeyFile != "")
- {
- ss.Write(" \\");
- ss.WriteLine("\t" + conf.Options.KeyFile);
- }
- break;
- }
- }
- m_Kernel.CurrentWorkingDirectory.Pop();
- }
- bool hasLibrary = false;
-
- private void WriteCombineOld(SolutionNode solution)
- {
-
- /* TODO: These vars should be pulled from the prebuild.xml file */
- string releaseVersion = "2.0.0";
- string assemblyVersion = "2.1.0.0";
- string description =
- "Tao Framework " + solution.Name + " Binding For .NET";
-
- hasLibrary = false;
- m_Kernel.Log.Write("Creating Autotools make files");
- foreach (ProjectNode project in solution.Projects)
- {
- if (m_Kernel.AllowProject(project.FilterGroups))
- {
- m_Kernel.Log.Write("...Creating makefile: {0}", project.Name);
- WriteProject(solution, project);
- }
- }
-
- m_Kernel.Log.Write("");
- string combFile = Helper.MakeFilePath(solution.FullPath, "Makefile", "am");
- StreamWriter ss = new StreamWriter(combFile);
- ss.NewLine = "\n";
-
- m_Kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(combFile));
-
- using (ss)
- {
- foreach (ProjectNode project in solution.ProjectsTableOrder)
- {
- if (project.Type == ProjectType.Library)
- {
- hasLibrary = true;
- break;
- }
- }
-
- if (hasLibrary)
- {
- ss.Write("pkgconfig_in_files = ");
- foreach (ProjectNode project in solution.ProjectsTableOrder)
- {
- if (project.Type == ProjectType.Library)
- {
- string combFilepc = Helper.MakeFilePath(solution.FullPath, project.Name, "pc.in");
- ss.Write(" " + project.Name + ".pc.in ");
- StreamWriter sspc = new StreamWriter(combFilepc);
- sspc.NewLine = "\n";
- using (sspc)
- {
- sspc.WriteLine("prefix=@prefix@");
- sspc.WriteLine("exec_prefix=${prefix}");
- sspc.WriteLine("libdir=${exec_prefix}/lib");
- sspc.WriteLine();
- sspc.WriteLine("Name: @PACKAGE_NAME@");
- sspc.WriteLine("Description: @DESCRIPTION@");
- sspc.WriteLine("Version: @ASSEMBLY_VERSION@");
- sspc.WriteLine("Libs: -r:${libdir}/mono/gac/@PACKAGE_NAME@/@ASSEMBLY_VERSION@__@PUBKEY@/@PACKAGE_NAME@.dll");
- }
- }
- }
-
- ss.WriteLine();
- ss.WriteLine("pkgconfigdir=$(prefix)/lib/pkgconfig");
- ss.WriteLine("pkgconfig_DATA=$(pkgconfig_in_files:.pc.in=.pc)");
- }
- ss.WriteLine();
- foreach (ProjectNode project in solution.ProjectsTableOrder)
- {
- string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
- ss.WriteLine("-include x {0}",
- Helper.NormalizePath(Helper.MakeFilePath(path, "Include", "am"), '/'));
- }
- ss.WriteLine();
- ss.WriteLine("all: \\");
- ss.Write("\t");
- foreach (ProjectNode project in solution.ProjectsTableOrder)
- {
- string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
- ss.Write(Helper.AssemblyFullName(project.AssemblyName, project.Type) + " ");
-
- }
- ss.WriteLine();
- if (hasLibrary)
- {
- ss.WriteLine("EXTRA_DIST = \\");
- ss.WriteLine("\t$(pkgconfig_in_files)");
- }
- else
- {
- ss.WriteLine("EXTRA_DIST = ");
- }
- ss.WriteLine();
- ss.WriteLine("DISTCLEANFILES = \\");
- ss.WriteLine("\tconfigure \\");
- ss.WriteLine("\tMakefile.in \\");
- ss.WriteLine("\taclocal.m4");
- }
- combFile = Helper.MakeFilePath(solution.FullPath, "configure", "ac");
- StreamWriter ts = new StreamWriter(combFile);
- ts.NewLine = "\n";
- using (ts)
- {
- if (this.hasLibrary)
- {
- foreach (ProjectNode project in solution.ProjectsTableOrder)
- {
- if (project.Type == ProjectType.Library)
- {
- ts.WriteLine("AC_INIT(" + project.Name + ".pc.in)");
- break;
- }
- }
- }
- else
- {
- ts.WriteLine("AC_INIT(Makefile.am)");
- }
- ts.WriteLine("AC_PREREQ(2.53)");
- ts.WriteLine("AC_CANONICAL_SYSTEM");
-
- ts.WriteLine("PACKAGE_NAME={0}", solution.Name);
- ts.WriteLine("PACKAGE_VERSION={0}", releaseVersion);
- ts.WriteLine("DESCRIPTION=\"{0}\"", description);
- ts.WriteLine("AC_SUBST(DESCRIPTION)");
- ts.WriteLine("AM_INIT_AUTOMAKE([$PACKAGE_NAME],[$PACKAGE_VERSION],[$DESCRIPTION])");
-
- ts.WriteLine("ASSEMBLY_VERSION={0}", assemblyVersion);
- ts.WriteLine("AC_SUBST(ASSEMBLY_VERSION)");
-
- ts.WriteLine("PUBKEY=`sn -t $PACKAGE_NAME.snk | grep 'Public Key Token' | awk -F: '{print $2}' | sed -e 's/^ //'`");
- ts.WriteLine("AC_SUBST(PUBKEY)");
-
- ts.WriteLine();
- ts.WriteLine("AM_MAINTAINER_MODE");
- ts.WriteLine();
- ts.WriteLine("dnl AC_PROG_INTLTOOL([0.25])");
- ts.WriteLine();
- ts.WriteLine("AC_PROG_INSTALL");
- ts.WriteLine();
- ts.WriteLine("MONO_REQUIRED_VERSION=1.1");
- ts.WriteLine();
- ts.WriteLine("AC_MSG_CHECKING([whether we're compiling from CVS])");
- ts.WriteLine("if test -f \"$srcdir/.cvs_version\" ; then");
- ts.WriteLine(" from_cvs=yes");
- ts.WriteLine("else");
- ts.WriteLine(" if test -f \"$srcdir/.svn\" ; then");
- ts.WriteLine(" from_cvs=yes");
- ts.WriteLine(" else");
- ts.WriteLine(" from_cvs=no");
- ts.WriteLine(" fi");
- ts.WriteLine("fi");
- ts.WriteLine();
- ts.WriteLine("AC_MSG_RESULT($from_cvs)");
- ts.WriteLine();
- ts.WriteLine("AC_PATH_PROG(MONO, mono)");
- ts.WriteLine("AC_PATH_PROG(GMCS, gmcs)");
- ts.WriteLine("AC_PATH_PROG(GACUTIL, gacutil)");
- ts.WriteLine();
- ts.WriteLine("AC_MSG_CHECKING([for mono])");
- ts.WriteLine("dnl if test \"x$MONO\" = \"x\" ; then");
- ts.WriteLine("dnl AC_MSG_ERROR([Can't find \"mono\" in your PATH])");
- ts.WriteLine("dnl else");
- ts.WriteLine(" AC_MSG_RESULT([found])");
- ts.WriteLine("dnl fi");
- ts.WriteLine();
- ts.WriteLine("AC_MSG_CHECKING([for gmcs])");
- ts.WriteLine("dnl if test \"x$GMCS\" = \"x\" ; then");
- ts.WriteLine("dnl AC_MSG_ERROR([Can't find \"gmcs\" in your PATH])");
- ts.WriteLine("dnl else");
- ts.WriteLine(" AC_MSG_RESULT([found])");
- ts.WriteLine("dnl fi");
- ts.WriteLine();
- //ts.WriteLine("AC_MSG_CHECKING([for gacutil])");
- //ts.WriteLine("if test \"x$GACUTIL\" = \"x\" ; then");
- //ts.WriteLine(" AC_MSG_ERROR([Can't find \"gacutil\" in your PATH])");
- //ts.WriteLine("else");
- //ts.WriteLine(" AC_MSG_RESULT([found])");
- //ts.WriteLine("fi");
- ts.WriteLine();
- ts.WriteLine("AC_SUBST(PATH)");
- ts.WriteLine("AC_SUBST(LD_LIBRARY_PATH)");
- ts.WriteLine();
- ts.WriteLine("dnl CSFLAGS=\"-debug -nowarn:1574\"");
- ts.WriteLine("CSFLAGS=\"\"");
- ts.WriteLine("AC_SUBST(CSFLAGS)");
- ts.WriteLine();
- // ts.WriteLine("AC_MSG_CHECKING(--disable-sdl argument)");
- // ts.WriteLine("AC_ARG_ENABLE(sdl,");
- // ts.WriteLine(" [ --disable-sdl Disable Sdl interface.],");
- // ts.WriteLine(" [disable_sdl=$disableval],");
- // ts.WriteLine(" [disable_sdl=\"no\"])");
- // ts.WriteLine("AC_MSG_RESULT($disable_sdl)");
- // ts.WriteLine("if test \"$disable_sdl\" = \"yes\"; then");
- // ts.WriteLine(" AC_DEFINE(FEAT_SDL)");
- // ts.WriteLine("fi");
- ts.WriteLine();
- ts.WriteLine("dnl Find pkg-config");
- ts.WriteLine("AC_PATH_PROG(PKGCONFIG, pkg-config, no)");
- ts.WriteLine("if test \"x$PKG_CONFIG\" = \"xno\"; then");
- ts.WriteLine(" AC_MSG_ERROR([You need to install pkg-config])");
- ts.WriteLine("fi");
- ts.WriteLine();
- ts.WriteLine("PKG_CHECK_MODULES(MONO_DEPENDENCY, mono >= $MONO_REQUIRED_VERSION, has_mono=true, has_mono=false)");
- ts.WriteLine("BUILD_DIR=\"bin\"");
- ts.WriteLine("AC_SUBST(BUILD_DIR)");
- ts.WriteLine("CONFIG=\"Release\"");
- ts.WriteLine("AC_SUBST(CONFIG)");
- ts.WriteLine();
- ts.WriteLine("if test \"x$has_mono\" = \"xtrue\"; then");
- ts.WriteLine(" AC_PATH_PROG(RUNTIME, mono, no)");
- ts.WriteLine(" AC_PATH_PROG(CSC, gmcs, no)");
- ts.WriteLine(" if test `uname -s` = \"Darwin\"; then");
- ts.WriteLine(" LIB_PREFIX=");
- ts.WriteLine(" LIB_SUFFIX=.dylib");
- ts.WriteLine(" else");
- ts.WriteLine(" LIB_PREFIX=.so");
- ts.WriteLine(" LIB_SUFFIX=");
- ts.WriteLine(" fi");
- ts.WriteLine("else");
- ts.WriteLine(" AC_PATH_PROG(CSC, csc.exe, no)");
- ts.WriteLine(" if test x$CSC = \"xno\"; then");
- ts.WriteLine(" AC_MSG_ERROR([You need to install either mono or .Net])");
- ts.WriteLine(" else");
- ts.WriteLine(" RUNTIME=");
- ts.WriteLine(" LIB_PREFIX=");
- ts.WriteLine(" LIB_SUFFIX=.dylib");
- ts.WriteLine(" fi");
- ts.WriteLine("fi");
- ts.WriteLine();
- ts.WriteLine("AC_SUBST(LIB_PREFIX)");
- ts.WriteLine("AC_SUBST(LIB_SUFFIX)");
- ts.WriteLine();
- ts.WriteLine("AC_SUBST(BASE_DEPENDENCIES_CFLAGS)");
- ts.WriteLine("AC_SUBST(BASE_DEPENDENCIES_LIBS)");
- ts.WriteLine();
- ts.WriteLine("dnl Find monodoc");
- ts.WriteLine("MONODOC_REQUIRED_VERSION=1.0");
- ts.WriteLine("AC_SUBST(MONODOC_REQUIRED_VERSION)");
- ts.WriteLine("PKG_CHECK_MODULES(MONODOC_DEPENDENCY, monodoc >= $MONODOC_REQUIRED_VERSION, enable_monodoc=yes, enable_monodoc=no)");
- ts.WriteLine();
- ts.WriteLine("if test \"x$enable_monodoc\" = \"xyes\"; then");
- ts.WriteLine(" AC_PATH_PROG(MONODOC, monodoc, no)");
- ts.WriteLine(" if test x$MONODOC = xno; then");
- ts.WriteLine(" enable_monodoc=no");
- ts.WriteLine(" fi");
- ts.WriteLine("else");
- ts.WriteLine(" MONODOC=");
- ts.WriteLine("fi");
- ts.WriteLine();
- ts.WriteLine("AC_SUBST(MONODOC)");
- ts.WriteLine("AM_CONDITIONAL(ENABLE_MONODOC, test \"x$enable_monodoc\" = \"xyes\")");
- ts.WriteLine();
- ts.WriteLine("AC_PATH_PROG(GACUTIL, gacutil, no)");
- ts.WriteLine("if test \"x$GACUTIL\" = \"xno\" ; then");
- ts.WriteLine(" AC_MSG_ERROR([No gacutil tool found])");
- ts.WriteLine("fi");
- ts.WriteLine();
- // foreach(ProjectNode project in solution.ProjectsTableOrder)
- // {
- // if (project.Type == ProjectType.Library)
- // {
- // }
- // }
- ts.WriteLine("GACUTIL_FLAGS='/package $(PACKAGE_NAME) /gacdir $(DESTDIR)$(prefix)'");
- ts.WriteLine("AC_SUBST(GACUTIL_FLAGS)");
- ts.WriteLine();
- ts.WriteLine("winbuild=no");
- ts.WriteLine("case \"$host\" in");
- ts.WriteLine(" *-*-mingw*|*-*-cygwin*)");
- ts.WriteLine(" winbuild=yes");
- ts.WriteLine(" ;;");
- ts.WriteLine("esac");
- ts.WriteLine("AM_CONDITIONAL(WINBUILD, test x$winbuild = xyes)");
- ts.WriteLine();
- // ts.WriteLine("dnl Check for SDL");
- // ts.WriteLine();
- // ts.WriteLine("AC_PATH_PROG([SDL_CONFIG], [sdl-config])");
- // ts.WriteLine("have_sdl=no");
- // ts.WriteLine("if test -n \"${SDL_CONFIG}\"; then");
- // ts.WriteLine(" have_sdl=yes");
- // ts.WriteLine(" SDL_CFLAGS=`$SDL_CONFIG --cflags`");
- // ts.WriteLine(" SDL_LIBS=`$SDL_CONFIG --libs`");
- // ts.WriteLine(" #");
- // ts.WriteLine(" # sdl-config sometimes emits an rpath flag pointing at its library");
- // ts.WriteLine(" # installation directory. We don't want this, as it prevents users from");
- // ts.WriteLine(" # linking sdl-viewer against, for example, a locally compiled libGL when a");
- // ts.WriteLine(" # version of the library also exists in SDL's library installation");
- // ts.WriteLine(" # directory, typically /usr/lib.");
- // ts.WriteLine(" #");
- // ts.WriteLine(" SDL_LIBS=`echo $SDL_LIBS | sed 's/-Wl,-rpath,[[^ ]]* //'`");
- // ts.WriteLine("fi");
- // ts.WriteLine("AC_SUBST([SDL_CFLAGS])");
- // ts.WriteLine("AC_SUBST([SDL_LIBS])");
- ts.WriteLine();
- ts.WriteLine("AC_OUTPUT([");
- ts.WriteLine("Makefile");
- // TODO: this does not work quite right.
- //ts.WriteLine("Properties/AssemblyInfo.cs");
- foreach (ProjectNode project in solution.ProjectsTableOrder)
- {
- if (project.Type == ProjectType.Library)
- {
- ts.WriteLine(project.Name + ".pc");
- }
- // string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
- // ts.WriteLine(Helper.NormalizePath(Helper.MakeFilePath(path, "Include"),'/'));
- }
- ts.WriteLine("])");
- ts.WriteLine();
- ts.WriteLine("#po/Makefile.in");
- ts.WriteLine();
- ts.WriteLine("echo \"---\"");
- ts.WriteLine("echo \"Configuration summary\"");
- ts.WriteLine("echo \"\"");
- ts.WriteLine("echo \" * Installation prefix: $prefix\"");
- ts.WriteLine("echo \" * compiler: $CSC\"");
- ts.WriteLine("echo \" * Documentation: $enable_monodoc ($MONODOC)\"");
- ts.WriteLine("echo \" * Package Name: $PACKAGE_NAME\"");
- ts.WriteLine("echo \" * Version: $PACKAGE_VERSION\"");
- ts.WriteLine("echo \" * Public Key: $PUBKEY\"");
- ts.WriteLine("echo \"\"");
- ts.WriteLine("echo \"---\"");
- ts.WriteLine();
- }
-
- ts.NewLine = "\n";
- foreach (ProjectNode project in solution.ProjectsTableOrder)
- {
- if (project.GenerateAssemblyInfoFile)
- {
- GenerateAssemblyInfoFile(solution, combFile);
- }
- }
- }
-
- private static void GenerateAssemblyInfoFile(SolutionNode solution, string combFile)
- {
- System.IO.Directory.CreateDirectory(Helper.MakePathRelativeTo(solution.FullPath, "Properties"));
- combFile = Helper.MakeFilePath(solution.FullPath + "/Properties/", "AssemblyInfo.cs", "in");
- StreamWriter ai = new StreamWriter(combFile);
-
- using (ai)
- {
- ai.WriteLine("#region License");
- ai.WriteLine("/*");
- ai.WriteLine("MIT License");
- ai.WriteLine("Copyright (c)2003-2006 Tao Framework Team");
- ai.WriteLine("http://www.taoframework.com");
- ai.WriteLine("All rights reserved.");
- ai.WriteLine("");
- ai.WriteLine("Permission is hereby granted, free of charge, to any person obtaining a copy");
- ai.WriteLine("of this software and associated documentation files (the \"Software\"), to deal");
- ai.WriteLine("in the Software without restriction, including without limitation the rights");
- ai.WriteLine("to use, copy, modify, merge, publish, distribute, sublicense, and/or sell");
- ai.WriteLine("copies of the Software, and to permit persons to whom the Software is");
- ai.WriteLine("furnished to do so, subject to the following conditions:");
- ai.WriteLine("");
- ai.WriteLine("The above copyright notice and this permission notice shall be included in all");
- ai.WriteLine("copies or substantial portions of the Software.");
- ai.WriteLine("");
- ai.WriteLine("THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR");
- ai.WriteLine("IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,");
- ai.WriteLine("FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE");
- ai.WriteLine("AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER");
- ai.WriteLine("LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,");
- ai.WriteLine("OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE");
- ai.WriteLine("SOFTWARE.");
- ai.WriteLine("*/");
- ai.WriteLine("#endregion License");
- ai.WriteLine("");
- ai.WriteLine("using System;");
- ai.WriteLine("using System.Reflection;");
- ai.WriteLine("using System.Runtime.InteropServices;");
- ai.WriteLine("using System.Security;");
- ai.WriteLine("using System.Security.Permissions;");
- ai.WriteLine("");
- ai.WriteLine("[assembly: AllowPartiallyTrustedCallers]");
- ai.WriteLine("[assembly: AssemblyCompany(\"Tao Framework -- http://www.taoframework.com\")]");
- ai.WriteLine("[assembly: AssemblyConfiguration(\"Retail\")]");
- ai.WriteLine("[assembly: AssemblyCopyright(\"Copyright (c)2003-2006 Tao Framework Team. All rights reserved.\")]");
- ai.WriteLine("[assembly: AssemblyCulture(\"\")]");
- ai.WriteLine("[assembly: AssemblyDefaultAlias(\"@PACKAGE_NAME@\")]");
- ai.WriteLine("[assembly: AssemblyDelaySign(false)]");
- ai.WriteLine("[assembly: AssemblyDescription(\"@DESCRIPTION@\")]");
- ai.WriteLine("[assembly: AssemblyFileVersion(\"@ASSEMBLY_VERSION@\")]");
- ai.WriteLine("[assembly: AssemblyInformationalVersion(\"@ASSEMBLY_VERSION@\")]");
- ai.WriteLine("[assembly: AssemblyKeyName(\"\")]");
- ai.WriteLine("[assembly: AssemblyProduct(\"@PACKAGE_NAME@.dll\")]");
- ai.WriteLine("[assembly: AssemblyTitle(\"@DESCRIPTION@\")]");
- ai.WriteLine("[assembly: AssemblyTrademark(\"Tao Framework -- http://www.taoframework.com\")]");
- ai.WriteLine("[assembly: AssemblyVersion(\"@ASSEMBLY_VERSION@\")]");
- ai.WriteLine("[assembly: CLSCompliant(true)]");
- ai.WriteLine("[assembly: ComVisible(false)]");
- ai.WriteLine("[assembly: SecurityPermission(SecurityAction.RequestMinimum, Flags = SecurityPermissionFlag.Execution)]");
- ai.WriteLine("[assembly: SecurityPermission(SecurityAction.RequestMinimum, Flags = SecurityPermissionFlag.SkipVerification)]");
- ai.WriteLine("[assembly: SecurityPermission(SecurityAction.RequestMinimum, Flags = SecurityPermissionFlag.UnmanagedCode)]");
-
- }
- //return combFile;
- }
-
- private void CleanProject(ProjectNode project)
- {
- m_Kernel.Log.Write("...Cleaning project: {0}", project.Name);
- string projectFile = Helper.MakeFilePath(project.FullPath, "Include", "am");
- Helper.DeleteIfExists(projectFile);
- }
-
- private void CleanSolution(SolutionNode solution)
- {
- m_Kernel.Log.Write("Cleaning Autotools make files for", solution.Name);
-
- string slnFile = Helper.MakeFilePath(solution.FullPath, "Makefile", "am");
- Helper.DeleteIfExists(slnFile);
-
- slnFile = Helper.MakeFilePath(solution.FullPath, "Makefile", "in");
- Helper.DeleteIfExists(slnFile);
-
- slnFile = Helper.MakeFilePath(solution.FullPath, "configure", "ac");
- Helper.DeleteIfExists(slnFile);
-
- slnFile = Helper.MakeFilePath(solution.FullPath, "configure");
- Helper.DeleteIfExists(slnFile);
-
- slnFile = Helper.MakeFilePath(solution.FullPath, "Makefile");
- Helper.DeleteIfExists(slnFile);
-
- foreach (ProjectNode project in solution.Projects)
- {
- CleanProject(project);
- }
-
- m_Kernel.Log.Write("");
- }
-
- #endregion
-
- #region ITarget Members
-
- ///
- /// Writes the specified kern.
- ///
- /// The kern.
- public void Write(Kernel kern)
- {
- if (kern == null)
- {
- throw new ArgumentNullException("kern");
- }
- m_Kernel = kern;
- m_Kernel.Log.Write("Parsing system pkg-config files");
- RunInitialization();
-
- string streamName = "autotools.xml";
- string fqStreamName = String.Format("Prebuild.data.{0}",
- streamName
- );
-
- // Retrieve stream for the autotools template XML
- Stream autotoolsStream = Assembly.GetExecutingAssembly()
- .GetManifestResourceStream(fqStreamName);
-
- if(autotoolsStream == null) {
-
- /*
- * try without the default namespace prepended, in
- * case prebuild.exe assembly was compiled with
- * something other than Visual Studio .NET
- */
-
- autotoolsStream = Assembly.GetExecutingAssembly()
- .GetManifestResourceStream(streamName);
- if(autotoolsStream == null){
- string errStr =
- String.Format("Could not find embedded resource file:\n" +
- "'{0}' or '{1}'",
- streamName, fqStreamName
- );
-
- m_Kernel.Log.Write(errStr);
-
- throw new System.Reflection.TargetException(errStr);
- }
- }
-
- // Create an XML URL Resolver with default credentials
- xr = new System.Xml.XmlUrlResolver();
- xr.Credentials = CredentialCache.DefaultCredentials;
-
- // Create a default evidence - no need to limit access
- e = new System.Security.Policy.Evidence();
-
- // Load the autotools XML
- autotoolsDoc = new XmlDocument();
- autotoolsDoc.Load(autotoolsStream);
-
- /* rootDir is the filesystem location where the Autotools
- * build tree will be created - for now we'll make it
- * $PWD/autotools
- */
-
- string pwd = Directory.GetCurrentDirectory();
- //string pwd = System.Environment.GetEnvironmentVariable("PWD");
- string rootDir = "";
- //if (pwd.Length != 0)
- //{
- rootDir = Path.Combine(pwd, "autotools");
- //}
- //else
- //{
- // pwd = Assembly.GetExecutingAssembly()
- //}
- chkMkDir(rootDir);
-
- foreach (SolutionNode solution in kern.Solutions)
- {
- m_Kernel.Log.Write(String.Format("Writing solution: {0}",
- solution.Name));
- WriteCombine(solution);
- }
- m_Kernel = null;
- }
-
- ///
- /// Cleans the specified kern.
- ///
- /// The kern.
- public virtual void Clean(Kernel kern)
- {
- if (kern == null)
- {
- throw new ArgumentNullException("kern");
- }
- m_Kernel = kern;
- foreach (SolutionNode sol in kern.Solutions)
- {
- CleanSolution(sol);
- }
- m_Kernel = null;
- }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return "autotools";
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/DebugTarget.cs b/Prebuild/src/Core/Targets/DebugTarget.cs
deleted file mode 100644
index dc4e666..0000000
--- a/Prebuild/src/Core/Targets/DebugTarget.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-#region CVS Information
-/*
- * $Source$
- * $Author: jendave $
- * $Date: 2006-09-20 09:42:51 +0200 (on, 20 sep 2006) $
- * $Revision: 164 $
- */
-#endregion
-
-using System;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-
-#if (DEBUG && _DEBUG_TARGET)
-namespace Prebuild.Core.Targets
-{
- [Target("debug")]
- public class DebugTarget : ITarget
- {
-#region Fields
-
- private Kernel m_Kernel = null;
-
-#endregion
-
-#region ITarget Members
-
- public void Write()
- {
- foreach(SolutionNode s in m_Kernel.Solutions)
- {
- Console.WriteLine("Solution [ {0}, {1} ]", s.Name, s.Path);
- foreach(string file in s.Files)
-{
- Console.WriteLine("\tFile [ {0} ]", file);
-}
-
- foreach(ProjectNode proj in s.Projects)
- {
- Console.WriteLine("\tProject [ {0}, {1}. {2} ]", proj.Name, proj.Path, proj.Language);
- foreach(string file in proj.Files)
- Console.WriteLine("\t\tFile [ {0} ]", file);
- }
- }
- }
-
- public void Clean()
- {
- Console.WriteLine("Not implemented");
- }
-
- public string Name
- {
- get
- {
- return "debug";
- }
- }
-
- public Kernel Kernel
- {
- get
- {
- return m_Kernel;
- }
- set
- {
- m_Kernel = value;
- }
- }
-
-#endregion
- }
-}
-#endif
diff --git a/Prebuild/src/Core/Targets/MakefileTarget.cs b/Prebuild/src/Core/Targets/MakefileTarget.cs
deleted file mode 100644
index 86676d0..0000000
--- a/Prebuild/src/Core/Targets/MakefileTarget.cs
+++ /dev/null
@@ -1,471 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004 Crestez Leonard (cleonard@go.ro)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.IO;
-using System.Text.RegularExpressions;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Targets
-{
- [Target("makefile")]
- public class MakefileTarget : ITarget
- {
- #region Fields
-
- private Kernel m_Kernel = null;
-
- #endregion
-
- #region Private Methods
-
- // This converts a path relative to the path of a project to
- // a path relative to the solution path.
- private string NicePath(ProjectNode proj, string path)
- {
- string res;
- SolutionNode solution = (SolutionNode)proj.Parent;
- res = Path.Combine(Helper.NormalizePath(proj.FullPath, '/'), Helper.NormalizePath(path, '/'));
- res = Helper.NormalizePath(res, '/');
- res = res.Replace("/./", "/");
- while (res.IndexOf("/../") >= 0)
- {
- int a = res.IndexOf("/../");
- int b = res.LastIndexOf("/", a - 1);
- res = res.Remove(b, a - b + 3);
- }
- res = Helper.MakePathRelativeTo(solution.FullPath, res);
- if (res.StartsWith("./"))
- res = res.Substring(2, res.Length - 2);
- res = Helper.NormalizePath(res, '/');
- return res;
- }
-
- private void WriteProjectFiles(StreamWriter f, SolutionNode solution, ProjectNode project)
- {
- // Write list of source code files
- f.WriteLine("SOURCES_{0} = \\", project.Name);
- foreach (string file in project.Files)
- if (project.Files.GetBuildAction(file) == BuildAction.Compile)
- f.WriteLine("\t{0} \\", NicePath(project, file));
- f.WriteLine();
-
- // Write list of resource files
- f.WriteLine("RESOURCES_{0} = \\", project.Name);
- foreach (string file in project.Files)
- if (project.Files.GetBuildAction(file) == BuildAction.EmbeddedResource)
- {
- string path = NicePath(project, file);
- f.WriteLine("\t-resource:{0},{1} \\", path, Path.GetFileName(path));
- }
- f.WriteLine();
-
- // There's also Content and None in BuildAction.
- // What am I supposed to do with that?
- }
-
- private string FindFileReference(string refName, ProjectNode project)
- {
- foreach (ReferencePathNode refPath in project.ReferencePaths)
- {
- string fullPath = NicePath(project, Helper.MakeFilePath(refPath.Path, refName, "dll"));
- if (File.Exists(fullPath))
- return fullPath;
- }
- return null;
- }
-
- private void WriteProjectReferences(StreamWriter f, SolutionNode solution, ProjectNode project)
- {
- f.WriteLine("REFERENCES_{0} = \\", project.Name);
- foreach (ReferenceNode refr in project.References)
- {
- string path;
- // Project references change with configurations.
- if (solution.ProjectsTable.Contains(refr.Name))
- continue;
- path = FindFileReference(refr.Name, project);
- if (path != null)
- f.WriteLine("\t-r:{0} \\", path);
- else
- f.WriteLine("\t-r:{0} \\", refr.Name);
- }
- f.WriteLine();
- }
-
- private void WriteProjectDependencies(StreamWriter f, SolutionNode solution, ProjectNode project)
- {
- f.WriteLine("DEPENDENCIES_{0} = \\", project.Name);
- f.WriteLine("\t$(SOURCES_{0}) \\", project.Name);
- foreach (string file in project.Files)
- if (project.Files.GetBuildAction(file) == BuildAction.EmbeddedResource)
- f.WriteLine("\t{0} \\", NicePath(project, file));
- f.WriteLine();
- }
-
- private string ProjectTypeToExtension(ProjectType t)
- {
- if (t == ProjectType.Exe || t == ProjectType.WinExe)
- {
- return "exe";
- }
- else if (t == ProjectType.Library)
- {
- return "dll";
- }
- else
- {
- throw new FatalException("Bad ProjectType: {0}", t);
- }
- }
-
- private string ProjectTypeToTarget(ProjectType t)
- {
- if (t == ProjectType.Exe)
- {
- return "exe";
- }
- else if (t == ProjectType.WinExe)
- {
- return "winexe";
- }
- else if (t == ProjectType.Library)
- {
- return "library";
- }
- else
- {
- throw new FatalException("Bad ProjectType: {0}", t);
- }
- }
-
- private string ProjectOutput(ProjectNode project, ConfigurationNode config)
- {
- string filepath;
- filepath = Helper.MakeFilePath((string)config.Options["OutputPath"],
- project.AssemblyName, ProjectTypeToExtension(project.Type));
- return NicePath(project, filepath);
- }
-
- // Returns true if two configs in one project have the same output.
- private bool ProjectClashes(ProjectNode project)
- {
- foreach (ConfigurationNode conf1 in project.Configurations)
- foreach (ConfigurationNode conf2 in project.Configurations)
- if (ProjectOutput(project, conf1) == ProjectOutput(project, conf2) && conf1 != conf2)
- {
- m_Kernel.Log.Write("Warning: Configurations {0} and {1} for project {2} output the same file",
- conf1.Name, conf2.Name, project.Name);
- m_Kernel.Log.Write("Warning: I'm going to use some timestamps(extra empty files).");
- return true;
- }
- return false;
- }
-
- private void WriteProject(StreamWriter f, SolutionNode solution, ProjectNode project)
- {
- f.WriteLine("# This is for project {0}", project.Name);
- f.WriteLine();
-
- WriteProjectFiles(f, solution, project);
- WriteProjectReferences(f, solution, project);
- WriteProjectDependencies(f, solution, project);
-
- bool clash = ProjectClashes(project);
-
- foreach (ConfigurationNode conf in project.Configurations)
- {
- string outpath = ProjectOutput(project, conf);
- string filesToClean = outpath;
-
- if (clash)
- {
- f.WriteLine("{0}-{1}: .{0}-{1}-timestamp", project.Name, conf.Name);
- f.WriteLine();
- f.Write(".{0}-{1}-timestamp: $(DEPENDENCIES_{0})", project.Name, conf.Name);
- }
- else
- {
- f.WriteLine("{0}-{1}: {2}", project.Name, conf.Name, outpath);
- f.WriteLine();
- f.Write("{2}: $(DEPENDENCIES_{0})", project.Name, conf.Name, outpath);
- }
- // Dependencies on other projects.
- foreach (ReferenceNode refr in project.References)
- if (solution.ProjectsTable.Contains(refr.Name))
- {
- ProjectNode refProj = (ProjectNode)solution.ProjectsTable[refr.Name];
- if (ProjectClashes(refProj))
- f.Write(" .{0}-{1}-timestamp", refProj.Name, conf.Name);
- else
- f.Write(" {0}", ProjectOutput(refProj, conf));
- }
- f.WriteLine();
-
- // make directory for output.
- if (Path.GetDirectoryName(outpath) != "")
- {
- f.WriteLine("\tmkdir -p {0}", Path.GetDirectoryName(outpath));
- }
- // mcs command line.
- f.Write("\tgmcs", project.Name);
- f.Write(" -warn:{0}", conf.Options["WarningLevel"]);
- if ((bool)conf.Options["DebugInformation"])
- f.Write(" -debug");
- if ((bool)conf.Options["AllowUnsafe"])
- f.Write(" -unsafe");
- if ((bool)conf.Options["CheckUnderflowOverflow"])
- f.Write(" -checked");
- if (project.StartupObject != "")
- f.Write(" -main:{0}", project.StartupObject);
- if ((string)conf.Options["CompilerDefines"] != "")
- {
- f.Write(" -define:\"{0}\"", conf.Options["CompilerDefines"]);
- }
-
- f.Write(" -target:{0} -out:{1}", ProjectTypeToTarget(project.Type), outpath);
-
- // Build references to other projects. Now that sux.
- // We have to reference the other project in the same conf.
- foreach (ReferenceNode refr in project.References)
- if (solution.ProjectsTable.Contains(refr.Name))
- {
- ProjectNode refProj;
- refProj = (ProjectNode)solution.ProjectsTable[refr.Name];
- f.Write(" -r:{0}", ProjectOutput(refProj, conf));
- }
-
- f.Write(" $(REFERENCES_{0})", project.Name);
- f.Write(" $(RESOURCES_{0})", project.Name);
- f.Write(" $(SOURCES_{0})", project.Name);
- f.WriteLine();
-
- // Copy references with localcopy.
- foreach (ReferenceNode refr in project.References)
- if (refr.LocalCopy)
- {
- string outPath, srcPath, destPath;
- outPath = Helper.NormalizePath((string)conf.Options["OutputPath"]);
- if (solution.ProjectsTable.Contains(refr.Name))
- {
- ProjectNode refProj;
- refProj = (ProjectNode)solution.ProjectsTable[refr.Name];
- srcPath = ProjectOutput(refProj, conf);
- destPath = Path.Combine(outPath, Path.GetFileName(srcPath));
- destPath = NicePath(project, destPath);
- if (srcPath != destPath)
- {
- f.WriteLine("\tcp -f {0} {1}", srcPath, destPath);
- filesToClean += " " + destPath;
- }
- continue;
- }
- srcPath = FindFileReference(refr.Name, project);
- if (srcPath != null)
- {
- destPath = Path.Combine(outPath, Path.GetFileName(srcPath));
- destPath = NicePath(project, destPath);
- f.WriteLine("\tcp -f {0} {1}", srcPath, destPath);
- filesToClean += " " + destPath;
- }
- }
-
- if (clash)
- {
- filesToClean += String.Format(" .{0}-{1}-timestamp", project.Name, conf.Name);
- f.WriteLine("\ttouch .{0}-{1}-timestamp", project.Name, conf.Name);
- f.Write("\trm -rf");
- foreach (ConfigurationNode otherConf in project.Configurations)
- if (otherConf != conf)
- f.WriteLine(" .{0}-{1}-timestamp", project.Name, otherConf.Name);
- f.WriteLine();
- }
- f.WriteLine();
- f.WriteLine("{0}-{1}-clean:", project.Name, conf.Name);
- f.WriteLine("\trm -rf {0}", filesToClean);
- f.WriteLine();
- }
- }
-
- private void WriteIntro(StreamWriter f, SolutionNode solution)
- {
- f.WriteLine("# Makefile for {0} generated by Prebuild ( http://dnpb.sf.net )", solution.Name);
- f.WriteLine("# Do not edit.");
- f.WriteLine("#");
-
- f.Write("# Configurations:");
- foreach (ConfigurationNode conf in solution.Configurations)
- f.Write(" {0}", conf.Name);
- f.WriteLine();
-
- f.WriteLine("# Projects:");
- foreach (ProjectNode proj in solution.Projects)
- f.WriteLine("#\t{0}", proj.Name);
-
- f.WriteLine("#");
- f.WriteLine("# Building:");
- f.WriteLine("#\t\"make\" to build everything under the default(first) configuration");
- f.WriteLine("#\t\"make CONF\" to build every project under configuration CONF");
- f.WriteLine("#\t\"make PROJ\" to build project PROJ under the default(first) configuration");
- f.WriteLine("#\t\"make PROJ-CONF\" to build project PROJ under configuration CONF");
- f.WriteLine("#");
- f.WriteLine("# Cleaning (removing results of build):");
- f.WriteLine("#\t\"make clean\" to clean everything, that's what you probably want");
- f.WriteLine("#\t\"make CONF\" to clean everything for a configuration");
- f.WriteLine("#\t\"make PROJ\" to clean everything for a project");
- f.WriteLine("#\t\"make PROJ-CONF\" to clea project PROJ under configuration CONF");
- f.WriteLine();
- }
-
- private void WritePhony(StreamWriter f, SolutionNode solution)
- {
- string defconf = "";
- foreach (ConfigurationNode conf in solution.Configurations)
- {
- defconf = conf.Name;
- break;
- }
-
- f.Write(".PHONY: all");
- foreach (ProjectNode proj in solution.Projects)
- f.Write(" {0} {0}-clean", proj.Name);
- foreach (ConfigurationNode conf in solution.Configurations)
- f.Write(" {0} {0}-clean", conf.Name);
- foreach (ProjectNode proj in solution.Projects)
- foreach (ConfigurationNode conf in solution.Configurations)
- f.Write(" {0}-{1} {0}-{1}-clean", proj.Name, conf.Name);
- f.WriteLine();
- f.WriteLine();
-
- f.WriteLine("all: {0}", defconf);
- f.WriteLine();
-
- f.Write("clean:");
- foreach (ConfigurationNode conf in solution.Configurations)
- f.Write(" {0}-clean", conf.Name);
- f.WriteLine();
- f.WriteLine();
-
- foreach (ConfigurationNode conf in solution.Configurations)
- {
- f.Write("{0}: ", conf.Name);
- foreach (ProjectNode proj in solution.Projects)
- f.Write(" {0}-{1}", proj.Name, conf.Name);
- f.WriteLine();
- f.WriteLine();
-
- f.Write("{0}-clean: ", conf.Name);
- foreach (ProjectNode proj in solution.Projects)
- f.Write(" {0}-{1}-clean", proj.Name, conf.Name);
- f.WriteLine();
- f.WriteLine();
- }
-
- foreach (ProjectNode proj in solution.Projects)
- {
- f.WriteLine("{0}: {0}-{1}", proj.Name, defconf);
- f.WriteLine();
-
- f.Write("{0}-clean:", proj.Name);
- foreach (ConfigurationNode conf in proj.Configurations)
- f.Write(" {0}-{1}-clean", proj.Name, conf.Name);
- f.WriteLine();
- f.WriteLine();
- }
- }
-
- private void WriteSolution(SolutionNode solution)
- {
- m_Kernel.Log.Write("Creating makefile for {0}", solution.Name);
- m_Kernel.CurrentWorkingDirectory.Push();
-
- string file = "Makefile";// Helper.MakeFilePath(solution.FullPath, solution.Name, "make");
- StreamWriter f = new StreamWriter(file);
-
- Helper.SetCurrentDir(Path.GetDirectoryName(file));
-
- using (f)
- {
- WriteIntro(f, solution);
- WritePhony(f, solution);
-
- foreach (ProjectNode project in solution.Projects)
- {
- m_Kernel.Log.Write("...Creating Project: {0}", project.Name);
- WriteProject(f, solution, project);
- }
- }
-
- m_Kernel.Log.Write("");
- m_Kernel.CurrentWorkingDirectory.Pop();
- }
-
- private void CleanSolution(SolutionNode solution)
- {
- m_Kernel.Log.Write("Cleaning makefile for {0}", solution.Name);
-
- string file = Helper.MakeFilePath(solution.FullPath, solution.Name, "make");
- Helper.DeleteIfExists(file);
-
- m_Kernel.Log.Write("");
- }
-
- #endregion
-
- #region ITarget Members
-
- public void Write(Kernel kern)
- {
- m_Kernel = kern;
- foreach (SolutionNode solution in kern.Solutions)
- WriteSolution(solution);
- m_Kernel = null;
- }
-
- public virtual void Clean(Kernel kern)
- {
- m_Kernel = kern;
- foreach (SolutionNode sol in kern.Solutions)
- CleanSolution(sol);
- m_Kernel = null;
- }
-
- public string Name
- {
- get
- {
- return "makefile";
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/MonoDevelopTarget.cs b/Prebuild/src/Core/Targets/MonoDevelopTarget.cs
deleted file mode 100644
index c8401fd..0000000
--- a/Prebuild/src/Core/Targets/MonoDevelopTarget.cs
+++ /dev/null
@@ -1,464 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.IO;
-using System.Reflection;
-using System.Text.RegularExpressions;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Targets
-{
- ///
- ///
- ///
- [Target("monodev")]
- public class MonoDevelopTarget : ITarget
- {
- #region Fields
-
- private Kernel m_Kernel;
-
- #endregion
-
- #region Private Methods
-
- private static string PrependPath(string path)
- {
- string tmpPath = Helper.NormalizePath(path, '/');
- Regex regex = new Regex(@"(\w):/(\w+)");
- Match match = regex.Match(tmpPath);
- if(match.Success || tmpPath[0] == '.' || tmpPath[0] == '/')
- {
- tmpPath = Helper.NormalizePath(tmpPath);
- }
- else
- {
- tmpPath = Helper.NormalizePath("./" + tmpPath);
- }
-
- return tmpPath;
- }
-
- private static string BuildReference(SolutionNode solution, ReferenceNode refr)
- {
- string ret = "";
- }
- else
- {
- ProjectNode project = (ProjectNode)refr.Parent;
- string fileRef = FindFileReference(refr.Name, project);
-
- if(refr.Path != null || fileRef != null)
- {
- ret += "Assembly\" refto=\"";
-
- string finalPath = (refr.Path != null) ? Helper.MakeFilePath(refr.Path, refr.Name, "dll") : fileRef;
-
- ret += finalPath;
- ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />";
- return ret;
- }
-
- ret += "Gac\"";
- ret += " localcopy=\"" + refr.LocalCopy.ToString() + "\"";
- ret += " refto=\"";
- try
- {
- /*
- Day changed to 28 Mar 2007
- ...
- 08:09 < cj> is there anything that replaces Assembly.LoadFromPartialName() ?
- 08:09 < jonp> no
- 08:10 < jonp> in their infinite wisdom [sic], microsoft decided that the
- ability to load any assembly version by-name was an inherently
- bad idea
- 08:11 < cj> I'm thinking of a bunch of four-letter words right now...
- 08:11 < cj> security through making it difficult for the developer!!!
- 08:12 < jonp> just use the Obsolete API
- 08:12 < jonp> it should still work
- 08:12 < cj> alrighty.
- 08:12 < jonp> you just get warnings when using it
- */
- Assembly assem = Assembly.LoadWithPartialName(refr.Name);
- ret += assem.FullName;
- //ret += refr.Name;
- }
- catch (System.NullReferenceException e)
- {
- e.ToString();
- ret += refr.Name;
- }
- ret += "\" />";
- }
-
- return ret;
- }
-
- private static string FindFileReference(string refName, ProjectNode project)
- {
- foreach(ReferencePathNode refPath in project.ReferencePaths)
- {
- string fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll");
-
- if(File.Exists(fullPath))
- {
- return fullPath;
- }
- }
-
- return null;
- }
-
- ///
- /// Gets the XML doc file.
- ///
- /// The project.
- /// The conf.
- ///
- public static string GenerateXmlDocFile(ProjectNode project, ConfigurationNode conf)
- {
- if( conf == null )
- {
- throw new ArgumentNullException("conf");
- }
- if( project == null )
- {
- throw new ArgumentNullException("project");
- }
- string docFile = (string)conf.Options["XmlDocFile"];
- if(docFile != null && docFile.Length == 0)//default to assembly name if not specified
- {
- return "False";
- }
- return "True";
- }
-
- private void WriteProject(SolutionNode solution, ProjectNode project)
- {
- string csComp = "Mcs";
- string netRuntime = "Mono";
- if(project.Runtime == ClrRuntime.Microsoft)
- {
- csComp = "Csc";
- netRuntime = "MsNet";
- }
-
- string projFile = Helper.MakeFilePath(project.FullPath, project.Name, "mdp");
- StreamWriter ss = new StreamWriter(projFile);
-
- m_Kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(projFile));
-
- using(ss)
- {
- ss.WriteLine(
- "",
- project.Name,
- project.RootNamespace
- );
-
- int count = 0;
-
- ss.WriteLine(" ", solution.ActiveConfig);
-
- foreach(ConfigurationNode conf in project.Configurations)
- {
- ss.WriteLine(" ", conf.Name);
- ss.Write(" ");
-
- ss.Write(" ");
-
- ss.Write(" ");
-
- ss.Write(" ");
- ss.WriteLine(" ");
-
- count++;
- }
- ss.WriteLine(" ");
-
- ss.Write(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
- foreach(string file in project.Files)
- {
- string buildAction = "Compile";
- switch(project.Files.GetBuildAction(file))
- {
- case BuildAction.None:
- buildAction = "Nothing";
- break;
-
- case BuildAction.Content:
- buildAction = "Exclude";
- break;
-
- case BuildAction.EmbeddedResource:
- buildAction = "EmbedAsResource";
- break;
-
- default:
- buildAction = "Compile";
- break;
- }
-
- // Sort of a hack, we try and resolve the path and make it relative, if we can.
- string filePath = PrependPath(file);
- ss.WriteLine(" ", filePath, buildAction);
- }
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
- foreach(ReferenceNode refr in project.References)
- {
- ss.WriteLine(" {0}", BuildReference(solution, refr));
- }
- ss.WriteLine(" ");
-
-
- ss.WriteLine("");
- }
-
- m_Kernel.CurrentWorkingDirectory.Pop();
- }
-
- private void WriteCombine(SolutionNode solution)
- {
- m_Kernel.Log.Write("Creating MonoDevelop combine and project files");
- foreach(ProjectNode project in solution.Projects)
- {
- if(m_Kernel.AllowProject(project.FilterGroups))
- {
- m_Kernel.Log.Write("...Creating project: {0}", project.Name);
- WriteProject(solution, project);
- }
- }
-
- m_Kernel.Log.Write("");
- string combFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "mds");
- StreamWriter ss = new StreamWriter(combFile);
-
- m_Kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(combFile));
-
- int count = 0;
-
- using(ss)
- {
- ss.WriteLine("", solution.Name);
-
- count = 0;
- foreach(ConfigurationNode conf in solution.Configurations)
- {
- if(count == 0)
- {
- ss.WriteLine(" ", conf.Name);
- }
-
- ss.WriteLine(" ", conf.Name);
- foreach(ProjectNode project in solution.Projects)
- {
- ss.WriteLine(" ", project.Name, conf.Name);
- }
- ss.WriteLine(" ");
-
- count++;
- }
- ss.WriteLine(" ");
-
- count = 0;
-
- foreach(ProjectNode project in solution.Projects)
- {
- if(count == 0)
- ss.WriteLine(" ", project.Name);
-
- ss.WriteLine(" ", project.Name);
- count++;
- }
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
- foreach(ProjectNode project in solution.Projects)
- {
- string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
- ss.WriteLine(" ",
- Helper.MakeFilePath(path, project.Name, "mdp"));
- }
- ss.WriteLine(" ");
-
- ss.WriteLine("");
- }
-
- m_Kernel.CurrentWorkingDirectory.Pop();
- }
-
- private void CleanProject(ProjectNode project)
- {
- m_Kernel.Log.Write("...Cleaning project: {0}", project.Name);
- string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, "mdp");
- Helper.DeleteIfExists(projectFile);
- }
-
- private void CleanSolution(SolutionNode solution)
- {
- m_Kernel.Log.Write("Cleaning MonoDevelop combine and project files for", solution.Name);
-
- string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "mds");
- Helper.DeleteIfExists(slnFile);
-
- foreach(ProjectNode project in solution.Projects)
- {
- CleanProject(project);
- }
-
- m_Kernel.Log.Write("");
- }
-
- #endregion
-
- #region ITarget Members
-
- ///
- /// Writes the specified kern.
- ///
- /// The kern.
- public void Write(Kernel kern)
- {
- if( kern == null )
- {
- throw new ArgumentNullException("kern");
- }
- m_Kernel = kern;
- foreach(SolutionNode solution in kern.Solutions)
- {
- WriteCombine(solution);
- }
- m_Kernel = null;
- }
-
- ///
- /// Cleans the specified kern.
- ///
- /// The kern.
- public virtual void Clean(Kernel kern)
- {
- if( kern == null )
- {
- throw new ArgumentNullException("kern");
- }
- m_Kernel = kern;
- foreach(SolutionNode sol in kern.Solutions)
- {
- CleanSolution(sol);
- }
- m_Kernel = null;
- }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return "sharpdev";
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/NAntTarget.cs b/Prebuild/src/Core/Targets/NAntTarget.cs
deleted file mode 100644
index 9a6ee17..0000000
--- a/Prebuild/src/Core/Targets/NAntTarget.cs
+++ /dev/null
@@ -1,738 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004 - 2008
-Matthew Holmes (matthew@wildfiregames.com),
-Dan Moorehead (dan05a@gmail.com),
-C.J. Adams-Collier (cjac@colliertech.org),
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-* Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-* The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.IO;
-using System.Reflection;
-using System.Text.RegularExpressions;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Targets
-{
- ///
- ///
- ///
- [Target("nant")]
- public class NAntTarget : ITarget
- {
- #region Fields
-
- private Kernel m_Kernel;
-
- #endregion
-
- #region Private Methods
-
- private static string PrependPath(string path)
- {
- string tmpPath = Helper.NormalizePath(path, '/');
- Regex regex = new Regex(@"(\w):/(\w+)");
- Match match = regex.Match(tmpPath);
- //if(match.Success || tmpPath[0] == '.' || tmpPath[0] == '/')
- //{
- tmpPath = Helper.NormalizePath(tmpPath);
- //}
- // else
- // {
- // tmpPath = Helper.NormalizePath("./" + tmpPath);
- // }
-
- return tmpPath;
- }
-
- private static string BuildReference(SolutionNode solution, ProjectNode currentProject, ReferenceNode refr)
- {
-
- if (!String.IsNullOrEmpty(refr.Path))
- {
- return refr.Path;
- }
-
- if (solution.ProjectsTable.ContainsKey(refr.Name))
- {
- ProjectNode projectRef = (ProjectNode) solution.ProjectsTable[refr.Name];
- string finalPath =
- Helper.NormalizePath(refr.Name + GetProjectExtension(projectRef), '/');
- return finalPath;
- }
-
- ProjectNode project = (ProjectNode) refr.Parent;
-
- // Do we have an explicit file reference?
- string fileRef = FindFileReference(refr.Name, project);
- if (fileRef != null)
- {
- return fileRef;
- }
-
- // Is there an explicit path in the project ref?
- if (refr.Path != null)
- {
- return Helper.NormalizePath(refr.Path + "/" + refr.Name + GetProjectExtension(project), '/');
- }
-
- // No, it's an extensionless GAC ref, but nant needs the .dll extension anyway
- return refr.Name + ".dll";
- }
-
- public static string GetRefFileName(string refName)
- {
- if (ExtensionSpecified(refName))
- {
- return refName;
- }
- else
- {
- return refName + ".dll";
- }
- }
-
- private static bool ExtensionSpecified(string refName)
- {
- return refName.EndsWith(".dll") || refName.EndsWith(".exe");
- }
-
- private static string GetProjectExtension(ProjectNode project)
- {
- string extension = ".dll";
- if (project.Type == ProjectType.Exe || project.Type == ProjectType.WinExe)
- {
- extension = ".exe";
- }
- return extension;
- }
-
- private static string FindFileReference(string refName, ProjectNode project)
- {
- foreach (ReferencePathNode refPath in project.ReferencePaths)
- {
- string fullPath = Helper.MakeFilePath(refPath.Path, refName);
-
- if (File.Exists(fullPath))
- {
- return fullPath;
- }
-
- fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll");
-
- if (File.Exists(fullPath))
- {
- return fullPath;
- }
-
- fullPath = Helper.MakeFilePath(refPath.Path, refName, "exe");
-
- if (File.Exists(fullPath))
- {
- return fullPath;
- }
- }
-
- return null;
- }
-
- ///
- /// Gets the XML doc file.
- ///
- /// The project.
- /// The conf.
- ///
- public static string GetXmlDocFile(ProjectNode project, ConfigurationNode conf)
- {
- if (conf == null)
- {
- throw new ArgumentNullException("conf");
- }
- if (project == null)
- {
- throw new ArgumentNullException("project");
- }
- string docFile = (string)conf.Options["XmlDocFile"];
- // if(docFile != null && docFile.Length == 0)//default to assembly name if not specified
- // {
- // return Path.GetFileNameWithoutExtension(project.AssemblyName) + ".xml";
- // }
- return docFile;
- }
-
- private void WriteProject(SolutionNode solution, ProjectNode project)
- {
- string projFile = Helper.MakeFilePath(project.FullPath, project.Name + GetProjectExtension(project), "build");
- StreamWriter ss = new StreamWriter(projFile);
-
- m_Kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(projFile));
- bool hasDoc = false;
-
- using (ss)
- {
- ss.WriteLine("");
- ss.WriteLine("", project.Name);
- ss.WriteLine(" ", "build");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- foreach (ReferenceNode refr in project.References)
- {
- if (refr.LocalCopy)
- {
- ss.WriteLine(" ", '/'));
- }
- }
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- if (project.ConfigFile != null && project.ConfigFile.Length!=0)
- {
- ss.Write(" ");
- }
-
- // Add the content files to just be copied
- ss.WriteLine(" {0}", "");
- ss.WriteLine(" {0}", "");
-
- foreach (string file in project.Files)
- {
- // Ignore if we aren't content
- if (project.Files.GetBuildAction(file) != BuildAction.Content)
- continue;
-
- // Create a include tag
- ss.WriteLine(" {0}", "");
- }
-
- ss.WriteLine(" {0}", "");
- ss.WriteLine(" {0}", "");
-
- ss.Write(" ");
- ss.WriteLine(" ", project.RootNamespace);
- foreach (string file in project.Files)
- {
- switch (project.Files.GetBuildAction(file))
- {
- case BuildAction.EmbeddedResource:
- ss.WriteLine(" {0}", "");
- break;
- default:
- if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings)
- {
- ss.WriteLine(" ", file.Substring(0, file.LastIndexOf('.')) + ".resx");
- }
- break;
- }
- }
- //if (project.Files.GetSubType(file).ToString() != "Code")
- //{
- // ps.WriteLine(" ", file.Substring(0, file.LastIndexOf('.')) + ".resx");
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- foreach (string file in project.Files)
- {
- switch (project.Files.GetBuildAction(file))
- {
- case BuildAction.Compile:
- ss.WriteLine(" ");
- break;
- default:
- break;
- }
- }
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- foreach(ReferencePathNode refPath in project.ReferencePaths)
- {
- ss.WriteLine(" ");
- }
- ss.WriteLine(" ");
- foreach (ReferenceNode refr in project.References)
- {
- string path = Helper.NormalizePath(Helper.MakePathRelativeTo(project.FullPath, BuildReference(solution, project, refr)), '/');
- ss.WriteLine(" ");
- }
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
-
- foreach (ConfigurationNode conf in project.Configurations)
- {
- if (!String.IsNullOrEmpty(conf.Options.OutputPath))
- {
- string targetDir = Helper.NormalizePath(conf.Options.OutputPath, '/');
-
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- break;
- }
- }
-
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
- if (hasDoc)
- {
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.Write(" ");
- }
- else
- {
- ss.WriteLine(".exe\" />");
- }
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- // foreach(ReferenceNode refr in project.References)
- // {
- // string path = Helper.NormalizePath(Helper.MakePathRelativeTo(project.FullPath, BuildReferencePath(solution, refr)), '/');
- // if (path != "")
- // {
- // ss.WriteLine(" ", path);
- // }
- // }
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- }
- ss.WriteLine(" ");
- ss.WriteLine("");
- }
- m_Kernel.CurrentWorkingDirectory.Pop();
- }
-
- private void WriteCombine(SolutionNode solution)
- {
- m_Kernel.Log.Write("Creating NAnt build files");
- foreach (ProjectNode project in solution.Projects)
- {
- if (m_Kernel.AllowProject(project.FilterGroups))
- {
- m_Kernel.Log.Write("...Creating project: {0}", project.Name);
- WriteProject(solution, project);
- }
- }
-
- m_Kernel.Log.Write("");
- string combFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "build");
- StreamWriter ss = new StreamWriter(combFile);
-
- m_Kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(combFile));
-
- using (ss)
- {
- ss.WriteLine("");
- ss.WriteLine("", solution.Name);
- ss.WriteLine(" ");
- ss.WriteLine();
-
- //ss.WriteLine(" ");
- //ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
-
- // actually use active config out of prebuild.xml
- ss.WriteLine(" ", solution.ActiveConfig);
-
- foreach (ConfigurationNode conf in solution.Configurations)
- {
- ss.WriteLine();
- ss.WriteLine(" ", conf.Name);
- ss.WriteLine(" ", conf.Name);
- ss.WriteLine(" ", conf.Options["DebugInformation"].ToString().ToLower());
- ss.WriteLine(" ");
- ss.WriteLine();
- }
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
-
- // sdague - ok, this is an ugly hack, but what it lets
- // us do is native include of files into the nant
- // created files from all .nant/*include files. This
- // lets us keep using prebuild, but allows for
- // extended nant targets to do build and the like.
-
- try
- {
- Regex re = new Regex(".include$");
- DirectoryInfo nantdir = new DirectoryInfo(".nant");
- foreach (FileSystemInfo item in nantdir.GetFileSystemInfos())
- {
- if (item is DirectoryInfo) { }
- else if (item is FileInfo)
- {
- if (re.Match(((FileInfo)item).FullName) !=
- System.Text.RegularExpressions.Match.Empty)
- {
- Console.WriteLine("Including file: " + ((FileInfo)item).FullName);
-
- using (FileStream fs = new FileStream(((FileInfo)item).FullName,
- FileMode.Open,
- FileAccess.Read,
- FileShare.None))
- {
- using (StreamReader sr = new StreamReader(fs))
- {
- ss.WriteLine("", ((FileInfo)item).FullName);
- while (sr.Peek() != -1)
- {
- ss.WriteLine(sr.ReadLine());
- }
- ss.WriteLine();
- }
- }
- }
- }
- }
- }
- catch { }
- // ss.WriteLine(" ");
- // ss.WriteLine(" ");
- // ss.WriteLine(" ", solution.Name, solution.Version);
- // ss.WriteLine(" ");
-
- // ss.WriteLine(" ");
- // // ss.WriteLine(" ");
- // ss.WriteLine(" ");
- // ss.WriteLine(" ");
- // ss.WriteLine(" ");
- // ss.WriteLine(" ");
- ss.WriteLine();
-
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- //ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- foreach (ProjectNode project in solution.Projects)
- {
- string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
- ss.Write(" ");
- }
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
-
- foreach (ProjectNode project in solution.ProjectsTableOrder)
- {
- string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
- ss.Write(" ");
- }
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine();
- ss.WriteLine(" ");
- ss.WriteLine();
- //ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- foreach (ProjectNode project in solution.Projects)
- {
- string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
- ss.Write(" ");
- }
- ss.WriteLine(" ");
- ss.WriteLine();
- ss.WriteLine("");
- }
-
- m_Kernel.CurrentWorkingDirectory.Pop();
- }
-
- private void CleanProject(ProjectNode project)
- {
- m_Kernel.Log.Write("...Cleaning project: {0}", project.Name);
- string projectFile = Helper.MakeFilePath(project.FullPath, project.Name + GetProjectExtension(project), "build");
- Helper.DeleteIfExists(projectFile);
- }
-
- private void CleanSolution(SolutionNode solution)
- {
- m_Kernel.Log.Write("Cleaning NAnt build files for", solution.Name);
-
- string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "build");
- Helper.DeleteIfExists(slnFile);
-
- foreach (ProjectNode project in solution.Projects)
- {
- CleanProject(project);
- }
-
- m_Kernel.Log.Write("");
- }
-
- #endregion
-
- #region ITarget Members
-
- ///
- /// Writes the specified kern.
- ///
- /// The kern.
- public void Write(Kernel kern)
- {
- if (kern == null)
- {
- throw new ArgumentNullException("kern");
- }
- m_Kernel = kern;
- foreach (SolutionNode solution in kern.Solutions)
- {
- WriteCombine(solution);
- }
- m_Kernel = null;
- }
-
- ///
- /// Cleans the specified kern.
- ///
- /// The kern.
- public virtual void Clean(Kernel kern)
- {
- if (kern == null)
- {
- throw new ArgumentNullException("kern");
- }
- m_Kernel = kern;
- foreach (SolutionNode sol in kern.Solutions)
- {
- CleanSolution(sol);
- }
- m_Kernel = null;
- }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return "nant";
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/SharpDevelop2Target.cs b/Prebuild/src/Core/Targets/SharpDevelop2Target.cs
deleted file mode 100644
index 66dd1bc..0000000
--- a/Prebuild/src/Core/Targets/SharpDevelop2Target.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-
-using Prebuild.Core.Attributes;
-
-namespace Prebuild.Core.Targets
-{
- ///
- ///
- ///
- [Target("sharpdev2")]
- public class SharpDevelop2Target : VS2005Target
- {
- #region Properties
- public override string VersionName
- {
- get
- {
- return "SharpDevelop2";
- }
- }
- #endregion
-
- #region Public Methods
-
- ///
- /// Writes the specified kern.
- ///
- /// The kern.
- public override void Write(Kernel kern)
- {
- base.Write(kern);
- }
-
- ///
- /// Cleans the specified kern.
- ///
- /// The kern.
- public override void Clean(Kernel kern)
- {
- base.Clean(kern);
- }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public override string Name
- {
- get
- {
- return "sharpdev2";
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/SharpDevelopTarget.cs b/Prebuild/src/Core/Targets/SharpDevelopTarget.cs
deleted file mode 100644
index cf7ce02..0000000
--- a/Prebuild/src/Core/Targets/SharpDevelopTarget.cs
+++ /dev/null
@@ -1,428 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.IO;
-using System.Text.RegularExpressions;
-using System.Reflection;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Targets
-{
- ///
- ///
- ///
- [Target("sharpdev")]
- public class SharpDevelopTarget : ITarget
- {
- #region Fields
-
- private Kernel m_Kernel;
-
- #endregion
-
- #region Private Methods
-
- private static string PrependPath(string path)
- {
- string tmpPath = Helper.NormalizePath(path, '/');
- Regex regex = new Regex(@"(\w):/(\w+)");
- Match match = regex.Match(tmpPath);
- if(match.Success || tmpPath[0] == '.' || tmpPath[0] == '/')
- {
- tmpPath = Helper.NormalizePath(tmpPath);
- }
- else
- {
- tmpPath = Helper.NormalizePath("./" + tmpPath);
- }
-
- return tmpPath;
- }
-
- private static string BuildReference(SolutionNode solution, ReferenceNode refr)
- {
- string ret = "";
- }
- else
- {
- ProjectNode project = (ProjectNode)refr.Parent;
- string fileRef = FindFileReference(refr.Name, project);
-
- if(refr.Path != null || fileRef != null)
- {
- ret += "Assembly\" refto=\"";
-
- string finalPath = (refr.Path != null) ? Helper.MakeFilePath(refr.Path, refr.Name, "dll") : fileRef;
-
- ret += finalPath;
- ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />";
- return ret;
- }
-
- ret += "Gac\" refto=\"";
- try
- {
- //Assembly assem = Assembly.Load(refr.Name);
- ret += refr.Name;// assem.FullName;
- }
- catch (System.NullReferenceException e)
- {
- e.ToString();
- ret += refr.Name;
- }
- ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />";
- }
-
- return ret;
- }
-
- private static string FindFileReference(string refName, ProjectNode project)
- {
- foreach(ReferencePathNode refPath in project.ReferencePaths)
- {
- string fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll");
-
- if(File.Exists(fullPath))
- {
- return fullPath;
- }
- }
-
- return null;
- }
-
- ///
- /// Gets the XML doc file.
- ///
- /// The project.
- /// The conf.
- ///
- public static string GenerateXmlDocFile(ProjectNode project, ConfigurationNode conf)
- {
- if( conf == null )
- {
- throw new ArgumentNullException("conf");
- }
- if( project == null )
- {
- throw new ArgumentNullException("project");
- }
- string docFile = (string)conf.Options["XmlDocFile"];
- if(docFile != null && docFile.Length == 0)//default to assembly name if not specified
- {
- return "False";
- }
- return "True";
- }
-
- private void WriteProject(SolutionNode solution, ProjectNode project)
- {
- string csComp = "Csc";
- string netRuntime = "MsNet";
- if(project.Runtime == ClrRuntime.Mono)
- {
- csComp = "Mcs";
- netRuntime = "Mono";
- }
-
- string projFile = Helper.MakeFilePath(project.FullPath, project.Name, "prjx");
- StreamWriter ss = new StreamWriter(projFile);
-
- m_Kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(projFile));
-
- using(ss)
- {
- ss.WriteLine(
- "",
- project.Name,
- project.RootNamespace
- );
-
- ss.WriteLine(" ");
- foreach(string file in project.Files)
- {
- string buildAction = "Compile";
- switch(project.Files.GetBuildAction(file))
- {
- case BuildAction.None:
- buildAction = "Nothing";
- break;
-
- case BuildAction.Content:
- buildAction = "Exclude";
- break;
-
- case BuildAction.EmbeddedResource:
- buildAction = "EmbedAsResource";
- break;
-
- default:
- buildAction = "Compile";
- break;
- }
-
- // Sort of a hack, we try and resolve the path and make it relative, if we can.
- string filePath = PrependPath(file);
- ss.WriteLine(" ", filePath, buildAction);
- }
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
- foreach(ReferenceNode refr in project.References)
- {
- ss.WriteLine(" {0}", BuildReference(solution, refr));
- }
- ss.WriteLine(" ");
-
- ss.Write(" ");
-
- int count = 0;
-
- ss.WriteLine(" ", solution.ActiveConfig);
-
- foreach(ConfigurationNode conf in project.Configurations)
- {
- ss.Write(" ");
- ss.Write(" ");
-
- ss.Write(" ");
-
- ss.Write(" ");
- ss.WriteLine(" ");
-
- count++;
- }
- ss.WriteLine(" ");
- ss.WriteLine("");
- }
-
- m_Kernel.CurrentWorkingDirectory.Pop();
- }
-
- private void WriteCombine(SolutionNode solution)
- {
- m_Kernel.Log.Write("Creating SharpDevelop combine and project files");
- foreach(ProjectNode project in solution.Projects)
- {
- if(m_Kernel.AllowProject(project.FilterGroups))
- {
- m_Kernel.Log.Write("...Creating project: {0}", project.Name);
- WriteProject(solution, project);
- }
- }
-
- m_Kernel.Log.Write("");
- string combFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "cmbx");
- StreamWriter ss = new StreamWriter(combFile);
-
- m_Kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(combFile));
-
- using(ss)
- {
- ss.WriteLine("", solution.Name);
-
- int count = 0;
- foreach(ProjectNode project in solution.Projects)
- {
- if(count == 0)
- ss.WriteLine(" ", project.Name);
-
- ss.WriteLine(" ", project.Name);
- count++;
- }
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
- foreach(ProjectNode project in solution.Projects)
- {
- string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
- ss.WriteLine(" ",
- Helper.MakeFilePath(path, project.Name, "prjx"));
- }
- ss.WriteLine(" ");
-
- count = 0;
- foreach(ConfigurationNode conf in solution.Configurations)
- {
- if(count == 0)
- {
- ss.WriteLine(" ", conf.Name);
- }
-
- ss.WriteLine(" ", conf.Name);
- foreach(ProjectNode project in solution.Projects)
- {
- ss.WriteLine(" ", project.Name, conf.Name);
- }
- ss.WriteLine(" ");
-
- count++;
- }
- ss.WriteLine(" ");
- ss.WriteLine("");
- }
-
- m_Kernel.CurrentWorkingDirectory.Pop();
- }
-
- private void CleanProject(ProjectNode project)
- {
- m_Kernel.Log.Write("...Cleaning project: {0}", project.Name);
- string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, "prjx");
- Helper.DeleteIfExists(projectFile);
- }
-
- private void CleanSolution(SolutionNode solution)
- {
- m_Kernel.Log.Write("Cleaning SharpDevelop combine and project files for", solution.Name);
-
- string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "cmbx");
- Helper.DeleteIfExists(slnFile);
-
- foreach(ProjectNode project in solution.Projects)
- {
- CleanProject(project);
- }
-
- m_Kernel.Log.Write("");
- }
-
- #endregion
-
- #region ITarget Members
-
- ///
- /// Writes the specified kern.
- ///
- /// The kern.
- public void Write(Kernel kern)
- {
- if( kern == null )
- {
- throw new ArgumentNullException("kern");
- }
- m_Kernel = kern;
- foreach(SolutionNode solution in kern.Solutions)
- {
- WriteCombine(solution);
- }
- m_Kernel = null;
- }
-
- ///
- /// Cleans the specified kern.
- ///
- /// The kern.
- public virtual void Clean(Kernel kern)
- {
- if( kern == null )
- {
- throw new ArgumentNullException("kern");
- }
- m_Kernel = kern;
- foreach(SolutionNode sol in kern.Solutions)
- {
- CleanSolution(sol);
- }
- m_Kernel = null;
- }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return "sharpdev";
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/ToolInfo.cs b/Prebuild/src/Core/Targets/ToolInfo.cs
deleted file mode 100644
index 935c674..0000000
--- a/Prebuild/src/Core/Targets/ToolInfo.cs
+++ /dev/null
@@ -1,197 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Prebuild.Core.Targets
-{
- ///
- ///
- ///
- public struct ToolInfo
- {
- string name;
- string guid;
- string fileExtension;
- string xmlTag;
- string importProject;
-
- ///
- /// Gets or sets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return name;
- }
- set
- {
- name = value;
- }
- }
-
- ///
- /// Gets or sets the GUID.
- ///
- /// The GUID.
- public string Guid
- {
- get
- {
- return guid;
- }
- set
- {
- guid = value;
- }
- }
-
- ///
- /// Gets or sets the file extension.
- ///
- /// The file extension.
- public string FileExtension
- {
- get
- {
- return fileExtension;
- }
- set
- {
- fileExtension = value;
- }
- }
- public string LanguageExtension
- {
- get
- {
- switch (this.Name)
- {
- case "C#":
- return ".cs";
- case "VisualBasic":
- return ".vb";
- case "Boo":
- return ".boo";
- default:
- return ".cs";
- }
- }
- }
- ///
- /// Gets or sets the XML tag.
- ///
- /// The XML tag.
- public string XmlTag
- {
- get
- {
- return xmlTag;
- }
- set
- {
- xmlTag = value;
- }
- }
-
- ///
- /// Gets or sets the import project property.
- ///
- /// The ImportProject tag.
- public string ImportProject
- {
- get
- {
- return importProject;
- }
- set
- {
- importProject = value;
- }
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The name.
- /// The GUID.
- /// The file extension.
- /// The XML.
- /// The import project.
- public ToolInfo(string name, string guid, string fileExtension, string xml, string importProject)
- {
- this.name = name;
- this.guid = guid;
- this.fileExtension = fileExtension;
- this.xmlTag = xml;
- this.importProject = importProject;
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The name.
- /// The GUID.
- /// The file extension.
- /// The XML.
- public ToolInfo(string name, string guid, string fileExtension, string xml)
- {
- this.name = name;
- this.guid = guid;
- this.fileExtension = fileExtension;
- this.xmlTag = xml;
- this.importProject = "$(MSBuildBinPath)\\Microsoft." + xml + ".Targets";
- }
-
- ///
- /// Equals operator
- ///
- /// ToolInfo to compare
- /// true if toolInfos are equal
- public override bool Equals(object obj)
- {
- if (obj == null)
- {
- throw new ArgumentNullException("obj");
- }
- if (obj.GetType() != typeof(ToolInfo))
- return false;
-
- ToolInfo c = (ToolInfo)obj;
- return ((this.name == c.name) && (this.guid == c.guid) && (this.fileExtension == c.fileExtension) && (this.importProject == c.importProject));
- }
-
- ///
- /// Equals operator
- ///
- /// ToolInfo to compare
- /// ToolInfo to compare
- /// True if toolInfos are equal
- public static bool operator ==(ToolInfo c1, ToolInfo c2)
- {
- return ((c1.name == c2.name) && (c1.guid == c2.guid) && (c1.fileExtension == c2.fileExtension) && (c1.importProject == c2.importProject) && (c1.xmlTag == c2.xmlTag));
- }
-
- ///
- /// Not equals operator
- ///
- /// ToolInfo to compare
- /// ToolInfo to compare
- /// True if toolInfos are not equal
- public static bool operator !=(ToolInfo c1, ToolInfo c2)
- {
- return !(c1 == c2);
- }
-
- ///
- /// Hash Code
- ///
- /// Hash code
- public override int GetHashCode()
- {
- return name.GetHashCode() ^ guid.GetHashCode() ^ this.fileExtension.GetHashCode() ^ this.importProject.GetHashCode() ^ this.xmlTag.GetHashCode();
-
- }
- }
-}
diff --git a/Prebuild/src/Core/Targets/VS2002Target.cs b/Prebuild/src/Core/Targets/VS2002Target.cs
deleted file mode 100644
index 2292624..0000000
--- a/Prebuild/src/Core/Targets/VS2002Target.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-
-using Prebuild.Core.Attributes;
-
-namespace Prebuild.Core.Targets
-{
- ///
- ///
- ///
- [Target("vs2002")]
- public class VS2002Target : VS2003Target
- {
- #region Private Methods
-
- private void SetVS2002()
- {
- this.SolutionVersion = "7.00";
- this.ProductVersion = "7.0.9254";
- this.SchemaVersion = "1.0";
- this.VersionName = "2002";
- this.Version = VSVersion.VS70;
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Writes the specified kern.
- ///
- /// The kern.
- public override void Write(Kernel kern)
- {
- SetVS2002();
- base.Write(kern);
- }
-
- ///
- /// Cleans the specified kern.
- ///
- /// The kern.
- public override void Clean(Kernel kern)
- {
- SetVS2002();
- base.Clean(kern);
- }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public override string Name
- {
- get
- {
- return "vs2002";
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/VS2003Target.cs b/Prebuild/src/Core/Targets/VS2003Target.cs
deleted file mode 100644
index 1bcb7dc..0000000
--- a/Prebuild/src/Core/Targets/VS2003Target.cs
+++ /dev/null
@@ -1,602 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.IO;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Targets
-{
- [Target("vs2003")]
- public class VS2003Target : ITarget
- {
-
- #region Fields
-
- string solutionVersion = "8.00";
- string productVersion = "7.10.3077";
- string schemaVersion = "2.0";
- string versionName = "2003";
- VSVersion version = VSVersion.VS71;
-
- Hashtable m_Tools;
- Kernel m_Kernel;
-
- ///
- /// Gets or sets the solution version.
- ///
- /// The solution version.
- protected string SolutionVersion
- {
- get
- {
- return this.solutionVersion;
- }
- set
- {
- this.solutionVersion = value;
- }
- }
- ///
- /// Gets or sets the product version.
- ///
- /// The product version.
- protected string ProductVersion
- {
- get
- {
- return this.productVersion;
- }
- set
- {
- this.productVersion = value;
- }
- }
- ///
- /// Gets or sets the schema version.
- ///
- /// The schema version.
- protected string SchemaVersion
- {
- get
- {
- return this.schemaVersion;
- }
- set
- {
- this.schemaVersion = value;
- }
- }
- ///
- /// Gets or sets the name of the version.
- ///
- /// The name of the version.
- protected string VersionName
- {
- get
- {
- return this.versionName;
- }
- set
- {
- this.versionName = value;
- }
- }
- ///
- /// Gets or sets the version.
- ///
- /// The version.
- protected VSVersion Version
- {
- get
- {
- return this.version;
- }
- set
- {
- this.version = value;
- }
- }
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- public VS2003Target()
- {
- m_Tools = new Hashtable();
-
- m_Tools["C#"] = new ToolInfo("C#", "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}", "csproj", "CSHARP");
- m_Tools["VB.NET"] = new ToolInfo("VB.NET", "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}", "vbproj", "VisualBasic");
- }
-
- #endregion
-
- #region Private Methods
-
- private string MakeRefPath(ProjectNode project)
- {
- string ret = "";
- foreach(ReferencePathNode node in project.ReferencePaths)
- {
- try
- {
- string fullPath = Helper.ResolvePath(node.Path);
- if(ret.Length < 1)
- {
- ret = fullPath;
- }
- else
- {
- ret += ";" + fullPath;
- }
- }
- catch(ArgumentException)
- {
- m_Kernel.Log.Write(LogType.Warning, "Could not resolve reference path: {0}", node.Path);
- }
- }
-
- return ret;
- }
-
- private void WriteProject(SolutionNode solution, ProjectNode project)
- {
- if(!m_Tools.ContainsKey(project.Language))
- {
- throw new UnknownLanguageException("Unknown .NET language: " + project.Language);
- }
-
- ToolInfo toolInfo = (ToolInfo)m_Tools[project.Language];
- string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension);
- StreamWriter ps = new StreamWriter(projectFile);
-
- m_Kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(projectFile));
-
- IEnumerator enumerator;
- //ConfigurationNode scripts;
-
- using(ps)
- {
- ps.WriteLine("");
- ps.WriteLine(" <{0}", toolInfo.XmlTag);
- ps.WriteLine("\t\t\t\tProjectType = \"Local\"");
- ps.WriteLine("\t\t\t\tProductVersion = \"{0}\"", this.ProductVersion);
- ps.WriteLine("\t\t\t\tSchemaVersion = \"{0}\"", this.SchemaVersion);
- ps.WriteLine("\t\t\t\tProjectGuid = \"{{{0}}}\"", project.Guid.ToString().ToUpper());
- ps.WriteLine("\t\t>");
-
- ps.WriteLine("\t\t\t\t");
- ps.WriteLine(" ");
-
- foreach(ConfigurationNode conf in project.Configurations)
- {
- ps.WriteLine("\t\t\t\t ");
- }
-
- ps.WriteLine(" ");
-
- ps.WriteLine(" ");
- foreach(ReferenceNode refr in project.References)
- {
- ps.WriteLine(" ");
- }
- ps.WriteLine(" ");
-
- ps.WriteLine(" ");
- ps.WriteLine(" ");
-
- ps.WriteLine(" ");
-
- foreach(string file in project.Files)
- {
- string fileName = file.Replace(".\\", "");
- ps.WriteLine(" ");
-
- if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings)
- {
- ps.WriteLine(" ");
-
- }
- }
- ps.WriteLine(" ");
-
- ps.WriteLine(" ");
- ps.WriteLine(" {0}>", toolInfo.XmlTag);
- ps.WriteLine("");
- }
-
- ps = new StreamWriter(projectFile + ".user");
- using(ps)
- {
- ps.WriteLine("");
- ps.WriteLine(" <{0}>", toolInfo.XmlTag);
- ps.WriteLine(" ");
-
- ps.WriteLine(" ", MakeRefPath(project));
- foreach(ConfigurationNode conf in project.Configurations)
- {
- ps.WriteLine(" ");
- }
- ps.WriteLine(" ");
-
- ps.WriteLine(" ");
- ps.WriteLine(" {0}>", toolInfo.XmlTag);
- ps.WriteLine("");
- }
-
- m_Kernel.CurrentWorkingDirectory.Pop();
- }
-
- ///
- /// Gets the XML doc file.
- ///
- /// The project.
- /// The conf.
- ///
- public static string GetXmlDocFile(ProjectNode project, ConfigurationNode conf)
- {
- if( conf == null )
- {
- throw new ArgumentNullException("conf");
- }
- if( project == null )
- {
- throw new ArgumentNullException("project");
- }
- // if(!(bool)conf.Options["GenerateXmlDocFile"]) //default to none, if the generate option is false
- // {
- // return string.Empty;
- // }
-
- //default to "AssemblyName.xml"
- //string defaultValue = Path.GetFileNameWithoutExtension(project.AssemblyName) + ".xml";
- //return (string)conf.Options["XmlDocFile", defaultValue];
-
- //default to no XmlDocFile file
- return (string)conf.Options["XmlDocFile", ""];
- }
-
- private void WriteSolution(SolutionNode solution)
- {
- m_Kernel.Log.Write("Creating Visual Studio {0} solution and project files", this.VersionName);
-
- foreach(ProjectNode project in solution.Projects)
- {
- if(m_Kernel.AllowProject(project.FilterGroups))
- {
- m_Kernel.Log.Write("...Creating project: {0}", project.Name);
- WriteProject(solution, project);
- }
- }
-
- m_Kernel.Log.Write("");
- string solutionFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln");
- StreamWriter ss = new StreamWriter(solutionFile);
-
- m_Kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(solutionFile));
-
- using(ss)
- {
- ss.WriteLine("Microsoft Visual Studio Solution File, Format Version {0}", this.SolutionVersion);
- foreach(ProjectNode project in solution.Projects)
- {
- if(!m_Tools.ContainsKey(project.Language))
- {
- throw new UnknownLanguageException("Unknown .NET language: " + project.Language);
- }
-
- ToolInfo toolInfo = (ToolInfo)m_Tools[project.Language];
-
- string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
- ss.WriteLine("Project(\"{0}\") = \"{1}\", \"{2}\", \"{{{3}}}\"",
- toolInfo.Guid, project.Name, Helper.MakeFilePath(path, project.Name,
- toolInfo.FileExtension), project.Guid.ToString().ToUpper());
-
- ss.WriteLine("\tProjectSection(ProjectDependencies) = postProject");
- ss.WriteLine("\tEndProjectSection");
-
- ss.WriteLine("EndProject");
- }
-
- ss.WriteLine("Global");
-
- ss.WriteLine("\tGlobalSection(SolutionConfiguration) = preSolution");
- foreach(ConfigurationNode conf in solution.Configurations)
- {
- ss.WriteLine("\t\t{0} = {0}", conf.Name);
- }
- ss.WriteLine("\tEndGlobalSection");
-
- ss.WriteLine("\tGlobalSection(ProjectDependencies) = postSolution");
- foreach(ProjectNode project in solution.Projects)
- {
- for(int i = 0; i < project.References.Count; i++)
- {
- ReferenceNode refr = (ReferenceNode)project.References[i];
- if(solution.ProjectsTable.ContainsKey(refr.Name))
- {
- ProjectNode refProject = (ProjectNode)solution.ProjectsTable[refr.Name];
- ss.WriteLine("\t\t({{{0}}}).{1} = ({{{2}}})",
- project.Guid.ToString().ToUpper()
- , i,
- refProject.Guid.ToString().ToUpper()
- );
- }
- }
- }
- ss.WriteLine("\tEndGlobalSection");
-
- ss.WriteLine("\tGlobalSection(ProjectConfiguration) = postSolution");
- foreach(ProjectNode project in solution.Projects)
- {
- foreach(ConfigurationNode conf in solution.Configurations)
- {
- ss.WriteLine("\t\t{{{0}}}.{1}.ActiveCfg = {1}|.NET",
- project.Guid.ToString().ToUpper(),
- conf.Name);
-
- ss.WriteLine("\t\t{{{0}}}.{1}.Build.0 = {1}|.NET",
- project.Guid.ToString().ToUpper(),
- conf.Name);
- }
- }
- ss.WriteLine("\tEndGlobalSection");
-
- if(solution.Files != null)
- {
- ss.WriteLine("\tGlobalSection(SolutionItems) = postSolution");
- foreach(string file in solution.Files)
- {
- ss.WriteLine("\t\t{0} = {0}", file);
- }
- ss.WriteLine("\tEndGlobalSection");
- }
-
- ss.WriteLine("\tGlobalSection(ExtensibilityGlobals) = postSolution");
- ss.WriteLine("\tEndGlobalSection");
- ss.WriteLine("\tGlobalSection(ExtensibilityAddIns) = postSolution");
- ss.WriteLine("\tEndGlobalSection");
-
- ss.WriteLine("EndGlobal");
- }
-
- m_Kernel.CurrentWorkingDirectory.Pop();
- }
-
- private void CleanProject(ProjectNode project)
- {
- m_Kernel.Log.Write("...Cleaning project: {0}", project.Name);
-
- ToolInfo toolInfo = (ToolInfo)m_Tools[project.Language];
- string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension);
- string userFile = projectFile + ".user";
-
- Helper.DeleteIfExists(projectFile);
- Helper.DeleteIfExists(userFile);
- }
-
- private void CleanSolution(SolutionNode solution)
- {
- m_Kernel.Log.Write("Cleaning Visual Studio {0} solution and project files", this.VersionName, solution.Name);
-
- string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln");
- string suoFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "suo");
-
- Helper.DeleteIfExists(slnFile);
- Helper.DeleteIfExists(suoFile);
-
- foreach(ProjectNode project in solution.Projects)
- {
- CleanProject(project);
- }
-
- m_Kernel.Log.Write("");
- }
-
- #endregion
-
- #region ITarget Members
-
- ///
- /// Writes the specified kern.
- ///
- /// The kern.
- public virtual void Write(Kernel kern)
- {
- if( kern == null )
- {
- throw new ArgumentNullException("kern");
- }
- m_Kernel = kern;
- foreach(SolutionNode sol in m_Kernel.Solutions)
- {
- WriteSolution(sol);
- }
- m_Kernel = null;
- }
-
- ///
- /// Cleans the specified kern.
- ///
- /// The kern.
- public virtual void Clean(Kernel kern)
- {
- if( kern == null )
- {
- throw new ArgumentNullException("kern");
- }
- m_Kernel = kern;
- foreach(SolutionNode sol in m_Kernel.Solutions)
- {
- CleanSolution(sol);
- }
- m_Kernel = null;
- }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public virtual string Name
- {
- get
- {
- return "vs2003";
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/VS2005Target.cs b/Prebuild/src/Core/Targets/VS2005Target.cs
deleted file mode 100644
index 63461c9..0000000
--- a/Prebuild/src/Core/Targets/VS2005Target.cs
+++ /dev/null
@@ -1,149 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004 Matthew Holmes (matthew@wildfiregames.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.IO;
-using System.Text;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Targets
-{
- ///
- ///
- ///
- [Target("vs2005")]
- public class VS2005Target : VSGenericTarget
- {
- #region Inner Classes
-
- #endregion
-
- #region Fields
-
- string solutionVersion = "9.00";
- string productVersion = "8.0.50727";
- string schemaVersion = "2.0";
- string versionName = "Visual C# 2005";
- string name = "vs2005";
-
- VSVersion version = VSVersion.VS80;
-
- public override string SolutionTag
- {
- get { return "# Visual Studio 2005"; }
- }
-
- protected override string GetToolsVersionXml(FrameworkVersion frameworkVersion)
- {
- return string.Empty;
- }
- ///
- /// Gets or sets the solution version.
- ///
- /// The solution version.
- public override string SolutionVersion
- {
- get
- {
- return solutionVersion;
- }
- }
- ///
- /// Gets or sets the product version.
- ///
- /// The product version.
- public override string ProductVersion
- {
- get
- {
- return productVersion;
- }
- }
- ///
- /// Gets or sets the schema version.
- ///
- /// The schema version.
- public override string SchemaVersion
- {
- get
- {
- return schemaVersion;
- }
- }
- ///
- /// Gets or sets the name of the version.
- ///
- /// The name of the version.
- public override string VersionName
- {
- get
- {
- return versionName;
- }
- }
- ///
- /// Gets or sets the version.
- ///
- /// The version.
- public override VSVersion Version
- {
- get
- {
- return version;
- }
- }
- ///
- /// Gets the name.
- ///
- /// The name.
- public override string Name
- {
- get
- {
- return name;
- }
- }
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- public VS2005Target()
- : base()
- {
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/VS2008Target.cs b/Prebuild/src/Core/Targets/VS2008Target.cs
deleted file mode 100644
index e685962..0000000
--- a/Prebuild/src/Core/Targets/VS2008Target.cs
+++ /dev/null
@@ -1,132 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.IO;
-using System.Text;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-using Prebuild.Core.Utilities;
-using System.CodeDom.Compiler;
-
-namespace Prebuild.Core.Targets
-{
-
- ///
- ///
- ///
- [Target("vs2008")]
- public class VS2008Target : VSGenericTarget
- {
- #region Fields
- string solutionVersion = "10.00";
- string productVersion = "9.0.21022";
- string schemaVersion = "2.0";
- string versionName = "Visual Studio 2008";
- string name = "vs2008";
- VSVersion version = VSVersion.VS90;
-
- Hashtable tools;
- Kernel kernel;
-
- ///
- /// Gets or sets the solution version.
- ///
- /// The solution version.
- public override string SolutionVersion
- {
- get
- {
- return solutionVersion;
- }
- }
- ///
- /// Gets or sets the product version.
- ///
- /// The product version.
- public override string ProductVersion
- {
- get
- {
- return productVersion;
- }
- }
- ///
- /// Gets or sets the schema version.
- ///
- /// The schema version.
- public override string SchemaVersion
- {
- get
- {
- return schemaVersion;
- }
- }
- ///
- /// Gets or sets the name of the version.
- ///
- /// The name of the version.
- public override string VersionName
- {
- get
- {
- return versionName;
- }
- }
- ///
- /// Gets or sets the version.
- ///
- /// The version.
- public override VSVersion Version
- {
- get
- {
- return version;
- }
- }
- ///
- /// Gets the name.
- ///
- /// The name.
- public override string Name
- {
- get
- {
- return name;
- }
- }
-
- protected override string GetToolsVersionXml(FrameworkVersion frameworkVersion)
- {
- switch (frameworkVersion)
- {
- case FrameworkVersion.v3_5:
- return "ToolsVersion=\"3.5\"";
- case FrameworkVersion.v3_0:
- return "ToolsVersion=\"3.0\"";
- default:
- return "ToolsVersion=\"2.0\"";
- }
- }
-
- public override string SolutionTag
- {
- get { return "# Visual Studio 2008"; }
- }
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- public VS2008Target()
- : base()
- {
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/VS2010Target.cs b/Prebuild/src/Core/Targets/VS2010Target.cs
deleted file mode 100644
index 8772d18..0000000
--- a/Prebuild/src/Core/Targets/VS2010Target.cs
+++ /dev/null
@@ -1,134 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.IO;
-using System.Text;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-using Prebuild.Core.Utilities;
-using System.CodeDom.Compiler;
-
-namespace Prebuild.Core.Targets
-{
-
- ///
- ///
- ///
- [Target("vs2010")]
- public class VS2010Target : VSGenericTarget
- {
- #region Fields
- string solutionVersion = "11.00";
- string productVersion = "9.0.21022";
- string schemaVersion = "2.0";
- string versionName = "Visual Studio 2010";
- string name = "vs2008";
- VSVersion version = VSVersion.VS10;
-
- Hashtable tools;
- Kernel kernel;
-
- ///
- /// Gets or sets the solution version.
- ///
- /// The solution version.
- public override string SolutionVersion
- {
- get
- {
- return solutionVersion;
- }
- }
- ///
- /// Gets or sets the product version.
- ///
- /// The product version.
- public override string ProductVersion
- {
- get
- {
- return productVersion;
- }
- }
- ///
- /// Gets or sets the schema version.
- ///
- /// The schema version.
- public override string SchemaVersion
- {
- get
- {
- return schemaVersion;
- }
- }
- ///
- /// Gets or sets the name of the version.
- ///
- /// The name of the version.
- public override string VersionName
- {
- get
- {
- return versionName;
- }
- }
- ///
- /// Gets or sets the version.
- ///
- /// The version.
- public override VSVersion Version
- {
- get
- {
- return version;
- }
- }
- ///
- /// Gets the name.
- ///
- /// The name.
- public override string Name
- {
- get
- {
- return name;
- }
- }
-
- protected override string GetToolsVersionXml(FrameworkVersion frameworkVersion)
- {
- switch (frameworkVersion)
- {
- case FrameworkVersion.v4_0:
- return "ToolsVersion=\"4.0\"";
- case FrameworkVersion.v3_5:
- return "ToolsVersion=\"3.5\"";
- case FrameworkVersion.v3_0:
- return "ToolsVersion=\"3.0\"";
- default:
- return "ToolsVersion=\"2.0\"";
- }
- }
-
- public override string SolutionTag
- {
- get { return "# Visual Studio 2010"; }
- }
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- public VS2010Target()
- : base()
- {
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/VSGenericTarget.cs b/Prebuild/src/Core/Targets/VSGenericTarget.cs
deleted file mode 100644
index fdcc2b9..0000000
--- a/Prebuild/src/Core/Targets/VSGenericTarget.cs
+++ /dev/null
@@ -1,887 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2008 Matthew Holmes (matthew@wildfiregames.com), John Anderson (sontek@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.IO;
-using System.Text;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-using Prebuild.Core.Utilities;
-using System.CodeDom.Compiler;
-
-namespace Prebuild.Core.Targets
-{
-
- ///
- ///
- ///
- public abstract class VSGenericTarget : ITarget
- {
- #region Fields
-
- readonly Hashtable tools = new Hashtable();
- Kernel kernel;
- #endregion
-
- #region Properties
- ///
- /// Gets or sets the solution version.
- ///
- /// The solution version.
- public abstract string SolutionVersion { get; }
- ///
- /// Gets or sets the product version.
- ///
- /// The product version.
- public abstract string ProductVersion { get; }
- ///
- /// Gets or sets the schema version.
- ///
- /// The schema version.
- public abstract string SchemaVersion { get; }
- ///
- /// Gets or sets the name of the version.
- ///
- /// The name of the version.
- public abstract string VersionName { get; }
- ///
- /// Gets or sets the version.
- ///
- /// The version.
- public abstract VSVersion Version { get; }
- ///
- /// Gets the name.
- ///
- /// The name.
- public abstract string Name { get; }
-
- protected abstract string GetToolsVersionXml(FrameworkVersion version);
- public abstract string SolutionTag { get; }
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- protected VSGenericTarget()
- {
- this.tools["C#"] = new ToolInfo("C#", "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}", "csproj", "CSHARP", "$(MSBuildBinPath)\\Microsoft.CSHARP.Targets");
- this.tools["Database"] = new ToolInfo("Database", "{4F174C21-8C12-11D0-8340-0000F80270F8}", "dbp", "UNKNOWN");
- this.tools["Boo"] = new ToolInfo("Boo", "{45CEA7DC-C2ED-48A6-ACE0-E16144C02365}", "booproj", "Boo", "$(BooBinPath)\\Boo.Microsoft.Build.targets");
- this.tools["VisualBasic"] = new ToolInfo("VisualBasic", "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}", "vbproj", "VisualBasic", "$(MSBuildBinPath)\\Microsoft.VisualBasic.Targets");
- this.tools["Folder"] = new ToolInfo("Folder", "{2150E333-8FDC-42A3-9474-1A3956D46DE8}", null, null);
- }
-
- #endregion
-
- #region Private Methods
-
- private string MakeRefPath(ProjectNode project)
- {
- string ret = "";
- foreach (ReferencePathNode node in project.ReferencePaths)
- {
- try
- {
- string fullPath = Helper.ResolvePath(node.Path);
- if (ret.Length < 1)
- {
- ret = fullPath;
- }
- else
- {
- ret += ";" + fullPath;
- }
- }
- catch (ArgumentException)
- {
- this.kernel.Log.Write(LogType.Warning, "Could not resolve reference path: {0}", node.Path);
- }
- }
-
- return ret;
- }
-
- private static ProjectNode FindProjectInSolution(string name, SolutionNode solution)
- {
- SolutionNode node = solution;
-
- while (node.Parent is SolutionNode)
- node = node.Parent as SolutionNode;
-
- return FindProjectInSolutionRecursively(name, node);
- }
-
- private static ProjectNode FindProjectInSolutionRecursively(string name, SolutionNode solution)
- {
- if (solution.ProjectsTable.ContainsKey(name))
- return (ProjectNode)solution.ProjectsTable[name];
-
- foreach (SolutionNode child in solution.Solutions)
- {
- ProjectNode node = FindProjectInSolutionRecursively(name, child);
- if (node != null)
- return node;
- }
-
- return null;
- }
-
- private void WriteProject(SolutionNode solution, ProjectNode project)
- {
- if (!tools.ContainsKey(project.Language))
- {
- throw new UnknownLanguageException("Unknown .NET language: " + project.Language);
- }
-
- ToolInfo toolInfo = (ToolInfo)tools[project.Language];
- string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension);
- StreamWriter ps = new StreamWriter(projectFile);
-
- kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(projectFile));
-
- #region Project File
- using (ps)
- {
- ps.WriteLine("", this.Version == VSVersion.VS10 ? "4.0" : "3.5");
- ps.WriteLine(" ");
- ps.WriteLine(" Local");
- ps.WriteLine(" {0}", this.ProductVersion);
- ps.WriteLine(" {0}", this.SchemaVersion);
- ps.WriteLine(" {{{0}}}", project.Guid.ToString().ToUpper());
-
- // Visual Studio has a hard coded guid for the project type
- if (project.Type == ProjectType.Web)
- ps.WriteLine(" {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}");
- ps.WriteLine(" Debug");
- ps.WriteLine(" AnyCPU");
- ps.WriteLine(" {0}", project.AppIcon);
- ps.WriteLine(" ");
- ps.WriteLine(" ");
- ps.WriteLine(" {0}", project.AssemblyName);
- foreach (ConfigurationNode conf in project.Configurations)
- {
- if (conf.Options.KeyFile != "")
- {
- ps.WriteLine(" {0}", conf.Options.KeyFile);
- ps.WriteLine(" true");
- break;
- }
- }
- ps.WriteLine(" JScript");
- ps.WriteLine(" Grid");
- ps.WriteLine(" IE50");
- ps.WriteLine(" false");
- ps.WriteLine(" {0}", project.FrameworkVersion.ToString().Replace("_", "."));
-
- ps.WriteLine(" {0}", project.Type == ProjectType.Web ? ProjectType.Library.ToString() : project.Type.ToString());
- ps.WriteLine(" {0}", project.DesignerFolder);
- ps.WriteLine(" {0}", project.RootNamespace);
- ps.WriteLine(" {0}", project.StartupObject);
- if (string.IsNullOrEmpty(project.DebugStartParameters))
- {
- ps.WriteLine(" {0}", project.DebugStartParameters);
- }
- ps.WriteLine(" ");
- ps.WriteLine(" ");
-
- ps.WriteLine(" ");
-
- foreach (ConfigurationNode conf in project.Configurations)
- {
- ps.Write(" ", conf.Name);
- ps.WriteLine(" {0}", conf.Options["AllowUnsafe"]);
- ps.WriteLine(" {0}", conf.Options["BaseAddress"]);
- ps.WriteLine(" {0}", conf.Options["CheckUnderflowOverflow"]);
- ps.WriteLine(" ");
- ps.WriteLine(" ");
- ps.WriteLine(" {0}", conf.Options["CompilerDefines"]);
- ps.WriteLine(" {0}", Helper.NormalizePath(conf.Options["XmlDocFile"].ToString()));
- ps.WriteLine(" {0}", conf.Options["DebugInformation"]);
- ps.WriteLine(" {0}", conf.Options["FileAlignment"]);
- ps.WriteLine(" {0}", conf.Options["OptimizeCode"]);
- if (project.Type != ProjectType.Web)
- ps.WriteLine(" {0}",
- Helper.EndPath(Helper.NormalizePath(conf.Options["OutputPath"].ToString())));
- else
- ps.WriteLine(" {0}",
- Helper.EndPath(Helper.NormalizePath("bin\\")));
-
- ps.WriteLine(" {0}", conf.Options["RegisterComInterop"]);
- ps.WriteLine(" {0}", conf.Options["RemoveIntegerChecks"]);
- ps.WriteLine(" {0}", conf.Options["WarningsAsErrors"]);
- ps.WriteLine(" {0}", conf.Options["WarningLevel"]);
- ps.WriteLine(" {0}", conf.Options["NoStdLib"]);
- ps.WriteLine(" {0}", conf.Options["SuppressWarnings"]);
- ps.WriteLine(" ");
- }
-
- //ps.WriteLine(" ");
-
- List projectReferences = new List();
- List otherReferences = new List();
-
- foreach (ReferenceNode refr in project.References)
- {
- ProjectNode projectNode = FindProjectInSolution(refr.Name, solution);
-
- if (projectNode == null)
- otherReferences.Add(refr);
- else
- projectReferences.Add(projectNode);
- }
- // Assembly References
- ps.WriteLine(" ");
-
- foreach (ReferenceNode refr in otherReferences)
- {
- ps.Write(" ");
- ps.Write(" ");
- ps.Write(refr.Name);
- ps.WriteLine("");
- // TODO: Allow reference to *.exe files
- ps.WriteLine(" {0}", refr.LocalCopy);
- ps.WriteLine(" ");
- }
- ps.WriteLine(" ");
-
- //Project References
- ps.WriteLine(" ");
- foreach (ProjectNode projectReference in projectReferences)
- {
- ToolInfo tool = (ToolInfo)tools[projectReference.Language];
- if (tools == null)
- throw new UnknownLanguageException();
-
- string path =
- Helper.MakePathRelativeTo(project.FullPath,
- Helper.MakeFilePath(projectReference.FullPath, projectReference.Name, tool.FileExtension));
- ps.WriteLine(" ", path);
-
- // TODO: Allow reference to visual basic projects
- ps.WriteLine(" {0}", projectReference.Name);
- ps.WriteLine(" {0}", projectReference.Guid.ToString("B").ToUpper());
- ps.WriteLine(" {0}", tool.Guid.ToUpper());
-
- ps.WriteLine(" False" );
-
- ps.WriteLine(" ");
- }
- ps.WriteLine(" ");
-
- // ps.WriteLine(" ");
- ps.WriteLine(" ");
-
- // ps.WriteLine(" ");
- List list = new List();
-
- foreach (string path in project.Files)
- {
- string lower = path.ToLower();
- if (lower.EndsWith(".resx"))
- {
- string codebehind = String.Format("{0}.Designer{1}", path.Substring(0, path.LastIndexOf('.')), toolInfo.LanguageExtension);
- if (!list.Contains(codebehind))
- list.Add(codebehind);
- }
- }
-
- foreach (string file in project.Files)
- {
- // if (file == "Properties\\Bind.Designer.cs")
- // {
- // Console.WriteLine("Wait a minute!");
- // Console.WriteLine(project.Files.GetSubType(file).ToString());
- // }
-
- SubType subType = project.Files.GetSubType(file);
-
- if (subType != SubType.Code && subType != SubType.Settings && subType != SubType.Designer
- && subType != SubType.CodeBehind)
- {
- ps.WriteLine(" ", file.Substring(0, file.LastIndexOf('.')) + ".resx");
- ps.WriteLine(" {0}", Path.GetFileName(file));
- ps.WriteLine(" Designer");
- ps.WriteLine(" ");
- //
- }
-
- if (subType == SubType.Designer)
- {
- ps.WriteLine(" ", file);
- ps.WriteLine(" " + subType + "");
- ps.WriteLine(" ResXFileCodeGenerator");
-
- string autogen_name = file.Substring(0, file.LastIndexOf('.')) + ".Designer.cs";
- string dependent_name = file.Substring(0, file.LastIndexOf('.')) + ".cs";
-
- ps.WriteLine(" {0}", autogen_name);
-
- // Check for a parent .cs file with the same name as this designer file
- if (File.Exists(dependent_name))
- ps.WriteLine(" {0}", Path.GetFileName(dependent_name));
-
- ps.WriteLine(" ");
- if (File.Exists(autogen_name))
- {
- ps.WriteLine(" ", autogen_name);
- ps.WriteLine(" True");
- ps.WriteLine(" True");
-
- // If a parent .cs file exists, link this autogen file to it. Otherwise link
- // to the designer file
- if (File.Exists(dependent_name))
- ps.WriteLine(" {0}", Path.GetFileName(dependent_name));
- else
- ps.WriteLine(" {0}", Path.GetFileName(file));
-
- ps.WriteLine(" ");
- }
- list.Add(autogen_name);
- }
- if (subType == SubType.Settings)
- {
- ps.Write(" <{0} ", project.Files.GetBuildAction(file));
- ps.WriteLine("Include=\"{0}\">", file);
- string fileName = Path.GetFileName(file);
- if (project.Files.GetBuildAction(file) == BuildAction.None)
- {
- ps.WriteLine(" SettingsSingleFileGenerator");
- ps.WriteLine(" {0}", fileName.Substring(0, fileName.LastIndexOf('.')) + ".Designer.cs");
- }
- else
- {
- ps.WriteLine(" Code");
- ps.WriteLine(" True");
- ps.WriteLine(" True");
- string fileNameShort = fileName.Substring(0, fileName.LastIndexOf('.'));
- string fileNameShorter = fileNameShort.Substring(0, fileNameShort.LastIndexOf('.'));
- ps.WriteLine(" {0}", Path.GetFileName(fileNameShorter + ".settings"));
- }
- ps.WriteLine(" {0}>", project.Files.GetBuildAction(file));
- }
- else if (subType != SubType.Designer)
- {
- string path = Helper.NormalizePath(file);
- string path_lower = path.ToLower();
-
- if (!list.Contains(file))
- {
- ps.Write(" <{0} ", project.Files.GetBuildAction(path));
-
- int startPos = 0;
- if (project.Files.GetPreservePath(file))
- {
- while ((@"./\").IndexOf(file.Substring(startPos, 1)) != -1)
- startPos++;
-
- }
- else
- {
- startPos = file.LastIndexOf(Path.GetFileName(path));
- }
-
- ps.WriteLine("Include=\"{0}\">", path);
-
- int last_period_index = file.LastIndexOf('.');
- string short_file_name = file.Substring(0, last_period_index);
- string extension = Path.GetExtension(path);
- string designer_format = string.Format(".designer{0}", extension);
-
- if (path_lower.EndsWith(designer_format))
- {
- int designer_index = path_lower.IndexOf(designer_format);
- string file_name = path.Substring(0, designer_index);
-
- if (File.Exists(file_name))
- ps.WriteLine(" {0}", Path.GetFileName(file_name));
- else if (File.Exists(file_name + ".resx"))
- ps.WriteLine(" {0}", Path.GetFileName(file_name + ".resx"));
- }
- else if (subType == SubType.CodeBehind)
- {
- ps.WriteLine(" {0}", Path.GetFileName(short_file_name));
- }
- if (project.Files.GetIsLink(file))
- {
- string alias = project.Files.GetLinkPath(file);
- alias += file.Substring(startPos);
- alias = Helper.NormalizePath(alias);
- ps.WriteLine(" {0}", alias);
- }
- else if (project.Files.GetBuildAction(file) != BuildAction.None)
- {
- if (project.Files.GetBuildAction(file) != BuildAction.EmbeddedResource)
- {
- ps.WriteLine(" {0}", subType);
- }
- }
-
- if (project.Files.GetCopyToOutput(file) != CopyToOutput.Never)
- {
- ps.WriteLine(" {0}", project.Files.GetCopyToOutput(file));
- }
-
- ps.WriteLine(" {0}>", project.Files.GetBuildAction(file));
- }
- }
- }
-
- ps.WriteLine(" ");
- ps.WriteLine(" ");
- ps.WriteLine(" ");
- ps.WriteLine(" ");
- ps.WriteLine(" ");
- ps.WriteLine(" ");
- ps.WriteLine(" ");
- ps.WriteLine(" ");
- ps.WriteLine("");
- }
- #endregion
-
- #region User File
-
- ps = new StreamWriter(projectFile + ".user");
- using (ps)
- {
- ps.WriteLine("");
- //ps.WriteLine( "" );
- //ps.WriteLine(" <{0}>", toolInfo.XMLTag);
- //ps.WriteLine(" ");
- ps.WriteLine(" ");
- //ps.WriteLine(" ", MakeRefPath(project));
- ps.WriteLine(" Debug");
- ps.WriteLine(" AnyCPU");
- ps.WriteLine(" {0}", MakeRefPath(project));
- ps.WriteLine(" {0}", this.ProductVersion);
- ps.WriteLine(" ProjectFiles");
- ps.WriteLine(" 0");
- ps.WriteLine(" ");
- foreach (ConfigurationNode conf in project.Configurations)
- {
- ps.Write(" ");
- }
- ps.WriteLine("");
- }
- #endregion
-
- kernel.CurrentWorkingDirectory.Pop();
- }
-
- private void WriteSolution(SolutionNode solution, bool writeSolutionToDisk)
- {
- kernel.Log.Write("Creating {0} solution and project files", this.VersionName);
-
- foreach (SolutionNode child in solution.Solutions)
- {
- kernel.Log.Write("...Creating folder: {0}", child.Name);
- WriteSolution(child, false);
- }
-
- foreach (ProjectNode project in solution.Projects)
- {
- kernel.Log.Write("...Creating project: {0}", project.Name);
- WriteProject(solution, project);
- }
-
- foreach (DatabaseProjectNode project in solution.DatabaseProjects)
- {
- kernel.Log.Write("...Creating database project: {0}", project.Name);
- WriteDatabaseProject(solution, project);
- }
-
- if (writeSolutionToDisk) // only write main solution
- {
- kernel.Log.Write("");
- string solutionFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln");
-
- using (StreamWriter ss = new StreamWriter(solutionFile))
- {
- kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(solutionFile));
-
- ss.WriteLine("Microsoft Visual Studio Solution File, Format Version {0}", this.SolutionVersion);
- ss.WriteLine(SolutionTag);
-
- WriteProjectDeclarations(ss, solution, solution);
-
- ss.WriteLine("Global");
-
- ss.WriteLine("\tGlobalSection(SolutionConfigurationPlatforms) = preSolution");
- foreach (ConfigurationNode conf in solution.Configurations)
- {
- ss.WriteLine("\t\t{0}|Any CPU = {0}|Any CPU", conf.Name);
- }
- ss.WriteLine("\tEndGlobalSection");
-
- ss.WriteLine("\tGlobalSection(ProjectConfigurationPlatforms) = postSolution");
- WriteConfigurationLines(solution.Configurations, solution, ss);
- ss.WriteLine("\tEndGlobalSection");
-
- if (solution.Solutions.Count > 0)
- {
- ss.WriteLine("\tGlobalSection(NestedProjects) = preSolution");
- foreach (SolutionNode embeddedSolution in solution.Solutions)
- {
- WriteNestedProjectMap(ss, embeddedSolution);
- }
- ss.WriteLine("\tEndGlobalSection");
- }
-
- ss.WriteLine("EndGlobal");
- }
-
- kernel.CurrentWorkingDirectory.Pop();
- }
- }
-
- private void WriteProjectDeclarations(StreamWriter writer, SolutionNode actualSolution, SolutionNode embeddedSolution)
- {
- foreach (SolutionNode childSolution in embeddedSolution.Solutions)
- {
- WriteEmbeddedSolution(writer, childSolution);
- WriteProjectDeclarations(writer, actualSolution, childSolution);
- }
-
- foreach (ProjectNode project in embeddedSolution.Projects)
- {
- WriteProject(actualSolution, writer, project);
- }
-
- foreach (DatabaseProjectNode dbProject in embeddedSolution.DatabaseProjects)
- {
- WriteProject(actualSolution, writer, dbProject);
- }
-
- if (actualSolution.Guid == embeddedSolution.Guid)
- {
- WriteSolutionFiles(actualSolution, writer);
- }
- }
-
- private static void WriteNestedProjectMap(StreamWriter writer, SolutionNode embeddedSolution)
- {
- foreach (ProjectNode project in embeddedSolution.Projects)
- {
- WriteNestedProject(writer, embeddedSolution, project.Guid);
- }
-
- foreach (DatabaseProjectNode dbProject in embeddedSolution.DatabaseProjects)
- {
- WriteNestedProject(writer, embeddedSolution, dbProject.Guid);
- }
-
- foreach (SolutionNode child in embeddedSolution.Solutions)
- {
- WriteNestedProject(writer, embeddedSolution, child.Guid);
- WriteNestedProjectMap(writer, child);
- }
- }
-
- private static void WriteNestedProject(StreamWriter writer, SolutionNode solution, Guid projectGuid)
- {
- WriteNestedFolder(writer, solution.Guid, projectGuid);
- }
-
- private static void WriteNestedFolder(StreamWriter writer, Guid parentGuid, Guid childGuid)
- {
- writer.WriteLine("\t\t{0} = {1}",
- childGuid.ToString("B").ToUpper(),
- parentGuid.ToString("B").ToUpper());
- }
-
- private static void WriteConfigurationLines(ICollection configurations, SolutionNode solution, StreamWriter ss)
- {
- foreach (ProjectNode project in solution.Projects)
- {
- foreach (ConfigurationNode conf in configurations)
- {
- ss.WriteLine("\t\t{0}.{1}|Any CPU.ActiveCfg = {1}|Any CPU",
- project.Guid.ToString("B").ToUpper(),
- conf.Name);
-
- ss.WriteLine("\t\t{0}.{1}|Any CPU.Build.0 = {1}|Any CPU",
- project.Guid.ToString("B").ToUpper(),
- conf.Name);
- }
- }
-
- foreach (SolutionNode child in solution.Solutions)
- {
- WriteConfigurationLines(configurations, child, ss);
- }
- }
-
- private void WriteSolutionFiles(SolutionNode solution, StreamWriter ss)
- {
- if (solution.Files != null && solution.Files.Count > 0)
- {
- WriteProject(ss, "Folder", solution.Guid, "Solution Files", "Solution Files", solution.Files);
- }
- }
-
- private void WriteEmbeddedSolution(StreamWriter writer, SolutionNode embeddedSolution)
- {
- WriteProject(writer, "Folder", embeddedSolution.Guid, embeddedSolution.Name, embeddedSolution.Name, embeddedSolution.Files);
- }
-
- private void WriteProject(SolutionNode solution, StreamWriter ss, ProjectNode project)
- {
- WriteProject(ss, solution, project.Language, project.Guid, project.Name, project.FullPath);
- }
-
- private void WriteProject(SolutionNode solution, StreamWriter ss, DatabaseProjectNode dbProject)
- {
- if (solution.Files != null && solution.Files.Count > 0)
- WriteProject(ss, solution, "Database", dbProject.Guid, dbProject.Name, dbProject.FullPath);
- }
-
- private static bool ExtensionSpecified(string refName)
- {
- return refName.EndsWith(".dll") || refName.EndsWith(".exe");
- }
-
- private static string GetProjectExtension(ProjectNode project)
- {
- string extension = ".dll";
- if (project.Type == ProjectType.Exe)
- {
- extension = ".exe";
- }
- return extension;
- }
-
- const string ProjectDeclarationBeginFormat = "Project(\"{0}\") = \"{1}\", \"{2}\", \"{3}\"";
- const string ProjectDeclarationEndFormat = "EndProject";
-
- private void WriteProject(StreamWriter ss, SolutionNode solution, string language, Guid guid, string name, string projectFullPath)
- {
- if (!tools.ContainsKey(language))
- throw new UnknownLanguageException("Unknown .NET language: " + language);
-
- ToolInfo toolInfo = (ToolInfo)tools[language];
-
- string path = Helper.MakePathRelativeTo(solution.FullPath, projectFullPath);
-
- path = Helper.MakeFilePath(path, name, toolInfo.FileExtension);
-
- WriteProject(ss, language, guid, name, path);
- }
-
- private void WriteProject(StreamWriter writer, string language, Guid projectGuid, string name, string location)
- {
- WriteProject(writer, language, projectGuid, name, location, null);
- }
-
- private void WriteProject(StreamWriter writer, string language, Guid projectGuid, string name, string location, FilesNode files)
- {
- if (!tools.ContainsKey(language))
- throw new UnknownLanguageException("Unknown .NET language: " + language);
-
- ToolInfo toolInfo = (ToolInfo)tools[language];
-
- writer.WriteLine(ProjectDeclarationBeginFormat,
- toolInfo.Guid,
- name,
- location,
- projectGuid.ToString("B").ToUpper());
-
- if (files != null)
- {
- writer.WriteLine("\tProjectSection(SolutionItems) = preProject");
-
- foreach (string file in files)
- writer.WriteLine("\t\t{0} = {0}", file);
-
- writer.WriteLine("\tEndProjectSection");
- }
-
- writer.WriteLine(ProjectDeclarationEndFormat);
- }
-
- private void WriteDatabaseProject(SolutionNode solution, DatabaseProjectNode project)
- {
- string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, "dbp");
- IndentedTextWriter ps = new IndentedTextWriter(new StreamWriter(projectFile), " ");
-
- kernel.CurrentWorkingDirectory.Push();
-
- Helper.SetCurrentDir(Path.GetDirectoryName(projectFile));
-
- using (ps)
- {
- ps.WriteLine("# Microsoft Developer Studio Project File - Database Project");
- ps.WriteLine("Begin DataProject = \"{0}\"", project.Name);
- ps.Indent++;
- ps.WriteLine("MSDTVersion = \"80\"");
- // TODO: Use the project.Files property
- if (ContainsSqlFiles(Path.GetDirectoryName(projectFile)))
- WriteDatabaseFoldersAndFiles(ps, Path.GetDirectoryName(projectFile));
-
- ps.WriteLine("Begin DBRefFolder = \"Database References\"");
- ps.Indent++;
- foreach (DatabaseReferenceNode reference in project.References)
- {
- ps.WriteLine("Begin DBRefNode = \"{0}\"", reference.Name);
- ps.Indent++;
- ps.WriteLine("ConnectStr = \"{0}\"", reference.ConnectionString);
- ps.WriteLine("Provider = \"{0}\"", reference.ProviderId.ToString("B").ToUpper());
- //ps.WriteLine("Colorizer = 5");
- ps.Indent--;
- ps.WriteLine("End");
- }
- ps.Indent--;
- ps.WriteLine("End");
- ps.Indent--;
- ps.WriteLine("End");
-
- ps.Flush();
- }
-
- kernel.CurrentWorkingDirectory.Pop();
- }
-
- private bool ContainsSqlFiles(string folder)
- {
- foreach (string file in Directory.GetFiles(folder, "*.sql"))
- {
- return true; // if the folder contains 1 .sql file, that's good enough
- }
-
- foreach (string child in Directory.GetDirectories(folder))
- {
- if (ContainsSqlFiles(child))
- return true; // if 1 child folder contains a .sql file, still good enough
- }
-
- return false;
- }
-
- private void WriteDatabaseFoldersAndFiles(IndentedTextWriter writer, string folder)
- {
- foreach (string child in Directory.GetDirectories(folder))
- {
- if (ContainsSqlFiles(child))
- {
- writer.WriteLine("Begin Folder = \"{0}\"", Path.GetFileName(child));
- writer.Indent++;
- WriteDatabaseFoldersAndFiles(writer, child);
- writer.Indent--;
- writer.WriteLine("End");
- }
- }
- foreach (string file in Directory.GetFiles(folder, "*.sql"))
- {
- writer.WriteLine("Script = \"{0}\"", Path.GetFileName(file));
- }
- }
-
- private void CleanProject(ProjectNode project)
- {
- kernel.Log.Write("...Cleaning project: {0}", project.Name);
-
- ToolInfo toolInfo = (ToolInfo)tools[project.Language];
- string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension);
- string userFile = projectFile + ".user";
-
- Helper.DeleteIfExists(projectFile);
- Helper.DeleteIfExists(userFile);
- }
-
- private void CleanSolution(SolutionNode solution)
- {
- kernel.Log.Write("Cleaning {0} solution and project files", this.VersionName, solution.Name);
-
- string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln");
- string suoFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "suo");
-
- Helper.DeleteIfExists(slnFile);
- Helper.DeleteIfExists(suoFile);
-
- foreach (ProjectNode project in solution.Projects)
- {
- CleanProject(project);
- }
-
- kernel.Log.Write("");
- }
-
- #endregion
-
- #region ITarget Members
-
- ///
- /// Writes the specified kern.
- ///
- /// The kern.
- public virtual void Write(Kernel kern)
- {
- if (kern == null)
- {
- throw new ArgumentNullException("kern");
- }
- kernel = kern;
- foreach (SolutionNode sol in kernel.Solutions)
- {
- WriteSolution(sol, true);
- }
- kernel = null;
- }
-
- ///
- /// Cleans the specified kern.
- ///
- /// The kern.
- public virtual void Clean(Kernel kern)
- {
- if (kern == null)
- {
- throw new ArgumentNullException("kern");
- }
- kernel = kern;
- foreach (SolutionNode sol in kernel.Solutions)
- {
- CleanSolution(sol);
- }
- kernel = null;
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Targets/VSVersion.cs b/Prebuild/src/Core/Targets/VSVersion.cs
deleted file mode 100644
index 59549b0..0000000
--- a/Prebuild/src/Core/Targets/VSVersion.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2008-2009 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com), John Anderson (sontek@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-namespace Prebuild.Core.Targets
-{
- ///
- ///
- ///
- public enum VSVersion
- {
- ///
- /// Visual Studio 2002
- ///
- VS70,
- ///
- /// Visual Studio 2003
- ///
- VS71,
- ///
- /// Visual Studio 2005
- ///
- VS80,
- ///
- /// Visual Studio 2008
- ///
- VS90,
- ///
- /// Visual Studio 2010
- ///
- VS10
- }
-}
diff --git a/Prebuild/src/Core/Targets/XcodeTarget.cs b/Prebuild/src/Core/Targets/XcodeTarget.cs
deleted file mode 100644
index d96f65b..0000000
--- a/Prebuild/src/Core/Targets/XcodeTarget.cs
+++ /dev/null
@@ -1,596 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.IO;
-using System.Reflection;
-using System.Text.RegularExpressions;
-
-using Prebuild.Core.Attributes;
-using Prebuild.Core.Interfaces;
-using Prebuild.Core.Nodes;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild.Core.Targets
-{
- ///
- ///
- ///
- [Target("xcode")]
- public class XcodeTarget : ITarget
- {
- #region Fields
-
- private Kernel m_Kernel;
-
- #endregion
-
- #region Private Methods
-
- private static string PrependPath(string path)
- {
- string tmpPath = Helper.NormalizePath(path, '/');
- Regex regex = new Regex(@"(\w):/(\w+)");
- Match match = regex.Match(tmpPath);
- //if(match.Success || tmpPath[0] == '.' || tmpPath[0] == '/')
- //{
- tmpPath = Helper.NormalizePath(tmpPath);
- //}
- // else
- // {
- // tmpPath = Helper.NormalizePath("./" + tmpPath);
- // }
-
- return tmpPath;
- }
-
- private static string BuildReference(SolutionNode solution, ReferenceNode refr)
- {
- string ret = "";
- if (solution.ProjectsTable.ContainsKey(refr.Name))
- {
- ProjectNode project = (ProjectNode)solution.ProjectsTable[refr.Name];
- string fileRef = FindFileReference(refr.Name, project);
- string finalPath = Helper.NormalizePath(Helper.MakeFilePath(project.FullPath + "/${build.dir}/", refr.Name, "dll"), '/');
- ret += finalPath;
- return ret;
- }
- else
- {
- ProjectNode project = (ProjectNode)refr.Parent;
- string fileRef = FindFileReference(refr.Name, project);
-
- if (refr.Path != null || fileRef != null)
- {
- string finalPath = (refr.Path != null) ? Helper.NormalizePath(refr.Path + "/" + refr.Name + ".dll", '/') : fileRef;
- ret += finalPath;
- return ret;
- }
-
- try
- {
- //Assembly assem = Assembly.Load(refr.Name);
- //if (assem != null)
- //{
- //ret += (refr.Name + ".dll");
- //}
- //else
- //{
- ret += (refr.Name + ".dll");
- //}
- }
- catch (System.NullReferenceException e)
- {
- e.ToString();
- ret += refr.Name + ".dll";
- }
- }
- return ret;
- }
-
- private static string BuildReferencePath(SolutionNode solution, ReferenceNode refr)
- {
- string ret = "";
- if (solution.ProjectsTable.ContainsKey(refr.Name))
- {
- ProjectNode project = (ProjectNode)solution.ProjectsTable[refr.Name];
- string fileRef = FindFileReference(refr.Name, project);
- string finalPath = Helper.NormalizePath(Helper.MakeReferencePath(project.FullPath + "/${build.dir}/"), '/');
- ret += finalPath;
- return ret;
- }
- else
- {
- ProjectNode project = (ProjectNode)refr.Parent;
- string fileRef = FindFileReference(refr.Name, project);
-
- if (refr.Path != null || fileRef != null)
- {
- string finalPath = (refr.Path != null) ? Helper.NormalizePath(refr.Path, '/') : fileRef;
- ret += finalPath;
- return ret;
- }
-
- try
- {
- Assembly assem = Assembly.Load(refr.Name);
- if (assem != null)
- {
- ret += "";
- }
- else
- {
- ret += "";
- }
- }
- catch (System.NullReferenceException e)
- {
- e.ToString();
- ret += "";
- }
- }
- return ret;
- }
-
- private static string FindFileReference(string refName, ProjectNode project)
- {
- foreach (ReferencePathNode refPath in project.ReferencePaths)
- {
- string fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll");
-
- if (File.Exists(fullPath))
- {
- return fullPath;
- }
- }
-
- return null;
- }
-
- ///
- /// Gets the XML doc file.
- ///
- /// The project.
- /// The conf.
- ///
- public static string GetXmlDocFile(ProjectNode project, ConfigurationNode conf)
- {
- if (conf == null)
- {
- throw new ArgumentNullException("conf");
- }
- if (project == null)
- {
- throw new ArgumentNullException("project");
- }
- string docFile = (string)conf.Options["XmlDocFile"];
- // if(docFile != null && docFile.Length == 0)//default to assembly name if not specified
- // {
- // return Path.GetFileNameWithoutExtension(project.AssemblyName) + ".xml";
- // }
- return docFile;
- }
-
- private void WriteProject(SolutionNode solution, ProjectNode project)
- {
- string projFile = Helper.MakeFilePath(project.FullPath, project.Name + (project.Type == ProjectType.Library ? ".dll" : ".exe"), "build");
- StreamWriter ss = new StreamWriter(projFile);
-
- m_Kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(projFile));
- bool hasDoc = false;
-
- using (ss)
- {
- ss.WriteLine("");
- ss.WriteLine("", project.Name);
- ss.WriteLine(" ", "build");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- foreach (ReferenceNode refr in project.References)
- {
- if (refr.LocalCopy)
- {
- ss.WriteLine(" ", '/'));
- }
- }
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.Write(" ");
- ss.WriteLine(" ", project.RootNamespace);
- foreach (string file in project.Files)
- {
- switch (project.Files.GetBuildAction(file))
- {
- case BuildAction.EmbeddedResource:
- ss.WriteLine(" {0}", "");
- break;
- default:
- if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings)
- {
- ss.WriteLine(" ", file.Substring(0, file.LastIndexOf('.')) + ".resx");
- }
- break;
- }
- }
- //if (project.Files.GetSubType(file).ToString() != "Code")
- //{
- // ps.WriteLine(" ", file.Substring(0, file.LastIndexOf('.')) + ".resx");
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- foreach (string file in project.Files)
- {
- switch (project.Files.GetBuildAction(file))
- {
- case BuildAction.Compile:
- ss.WriteLine(" ");
- break;
- default:
- break;
- }
- }
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- foreach (ReferenceNode refr in project.References)
- {
- ss.WriteLine(" ", '/'));
- }
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
-
- ss.WriteLine(" ");
- if (hasDoc)
- {
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.Write(" ");
- }
- else
- {
- ss.WriteLine(".exe\" />");
- }
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- // foreach(ReferenceNode refr in project.References)
- // {
- // string path = Helper.NormalizePath(Helper.MakePathRelativeTo(project.FullPath, BuildReferencePath(solution, refr)), '/');
- // if (path != "")
- // {
- // ss.WriteLine(" ", path);
- // }
- // }
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- }
- ss.WriteLine(" ");
- ss.WriteLine("");
- }
- m_Kernel.CurrentWorkingDirectory.Pop();
- }
-
- private void WriteCombine(SolutionNode solution)
- {
- m_Kernel.Log.Write("Creating Xcode build files");
- foreach (ProjectNode project in solution.Projects)
- {
- if (m_Kernel.AllowProject(project.FilterGroups))
- {
- m_Kernel.Log.Write("...Creating project: {0}", project.Name);
- WriteProject(solution, project);
- }
- }
-
- m_Kernel.Log.Write("");
- DirectoryInfo directoryInfo = new DirectoryInfo(Path.Combine(solution.FullPath, solution.Name + ".xcodeproj"));
- if (!directoryInfo.Exists)
- {
- directoryInfo.Create();
- }
- string combFile = Helper.MakeFilePath(Path.Combine(solution.FullPath, solution.Name + ".xcodeproj"), "project", "pbxproj");
- StreamWriter ss = new StreamWriter(combFile);
-
- m_Kernel.CurrentWorkingDirectory.Push();
- Helper.SetCurrentDir(Path.GetDirectoryName(combFile));
-
- using (ss)
- {
- ss.WriteLine("");
- ss.WriteLine("", solution.Name);
- ss.WriteLine(" ");
- ss.WriteLine();
-
- //ss.WriteLine(" ");
- //ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
-
- foreach (ConfigurationNode conf in solution.Configurations)
- {
- // Set the project.config to a non-debug configuration
- if (conf.Options["DebugInformation"].ToString().ToLower() != "true")
- {
- ss.WriteLine(" ", conf.Name);
- }
- ss.WriteLine();
- ss.WriteLine(" ", conf.Name);
- ss.WriteLine(" ", conf.Name);
- ss.WriteLine(" ", conf.Options["DebugInformation"].ToString().ToLower());
- ss.WriteLine(" ");
- ss.WriteLine();
- }
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- //ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- //foreach(ProjectNode project in solution.Projects)
- //{
- // string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
- // ss.Write(" ");
- //}
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
-
- foreach (ProjectNode project in solution.ProjectsTableOrder)
- {
- string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
- ss.Write(" ");
- }
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine();
- ss.WriteLine(" ");
- ss.WriteLine();
- //ss.WriteLine(" ");
- ss.WriteLine(" ");
- ss.WriteLine();
-
- ss.WriteLine(" ");
- ss.WriteLine(" ");
- foreach (ProjectNode project in solution.Projects)
- {
- string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
- ss.Write(" ");
- }
- ss.WriteLine(" ");
- ss.WriteLine();
- ss.WriteLine("");
- }
-
- m_Kernel.CurrentWorkingDirectory.Pop();
- }
-
- private void CleanProject(ProjectNode project)
- {
- m_Kernel.Log.Write("...Cleaning project: {0}", project.Name);
- string projectFile = Helper.MakeFilePath(project.FullPath, project.Name + (project.Type == ProjectType.Library ? ".dll" : ".exe"), "build");
- Helper.DeleteIfExists(projectFile);
- }
-
- private void CleanSolution(SolutionNode solution)
- {
- m_Kernel.Log.Write("Cleaning Xcode build files for", solution.Name);
-
- string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "build");
- Helper.DeleteIfExists(slnFile);
-
- foreach (ProjectNode project in solution.Projects)
- {
- CleanProject(project);
- }
-
- m_Kernel.Log.Write("");
- }
-
- #endregion
-
- #region ITarget Members
-
- ///
- /// Writes the specified kern.
- ///
- /// The kern.
- public void Write(Kernel kern)
- {
- if (kern == null)
- {
- throw new ArgumentNullException("kern");
- }
- m_Kernel = kern;
- foreach (SolutionNode solution in kern.Solutions)
- {
- WriteCombine(solution);
- }
- m_Kernel = null;
- }
-
- ///
- /// Cleans the specified kern.
- ///
- /// The kern.
- public virtual void Clean(Kernel kern)
- {
- if (kern == null)
- {
- throw new ArgumentNullException("kern");
- }
- m_Kernel = kern;
- foreach (SolutionNode sol in kern.Solutions)
- {
- CleanSolution(sol);
- }
- m_Kernel = null;
- }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get
- {
- return "xcode";
- }
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/UnknownLanguageException.cs b/Prebuild/src/Core/UnknownLanguageException.cs
deleted file mode 100644
index 607b66c..0000000
--- a/Prebuild/src/Core/UnknownLanguageException.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * $RCSfile$
- * Copyright (C) 2004, 2005 David Hudson (jendave@yahoo.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-using System;
-using System.Runtime.Serialization;
-
-namespace Prebuild.Core
-{
- ///
- ///
- [Serializable()]
- public class UnknownLanguageException : Exception
- {
- ///
- /// Basic exception.
- ///
- public UnknownLanguageException()
- {
- }
-
- ///
- /// Exception with specified string
- ///
- /// Exception message
- public UnknownLanguageException(string message): base(message)
- {
- }
-
- ///
- ///
- ///
- ///
- ///
- public UnknownLanguageException(string message, Exception exception) : base(message, exception)
- {
- }
-
- ///
- ///
- ///
- ///
- ///
- protected UnknownLanguageException(SerializationInfo info, StreamingContext context) : base( info, context )
- {
- }
- }
-}
diff --git a/Prebuild/src/Core/Utilities/CommandLineCollection.cs b/Prebuild/src/Core/Utilities/CommandLineCollection.cs
deleted file mode 100644
index 22752aa..0000000
--- a/Prebuild/src/Core/Utilities/CommandLineCollection.cs
+++ /dev/null
@@ -1,153 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Diagnostics;
-
-namespace Prebuild.Core.Utilities
-{
- ///
- /// The CommandLine class parses and interprets the command-line arguments passed to
- /// prebuild.
- ///
- public class CommandLineCollection
- {
- #region Fields
-
- // The raw OS arguments
- private string[] m_RawArgs;
-
- // Command-line argument storage
- private Hashtable m_Arguments;
-
- #endregion
-
- #region Constructors
-
- ///
- /// Create a new CommandLine instance and set some internal variables.
- ///
- public CommandLineCollection(string[] args)
- {
- m_RawArgs = args;
- m_Arguments = new Hashtable();
-
- Parse();
- }
-
- #endregion
-
- #region Private Methods
-
- private void Parse()
- {
- if(m_RawArgs.Length < 1)
- return;
-
- int idx = 0;
- string arg = null, lastArg = null;
-
- while(idx 2 && arg[0] == '/')
- {
- arg = arg.Substring(1);
- lastArg = arg;
- m_Arguments[arg] = "";
- }
- else
- {
- if(lastArg != null)
- {
- m_Arguments[lastArg] = arg;
- lastArg = null;
- }
- }
-
- idx++;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Wases the passed.
- ///
- /// The arg.
- ///
- public bool WasPassed(string arg)
- {
- return (m_Arguments.ContainsKey(arg));
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets the parameter associated with the command line option
- ///
- /// Returns null if option was not specified,
- /// null string if no parameter was specified, and the value if a parameter was specified
- public string this[string index]
- {
- get
- {
- if(m_Arguments.ContainsKey(index))
- {
- return (string)(m_Arguments[index]);
- }
- else
- {
- return null;
- }
- }
- }
-
- #endregion
-
- #region IEnumerable Members
-
- ///
- /// Returns an enumerator that can iterate through a collection.
- ///
- ///
- /// An
- /// that can be used to iterate through the collection.
- ///
- public IDictionaryEnumerator GetEnumerator()
- {
- return m_Arguments.GetEnumerator();
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Utilities/CurrentDirectory.cs b/Prebuild/src/Core/Utilities/CurrentDirectory.cs
deleted file mode 100644
index 5fabdf0..0000000
--- a/Prebuild/src/Core/Utilities/CurrentDirectory.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-
-namespace Prebuild.Core.Utilities
-{
- ///
- ///
- ///
- public class CurrentDirectory
- {
- #region Fields
-
- private Stack m_Stack;
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- public CurrentDirectory()
- {
- m_Stack = new Stack();
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Pushes this instance.
- ///
- public void Push()
- {
- m_Stack.Push(Environment.CurrentDirectory);
- }
-
- ///
- /// Pops this instance.
- ///
- public void Pop()
- {
- if(m_Stack.Count < 1)
- {
- return;
- }
-
- string cwd = (string)m_Stack.Pop();
- Helper.SetCurrentDir(cwd);
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Utilities/Helper.cs b/Prebuild/src/Core/Utilities/Helper.cs
deleted file mode 100644
index 9a0d131..0000000
--- a/Prebuild/src/Core/Utilities/Helper.cs
+++ /dev/null
@@ -1,654 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Collections;
-using System.Diagnostics;
-using System.IO;
-using System.Runtime.InteropServices;
-using System.Text.RegularExpressions;
-using System.Collections.Specialized;
-using System.Xml;
-using Prebuild.Core.Nodes;
-
-namespace Prebuild.Core.Utilities
-{
- ///
- ///
- ///
- public class Helper
- {
- #region Fields
-
- private static Stack dirStack;
- private static Regex varRegex;
- static bool checkForOSVariables;
-
- ///
- ///
- ///
- public static bool CheckForOSVariables
- {
- get
- {
- return checkForOSVariables;
- }
- set
- {
- checkForOSVariables = value;
- }
- }
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes the class.
- ///
- static Helper()
- {
- dirStack = new Stack();
- //m_VarRegex = new Regex(@"\${(?[\w|_]+)}");
- }
-
- #endregion
-
- #region Properties
-
- ///
- ///
- ///
- public static Stack DirStack
- {
- get
- {
- return dirStack;
- }
- }
-
- ///
- ///
- ///
- public static Regex VarRegex
- {
- get
- {
- return varRegex;
- }
- set
- {
- varRegex = value;
- }
- }
-
- #endregion
-
- #region Public Methods
-
- #region String Parsing
- #region Inner Classes and Delegates
- ///
- ///
- ///
- public delegate string StringLookup(string key);
-
- #endregion
-
- ///
- /// Gets a collection of StringLocationPair objects that represent the matches
- ///
- /// The target.
- /// The before group.
- /// The after group.
- /// if set to true [include delimiters in substrings].
- ///
- public static StringCollection FindGroups(string target, string beforeGroup, string afterGroup, bool includeDelimitersInSubstrings)
- {
- if( beforeGroup == null )
- {
- throw new ArgumentNullException("beforeGroup");
- }
- if( afterGroup == null )
- {
- throw new ArgumentNullException("afterGroup");
- }
- StringCollection results = new StringCollection();
- if(target == null || target.Length == 0)
- {
- return results;
- }
-
- int beforeMod = 0;
- int afterMod = 0;
- if(includeDelimitersInSubstrings)
- {
- //be sure to not exlude the delims
- beforeMod = beforeGroup.Length;
- afterMod = afterGroup.Length;
- }
- int startIndex = 0;
- while((startIndex = target.IndexOf(beforeGroup,startIndex)) != -1) {
- int endIndex = target.IndexOf(afterGroup,startIndex);//the index of the char after it
- if(endIndex == -1)
- {
- break;
- }
- int length = endIndex - startIndex - beforeGroup.Length;//move to the first char in the string
- string substring = substring = target.Substring(startIndex + beforeGroup.Length - beforeMod,
- length - afterMod);
-
- results.Add(substring);
- //results.Add(new StringLocationPair(substring,startIndex));
- startIndex = endIndex + 1;
- //the Interpolate*() methods will not work if expressions are expandded inside expression due to an optimization
- //so start after endIndex
-
- }
- return results;
- }
-
- ///
- /// Replaces the groups.
- ///
- /// The target.
- /// The before group.
- /// The after group.
- /// The lookup.
- ///
- public static string ReplaceGroups(string target, string beforeGroup, string afterGroup, StringLookup lookup) {
- if( target == null )
- {
- throw new ArgumentNullException("target");
- }
- //int targetLength = target.Length;
- StringCollection strings = FindGroups(target,beforeGroup,afterGroup,false);
- if( lookup == null )
- {
- throw new ArgumentNullException("lookup");
- }
- foreach(string substring in strings)
- {
- target = target.Replace(beforeGroup + substring + afterGroup, lookup(substring) );
- }
- return target;
- }
-
- ///
- /// Replaces ${var} statements in a string with the corresonding values as detirmined by the lookup delegate
- ///
- /// The target.
- /// The lookup.
- ///
- public static string InterpolateForVariables(string target, StringLookup lookup)
- {
- return ReplaceGroups(target, "${" , "}" , lookup);
- }
-
- ///
- /// Replaces ${var} statements in a string with the corresonding environment variable with name var
- ///
- ///
- ///
- public static string InterpolateForEnvironmentVariables(string target)
- {
- return InterpolateForVariables(target, new StringLookup(Environment.GetEnvironmentVariable));
- }
-
- #endregion
-
- ///
- /// Translates the value.
- ///
- /// Type of the translate.
- /// The translation item.
- ///
- public static object TranslateValue(Type translateType, string translationItem)
- {
- if(translationItem == null)
- {
- return null;
- }
-
- try
- {
- string lowerVal = translationItem.ToLower();
- if(translateType == typeof(bool))
- {
- return (lowerVal == "true" || lowerVal == "1" || lowerVal == "y" || lowerVal == "yes" || lowerVal == "on");
- }
- else if(translateType == typeof(int))
- {
- return (Int32.Parse(translationItem));
- }
- else
- {
- return translationItem;
- }
- }
- catch(FormatException)
- {
- return null;
- }
- }
-
- ///
- /// Deletes if exists.
- ///
- /// The file.
- ///
- public static bool DeleteIfExists(string file)
- {
- string resFile = null;
- try
- {
- resFile = ResolvePath(file);
- }
- catch(ArgumentException)
- {
- return false;
- }
-
- if(!File.Exists(resFile))
- {
- return false;
- }
-
- File.Delete(resFile);
- return true;
- }
-
- static readonly char seperator = Path.DirectorySeparatorChar;
-
- // This little gem was taken from the NeL source, thanks guys!
- ///
- /// Makes a relative path
- ///
- /// Path to start from
- /// Path to end at
- /// Path that will get from startPath to endPath
- public static string MakePathRelativeTo(string startPath, string endPath)
- {
- string tmp = NormalizePath(startPath, seperator);
- string src = NormalizePath(endPath, seperator);
- string prefix = "";
-
- while(true)
- {
- if((String.Compare(tmp, 0, src, 0, tmp.Length) == 0))
- {
- string ret;
- int size = tmp.Length;
- if(size == src.Length)
- {
- return "./";
- }
- if((src.Length > tmp.Length) && src[tmp.Length - 1] != seperator)
- {
- }
- else
- {
- ret = prefix + endPath.Substring(size, endPath.Length - size);
- ret = ret.Trim();
- if(ret[0] == seperator)
- {
- ret = "." + ret;
- }
-
- return NormalizePath(ret);
- }
-
- }
-
- if(tmp.Length < 2)
- {
- break;
- }
-
- int lastPos = tmp.LastIndexOf(seperator, tmp.Length - 2);
- int prevPos = tmp.IndexOf(seperator);
-
- if((lastPos == prevPos) || (lastPos == -1))
- {
- break;
- }
-
- tmp = tmp.Substring(0, lastPos + 1);
- prefix += ".." + seperator.ToString();
- }
-
- return endPath;
- }
-
- ///
- /// Resolves the path.
- ///
- /// The path.
- ///
- public static string ResolvePath(string path)
- {
- string tmpPath = NormalizePath(path);
- if(tmpPath.Length < 1)
- {
- tmpPath = ".";
- }
-
- tmpPath = Path.GetFullPath(tmpPath);
- if(!File.Exists(tmpPath) && !Directory.Exists(tmpPath))
- {
- throw new ArgumentException("Path could not be resolved: " + tmpPath);
- }
-
- return tmpPath;
- }
-
- ///
- /// Normalizes the path.
- ///
- /// The path.
- /// The separator character.
- ///
- public static string NormalizePath(string path, char separatorCharacter)
- {
- if(path == null || path == "" || path.Length < 1)
- {
- return "";
- }
-
- string tmpPath = path.Replace('\\', '/');
- tmpPath = tmpPath.Replace('/', separatorCharacter);
- return tmpPath;
- }
-
- ///
- /// Normalizes the path.
- ///
- /// The path.
- ///
- public static string NormalizePath(string path)
- {
- return NormalizePath(path, Path.DirectorySeparatorChar);
- }
-
- ///
- /// Ends the path.
- ///
- /// The path.
- /// The separator character.
- ///
- public static string EndPath(string path, char separatorCharacter)
- {
- if(path == null || path == "" || path.Length < 1)
- {
- return "";
- }
-
- if(!path.EndsWith(separatorCharacter.ToString()))
- {
- return (path + separatorCharacter);
- }
-
- return path;
- }
-
- ///
- /// Ends the path.
- ///
- /// The path.
- ///
- public static string EndPath(string path)
- {
- return EndPath(path, Path.DirectorySeparatorChar);
- }
-
- ///
- /// Makes the file path.
- ///
- /// The path.
- /// The name.
- /// The ext.
- ///
- public static string MakeFilePath(string path, string name, string ext)
- {
- string ret = EndPath(NormalizePath(path));
-
- if( name == null )
- {
- throw new ArgumentNullException("name");
- }
-
- ret += name;
- if(!name.EndsWith("." + ext))
- {
- ret += "." + ext;
- }
-
- //foreach(char c in Path.GetInvalidPathChars())
- //{
- // ret = ret.Replace(c, '_');
- //}
-
- return ret;
- }
-
- ///
- /// Makes the file path.
- ///
- /// The path.
- /// The name.
- ///
- public static string MakeFilePath(string path, string name)
- {
- string ret = EndPath(NormalizePath(path));
-
- if( name == null )
- {
- throw new ArgumentNullException("name");
- }
-
- ret += name;
-
- //foreach (char c in Path.GetInvalidPathChars())
- //{
- // ret = ret.Replace(c, '_');
- //}
-
- return ret;
- }
-
- ///
- ///
- ///
- ///
- ///
- public static string MakeReferencePath(string path)
- {
- string ret = EndPath(NormalizePath(path));
-
- //foreach (char c in Path.GetInvalidPathChars())
- //{
- // ret = ret.Replace(c, '_');
- //}
-
- return ret;
- }
-
- ///
- /// Sets the current dir.
- ///
- /// The path.
- public static void SetCurrentDir(string path)
- {
- if( path == null )
- {
- throw new ArgumentNullException("path");
- }
- if(path.Length < 1)
- {
- return;
- }
-
- Environment.CurrentDirectory = path;
- }
-
- ///
- /// Checks the type.
- ///
- /// The type to check.
- /// The attr.
- /// The inter.
- ///
- public static object CheckType(Type typeToCheck, Type attr, Type inter)
- {
- if(typeToCheck == null || attr == null)
- {
- return null;
- }
-
- object[] attrs = typeToCheck.GetCustomAttributes(attr, false);
- if(attrs == null || attrs.Length < 1)
- {
- return null;
- }
- if( inter == null )
- {
- throw new ArgumentNullException("inter");
- }
-
- if(typeToCheck.GetInterface(inter.FullName) == null)
- {
- return null;
- }
-
- return attrs[0];
- }
-
- /* A bit of overhead for simple group parsing, there are problems with Regex in Mono
- public static string ParseValue(string val)
- {
- if(val == null || val.Length < 1 || !CheckForOSVariables)
- return val;
-
- string tmp = val;
- Match m = m_VarRegex.Match(val);
- while(m.Success)
- {
- if(m.Groups["var"] == null)
- continue;
-
- Capture c = m.Groups["var"].Captures[0];
- if(c == null)
- continue;
-
- string var = c.Value;
- string envVal = Environment.GetEnvironmentVariable(var);
- if(envVal == null)
- envVal = "";
-
- tmp = tmp.Replace("${" + var + "}", envVal);
- m = m.NextMatch();
- }
-
- return tmp;
- }*/
-
- ///
- /// Attributes the value.
- ///
- /// The node.
- /// The attr.
- /// The def.
- ///
- public static string AttributeValue(XmlNode node, string attr, string def)
- {
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
- if(node.Attributes[attr] == null)
- {
- return def;
- }
- string val = node.Attributes[attr].Value;
- if(!CheckForOSVariables)
- {
- return val;
- }
-
- return InterpolateForEnvironmentVariables(val);
- }
-
- ///
- /// Parses the boolean.
- ///
- /// The node.
- /// The attr.
- /// if set to true [default value].
- ///
- public static bool ParseBoolean(XmlNode node, string attr, bool defaultValue)
- {
- if( node == null )
- {
- throw new ArgumentNullException("node");
- }
- if(node.Attributes[attr] == null)
- {
- return defaultValue;
- }
- return bool.Parse(node.Attributes[attr].Value);
- }
-
- ///
- /// Enums the attribute value.
- ///
- /// The node.
- /// The attr.
- /// Type of the enum.
- /// The def.
- ///
- public static object EnumAttributeValue(XmlNode node, string attr, Type enumType, object def)
- {
- if( def == null )
- {
- throw new ArgumentNullException("def");
- }
- string val = AttributeValue(node, attr, def.ToString());
- return Enum.Parse(enumType, val, true);
- }
-
- ///
- ///
- ///
- ///
- ///
- ///
- public static string AssemblyFullName(string assemblyName, ProjectType projectType)
- {
- return assemblyName + (projectType == ProjectType.Library ? ".dll" : ".exe");
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/Utilities/Log.cs b/Prebuild/src/Core/Utilities/Log.cs
deleted file mode 100644
index 548e987..0000000
--- a/Prebuild/src/Core/Utilities/Log.cs
+++ /dev/null
@@ -1,270 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.IO;
-
-namespace Prebuild.Core.Utilities
-{
- ///
- ///
- ///
- public enum LogType
- {
- ///
- ///
- ///
- None,
- ///
- ///
- ///
- Info,
- ///
- ///
- ///
- Warning,
- ///
- ///
- ///
- Error
- }
-
- ///
- ///
- ///
- [Flags]
- public enum LogTargets
- {
- ///
- ///
- ///
- None = 0,
- ///
- ///
- ///
- Null = 1,
- ///
- ///
- ///
- File = 2,
- ///
- ///
- ///
- Console = 4
- }
-
- ///
- /// Summary description for Log.
- ///
- public class Log : IDisposable
- {
- #region Fields
-
- private StreamWriter m_Writer;
- private LogTargets m_Target = LogTargets.Null;
- bool disposed;
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The target.
- /// Name of the file.
- public Log(LogTargets target, string fileName)
- {
- m_Target = target;
-
- if((m_Target & LogTargets.File) != 0)
- {
- m_Writer = new StreamWriter(fileName, false);
- }
- }
-
- #endregion
-
- #region Public Methods
-
- ///
- /// Writes this instance.
- ///
- public void Write()
- {
- Write(string.Empty);
- }
-
- ///
- /// Writes the specified MSG.
- ///
- /// The MSG.
- public void Write(string msg)
- {
- if((m_Target & LogTargets.Null) != 0)
- {
- return;
- }
-
- if((m_Target & LogTargets.Console) != 0)
- {
- Console.WriteLine(msg);
- }
- if((m_Target & LogTargets.File) != 0 && m_Writer != null)
- {
- m_Writer.WriteLine(msg);
- }
- }
-
- ///
- /// Writes the specified format.
- ///
- /// The format.
- /// The args.
- public void Write(string format, params object[] args)
- {
- Write(string.Format(format,args));
- }
-
- ///
- /// Writes the specified type.
- ///
- /// The type.
- /// The format.
- /// The args.
- public void Write(LogType type, string format, params object[] args)
- {
- if((m_Target & LogTargets.Null) != 0)
- {
- return;
- }
-
- string str = "";
- switch(type)
- {
- case LogType.Info:
- str = "[I] ";
- break;
- case LogType.Warning:
- str = "[!] ";
- break;
- case LogType.Error:
- str = "[X] ";
- break;
- }
-
- Write(str + format,args);
- }
-
- ///
- /// Writes the exception.
- ///
- /// The type.
- /// The ex.
- public void WriteException(LogType type, Exception ex)
- {
- if(ex != null)
- {
- Write(type, ex.Message);
- //#if DEBUG
- m_Writer.WriteLine("Exception @{0} stack trace [[", ex.TargetSite.Name);
- m_Writer.WriteLine(ex.StackTrace);
- m_Writer.WriteLine("]]");
- //#endif
- }
- }
-
- ///
- /// Flushes this instance.
- ///
- public void Flush()
- {
- if(m_Writer != null)
- {
- m_Writer.Flush();
- }
- }
-
- #endregion
-
- #region IDisposable Members
-
- ///
- /// Performs application-defined tasks associated with freeing, releasing, or
- /// resetting unmanaged resources.
- ///
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- ///
- /// Dispose objects
- ///
- ///
- /// If true, it will dispose close the handle
- ///
- ///
- /// Will dispose managed and unmanaged resources.
- ///
- protected virtual void Dispose(bool disposing)
- {
- if (!this.disposed)
- {
- if (disposing)
- {
- if (m_Writer != null)
- {
- m_Writer.Close();
- m_Writer = null;
- }
- }
- }
- this.disposed = true;
- }
-
- ///
- ///
- ///
- ~Log()
- {
- this.Dispose(false);
- }
-
- ///
- /// Closes and destroys this object
- ///
- ///
- /// Same as Dispose(true)
- ///
- public void Close()
- {
- Dispose();
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Core/WarningException.cs b/Prebuild/src/Core/WarningException.cs
deleted file mode 100644
index df90dc8..0000000
--- a/Prebuild/src/Core/WarningException.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-using System;
-using System.Runtime.Serialization;
-
-namespace Prebuild.Core
-{
- ///
- ///
- ///
- [Serializable()]
- public class WarningException : Exception
- {
- #region Constructors
-
- ///
- ///
- ///
- public WarningException()
- {
- }
-
- ///
- ///
- ///
- ///
- ///
- public WarningException(string format, params object[] args)
- : base(String.Format(format, args))
- {
- }
-
- ///
- /// Exception with specified string
- ///
- /// Exception message
- public WarningException(string message): base(message)
- {
- }
-
- ///
- ///
- ///
- ///
- ///
- public WarningException(string message, Exception exception) : base(message, exception)
- {
- }
-
- ///
- ///
- ///
- ///
- ///
- protected WarningException(SerializationInfo info, StreamingContext context) : base( info, context )
- {
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Prebuild.cs b/Prebuild/src/Prebuild.cs
deleted file mode 100644
index 2d12b53..0000000
--- a/Prebuild/src/Prebuild.cs
+++ /dev/null
@@ -1,165 +0,0 @@
-#region BSD License
-/*
-Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
-* The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#endregion
-
-#region CVS Information
-/*
- * $Source$
- * $Author: jendave $
- * $Date: 2006-09-26 23:43:35 +0200 (ti, 26 sep 2006) $
- * $Revision: 168 $
- */
-#endregion
-
-using System;
-using System.Collections.Specialized;
-using System.IO;
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.EnterpriseServices.Internal;
-
-using Prebuild.Core;
-using Prebuild.Core.Utilities;
-
-namespace Prebuild
-{
- ///
- ///
- ///
- class Prebuild
- {
- #region Main
-
- [STAThread]
- static void Main(string[] args)
- {
- Kernel kernel = null;
- try
- {
- kernel = Kernel.Instance;
- kernel.Initialize(LogTargets.File | LogTargets.Console, args);
- bool exit = false;
-
- if(kernel.CommandLine.WasPassed("usage"))
- {
- exit = true;
- OutputUsage();
- }
- if(kernel.CommandLine.WasPassed("showtargets"))
- {
- exit = true;
- OutputTargets(kernel);
- }
- if(kernel.CommandLine.WasPassed("install"))
- {
- exit = true;
- InstallAssembly(kernel);
- }
- if(kernel.CommandLine.WasPassed("remove"))
- {
- exit = true;
- RemoveAssembly(kernel);
- }
-
- if(!exit)
- {
- kernel.Process();
- }
- }
- catch(Exception ex)
- {
- Console.WriteLine("Unhandled error: {0}", ex.Message);
- //#if DEBUG
- Console.WriteLine("{0}", ex.StackTrace);
- //#endif
- }
- finally
- {
- if(kernel.PauseAfterFinish)
- {
- Console.WriteLine("\nPress enter to continue...");
- Console.ReadLine();
- }
- }
- }
-
- #endregion
-
- #region Private Methods
-
- private static void InstallAssembly(Kernel kernel)
- {
- Publish publish = new Publish();
- string file = kernel.CommandLine["install"];
- //Console.WriteLine(".."+file+"..");
- publish.GacInstall(file);
- }
-
- private static void RemoveAssembly(Kernel kernel)
- {
- Publish publish = new Publish();
- string file = kernel.CommandLine["remove"];
- publish.GacRemove(file);
- }
-
- private static void OutputUsage()
- {
- Console.WriteLine("Usage: prebuild /target [options]");
- Console.WriteLine("Available command-line switches:");
- Console.WriteLine();
- Console.WriteLine("/target Target for Prebuild");
- Console.WriteLine("/clean Clean the build files for the given target");
- Console.WriteLine("/file XML file to process");
- Console.WriteLine("/log Log file to write to");
- Console.WriteLine("/ppo Pre-process the file, but perform no other processing");
- Console.WriteLine("/pause Pauses the application after execution to view the output");
- Console.WriteLine("/yes Default to yes to any questions asked");
- Console.WriteLine("/install Install assembly into the GAC");
- Console.WriteLine("/remove Remove assembly from the GAC");
- Console.WriteLine();
- Console.WriteLine("See 'prebuild /showtargets for a list of available targets");
- Console.WriteLine("See readme.txt or check out http://dnpb.sourceforge.net for more information");
- Console.WriteLine();
- }
-
- private static void OutputTargets(Kernel kern)
- {
- Console.WriteLine("Targets available in Prebuild:");
- Console.WriteLine("");
- if(kern.Targets.Keys.Count > 0)
- {
- string[] targs = new string[kern.Targets.Keys.Count];
- kern.Targets.Keys.CopyTo(targs, 0);
- Array.Sort(targs);
- foreach(string target in targs)
- {
- Console.WriteLine(target);
- }
- }
- Console.WriteLine("");
- }
-
- #endregion
- }
-}
diff --git a/Prebuild/src/Prebuild.snk b/Prebuild/src/Prebuild.snk
deleted file mode 100644
index f9dce05..0000000
Binary files a/Prebuild/src/Prebuild.snk and /dev/null differ
diff --git a/Prebuild/src/Properties/AssemblyInfo.cs b/Prebuild/src/Properties/AssemblyInfo.cs
deleted file mode 100644
index 65c8736..0000000
--- a/Prebuild/src/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,112 +0,0 @@
-#region BSD License
-/*
-
-Copyright (c) 2004 - 2008
-Matthew Holmes (matthew@wildfiregames.com),
-Dan Moorehead (dan05a@gmail.com),
-Dave Hudson (jendave@yahoo.com),
-Rob Loach (http://www.robloach.net),
-C.J. Adams-Collier (cjac@colliertech.org),
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-* Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-* The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-*/
-#endregion
-
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-using System.Resources;
-
-
-// FxCop recommended attributes
-[assembly: ComVisible(false)]
-[assembly: FileIOPermission(SecurityAction.RequestMinimum, Unrestricted=true)]
-[assembly: CLSCompliant(true)]
-
-//
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-//
-[assembly: AssemblyTitle(".NET Prebuild")]
-[assembly: AssemblyDescription("A .NET project file build tool")]
-[assembly: AssemblyConfiguration(".NET CLR")]
-[assembly: AssemblyCompany("The Prebuild Project")]
-[assembly: AssemblyProduct("")]
-[assembly: AssemblyCopyright("Copyright 2004-2008 " +
- "Matthew Holmes, " +
- "Dan Moorehead, " +
- "C.J. Adams-Collier, " +
- "Rob Loach, " +
- "David Hudson,")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-[assembly: NeutralResourcesLanguageAttribute("en-US")]
-[assembly: AssemblyVersion("2.0.4.*")]
-
-//
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers
-// by using the '*' as shown below:
-
-//
-// In order to sign your assembly you must specify a key to use. Refer to the
-// Microsoft .NET Framework documentation for more information on assembly signing.
-//
-// Use the attributes below to control which key is used for signing.
-//
-// Notes:
-// (*) If no key is specified, the assembly is not signed.
-// (*) KeyName refers to a key that has been installed in the Crypto Service
-// Provider (CSP) on your machine. KeyFile refers to a file which contains
-// a key.
-// (*) If the KeyFile and the KeyName values are both specified, the
-// following processing occurs:
-// (1) If the KeyName can be found in the CSP, that key is used.
-// (2) If the KeyName does not exist and the KeyFile does exist, the key
-// in the KeyFile is installed into the CSP and used.
-// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
-// When specifying the KeyFile, the location of the KeyFile should be
-// relative to the project output directory which is
-// %Project Directory%\obj\. For example, if your KeyFile is
-// located in the project directory, you would specify the AssemblyKeyFile
-// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
-// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
-// documentation for more information on this.
-//
-[assembly: AssemblyDelaySign(false)]
-[assembly: AssemblyKeyName("")]
diff --git a/Prebuild/src/data/autotools.xml b/Prebuild/src/data/autotools.xml
deleted file mode 100644
index ee4b064..0000000
--- a/Prebuild/src/data/autotools.xml
+++ /dev/null
@@ -1,790 +0,0 @@
-
-
-
-
- #!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-# Ripped off from Mono, which ripped off from GNOME macros version
-
-DIE=0
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-if [ -n "$MONO_PATH" ]; then
- # from -> /mono/lib:/another/mono/lib
- # to -> /mono /another/mono
- for i in `echo ${MONO_PATH} | tr ":" " "`; do
- i=`dirname ${i}`
- if [ -n "{i}" -a -d "${i}/share/aclocal" ]; then
- ACLOCAL_FLAGS="-I ${i}/share/aclocal $ACLOCAL_FLAGS"
- fi
- if [ -n "{i}" -a -d "${i}/bin" ]; then
- PATH="${i}/bin:$PATH"
- fi
- done
- export PATH
-fi
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have \`autoconf' installed to compile Mono."
- echo "Download the appropriate package for your distribution,"
- echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
- DIE=1
-}
-
-if [ -z "$LIBTOOL" ]; then
- LIBTOOL=`which glibtool 2>/dev/null`
- if [ ! -x "$LIBTOOL" ]; then
- LIBTOOL=`which libtool`
- fi
-fi
-
-(grep "^AM_PROG_LIBTOOL" $srcdir/configure.ac >/dev/null) && {
- ($LIBTOOL --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have \`libtool' installed to compile Mono."
- echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
- }
-}
-
-grep "^AM_GNU_GETTEXT" $srcdir/configure.ac >/dev/null && {
- grep "sed.*POTFILES" $srcdir/configure.ac >/dev/null || \
- (gettext --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have \`gettext' installed to compile Mono."
- echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
- }
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have \`automake' installed to compile Mono."
- echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
- NO_AUTOMAKE=yes
-}
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: Missing \`aclocal'. The version of \`automake'"
- echo "installed doesn't appear recent enough."
- echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
-}
-
-if test "$DIE" -eq 1; then
- exit 1
-fi
-
-if test -z "$NOCONFIGURE"; then
-
-if test -z "$*"; then
- echo "**Warning**: I am going to run \`configure' with no arguments."
- echo "If you wish to pass any to it, please specify them on the"
- echo \`$0\'" command line."
- echo
-fi
-
-fi
-
-case $CC in
-xlc )
- am_opt=--include-deps;;
-esac
-
-
-if grep "^AM_PROG_LIBTOOL" configure.ac >/dev/null; then
- if test -z "$NO_LIBTOOLIZE" ; then
- echo "Running libtoolize..."
- ${LIBTOOL}ize --force --copy
- fi
-fi
-
-echo "Running aclocal $ACLOCAL_FLAGS ..."
-aclocal $ACLOCAL_FLAGS || {
- echo
- echo "**Error**: aclocal failed. This may mean that you have not"
- echo "installed all of the packages you need, or you may need to"
- echo "set ACLOCAL_FLAGS to include \"-I \$prefix/share/aclocal\""
- echo "for the prefix where you installed the packages whose"
- echo "macros were not found"
- exit 1
-}
-
-if grep "^AM_CONFIG_HEADER" configure.ac >/dev/null; then
- echo "Running autoheader..."
- autoheader || { echo "**Error**: autoheader failed."; exit 1; }
-fi
-
-echo "Running automake --gnu $am_opt ..."
-automake --add-missing --gnu $am_opt ||
- { echo "**Error**: automake failed."; exit 1; }
-echo "Running autoconf ..."
-autoconf || { echo "**Error**: autoconf failed."; exit 1; }
-
-conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c
-
-if test x$NOCONFIGURE = x; then
- echo Running $srcdir/configure $conf_flags "$@" ...
- $srcdir/configure $conf_flags "$@" \
- && echo Now type \`make\' to compile $PKG_NAME || exit 1
-else
- echo Skipping configure process.
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- AC_INIT([],[])
-
-AC_PREREQ(2.60)
-AC_CANONICAL_SYSTEM
-AC_CONFIG_AUX_DIR(.)
-AM_INIT_AUTOMAKE([1.9 tar-ustar foreign])
-AM_MAINTAINER_MODE
-dnl AC_PROG_INTLTOOL([0.25])
-AC_PROG_INSTALL
-
-ASSEMBLY_NAME=
-PROJECT_NAME=
-PROJECT_VERSION=$VERSION
-PROJECT_DESCRIPTION=""
-PROJECT_TYPE=""
-
-AC_SUBST(ASSEMBLY_NAME)
-AC_SUBST(PROJECT_NAME)
-AC_SUBST(PROJECT_VERSION)
-AC_SUBST(DESCRIPTION)
-
-AC_MSG_CHECKING([assembly type])
-case $PROJECT_TYPE in
- *Exe)
- ASSEMBLY_EXTENSION=exe
- ;;
- *Library)
- ASSEMBLY_EXTENSION=dll
- ;;
- *)
- AC_MSG_ERROR([*** Please add support for project type $PROJECT_TYPE to configure.ac checks!])
- ;;
-esac
-AC_MSG_RESULT([$PROJECT_TYPE])
-
-AC_SUBST(ASSEMBLY_EXTENSION)
-
-AC_MSG_CHECKING([whether we're compiling from an RCS])
-if test -f "$srcdir/.cvs_version" ; then
- from_rcs=cvs
-else
- if test -f "$srcdir/.svn/entries" ; then
- from_rcs=svn
- else
- from_rcs=no
- fi
-fi
-
-AC_MSG_RESULT($from_rcs)
-
-MONO_REQUIRED_VERSION=1.1
-
-PKG_CHECK_MODULES(MONO_DEPENDENCY, mono >= $MONO_REQUIRED_VERSION, has_mono=true, has_mono=false)
-
-if test "x$has_mono" = "xtrue"; then
- AC_PATH_PROG(RUNTIME, mono, no)
- AC_PATH_PROG(CSC, gmcs, no)
- AC_PATH_PROG(RESGEN, resgen2, no)
- if test `uname -s` = "Darwin"; then
- LIB_PREFIX=
- LIB_SUFFIX=.dylib
- else
- LIB_PREFIX=.so
- LIB_SUFFIX=
- fi
-else
- AC_PATH_PROG(CSC, csc.exe, no)
- if test x$CSC = "xno"; then
- AC_MSG_ERROR([You need to install either mono or .Net])
- else
- RUNTIME=
- LIB_PREFIX=
- LIB_SUFFIX=
- fi
-fi
-
-AC_PATH_PROG(GACUTIL, gacutil)
-if test "x$GACUTIL" = "xno" ; then
- AC_MSG_ERROR([No gacutil tool found])
-fi
-
-GACUTIL_FLAGS='/package /gacdir $(DESTDIR)$(prefix)/lib'
-AC_SUBST(GACUTIL_FLAGS)
-
-AC_SUBST(PATH)
-AC_SUBST(LD_LIBRARY_PATH)
-
-AC_SUBST(LIB_PREFIX)
-AC_SUBST(LIB_SUFFIX)
-AC_SUBST(RUNTIME)
-AC_SUBST(CSC)
-AC_SUBST(RESGEN)
-AC_SUBST(GACUTIL)
-
-AC_SUBST(BASE_DEPENDENCIES_CFLAGS)
-AC_SUBST(BASE_DEPENDENCIES_LIBS)
-
-dnl Find monodoc
-MONODOC_REQUIRED_VERSION=1.0
-AC_SUBST(MONODOC_REQUIRED_VERSION)
-
-PKG_CHECK_MODULES(MONODOC_DEPENDENCY, monodoc >= $MONODOC_REQUIRED_VERSION, enable_monodoc=yes, enable_monodoc=no)
-
-if test "x$enable_monodoc" = "xyes"; then
- AC_PATH_PROG(MONODOC, monodoc, no)
- if test x$MONODOC = xno; then
- enable_monodoc=no
- fi
-else
- MONODOC=
-fi
-
-AC_SUBST(MONODOC)
-AM_CONDITIONAL(ENABLE_MONODOC, test "x$enable_monodoc" = "xyes")
-
-winbuild=no
-case "$host" in
- *-*-mingw*|*-*-cygwin*)
- winbuild=yes
- ;;
-esac
-AM_CONDITIONAL(WINBUILD, test x$winbuild = xyes)
-
-AC_CONFIG_FILES()
-AC_CONFIG_FILES(.pc)
-
-AC_CONFIG_FILES(Makefile)
-AC_OUTPUT
-
-echo "==="
-echo ""
-echo "Project configuration summary"
-echo ""
-echo " * Installation prefix: $prefix"
-echo " * compiler: $CSC"
-echo " * Documentation: $enable_monodoc ($MONODOC)"
-echo " * Project Name: $PROJECT_NAME"
-echo " * Version: $PROJECT_VERSION"
-echo ""
-echo "==="
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ASSEMBLY=$(ASSEMBLY_NAME).$(ASSEMBLY_EXTENSION)
-
-
-dir = $(prefix)/lib/
-_DATA = $(ASSEMBLY) $(ASSEMBLY).config
-
-bin_SCRIPTS=
-
-pkgconfigdir = $(prefix)/lib/pkgconfig
-pkgconfig_DATA = .pc
-
-dir = $(prefix)/lib/mono/
-_DATA = $(ASSEMBLY).config
-
-noinst_DATA = $(ASSEMBLY)
-
-
-PACKAGES =
-BINARY_LIBS =
-SYSTEM_LIBS =
-RESOURCES_SRC =
-RESOURCES = $(RESOURCES_SRC:.resx=.resources)
-SOURCES =
-
-EXTRA_DIST=$(SOURCES) $(BINARY_LIBS) $(RESOURCES_SRC) install-sh missing
-
-CLEANFILES=$(ASSEMBLY)
-
-
-
-
-
-
-
-/$(ASSEMBLY): $(srcdir)/$(ASSEMBLY).response $(RESOURCES) $(SOURCES) $(BINARY_LIBS)
- mkdir -p doc && mkdir -p && $(CSC) /out:$@ \
- /target: \
- $(addprefix /resource:$(srcdir)/, $(RESOURCES)) \
- $(addprefix /pkg:, $(PACKAGES)) \
- $(addprefix /r:, $(SYSTEM_LIBS)) \
- $(addprefix /r:$(srcdir)/, $(BINARY_LIBS)) \
- @$(srcdir)/$(ASSEMBLY).response \
- /doc:doc/ \
- /keyfile:$(srcdir)/ \
- /unsafe \
- && rm -f $(ASSEMBLY) \
- && ln $@ $(ASSEMBLY)
-
-CLEANFILES+=/$(ASSEMBLY)
-
-
-EXTRA_DIST+=
-
-: /$(ASSEMBLY)
- rm -f $(ASSEMBLY) \
- && ln /$(ASSEMBLY) $(ASSEMBLY)
-
-
-
-
-
-_install-data-local: /$(ASSEMBLY)
- echo "$(GACUTIL) /i $(ASSEMBLY) /f $(GACUTIL_FLAGS)"; \
- $(GACUTIL) /i $(ASSEMBLY) /f $(GACUTIL_FLAGS) || exit 1;
-
-_uninstall-local:
- if [`gacutil -l | grep "Number" | awk -F= '{print $$2}'` -gt "0" ] ; \
- then \
- echo "$(GACUTIL) /u $(ASSEMBLY_NAME) $(GACUTIL_FLAGS)"; \
- $(GACUTIL) /u $(ASSEMBLY_NAME) $(GACUTIL_FLAGS) || exit 1; \
- fi
-
-
-
-noinst__dir = $(prefix)/lib/mono/
-noinst___DATA = /$(ASSEMBLY)
-
-
-
-
-
-
-$(ASSEMBLY):
-
-
-$(srcdir)/$(ASSEMBLY).response: $(srcdir)/Makefile
- echo "$(addprefix $(srcdir)/, $(SOURCES))" > $@
-
-
-all: $(ASSEMBLY)
-
-# rule to compile .resx files to .resources
-%.resources: %.resx
- $(RESGEN) /useSourcePath /compile $(@:.resources=.resx)
-
-
-
-
-
-install-data-local: _install-data-local
-
-uninstall-local: _uninstall-local
-
-
-
-#dir+=$(noinst__dir)
-#_DATA+=$(noinst___DATA)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-prefix=@prefix@
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib/mono/@PROJECT_NAME@
-
-Name:
-Description:
-Version: @PROJECT_VERSION@
-Requires:
-Libs: -r:${libdir}/@PROJECT_NAME@.dll
-
-
-
-
-
-
-
-
-
-
- #!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-# Ripped off from Mono, which ripped off from GNOME macros version
-
-DIE=0
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-if [ -n "$MONO_PATH" ]; then
- # from -> /mono/lib:/another/mono/lib
- # to -> /mono /another/mono
- for i in `echo ${MONO_PATH} | tr ":" " "`; do
- i=`dirname ${i}`
- if [ -n "{i}" -a -d "${i}/share/aclocal" ]; then
- ACLOCAL_FLAGS="-I ${i}/share/aclocal $ACLOCAL_FLAGS"
- fi
- if [ -n "{i}" -a -d "${i}/bin" ]; then
- PATH="${i}/bin:$PATH"
- fi
- done
- export PATH
-fi
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have \`autoconf' installed to compile Mono."
- echo "Download the appropriate package for your distribution,"
- echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
- DIE=1
-}
-
-if [ -z "$LIBTOOL" ]; then
- LIBTOOL=`which glibtool 2>/dev/null`
- if [ ! -x "$LIBTOOL" ]; then
- LIBTOOL=`which libtool`
- fi
-fi
-
-(grep "^AM_PROG_LIBTOOL" $srcdir/configure.ac >/dev/null) && {
- ($LIBTOOL --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have \`libtool' installed to compile Mono."
- echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
- }
-}
-
-grep "^AM_GNU_GETTEXT" $srcdir/configure.ac >/dev/null && {
- grep "sed.*POTFILES" $srcdir/configure.ac >/dev/null || \
- (gettext --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have \`gettext' installed to compile Mono."
- echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
- }
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have \`automake' installed to compile Mono."
- echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
- NO_AUTOMAKE=yes
-}
-
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: Missing \`aclocal'. The version of \`automake'"
- echo "installed doesn't appear recent enough."
- echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
-}
-
-if test "$DIE" -eq 1; then
- exit 1
-fi
-
-if test -z "$*"; then
- echo "**Warning**: I am going to run \`configure' with no arguments."
- echo "If you wish to pass any to it, please specify them on the"
- echo \`$0\'" command line."
- echo
-fi
-
-case $CC in
-xlc )
- am_opt=--include-deps;;
-esac
-
-
-if grep "^AM_PROG_LIBTOOL" configure.ac >/dev/null; then
- if test -z "$NO_LIBTOOLIZE" ; then
- echo "Running libtoolize..."
- ${LIBTOOL}ize --force --copy
- fi
-fi
-
-echo "Running aclocal $ACLOCAL_FLAGS ..."
-aclocal $ACLOCAL_FLAGS || {
- echo
- echo "**Error**: aclocal failed. This may mean that you have not"
- echo "installed all of the packages you need, or you may need to"
- echo "set ACLOCAL_FLAGS to include \"-I \$prefix/share/aclocal\""
- echo "for the prefix where you installed the packages whose"
- echo "macros were not found"
- exit 1
-}
-
-if grep "^AM_CONFIG_HEADER" configure.ac >/dev/null; then
- echo "Running autoheader..."
- autoheader || { echo "**Error**: autoheader failed."; exit 1; }
-fi
-
-echo "Running automake --gnu $am_opt ..."
-automake --add-missing --gnu $am_opt ||
- { echo "**Error**: automake failed."; exit 1; }
-echo "Running autoconf ..."
-autoconf || { echo "**Error**: autoconf failed."; exit 1; }
-
-
-echo Running /autogen.sh ...
-(cd $srcdir/ ; NOCONFIGURE=1 /bin/sh ./autogen.sh "$@")
-echo Done running /autogen.sh ...
-
-
-conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c
-
-if test x$NOCONFIGURE = x; then
- echo Running $srcdir/configure $conf_flags "$@" ...
- $srcdir/configure $conf_flags "$@" \
- && echo Now type \`make\' to compile $PKG_NAME || exit 1
-else
- echo Skipping configure process.
-fi
-
-
-
-
-
-
-
-
-
-
-AC_INIT([]-solution,[])
-AC_CONFIG_AUX_DIR(.)
-AM_INIT_AUTOMAKE([1.9 tar-ustar foreign])
-EXTRA_DIST="install-sh missing"
-SOLUTION_NAME=
-SOLUTION_VERSION=$VERSION
-SOLUTION_DESCRIPTION=""
-AC_SUBST(DESCRIPTION)
-
-AM_MAINTAINER_MODE
-
-dnl AC_PROG_INTLTOOL([0.25])
-
-AC_PROG_INSTALL
-
-AC_MSG_CHECKING([whether we're building from an RCS])
-if test -f "$srcdir/.cvs_version" ; then
- from_rcs=cvs
-else
- if test -f "$srcdir/.svn/entries" ; then
- from_rcs=svn
- else
- from_rcs=no
- fi
-fi
-
-AC_MSG_RESULT($from_rcs)
-
-CONFIG="Release"
-AC_SUBST(CONFIG)
-
-AC_CONFIG_SUBDIRS(
-)
-
-
-AC_OUTPUT([
-Makefile
-])
-
-echo "==="
-echo ""
-echo "Solution configuration summary"
-echo ""
-echo " * Solution Name: $SOLUTION_NAME"
-echo " * Version: $SOLUTION_VERSION"
-echo " * Packages:"
-echo " - "
-echo ""
-echo "==="
-
-
-
-
-
-
-
-
- SUBDIRS =
-
-
-
-
-
-
-
-
-
-
-
-
-#! /bin/sh
-
-PACKAGE=
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-
-# %%$@%$# why oh why isn't it $sharedir/
-# Day changed to 30 Mar 2007
-# ...
-# 07:50 < cj> why are we installing .exe assemblies to $prefix/lib/$package/ and
-# not $prefix/share/$package ?
-# 07:50 < jonp> momentum.
-# 07:50 < jonp> and it's hard to say that a .exe isn't platform specific
-# 07:50 < jonp> as it can still contain DllImport's which make platform
-# assumptions
-
-packagedir=$prefix/lib/
-export MONO_PATH=$MONO_PATH
-
-exec @RUNTIME@ $packagedir/$PACKAGE.exe "$@"
-
-
-
-
-
diff --git a/Prebuild/src/data/dnpb-1.0.xsd b/Prebuild/src/data/dnpb-1.0.xsd
deleted file mode 100644
index b9e0e4e..0000000
--- a/Prebuild/src/data/dnpb-1.0.xsd
+++ /dev/null
@@ -1,183 +0,0 @@
-
-
-
-
- Copyright (c) 2004 Matthew Holmes (kerion@houston.rr.com)
-
- Redistribution and use in source and binary forms, with or without modification, are permitted
- provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
- * The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Prebuild/src/data/dnpb-1.1.xsd b/Prebuild/src/data/dnpb-1.1.xsd
deleted file mode 100644
index 2c065a3..0000000
--- a/Prebuild/src/data/dnpb-1.1.xsd
+++ /dev/null
@@ -1,184 +0,0 @@
-
-
-
-
- Copyright (c) 2004 Matthew Holmes (kerion@houston.rr.com)
-
- Redistribution and use in source and binary forms, with or without modification, are permitted
- provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
- * The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Prebuild/src/data/dnpb-1.2.xsd b/Prebuild/src/data/dnpb-1.2.xsd
deleted file mode 100644
index d694ab4..0000000
--- a/Prebuild/src/data/dnpb-1.2.xsd
+++ /dev/null
@@ -1,198 +0,0 @@
-
-
-
-
- Copyright (c) 2004 Matthew Holmes (calefaction _at_ houston _._ rr _._ com)
-
- Redistribution and use in source and binary forms, with or without modification, are permitted
- provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
- * The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Prebuild/src/data/dnpb-1.3.xsd b/Prebuild/src/data/dnpb-1.3.xsd
deleted file mode 100644
index 8f31a54..0000000
--- a/Prebuild/src/data/dnpb-1.3.xsd
+++ /dev/null
@@ -1,206 +0,0 @@
-
-
-
-
- Copyright (c) 2004-2005 Matthew Holmes (calefaction at houston . rr . com), Dan Moorehead (dan05a at gmail . com)
-
- .NET Pre-Build is an XML-driven pre-build tool allowing developers to
- easily generate project or make files for major IDE's and .NET
- development tools including: Visual Studio 2003, Visual Studio 2002,
- SharpDevelop, MonoDevelop, and NAnt.
-
- BSD License:
-
- Redistribution and use in source and binary forms, with or without modification, are permitted
- provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
- * The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Prebuild/src/data/dnpb-1.4.xsd b/Prebuild/src/data/dnpb-1.4.xsd
deleted file mode 100644
index 1da50fc..0000000
--- a/Prebuild/src/data/dnpb-1.4.xsd
+++ /dev/null
@@ -1,212 +0,0 @@
-
-
-
-
- Copyright (c) 2004-2005 Matthew Holmes (calefaction at houston . rr . com), Dan Moorehead (dan05a at gmail . com)
-
- .NET Prebuild is a cross-platform XML-driven pre-build tool which
- allows developers to easily generate project or make files for major
- IDE's and .NET development tools including: Visual Studio .NET 2002 and
- 2003, SharpDevelop, MonoDevelop, and NAnt.
-
- BSD License:
-
- Redistribution and use in source and binary forms, with or without modification, are permitted
- provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
- * The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Prebuild/src/data/dnpb-1.5.xsd b/Prebuild/src/data/dnpb-1.5.xsd
deleted file mode 100644
index e2b21f0..0000000
--- a/Prebuild/src/data/dnpb-1.5.xsd
+++ /dev/null
@@ -1,215 +0,0 @@
-
-
-
-
- Copyright (c) 2004-2005 Matthew Holmes (calefaction at houston . rr . com), Dan Moorehead (dan05a at gmail . com)
-
- .NET Prebuild is a cross-platform XML-driven pre-build tool which
- allows developers to easily generate project or make files for major
- IDE's and .NET development tools including: Visual Studio .NET 2002 and
- 2003, SharpDevelop, MonoDevelop, and NAnt.
-
- BSD License:
-
- Redistribution and use in source and binary forms, with or without modification, are permitted
- provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
- * The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Prebuild/src/data/prebuild-1.6.xsd b/Prebuild/src/data/prebuild-1.6.xsd
deleted file mode 100644
index 57ebd2e..0000000
--- a/Prebuild/src/data/prebuild-1.6.xsd
+++ /dev/null
@@ -1,231 +0,0 @@
-
-
-
-
- Copyright (c) 2004-2005 Matthew Holmes (calefaction at houston . rr . com), Dan Moorehead (dan05a at gmail . com)
-
- .NET Prebuild is a cross-platform XML-driven pre-build tool which
- allows developers to easily generate project or make files for major
- IDE's and .NET development tools including: Visual Studio .NET 2002 and
- 2003, SharpDevelop, MonoDevelop, and NAnt.
-
- BSD License:
-
- Redistribution and use in source and binary forms, with or without modification, are permitted
- provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
- * The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Prebuild/src/data/prebuild-1.7.xsd b/Prebuild/src/data/prebuild-1.7.xsd
deleted file mode 100644
index c3f8d6b..0000000
--- a/Prebuild/src/data/prebuild-1.7.xsd
+++ /dev/null
@@ -1,331 +0,0 @@
-
-
-
-
- Copyright (c) 2004-2007
- Matthew Holmes (calefaction at houston . rr . com),
- Dan Moorehead (dan05a at gmail . com),
- David Hudson (jendave at yahoo dot com),
- C.J. Adams-Collier (cjac at colliertech dot com)
-
- .NET Prebuild is a cross-platform XML-driven pre-build tool which
- allows developers to easily generate project or make files for major
- IDE's and .NET development tools including: Visual Studio .NET 2002,
- 2003, and 2005, SharpDevelop, MonoDevelop, NAnt, Xcode and the GNU Autotools.
-
- BSD License:
-
- Redistribution and use in source and binary forms, with or without modification, are permitted
- provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
- and the following disclaimer in the documentation and/or other materials provided with the
- distribution.
- * The name of the author may not be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Prebuild/tests/Makefile b/Prebuild/tests/Makefile
deleted file mode 100644
index 4a8ddf4..0000000
--- a/Prebuild/tests/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Executable
-#
-
-# Executables
-PREBUILD = mono ../src/bin/Release/prebuild.exe /target makefile
-
-# Files
-PREBUILDS = $(wildcard *.prebuild)
-RESULTS = $(PREBUILDS:prebuild=results)
-TESTS = $(PREBUILDS:prebuild=test)
-
-all: $(TESTS)
-
-clean:
- rm -f *~ *.log
- rm -f $(RESULTS)
-
-%.test: %.prebuild
- $(PREBUILD) /log $*.log /file $*.prebuild /ppi $*.results >& /dev/null
- if ! cmp $*.expected $*.results; then \
- echo $*.prebuild failed; \
- false; \
- fi
diff --git a/Prebuild/tests/README.txt b/Prebuild/tests/README.txt
deleted file mode 100644
index 2c2de3b..0000000
--- a/Prebuild/tests/README.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-There are some tests that are run via a Makfile in this
-directory. They haven't been included in any form of unit tests, but
-they are there to help test the functionality in some what. Simply
-build prebuild (so there is a src/bin/Release/prebuild.exe) and type
-`make` in this directory. Everything should pass without errors.
diff --git a/Prebuild/tests/include-001.expected b/Prebuild/tests/include-001.expected
deleted file mode 100644
index 26374b5..0000000
--- a/Prebuild/tests/include-001.expected
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
- DEBUG;TRACE
- false
- bin/Debug
- true
-
-
-
-
- TRACE
- bin/Release
- true
- false
-
-
-
-
-
- DEBUG;TRACE
- false
- bin/Debug
- true
- Prebuild.snk
- 1595
-
-
-
-
- TRACE
- bin/Release
- true
- false
- Prebuild.snk
- 1595
-
-
-
-
-
-
-
-
-
diff --git a/Prebuild/tests/include-001.include b/Prebuild/tests/include-001.include
deleted file mode 100644
index 7f75962..0000000
--- a/Prebuild/tests/include-001.include
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- DEBUG;TRACE
- false
- bin/Debug
- true
- Prebuild.snk
- 1595
-
-
-
-
- TRACE
- bin/Release
- true
- false
- Prebuild.snk
- 1595
-
-
-
-
-
-
-
diff --git a/Prebuild/tests/include-001.prebuild b/Prebuild/tests/include-001.prebuild
deleted file mode 100644
index 8047008..0000000
--- a/Prebuild/tests/include-001.prebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- DEBUG;TRACE
- false
- bin/Debug
- true
-
-
-
-
- TRACE
- bin/Release
- true
- false
-
-
-
-
-
diff --git a/Prebuild/tests/include-002-2.include b/Prebuild/tests/include-002-2.include
deleted file mode 100644
index 661b7f3..0000000
--- a/Prebuild/tests/include-002-2.include
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
- DEBUG;TRACE
- false
- bin/Debug
- true
-
-
diff --git a/Prebuild/tests/include-002.expected b/Prebuild/tests/include-002.expected
deleted file mode 100644
index 9849658..0000000
--- a/Prebuild/tests/include-002.expected
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- DEBUG;TRACE
- false
- bin/Debug
- true
-
-
-
-
-
- DEBUG;TRACE
- false
- bin/Debug
- true
-
-
-
-
-
-
-
-
-
diff --git a/Prebuild/tests/include-002.include b/Prebuild/tests/include-002.include
deleted file mode 100644
index 64f4058..0000000
--- a/Prebuild/tests/include-002.include
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
diff --git a/Prebuild/tests/include-002.prebuild b/Prebuild/tests/include-002.prebuild
deleted file mode 100644
index 9e85f20..0000000
--- a/Prebuild/tests/include-002.prebuild
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/bin/Prebuild.exe b/bin/Prebuild.exe
index eb4c224..ad84b98 100755
Binary files a/bin/Prebuild.exe and b/bin/Prebuild.exe differ
diff --git a/prebuild.xml b/prebuild.xml
index fdd024a..7dec8ba 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -1,6 +1,6 @@
-
-
-
+
+
+
TRACE;DEBUG
@@ -9,7 +9,7 @@
false
4
false
-
+
bin
true
true
@@ -24,7 +24,7 @@
false
4
false
-
+
bin
false
true
@@ -71,23 +71,23 @@
-
-
-
-
-
+
+
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
+
@@ -108,10 +108,10 @@
-
-
+
+
-
+
@@ -158,17 +158,17 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
@@ -190,9 +190,9 @@
../../../bin/
-
-
-
+
+
+
@@ -216,9 +216,9 @@
../../../bin/
-
-
-
+
+
+
@@ -242,16 +242,16 @@
-
-
-
+
+
+
-
-
+
+
-
+
@@ -270,8 +270,8 @@
../../../../bin/
-
-
+
+
@@ -295,13 +295,13 @@
../../../../bin/
-
-
+
+
-
+
@@ -324,9 +324,9 @@
-
-
-
+
+
+
@@ -347,12 +347,12 @@
../../../../bin/
-
-
+
+
-
-
+
+
@@ -373,11 +373,11 @@
../../../../bin/
-
-
+
+
-
+
@@ -403,11 +403,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -429,13 +429,13 @@
../../../../bin/
-
-
+
+
-
-
-
+
+
+
@@ -457,8 +457,8 @@
../../../../bin/
-
-
+
+
@@ -480,8 +480,8 @@
../../../../bin/
-
-
+
+
@@ -503,12 +503,12 @@
../../../../bin/
-
-
-
+
+
+
-
+
@@ -529,13 +529,13 @@
../../../../bin/
-
-
+
+
-
-
+
+
@@ -558,14 +558,14 @@
../../../../bin/
-
-
+
+
-
-
-
+
+
+
@@ -587,14 +587,14 @@
../../../../bin/
-
-
-
-
+
+
+
+
-
+
@@ -615,14 +615,14 @@
../../../../bin/
-
-
+
+
-
-
-
+
+
+
@@ -643,14 +643,14 @@
../../../bin/
-
-
-
+
+
+
-
-
+
+
@@ -679,16 +679,16 @@
-
+
-
-
+
+
-
+
@@ -710,26 +710,26 @@
-
+
-
-
+
+
-
-
-
-
+
+
+
+
-
+
@@ -752,14 +752,14 @@
-
-
-
+
+
+
-
+
@@ -767,16 +767,16 @@
-
+
-
-
-
-
+
+
+
+
-
+
@@ -802,13 +802,13 @@
-
-
+
+
-
-
+
+
@@ -829,13 +829,13 @@
../../../bin/
-
-
+
+
-
-
+
+
@@ -857,16 +857,16 @@
../../../bin/
-
-
+
+
-
-
+
+
@@ -888,16 +888,16 @@
../../../bin/
-
-
+
+
-
-
+
+
@@ -918,11 +918,12 @@
../../../bin/
+
-
-
-
+
+
+
@@ -930,10 +931,10 @@
-
-
-
-
+
+
+
+
@@ -954,8 +955,8 @@
../../../bin/
-
-
+
+
@@ -963,8 +964,8 @@
-
-
+
+
@@ -985,8 +986,8 @@
../../../bin/
-
-
+
+
@@ -994,8 +995,8 @@
-
-
+
+
@@ -1016,8 +1017,8 @@
../../../bin/
-
-
+
+
@@ -1025,8 +1026,8 @@
-
-
+
+
@@ -1047,8 +1048,8 @@
../../../bin/
-
-
+
+
@@ -1056,8 +1057,8 @@
-
-
+
+
@@ -1079,8 +1080,8 @@
../../../bin/
-
-
+
+
@@ -1089,8 +1090,8 @@
-
-
+
+
@@ -1111,8 +1112,8 @@
../../../bin/
-
-
+
+
@@ -1120,8 +1121,8 @@
-
-
+
+
@@ -1142,8 +1143,8 @@
../../../bin/
-
-
+
+
@@ -1151,8 +1152,8 @@
-
-
+
+
@@ -1174,8 +1175,8 @@
../../../bin/
-
-
+
+
@@ -1184,8 +1185,8 @@
-
-
+
+
@@ -1215,11 +1216,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -1241,8 +1242,8 @@
../../../bin/
-
-
+
+
@@ -1251,8 +1252,8 @@
-
-
+
+
@@ -1276,23 +1277,23 @@
-
-
-
+
+
+
-
+
-
-
-
-
+
+
+
+
-
+
@@ -1313,20 +1314,20 @@
../../bin/
-
-
-
+
+
+
-
-
+
+
-
+
@@ -1346,19 +1347,19 @@
../../bin/
-
-
-
+
+
+
-
-
+
+
-
+
@@ -1381,21 +1382,21 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -1403,24 +1404,24 @@
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
@@ -1441,40 +1442,40 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
-
-
+
+
+
-
+
-
+
@@ -1493,26 +1494,26 @@
../../../bin/
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+
-
-
+
+
@@ -1531,7 +1532,7 @@
../../../bin/
-
+
@@ -1542,9 +1543,9 @@
-
-
-
+
+
+
@@ -1568,9 +1569,9 @@
-
-
-
+
+
+
@@ -1581,12 +1582,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -1610,11 +1611,11 @@
-
+
-
+
@@ -1637,10 +1638,10 @@
../../../bin/
-
-
-
-
+
+
+
+
@@ -1652,9 +1653,9 @@
-
-
-
+
+
+
@@ -1674,11 +1675,11 @@
../../../bin/
-
+
-
-
+
+
@@ -1688,11 +1689,11 @@
-
+
-
+
@@ -1709,8 +1710,8 @@
../../../bin/
-
-
+
+
@@ -1718,11 +1719,11 @@
-
+
-
+
@@ -1739,14 +1740,14 @@
../../../bin/
-
+
-
-
-
-
-
+
+
+
+
+
@@ -1757,17 +1758,16 @@
-
+
-
+
-
+
../../../bin/
@@ -1780,12 +1780,12 @@
../../../bin/
-
+
-
-
-
+
+
+
@@ -1795,15 +1795,14 @@
-
+
-
+
../../../../bin/
@@ -1816,12 +1815,12 @@
../../../../bin/
-
+
-
-
-
+
+
+
@@ -1832,16 +1831,15 @@
-
+
-
+
-
+
../../../../bin/
@@ -1854,14 +1852,14 @@
../../../../bin/
-
+
-
-
-
-
+
+
+
+
@@ -1873,11 +1871,11 @@
-
+
-
+
@@ -1910,11 +1908,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -1934,13 +1932,13 @@
../../../../bin/
-
-
+
+
-
-
+
+
@@ -1962,17 +1960,17 @@
../../../bin/
-
-
+
+
-
-
+
+
-
+
@@ -1994,8 +1992,8 @@
../../../bin/
-
-
+
+
@@ -2004,9 +2002,9 @@
-
-
-
+
+
+
@@ -2026,8 +2024,8 @@
../../../bin/
-
-
+
+
@@ -2036,8 +2034,8 @@
-
-
+
+
@@ -2057,26 +2055,26 @@
../../../bin/
-
-
+
+
-
-
+
+
-
+
-
+
-
+
@@ -2102,21 +2100,21 @@
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
@@ -2141,16 +2139,16 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
@@ -2170,25 +2168,25 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
@@ -2213,20 +2211,20 @@
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
@@ -2249,18 +2247,18 @@
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
@@ -2287,18 +2285,18 @@
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
@@ -2322,17 +2320,17 @@
-
-
+
+
-
+
-
-
-
-
+
+
+
+
@@ -2356,22 +2354,22 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
@@ -2392,20 +2390,20 @@
../../../../../bin/
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
@@ -2427,22 +2425,22 @@
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
@@ -2466,27 +2464,27 @@
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
+
-
+
@@ -2511,13 +2509,13 @@
-
-
-
+
+
+
-
-
-
+
+
+
@@ -2528,15 +2526,15 @@
-
+
-
-
-
+
+
+
-
+
@@ -2557,12 +2555,12 @@
../../../bin/
-
-
+
+
-
-
+
+
@@ -2583,13 +2581,13 @@
../../../bin/
-
-
+
+
-
-
+
+
@@ -2611,8 +2609,8 @@
../../../bin/
-
-
+
+
@@ -2634,13 +2632,13 @@
../../bin/
-
-
+
+
-
-
+
+
@@ -2662,13 +2660,13 @@
../../../../bin/
-
-
+
+
-
-
-
-
+
+
+
+
@@ -2689,13 +2687,13 @@
../../../../bin/
-
-
+
+
-
-
-
-
+
+
+
+
@@ -2716,13 +2714,13 @@
../../../../bin/
-
-
+
+
-
-
-
-
+
+
+
+
@@ -2748,11 +2746,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -2784,9 +2782,9 @@
../../bin/
-
-
-
+
+
+
@@ -2810,27 +2808,27 @@
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
+
@@ -2851,16 +2849,16 @@
-
-
-
-
+
+
+
+
-
-
+
+
@@ -2880,16 +2878,16 @@
../../../../bin/
-
-
-
+
+
+
-
-
+
+
@@ -2917,9 +2915,9 @@
-
-
-
+
+
+
@@ -2944,8 +2942,8 @@
-
-
+
+
@@ -2961,15 +2959,15 @@
-
-
+
+
-
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -3007,8 +3005,8 @@
-
-
+
+
@@ -3024,15 +3022,15 @@
-
-
+
+
-
+
-
-
-
+
+
+
-
+
@@ -3062,11 +3060,11 @@
../../../../../bin/
-
-
-
-
-
+
+
+
+
+
@@ -3103,12 +3101,12 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
@@ -3143,14 +3141,14 @@
../../../../bin/
-
-
+
+
-
-
-
+
+
+
@@ -3161,58 +3159,4 @@
-
-
-
-
- DEBUG;TRACE
- false
- bin/Debug
- true
- 1595
-
-
-
-
- TRACE
- bin/Release
- true
- false
- 1595
-
-
-
-
-
-
- DEBUG;TRACE
- false
- ..\..\bin\
- true
- Prebuild.snk
- 1595
-
-
-
-
- TRACE
- ..\..\bin\
- true
- false
- Prebuild.snk
- 1595
-
-
- ../../bin/
-
-
-
-
-
-
-
-
-
-
-
diff --git a/runprebuild.sh b/runprebuild.sh
index 3e1417a..b3b5c9d 100755
--- a/runprebuild.sh
+++ b/runprebuild.sh
@@ -1,7 +1,4 @@
#!/bin/sh
mono bin/Prebuild.exe /target nant
-# needed until we break up OpenSim.exe
-perl -pi -e 's{OpenSim.dll}{OpenSim.exe}' OpenSim/ApplicationPlugins/LoadRegions/OpenSim.ApplicationPlugins.LoadRegions.dll.build
-mono bin/Prebuild.exe /target monodev
mono bin/Prebuild.exe /target vs2008
--
cgit v1.1
From f7b28dd32155eac2d55ccf0757b059794d6b5f67 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 7 Sep 2010 03:41:29 +0100
Subject: If a scene object part UUID is changed (only possible when not in a
scene), then adjust the inventory items to point to the new uuid as well
---
OpenSim/Framework/TaskInventoryItem.cs | 10 +++++-----
.../Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs | 2 +-
OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 10 ++++++++--
OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | 3 +++
4 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/OpenSim/Framework/TaskInventoryItem.cs b/OpenSim/Framework/TaskInventoryItem.cs
index 2cb7895..df5b936 100644
--- a/OpenSim/Framework/TaskInventoryItem.cs
+++ b/OpenSim/Framework/TaskInventoryItem.cs
@@ -348,15 +348,15 @@ namespace OpenSim.Framework
/// The new part ID to which this item belongs
public void ResetIDs(UUID partID)
{
- _oldID = _itemID;
- _itemID = UUID.Random();
- _parentPartID = partID;
- _parentID = partID;
+ OldItemID = ItemID;
+ ItemID = UUID.Random();
+ ParentPartID = partID;
+ ParentID = partID;
}
public TaskInventoryItem()
{
- _creationDate = (uint)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
+ CreationDate = (uint)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
}
}
}
diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
index 58698ee..32b3724 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
@@ -215,7 +215,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
public void TestLoadOarV0_2()
{
TestHelper.InMethod();
- //log4net.Config.XmlConfigurator.Configure();
+// log4net.Config.XmlConfigurator.Configure();
MemoryStream archiveWriteStream = new MemoryStream();
TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream);
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 3ed74e1..3753dcb 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -494,7 +494,14 @@ namespace OpenSim.Region.Framework.Scenes
public UUID UUID
{
get { return m_uuid; }
- set { m_uuid = value; }
+ set
+ {
+ m_uuid = value;
+
+ // This is necessary so that TaskInventoryItem parent ids correctly reference the new uuid of this part
+ if (Inventory != null)
+ Inventory.ResetInventoryIDs();
+ }
}
public uint LocalId
@@ -2756,7 +2763,6 @@ namespace OpenSim.Region.Framework.Scenes
UUID = UUID.Random();
LinkNum = linkNum;
LocalId = 0;
- Inventory.ResetInventoryIDs();
}
///
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index ca089a1..87c4860 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -119,6 +119,9 @@ namespace OpenSim.Region.Framework.Scenes
/// Link number for the part
public void ResetInventoryIDs()
{
+ if (null == m_part || null == m_part.ParentGroup)
+ return;
+
lock (m_items)
{
if (0 == m_items.Count)
--
cgit v1.1
From 910aa48df3efcb5c1baa6429b65dcfd05796e2ec Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Tue, 7 Sep 2010 11:13:37 -0700
Subject: Corrected SimianGrid.ini and HyperSimianGrid.ini configs to specify
services in the way the ROBUST loader expects them (hopefully!)
---
bin/config-include/HyperSimianGrid.ini | 12 ++++++------
bin/config-include/SimianGrid.ini | 16 ++++++++--------
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/bin/config-include/HyperSimianGrid.ini b/bin/config-include/HyperSimianGrid.ini
index 87ffe69..49ba2ca 100644
--- a/bin/config-include/HyperSimianGrid.ini
+++ b/bin/config-include/HyperSimianGrid.ini
@@ -21,13 +21,13 @@
Include-Common = "config-include/GridCommon.ini"
[Modules]
- GridServices = "OpenSim.Services.Connectors.dll:SimianGridServiceConnector"
- PresenceServices = "OpenSim.Services.Connectors.dll:SimianPresenceServiceConnector"
- UserAccountServices = "OpenSim.Services.Connectors.dll:SimianUserAccountServiceConnector"
- AuthenticationServices = "OpenSim.Services.Connectors.dll:SimianAuthenticationServiceConnector"
+ GridServices = "SimianGridServiceConnector"
+ PresenceServices = "SimianPresenceServiceConnector"
+ UserAccountServices = "SimianUserAccountServiceConnector"
+ AuthenticationServices = "SimianAuthenticationServiceConnector"
AssetServices = "HGAssetBroker"
InventoryServices = "HGInventoryBroker"
- AvatarServices = "OpenSim.Services.Connectors.dll:SimianAvatarServiceConnector"
+ AvatarServices = "SimianAvatarServiceConnector"
NeighbourServices = "RemoteNeighbourServicesConnector"
SimulationServices = "RemoteSimulationConnectorModule"
@@ -74,4 +74,4 @@
ServicesConnectorModule = SimianGroupsServicesConnector
[Profiles]
- Module = SimianProfiles
+ Module = "SimianProfiles"
diff --git a/bin/config-include/SimianGrid.ini b/bin/config-include/SimianGrid.ini
index 65d4ea6..9b27cc7 100644
--- a/bin/config-include/SimianGrid.ini
+++ b/bin/config-include/SimianGrid.ini
@@ -21,13 +21,13 @@
Include-Common = "config-include/GridCommon.ini"
[Modules]
- GridServices = "OpenSim.Services.Connectors.dll:SimianGridServiceConnector"
- PresenceServices = "OpenSim.Services.Connectors.dll:SimianPresenceServiceConnector"
- UserAccountServices = "OpenSim.Services.Connectors.dll:SimianUserAccountServiceConnector"
- AuthenticationServices = "OpenSim.Services.Connectors.dll:SimianAuthenticationServiceConnector"
- AssetServices = "OpenSim.Services.Connectors.dll:SimianAssetServiceConnector"
- InventoryServices = "OpenSim.Services.Connectors.dll:SimianInventoryServiceConnector"
- AvatarServices = "OpenSim.Services.Connectors.dll:SimianAvatarServiceConnector"
+ GridServices = "SimianGridServiceConnector"
+ PresenceServices = "SimianPresenceServiceConnector"
+ UserAccountServices = "SimianUserAccountServiceConnector"
+ AuthenticationServices = "SimianAuthenticationServiceConnector"
+ AssetServices = "SimianAssetServiceConnector"
+ InventoryServices = "SimianInventoryServiceConnector"
+ AvatarServices = "SimianAvatarServiceConnector"
NeighbourServices = "RemoteNeighbourServicesConnector"
SimulationServices = "RemoteSimulationConnectorModule"
@@ -67,4 +67,4 @@
ServicesConnectorModule = SimianGroupsServicesConnector
[Profiles]
- Module = SimianProfiles
+ Module = "SimianProfiles"
--
cgit v1.1
From 5ca4c238e0e5aec6d3de74a7155324dddf34cc2d Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Tue, 7 Sep 2010 11:33:46 -0700
Subject: SimianUserAccountServiceConnector was not initializing the user cache
---
.../Connectors/SimianGrid/SimianUserAccountServiceConnector.cs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
index deb8695..991c0f3 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
@@ -54,8 +54,8 @@ namespace OpenSim.Services.Connectors.SimianGrid
MethodBase.GetCurrentMethod().DeclaringType);
private string m_serverUrl = String.Empty;
- private ExpiringCache m_accountCache;
- private bool m_Enabled = false;
+ private ExpiringCache m_accountCache = new ExpiringCache();
+ private bool m_Enabled;
#region ISharedRegionModule
--
cgit v1.1
From b28d1b6ccd3e8728e429528ea87714680e6ac643 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Tue, 7 Sep 2010 20:19:52 +0100
Subject: Fix Simian regression
---
.../SimianGrid/SimianAssetServiceConnector.cs | 37 +++++++++--------
.../SimianAuthenticationServiceConnector.cs | 35 ++++++++--------
.../SimianGrid/SimianAvatarServiceConnector.cs | 35 ++++++++--------
.../SimianGrid/SimianGridServiceConnector.cs | 35 ++++++++--------
.../SimianGrid/SimianInventoryServiceConnector.cs | 47 ++++++++++++----------
.../SimianGrid/SimianPresenceServiceConnector.cs | 35 ++++++++--------
.../SimianUserAccountServiceConnector.cs | 35 ++++++++--------
7 files changed, 140 insertions(+), 119 deletions(-)
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
index 99e6983..6d5b30e 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
@@ -81,7 +81,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
public SimianAssetServiceConnector(IConfigSource source)
{
- Initialise(source);
+ CommonInit(source);
}
public void Initialise(IConfigSource source)
@@ -91,25 +91,28 @@ namespace OpenSim.Services.Connectors.SimianGrid
{
string name = moduleConfig.GetString("AssetServices", "");
if (name == Name)
- {
- IConfig gridConfig = source.Configs["AssetService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("AssetServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- }
- }
+ CommonInit(source);
+ }
+ }
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN ASSET CONNECTOR]: No AssetServerURI specified, disabling connector");
- else
- m_Enabled = true;
+ private void CommonInit(IConfigSource source)
+ {
+ IConfig gridConfig = source.Configs["AssetService"];
+ if (gridConfig != null)
+ {
+ string serviceUrl = gridConfig.GetString("AssetServerURI");
+ if (!String.IsNullOrEmpty(serviceUrl))
+ {
+ if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
+ serviceUrl = serviceUrl + '/';
+ m_serverUrl = serviceUrl;
}
}
+
+ if (String.IsNullOrEmpty(m_serverUrl))
+ m_log.Info("[SIMIAN ASSET CONNECTOR]: No AssetServerURI specified, disabling connector");
+ else
+ m_Enabled = true;
}
#region IAssetService
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs
index 68f73ee..51a09f8 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs
@@ -69,7 +69,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
public SimianAuthenticationServiceConnector(IConfigSource source)
{
- Initialise(source);
+ CommonInit(source);
}
public void Initialise(IConfigSource source)
@@ -79,24 +79,27 @@ namespace OpenSim.Services.Connectors.SimianGrid
{
string name = moduleConfig.GetString("AuthenticationServices", "");
if (name == Name)
- {
- IConfig gridConfig = source.Configs["AuthenticationService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("AuthenticationServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- m_Enabled = true;
- }
- }
+ CommonInit(source);
+ }
+ }
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN AUTH CONNECTOR]: No AuthenticationServerURI specified, disabling connector");
+ private void CommonInit(IConfigSource source)
+ {
+ IConfig gridConfig = source.Configs["AuthenticationService"];
+ if (gridConfig != null)
+ {
+ string serviceUrl = gridConfig.GetString("AuthenticationServerURI");
+ if (!String.IsNullOrEmpty(serviceUrl))
+ {
+ if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
+ serviceUrl = serviceUrl + '/';
+ m_serverUrl = serviceUrl;
+ m_Enabled = true;
}
}
+
+ if (String.IsNullOrEmpty(m_serverUrl))
+ m_log.Info("[SIMIAN AUTH CONNECTOR]: No AuthenticationServerURI specified, disabling connector");
}
public string Authenticate(UUID principalID, string password, int lifetime)
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs
index 7e56bd1..3505c64 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs
@@ -74,7 +74,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
public SimianAvatarServiceConnector(IConfigSource source)
{
- Initialise(source);
+ CommonInit(source);
}
public void Initialise(IConfigSource source)
@@ -84,24 +84,27 @@ namespace OpenSim.Services.Connectors.SimianGrid
{
string name = moduleConfig.GetString("AvatarServices", "");
if (name == Name)
- {
- IConfig gridConfig = source.Configs["AvatarService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("AvatarServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- m_Enabled = true;
- }
- }
+ CommonInit(source);
+ }
+ }
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN AVATAR CONNECTOR]: No AvatarServerURI specified, disabling connector");
+ private void CommonInit(IConfigSource source)
+ {
+ IConfig gridConfig = source.Configs["AvatarService"];
+ if (gridConfig != null)
+ {
+ string serviceUrl = gridConfig.GetString("AvatarServerURI");
+ if (!String.IsNullOrEmpty(serviceUrl))
+ {
+ if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
+ serviceUrl = serviceUrl + '/';
+ m_serverUrl = serviceUrl;
+ m_Enabled = true;
}
}
+
+ if (String.IsNullOrEmpty(m_serverUrl))
+ m_log.Info("[SIMIAN AVATAR CONNECTOR]: No AvatarServerURI specified, disabling connector");
}
#region IAvatarService
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs
index a94620b..4409d5c 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs
@@ -98,7 +98,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
public SimianGridServiceConnector(IConfigSource source)
{
- Initialise(source);
+ CommonInit(source);
}
public void Initialise(IConfigSource source)
@@ -108,24 +108,27 @@ namespace OpenSim.Services.Connectors.SimianGrid
{
string name = moduleConfig.GetString("GridServices", "");
if (name == Name)
- {
- IConfig gridConfig = source.Configs["GridService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("GridServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- m_Enabled = true;
- }
- }
+ CommonInit(source);
+ }
+ }
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN GRID CONNECTOR]: No GridServerURI specified, disabling connector");
+ private void CommonInit(IConfigSource source)
+ {
+ IConfig gridConfig = source.Configs["GridService"];
+ if (gridConfig != null)
+ {
+ string serviceUrl = gridConfig.GetString("GridServerURI");
+ if (!String.IsNullOrEmpty(serviceUrl))
+ {
+ if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
+ serviceUrl = serviceUrl + '/';
+ m_serverUrl = serviceUrl;
+ m_Enabled = true;
}
}
+
+ if (String.IsNullOrEmpty(m_serverUrl))
+ m_log.Info("[SIMIAN GRID CONNECTOR]: No GridServerURI specified, disabling connector");
}
#region IGridService
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
index eb118ae..470eccd 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
@@ -88,7 +88,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
public SimianInventoryServiceConnector(IConfigSource source)
{
- Initialise(source);
+ CommonInit(source);
}
public void Initialise(IConfigSource source)
@@ -98,36 +98,39 @@ namespace OpenSim.Services.Connectors.SimianGrid
{
string name = moduleConfig.GetString("InventoryServices", "");
if (name == Name)
+ CommonInit(source);
+ }
+ }
+
+ private void CommonInit(IConfigSource source)
+ {
+ IConfig gridConfig = source.Configs["InventoryService"];
+ if (gridConfig != null)
+ {
+ string serviceUrl = gridConfig.GetString("InventoryServerURI");
+ if (!String.IsNullOrEmpty(serviceUrl))
{
- IConfig gridConfig = source.Configs["InventoryService"];
+ if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
+ serviceUrl = serviceUrl + '/';
+ m_serverUrl = serviceUrl;
+
+ gridConfig = source.Configs["UserAccountService"];
if (gridConfig != null)
{
- string serviceUrl = gridConfig.GetString("InventoryServerURI");
+ serviceUrl = gridConfig.GetString("UserAccountServerURI");
if (!String.IsNullOrEmpty(serviceUrl))
{
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
-
- gridConfig = source.Configs["UserAccountService"];
- if (gridConfig != null)
- {
- serviceUrl = gridConfig.GetString("UserAccountServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- m_userServerUrl = serviceUrl;
- m_Enabled = true;
- }
- }
+ m_userServerUrl = serviceUrl;
+ m_Enabled = true;
}
}
-
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN INVENTORY CONNECTOR]: No InventoryServerURI specified, disabling connector");
- else if (String.IsNullOrEmpty(m_userServerUrl))
- m_log.Info("[SIMIAN INVENTORY CONNECTOR]: No UserAccountServerURI specified, disabling connector");
}
}
+
+ if (String.IsNullOrEmpty(m_serverUrl))
+ m_log.Info("[SIMIAN INVENTORY CONNECTOR]: No InventoryServerURI specified, disabling connector");
+ else if (String.IsNullOrEmpty(m_userServerUrl))
+ m_log.Info("[SIMIAN INVENTORY CONNECTOR]: No UserAccountServerURI specified, disabling connector");
}
///
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs
index 074c80f..077be3c 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs
@@ -99,7 +99,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
public SimianPresenceServiceConnector(IConfigSource source)
{
- Initialise(source);
+ CommonInit(source);
}
public void Initialise(IConfigSource source)
@@ -109,24 +109,27 @@ namespace OpenSim.Services.Connectors.SimianGrid
{
string name = moduleConfig.GetString("PresenceServices", "");
if (name == Name)
+ CommonInit(source);
+ }
+ }
+
+ private void CommonInit(IConfigSource source)
+ {
+ IConfig gridConfig = source.Configs["PresenceService"];
+ if (gridConfig != null)
+ {
+ string serviceUrl = gridConfig.GetString("PresenceServerURI");
+ if (!String.IsNullOrEmpty(serviceUrl))
{
- IConfig gridConfig = source.Configs["PresenceService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("PresenceServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- m_Enabled = true;
- }
- }
-
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN PRESENCE CONNECTOR]: No PresenceServerURI specified, disabling connector");
+ if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
+ serviceUrl = serviceUrl + '/';
+ m_serverUrl = serviceUrl;
+ m_Enabled = true;
}
}
+
+ if (String.IsNullOrEmpty(m_serverUrl))
+ m_log.Info("[SIMIAN PRESENCE CONNECTOR]: No PresenceServerURI specified, disabling connector");
}
#region IPresenceService
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
index 991c0f3..446ac71 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
@@ -73,7 +73,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
public SimianUserAccountServiceConnector(IConfigSource source)
{
- Initialise(source);
+ CommonInit(source);
}
public void Initialise(IConfigSource source)
@@ -83,24 +83,27 @@ namespace OpenSim.Services.Connectors.SimianGrid
{
string name = moduleConfig.GetString("UserAccountServices", "");
if (name == Name)
- {
- IConfig gridConfig = source.Configs["UserAccountService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("UserAccountServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- m_Enabled = true;
- }
- }
+ CommonInit(source);
+ }
+ }
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN ACCOUNT CONNECTOR]: No UserAccountServerURI specified, disabling connector");
+ private void CommonInit(IConfigSource source)
+ {
+ IConfig gridConfig = source.Configs["UserAccountService"];
+ if (gridConfig != null)
+ {
+ string serviceUrl = gridConfig.GetString("UserAccountServerURI");
+ if (!String.IsNullOrEmpty(serviceUrl))
+ {
+ if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
+ serviceUrl = serviceUrl + '/';
+ m_serverUrl = serviceUrl;
+ m_Enabled = true;
}
}
+
+ if (String.IsNullOrEmpty(m_serverUrl))
+ m_log.Info("[SIMIAN ACCOUNT CONNECTOR]: No UserAccountServerURI specified, disabling connector");
}
public UserAccount GetUserAccount(UUID scopeID, string firstName, string lastName)
--
cgit v1.1
From 029c9548040e0206640f41151f4a4643540bfeff Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Tue, 7 Sep 2010 13:43:36 -0700
Subject: * Added sanity checks to the SimianAssetServiceConnector so it will
throw a sensible error message when it is misconfigured instead of a
mysterious "Uri is empty" error
---
.../SimianGrid/SimianAssetServiceConnector.cs | 30 ++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
index 99e6983..caeabb7 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
@@ -116,6 +116,12 @@ namespace OpenSim.Services.Connectors.SimianGrid
public AssetBase Get(string id)
{
+ if (String.IsNullOrEmpty(m_serverUrl))
+ {
+ m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
+ throw new InvalidOperationException();
+ }
+
// Cache fetch
if (m_cache != null)
{
@@ -142,6 +148,12 @@ namespace OpenSim.Services.Connectors.SimianGrid
///
public AssetMetadata GetMetadata(string id)
{
+ if (String.IsNullOrEmpty(m_serverUrl))
+ {
+ m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
+ throw new InvalidOperationException();
+ }
+
AssetMetadata metadata = null;
// Cache fetch
@@ -213,6 +225,12 @@ namespace OpenSim.Services.Connectors.SimianGrid
/// True if the id was parseable, false otherwise
public bool Get(string id, Object sender, AssetRetrieved handler)
{
+ if (String.IsNullOrEmpty(m_serverUrl))
+ {
+ m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
+ throw new InvalidOperationException();
+ }
+
// Cache fetch
if (m_cache != null)
{
@@ -243,6 +261,12 @@ namespace OpenSim.Services.Connectors.SimianGrid
///
public string Store(AssetBase asset)
{
+ if (String.IsNullOrEmpty(m_serverUrl))
+ {
+ m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
+ throw new InvalidOperationException();
+ }
+
bool storedInCache = false;
string errorMessage = null;
@@ -375,6 +399,12 @@ namespace OpenSim.Services.Connectors.SimianGrid
///
public bool Delete(string id)
{
+ if (String.IsNullOrEmpty(m_serverUrl))
+ {
+ m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
+ throw new InvalidOperationException();
+ }
+
//string errorMessage = String.Empty;
string url = m_serverUrl + id;
--
cgit v1.1
From 9be1c0ff448d4ea650ca921937905653b4017d61 Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Tue, 7 Sep 2010 14:41:13 -0700
Subject: * Cache null account responses in the
SimianUserAccountServiceConnector to avoid repeated requests for missing
avatar IDs * Updated to OpenMetaverse r3442 to fix a timezone issue with
ExpiringCache
---
OpenSim/Framework/SLUtil.cs | 10 ++++------
.../Region/ClientStack/LindenUDP/LLClientView.cs | 6 +++---
.../LindenUDP/UnackedPacketCollection.cs | 4 ++--
.../Region/CoreModules/Asset/FlotsamAssetCache.cs | 2 +-
.../UserAccounts/UserAccountCache.cs | 6 ++++--
.../World/Archiver/Tests/ArchiverTests.cs | 5 ++++-
.../Framework/Scenes/Tests/TaskInventoryTests.cs | 4 +++-
.../SimianUserAccountServiceConnector.cs | 16 +++++++++++++---
bin/OpenMetaverse.StructuredData.dll | Bin 102400 -> 102400 bytes
bin/OpenMetaverse.dll | Bin 1691648 -> 1716224 bytes
bin/OpenMetaverseTypes.dll | Bin 106496 -> 114688 bytes
11 files changed, 34 insertions(+), 19 deletions(-)
diff --git a/OpenSim/Framework/SLUtil.cs b/OpenSim/Framework/SLUtil.cs
index a489806..9941a7f 100644
--- a/OpenSim/Framework/SLUtil.cs
+++ b/OpenSim/Framework/SLUtil.cs
@@ -46,7 +46,7 @@ namespace OpenSim.Framework
case AssetType.Texture:
return "image/x-j2c";
case AssetType.Sound:
- return "application/ogg";
+ return "audio/ogg";
case AssetType.CallingCard:
return "application/vnd.ll.callingcard";
case AssetType.Landmark:
@@ -98,8 +98,6 @@ namespace OpenSim.Framework
return "application/vnd.ll.outfitfolder";
case AssetType.MyOutfitsFolder:
return "application/vnd.ll.myoutfitsfolder";
- case AssetType.InboxFolder:
- return "application/vnd.ll.inboxfolder";
case AssetType.Unknown:
default:
return "application/octet-stream";
@@ -128,7 +126,7 @@ namespace OpenSim.Framework
case InventoryType.Object:
return "application/vnd.ll.primitive";
case InventoryType.Sound:
- return "application/ogg";
+ return "audio/ogg";
case InventoryType.Snapshot:
case InventoryType.Texture:
return "image/x-j2c";
@@ -147,6 +145,7 @@ namespace OpenSim.Framework
case "image/jp2":
return (sbyte)AssetType.Texture;
case "application/ogg":
+ case "audio/ogg":
return (sbyte)AssetType.Sound;
case "application/vnd.ll.callingcard":
case "application/x-metaverse-callingcard":
@@ -209,8 +208,6 @@ namespace OpenSim.Framework
return (sbyte)AssetType.OutfitFolder;
case "application/vnd.ll.myoutfitsfolder":
return (sbyte)AssetType.MyOutfitsFolder;
- case "application/vnd.ll.inboxfolder":
- return (sbyte)AssetType.InboxFolder;
case "application/octet-stream":
default:
return (sbyte)AssetType.Unknown;
@@ -227,6 +224,7 @@ namespace OpenSim.Framework
case "image/jpeg":
return (sbyte)InventoryType.Texture;
case "application/ogg":
+ case "audio/ogg":
case "audio/x-wav":
return (sbyte)InventoryType.Sound;
case "application/vnd.ll.callingcard":
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 9cdc80b..0925222 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -3529,9 +3529,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void ProcessEntityUpdates(int maxUpdates)
{
- Lazy> objectUpdateBlocks = new Lazy>();
- Lazy> compressedUpdateBlocks = new Lazy>();
- Lazy> terseUpdateBlocks = new Lazy>();
+ OpenMetaverse.Lazy> objectUpdateBlocks = new OpenMetaverse.Lazy>();
+ OpenMetaverse.Lazy> compressedUpdateBlocks = new OpenMetaverse.Lazy>();
+ OpenMetaverse.Lazy> terseUpdateBlocks = new OpenMetaverse.Lazy>();
if (maxUpdates <= 0) maxUpdates = Int32.MaxValue;
int updatesThisCall = 0;
diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs
index e43f7cf..194c064 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs
@@ -140,13 +140,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{
// Process all the pending adds
OutgoingPacket pendingAdd;
- while (m_pendingAdds.Dequeue(out pendingAdd))
+ while (m_pendingAdds.TryDequeue(out pendingAdd))
m_packets[pendingAdd.SequenceNumber] = pendingAdd;
// Process all the pending removes, including updating statistics and round-trip times
PendingAck pendingRemove;
OutgoingPacket ackedPacket;
- while (m_pendingRemoves.Dequeue(out pendingRemove))
+ while (m_pendingRemoves.TryDequeue(out pendingRemove))
{
if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket))
{
diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
index 9eaa758..5255d30 100644
--- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
+++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
@@ -252,7 +252,7 @@ namespace Flotsam.RegionModules.AssetCache
}
else
{
- m_MemoryCache.AddOrUpdate(key, asset, DateTime.MaxValue);
+ m_MemoryCache.AddOrUpdate(key, asset, Double.MaxValue);
}
}
}
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs
index e1bc243..e7cfda1 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs
@@ -36,6 +36,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts
{
public class UserAccountCache
{
+ private const double CACHE_EXPIRATION_SECONDS = 120.0;
+
private static readonly ILog m_log =
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
@@ -51,9 +53,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts
public void Cache(UUID userID, UserAccount account)
{
// Cache even null accounts
- m_UUIDCache.AddOrUpdate(userID, account, DateTime.Now + TimeSpan.FromMinutes(2.0d));
+ m_UUIDCache.AddOrUpdate(userID, account, CACHE_EXPIRATION_SECONDS);
if (account != null)
- m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, DateTime.Now + TimeSpan.FromMinutes(2.0d));
+ m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, CACHE_EXPIRATION_SECONDS);
m_log.DebugFormat("[USER CACHE]: cached user {0}", userID);
}
diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
index 58698ee..0f08408 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
@@ -48,6 +48,7 @@ using OpenSim.Tests.Common.Setup;
using ArchiveConstants = OpenSim.Framework.Serialization.ArchiveConstants;
using TarArchiveReader = OpenSim.Framework.Serialization.TarArchiveReader;
using TarArchiveWriter = OpenSim.Framework.Serialization.TarArchiveWriter;
+using RegionSettings = OpenSim.Framework.RegionSettings;
namespace OpenSim.Region.CoreModules.World.Archiver.Tests
{
@@ -135,7 +136,9 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
SceneObjectPart part2 = CreateSceneObjectPart2();
- AssetNotecard nc = new AssetNotecard("Hello World!");
+ AssetNotecard nc = new AssetNotecard();
+ nc.BodyText = "Hello World!";
+ nc.Encode();
UUID ncAssetUuid = new UUID("00000000-0000-0000-1000-000000000000");
UUID ncItemUuid = new UUID("00000000-0000-0000-1100-000000000000");
AssetBase ncAsset
diff --git a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
index da8199d..5e491c2 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
@@ -75,7 +75,9 @@ namespace OpenSim.Region.Framework.Tests
protected TaskInventoryItem CreateSOItem1(Scene scene, SceneObjectPart part)
{
- AssetNotecard nc = new AssetNotecard("Hello World!");
+ AssetNotecard nc = new AssetNotecard();
+ nc.BodyText = "Hello World!";
+ nc.Encode();
UUID ncAssetUuid = new UUID("00000000-0000-0000-1000-000000000000");
UUID ncItemUuid = new UUID("00000000-0000-0000-1100-000000000000");
AssetBase ncAsset
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
index 446ac71..23f2b10 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
@@ -49,6 +49,8 @@ namespace OpenSim.Services.Connectors.SimianGrid
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class SimianUserAccountServiceConnector : IUserAccountService, ISharedRegionModule
{
+ private const double CACHE_EXPIRATION_SECONDS = 120.0;
+
private static readonly ILog m_log =
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
@@ -141,7 +143,15 @@ namespace OpenSim.Services.Connectors.SimianGrid
{ "UserID", userID.ToString() }
};
- return GetUser(requestArgs);
+ account = GetUser(requestArgs);
+
+ if (account == null)
+ {
+ // Store null responses too, to avoid repeated lookups for missing accounts
+ m_accountCache.AddOrUpdate(userID, null, CACHE_EXPIRATION_SECONDS);
+ }
+
+ return account;
}
public List GetUserAccounts(UUID scopeID, string query)
@@ -216,7 +226,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
if (success)
{
// Cache the user account info
- m_accountCache.AddOrUpdate(data.PrincipalID, data, DateTime.Now + TimeSpan.FromMinutes(2.0d));
+ m_accountCache.AddOrUpdate(data.PrincipalID, data, CACHE_EXPIRATION_SECONDS);
}
else
{
@@ -281,7 +291,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
GetFirstLastName(response["Name"].AsString(), out account.FirstName, out account.LastName);
// Cache the user account info
- m_accountCache.AddOrUpdate(account.PrincipalID, account, DateTime.Now + TimeSpan.FromMinutes(2.0d));
+ m_accountCache.AddOrUpdate(account.PrincipalID, account, CACHE_EXPIRATION_SECONDS);
return account;
}
diff --git a/bin/OpenMetaverse.StructuredData.dll b/bin/OpenMetaverse.StructuredData.dll
index 54681e4..7909076 100644
Binary files a/bin/OpenMetaverse.StructuredData.dll and b/bin/OpenMetaverse.StructuredData.dll differ
diff --git a/bin/OpenMetaverse.dll b/bin/OpenMetaverse.dll
index 59e39bb..12a2940 100644
Binary files a/bin/OpenMetaverse.dll and b/bin/OpenMetaverse.dll differ
diff --git a/bin/OpenMetaverseTypes.dll b/bin/OpenMetaverseTypes.dll
index 01dc3d8..1329aa7 100644
Binary files a/bin/OpenMetaverseTypes.dll and b/bin/OpenMetaverseTypes.dll differ
--
cgit v1.1
From 0bebe94231c3b5aeaa24a0eeb38272a08b73473b Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Tue, 7 Sep 2010 15:45:33 -0700
Subject: Rolling back the recent libomv update but keeping the ExpiringCache
cleanups (as much as is possible). There was a report of non-finite avatar
positions after the update
---
.../Region/ClientStack/LindenUDP/LLClientView.cs | 6 +++---
.../LindenUDP/UnackedPacketCollection.cs | 4 ++--
.../Region/CoreModules/Asset/FlotsamAssetCache.cs | 2 +-
.../UserAccounts/UserAccountCache.cs | 4 ++--
.../SimianUserAccountServiceConnector.cs | 6 +++---
bin/OpenMetaverse.StructuredData.dll | Bin 102400 -> 102400 bytes
bin/OpenMetaverse.dll | Bin 1716224 -> 1691648 bytes
bin/OpenMetaverseTypes.dll | Bin 114688 -> 106496 bytes
8 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 0925222..cdf8cb1 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -3529,9 +3529,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void ProcessEntityUpdates(int maxUpdates)
{
- OpenMetaverse.Lazy> objectUpdateBlocks = new OpenMetaverse.Lazy>();
- OpenMetaverse.Lazy> compressedUpdateBlocks = new OpenMetaverse.Lazy>();
- OpenMetaverse.Lazy> terseUpdateBlocks = new OpenMetaverse.Lazy>();
+ OpenSim.Framework.Lazy> objectUpdateBlocks = new OpenSim.Framework.Lazy>();
+ OpenSim.Framework.Lazy> compressedUpdateBlocks = new OpenSim.Framework.Lazy>();
+ OpenSim.Framework.Lazy> terseUpdateBlocks = new OpenSim.Framework.Lazy>();
if (maxUpdates <= 0) maxUpdates = Int32.MaxValue;
int updatesThisCall = 0;
diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs
index 194c064..e43f7cf 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs
@@ -140,13 +140,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{
// Process all the pending adds
OutgoingPacket pendingAdd;
- while (m_pendingAdds.TryDequeue(out pendingAdd))
+ while (m_pendingAdds.Dequeue(out pendingAdd))
m_packets[pendingAdd.SequenceNumber] = pendingAdd;
// Process all the pending removes, including updating statistics and round-trip times
PendingAck pendingRemove;
OutgoingPacket ackedPacket;
- while (m_pendingRemoves.TryDequeue(out pendingRemove))
+ while (m_pendingRemoves.Dequeue(out pendingRemove))
{
if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket))
{
diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
index 5255d30..9eaa758 100644
--- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
+++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
@@ -252,7 +252,7 @@ namespace Flotsam.RegionModules.AssetCache
}
else
{
- m_MemoryCache.AddOrUpdate(key, asset, Double.MaxValue);
+ m_MemoryCache.AddOrUpdate(key, asset, DateTime.MaxValue);
}
}
}
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs
index e7cfda1..7c12b8c 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs
@@ -53,9 +53,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts
public void Cache(UUID userID, UserAccount account)
{
// Cache even null accounts
- m_UUIDCache.AddOrUpdate(userID, account, CACHE_EXPIRATION_SECONDS);
+ m_UUIDCache.AddOrUpdate(userID, account, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS));
if (account != null)
- m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, CACHE_EXPIRATION_SECONDS);
+ m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS));
m_log.DebugFormat("[USER CACHE]: cached user {0}", userID);
}
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
index 23f2b10..1ac9882 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
@@ -148,7 +148,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
if (account == null)
{
// Store null responses too, to avoid repeated lookups for missing accounts
- m_accountCache.AddOrUpdate(userID, null, CACHE_EXPIRATION_SECONDS);
+ m_accountCache.AddOrUpdate(userID, null, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS));
}
return account;
@@ -226,7 +226,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
if (success)
{
// Cache the user account info
- m_accountCache.AddOrUpdate(data.PrincipalID, data, CACHE_EXPIRATION_SECONDS);
+ m_accountCache.AddOrUpdate(data.PrincipalID, data, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS));
}
else
{
@@ -291,7 +291,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
GetFirstLastName(response["Name"].AsString(), out account.FirstName, out account.LastName);
// Cache the user account info
- m_accountCache.AddOrUpdate(account.PrincipalID, account, CACHE_EXPIRATION_SECONDS);
+ m_accountCache.AddOrUpdate(account.PrincipalID, account, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS));
return account;
}
diff --git a/bin/OpenMetaverse.StructuredData.dll b/bin/OpenMetaverse.StructuredData.dll
index 7909076..54681e4 100644
Binary files a/bin/OpenMetaverse.StructuredData.dll and b/bin/OpenMetaverse.StructuredData.dll differ
diff --git a/bin/OpenMetaverse.dll b/bin/OpenMetaverse.dll
index 12a2940..59e39bb 100644
Binary files a/bin/OpenMetaverse.dll and b/bin/OpenMetaverse.dll differ
diff --git a/bin/OpenMetaverseTypes.dll b/bin/OpenMetaverseTypes.dll
index 1329aa7..01dc3d8 100644
Binary files a/bin/OpenMetaverseTypes.dll and b/bin/OpenMetaverseTypes.dll differ
--
cgit v1.1
From 904d6b787a7fc399544145ae023162d6fa43fb63 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Wed, 8 Sep 2010 09:53:57 -0700
Subject: First version of the Hypergrid HELO service that will enable
different backends to interoperate.
---
.../Handlers/Hypergrid/HeloServerConnector.cs | 85 ++++++++++++++++++++++
.../Connectors/Hypergrid/HeloServiceConnector.cs | 75 +++++++++++++++++++
2 files changed, 160 insertions(+)
create mode 100644 OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs
create mode 100644 OpenSim/Services/Connectors/Hypergrid/HeloServiceConnector.cs
diff --git a/OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs b/OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs
new file mode 100644
index 0000000..3b25a52
--- /dev/null
+++ b/OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the OpenSimulator Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Net;
+using System.Reflection;
+using Nini.Config;
+using log4net;
+using OpenSim.Server.Base;
+using OpenSim.Services.Interfaces;
+using OpenSim.Framework.Servers.HttpServer;
+using OpenSim.Server.Handlers.Base;
+
+namespace OpenSim.Server.Handlers.Hypergrid
+{
+ public class HeloServiceConnector : ServiceConnector
+ {
+ private string m_ConfigName = "HeloService";
+
+ public HeloServiceConnector(IConfigSource config, IHttpServer server, string configName) :
+ base(config, server, configName)
+ {
+ IConfig serverConfig = config.Configs[m_ConfigName];
+ if (serverConfig == null)
+ throw new Exception(String.Format("No section {0} in config file", m_ConfigName));
+
+ string handlers = serverConfig.GetString("Handlers", "opensim-robust");
+ server.AddStreamHandler(new HeloServerGetHandler(handlers));
+ }
+ }
+
+ public class HeloServerGetHandler : BaseStreamHandler
+ {
+ private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ private string m_HandlersType;
+
+ public HeloServerGetHandler(string handlersType) :
+ base("GET", "/helo")
+ {
+ m_HandlersType = handlersType;
+ }
+
+ public override byte[] Handle(string path, Stream requestData,
+ OSHttpRequest httpRequest, OSHttpResponse httpResponse)
+ {
+ return OKResponse(httpResponse);
+ }
+
+ private byte[] OKResponse(OSHttpResponse httpResponse)
+ {
+ httpResponse.AddHeader("X-Handlers-Provided", m_HandlersType);
+ httpResponse.StatusCode = (int)HttpStatusCode.OK;
+ httpResponse.StatusDescription = "OK";
+ return new byte[0];
+ }
+
+ }
+}
diff --git a/OpenSim/Services/Connectors/Hypergrid/HeloServiceConnector.cs b/OpenSim/Services/Connectors/Hypergrid/HeloServiceConnector.cs
new file mode 100644
index 0000000..7b166c1
--- /dev/null
+++ b/OpenSim/Services/Connectors/Hypergrid/HeloServiceConnector.cs
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the OpenSimulator Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using log4net;
+using System;
+using System.Net;
+using System.Reflection;
+using Nini.Config;
+
+namespace OpenSim.Services.Connectors
+{
+ public class HeloServicesConnector
+ {
+ private static readonly ILog m_log =
+ LogManager.GetLogger(
+ MethodBase.GetCurrentMethod().DeclaringType);
+
+ private string m_ServerURI = String.Empty;
+
+ public HeloServicesConnector()
+ {
+ }
+
+ public HeloServicesConnector(string serverURI)
+ {
+ m_ServerURI = serverURI.TrimEnd('/');
+ }
+
+
+ public virtual string Helo()
+ {
+ HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(m_ServerURI + "/helo");
+
+ try
+ {
+ WebResponse response = req.GetResponse();
+ if (response.Headers.Get("X-Handlers-Provided") == null) // just in case this ever returns a null
+ return string.Empty;
+ return response.Headers.Get("X-Handlers-Provided");
+ }
+ catch (Exception e)
+ {
+ m_log.DebugFormat("[HELO SERVICE]: Unable to perform HELO request to {0}: {1}", m_ServerURI, e.Message);
+ }
+
+ // fail
+ return string.Empty;
+ }
+
+ }
+}
--
cgit v1.1
From 3fb4a17f1044f5bd995f703233f656f72ebe5269 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Wed, 8 Sep 2010 11:30:38 -0700
Subject: No need for a config var for the HELO message on the server-side.
It's robust.
---
OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs b/OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs
index 3b25a52..6c83aff 100644
--- a/OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs
+++ b/OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs
@@ -41,17 +41,10 @@ namespace OpenSim.Server.Handlers.Hypergrid
{
public class HeloServiceConnector : ServiceConnector
{
- private string m_ConfigName = "HeloService";
-
public HeloServiceConnector(IConfigSource config, IHttpServer server, string configName) :
base(config, server, configName)
{
- IConfig serverConfig = config.Configs[m_ConfigName];
- if (serverConfig == null)
- throw new Exception(String.Format("No section {0} in config file", m_ConfigName));
-
- string handlers = serverConfig.GetString("Handlers", "opensim-robust");
- server.AddStreamHandler(new HeloServerGetHandler(handlers));
+ server.AddStreamHandler(new HeloServerGetHandler("opensim-robust"));
}
}
--
cgit v1.1
From 8cc3d60e59b631951618d6b89c8ba54a72061bc4 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Wed, 8 Sep 2010 14:09:43 -0700
Subject: Added constructor that takes an URL to asset and inventory simian
connectors.
---
.../Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs | 5 +++++
.../Connectors/SimianGrid/SimianInventoryServiceConnector.cs | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
index 8f601e8..30d3147 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
@@ -84,6 +84,11 @@ namespace OpenSim.Services.Connectors.SimianGrid
CommonInit(source);
}
+ public SimianAssetServiceConnector(string url)
+ {
+ m_serverUrl = url;
+ }
+
public void Initialise(IConfigSource source)
{
IConfig moduleConfig = source.Configs["Modules"];
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
index 470eccd..3953369 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
@@ -91,6 +91,11 @@ namespace OpenSim.Services.Connectors.SimianGrid
CommonInit(source);
}
+ public SimianInventoryServiceConnector(string url)
+ {
+ m_serverUrl = url;
+ }
+
public void Initialise(IConfigSource source)
{
IConfig moduleConfig = source.Configs["Modules"];
--
cgit v1.1
From d301f3fd6ad65e3eb39cfaff65cd3fbb896fa5c1 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Wed, 8 Sep 2010 14:12:01 -0700
Subject: Renamed the Helo server connector to a consistent name. Added this in
connector to both Robust.HG.ini.example and
HypergridServiceInConnectorModule.
---
.../Hypergrid/HypergridServiceInConnectorModule.cs | 1 +
OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs | 5 +++--
bin/Robust.HG.ini.example | 2 +-
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs
index 235914a..2f96bcb 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs
@@ -115,6 +115,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Hypergrid
m_HypergridHandler = new GatekeeperServiceInConnector(m_Config, MainServer.Instance, simService);
new UserAgentServerConnector(m_Config, MainServer.Instance);
+ new HeloServiceInConnector(m_Config, MainServer.Instance, "HeloService");
}
scene.RegisterModuleInterface(m_HypergridHandler.GateKeeper);
}
diff --git a/OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs b/OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs
index 6c83aff..39baa32 100644
--- a/OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs
+++ b/OpenSim/Server/Handlers/Hypergrid/HeloServerConnector.cs
@@ -39,9 +39,9 @@ using OpenSim.Server.Handlers.Base;
namespace OpenSim.Server.Handlers.Hypergrid
{
- public class HeloServiceConnector : ServiceConnector
+ public class HeloServiceInConnector : ServiceConnector
{
- public HeloServiceConnector(IConfigSource config, IHttpServer server, string configName) :
+ public HeloServiceInConnector(IConfigSource config, IHttpServer server, string configName) :
base(config, server, configName)
{
server.AddStreamHandler(new HeloServerGetHandler("opensim-robust"));
@@ -68,6 +68,7 @@ namespace OpenSim.Server.Handlers.Hypergrid
private byte[] OKResponse(OSHttpResponse httpResponse)
{
+ m_log.Debug("[HELO]: hi, I was called");
httpResponse.AddHeader("X-Handlers-Provided", m_HandlersType);
httpResponse.StatusCode = (int)HttpStatusCode.OK;
httpResponse.StatusDescription = "OK";
diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example
index dae7a19..deceb86 100644
--- a/bin/Robust.HG.ini.example
+++ b/bin/Robust.HG.ini.example
@@ -21,7 +21,7 @@
; * [[@]/][:]
; *
[Startup]
-ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:XInventoryInConnector,8002/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:GridUserServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8002/OpenSim.Server.Handlers.dll:GatekeeperServiceInConnector,8002/OpenSim.Server.Handlers.dll:UserAgentServerConnector,HGInventoryService@8002/OpenSim.Server.Handlers.dll:XInventoryInConnector,8002/OpenSim.Server.Handlers.dll:AssetServiceConnector"
+ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:XInventoryInConnector,8002/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:GridUserServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8002/OpenSim.Server.Handlers.dll:GatekeeperServiceInConnector,8002/OpenSim.Server.Handlers.dll:UserAgentServerConnector,HGInventoryService@8002/OpenSim.Server.Handlers.dll:XInventoryInConnector,8002/OpenSim.Server.Handlers.dll:AssetServiceConnector,8002/OpenSim.Server.Handlers.dll:HeloServiceInConnector"
; * This is common for all services, it's the network setup for the entire
; * server instance, if none if specified above
--
cgit v1.1
From ae6682036df0268b47a27756915c72367663efec Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Wed, 8 Sep 2010 14:13:01 -0700
Subject: Made the HG asset and inventory brokers use the Helo service in order
to instantiate the right network connectors. Tested on Robust only.
---
.../Inventory/HGInventoryBroker.cs | 15 ++++++++------
.../Connectors/Asset/HGAssetServiceConnector.cs | 23 ++++++++++++++--------
2 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
index 5b4fecb..39410b5 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
@@ -37,6 +37,7 @@ using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
using OpenSim.Services.Connectors;
+using OpenSim.Services.Connectors.SimianGrid;
using OpenMetaverse;
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
@@ -538,12 +539,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
}
else
{
- // We're instantiating this class explicitly, but this won't
- // work in general, because the remote grid may be running
- // an inventory server that has a different protocol.
- // Eventually we will want a piece of protocol asking
- // the remote server about its kind. Definitely cool thing to do!
- connector = new RemoteXInventoryServicesConnector(url);
+ // Still not as flexible as I would like this to be,
+ // but good enough for now
+ string connectorType = new HeloServicesConnector(url).Helo();
+ m_log.DebugFormat("[HG INVENTORY SERVICE]: HELO returned {0}", connectorType);
+ if (connectorType == "opensim-simian")
+ connector = new SimianInventoryServiceConnector(url);
+ else
+ connector = new RemoteXInventoryServicesConnector(url);
m_connectors.Add(url, connector);
}
}
diff --git a/OpenSim/Services/Connectors/Asset/HGAssetServiceConnector.cs b/OpenSim/Services/Connectors/Asset/HGAssetServiceConnector.cs
index 34df54a..5c31639 100644
--- a/OpenSim/Services/Connectors/Asset/HGAssetServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Asset/HGAssetServiceConnector.cs
@@ -32,6 +32,8 @@ using System.Collections.Generic;
using System.Reflection;
using OpenSim.Framework;
using OpenSim.Services.Interfaces;
+using OpenSim.Services.Connectors.Hypergrid;
+using OpenSim.Services.Connectors.SimianGrid;
namespace OpenSim.Services.Connectors
{
@@ -41,7 +43,7 @@ namespace OpenSim.Services.Connectors
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
- private Dictionary m_connectors = new Dictionary();
+ private Dictionary m_connectors = new Dictionary();
public HGAssetServiceConnector(IConfigSource source)
{
@@ -81,7 +83,7 @@ namespace OpenSim.Services.Connectors
private IAssetService GetConnector(string url)
{
- AssetServicesConnector connector = null;
+ IAssetService connector = null;
lock (m_connectors)
{
if (m_connectors.ContainsKey(url))
@@ -90,12 +92,17 @@ namespace OpenSim.Services.Connectors
}
else
{
- // We're instantiating this class explicitly, but this won't
- // work in general, because the remote grid may be running
- // an asset server that has a different protocol.
- // Eventually we will want a piece of protocol asking
- // the remote server about its kind. Definitely cool thing to do!
- connector = new AssetServicesConnector(url);
+ // Still not as flexible as I would like this to be,
+ // but good enough for now
+ string connectorType = new HeloServicesConnector(url).Helo();
+ m_log.DebugFormat("[HG ASSET SERVICE]: HELO returned {0}", connectorType);
+ if (connectorType == "opensim-simian")
+ {
+ connector = new SimianAssetServiceConnector(url);
+ }
+ else
+ connector = new AssetServicesConnector(url);
+
m_connectors.Add(url, connector);
}
}
--
cgit v1.1
From 5dc9ea2f2487804d788b4b80d40d91bd792de4c2 Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Wed, 8 Sep 2010 15:08:49 -0700
Subject: * Changed 11 calls for session info to the more optimized API method
---
.../CoreModules/Avatar/Friends/FriendsModule.cs | 100 +++++++--------------
.../Avatar/InstantMessage/MessageTransferModule.cs | 4 +-
.../Shared/Api/Implementation/LSL_Api.cs | 10 +--
.../Connectors/SimianGrid/SimianProfiles.cs | 4 +-
4 files changed, 37 insertions(+), 81 deletions(-)
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
index 6f044cb..1c1ba2d 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
@@ -348,10 +348,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(client.Scene.RegionInfo.ScopeID, new UUID(im.fromAgentID));
im.fromAgentName = account.FirstName + " " + account.LastName;
- PresenceInfo presence = null;
- PresenceInfo[] presences = PresenceService.GetAgents(new string[] { fid });
- if (presences != null && presences.Length > 0)
- presence = presences[0];
+ PresenceInfo presence = PresenceService.GetAgent(new UUID(im.fromAgentID));
if (presence != null)
im.offline = 0;
@@ -470,26 +467,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
return;
// The friend is not here [as root]. Let's forward.
- PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() });
- if (friendSessions != null && friendSessions.Length > 0)
+ PresenceInfo friendSession = PresenceService.GetAgent(friendID);
+ if (friendSession != null && friendSession.RegionID != UUID.Zero) // let's guard against sessions-gone-bad with the RegionID check
{
- PresenceInfo friendSession = null;
- foreach (PresenceInfo pinfo in friendSessions)
- if (pinfo.RegionID != UUID.Zero) // let's guard against sessions-gone-bad
- {
- friendSession = pinfo;
- break;
- }
-
- if (friendSession != null)
- {
- GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
- //m_log.DebugFormat("[FRIENDS]: Remote Notify to region {0}", region.RegionName);
- m_FriendsSimConnector.StatusNotify(region, userID, friendID, online);
- }
+ GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
+ //m_log.DebugFormat("[FRIENDS]: Remote Notify to region {0}", region.RegionName);
+ m_FriendsSimConnector.StatusNotify(region, userID, friendID, online);
}
-
- // Friend is not online. Ignore.
}
else
m_log.WarnFormat("[FRIENDS]: Error parsing friend ID {0}", friend.Friend);
@@ -528,15 +512,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
return;
// The prospective friend is not here [as root]. Let's forward.
- PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() });
- if (friendSessions != null && friendSessions.Length > 0)
+ PresenceInfo friendSession = PresenceService.GetAgent(friendID);
+ if (friendSession != null)
{
- PresenceInfo friendSession = friendSessions[0];
- if (friendSession != null)
- {
- GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
- m_FriendsSimConnector.FriendshipOffered(region, agentID, friendID, im.message);
- }
+ GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
+ m_FriendsSimConnector.FriendshipOffered(region, agentID, friendID, im.message);
}
// If the prospective friend is not online, he'll get the message upon login.
}
@@ -563,16 +543,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
}
// The friend is not here
- PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() });
- if (friendSessions != null && friendSessions.Length > 0)
+ PresenceInfo friendSession = PresenceService.GetAgent(friendID);
+ if (friendSession != null)
{
- PresenceInfo friendSession = friendSessions[0];
- if (friendSession != null)
- {
- GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
- m_FriendsSimConnector.FriendshipApproved(region, agentID, client.Name, friendID);
- client.SendAgentOnline(new UUID[] { friendID });
- }
+ GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
+ m_FriendsSimConnector.FriendshipApproved(region, agentID, client.Name, friendID);
+ client.SendAgentOnline(new UUID[] { friendID });
}
}
@@ -591,18 +567,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
if (LocalFriendshipDenied(agentID, client.Name, friendID))
return;
- PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() });
- if (friendSessions != null && friendSessions.Length > 0)
+ PresenceInfo friendSession = PresenceService.GetAgent(friendID);
+ if (friendSession != null)
{
- PresenceInfo friendSession = friendSessions[0];
- if (friendSession != null)
- {
- GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
- if (region != null)
- m_FriendsSimConnector.FriendshipDenied(region, agentID, client.Name, friendID);
- else
- m_log.WarnFormat("[FRIENDS]: Could not find region {0} in locating {1}", friendSession.RegionID, friendID);
- }
+ GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
+ if (region != null)
+ m_FriendsSimConnector.FriendshipDenied(region, agentID, client.Name, friendID);
+ else
+ m_log.WarnFormat("[FRIENDS]: Could not find region {0} in locating {1}", friendSession.RegionID, friendID);
}
}
@@ -624,15 +596,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
if (LocalFriendshipTerminated(exfriendID))
return;
- PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { exfriendID.ToString() });
- if (friendSessions != null && friendSessions.Length > 0)
+ PresenceInfo friendSession = PresenceService.GetAgent(exfriendID);
+ if (friendSession != null)
{
- PresenceInfo friendSession = friendSessions[0];
- if (friendSession != null)
- {
- GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
- m_FriendsSimConnector.FriendshipTerminated(region, agentID, exfriendID);
- }
+ GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
+ m_FriendsSimConnector.FriendshipTerminated(region, agentID, exfriendID);
}
}
@@ -669,17 +637,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
if (LocalGrantRights(requester, target, myFlags, rights))
return;
- PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { target.ToString() });
- if (friendSessions != null && friendSessions.Length > 0)
+ PresenceInfo friendSession = PresenceService.GetAgent(target);
+ if (friendSession != null)
{
- PresenceInfo friendSession = friendSessions[0];
- if (friendSession != null)
- {
- GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
- // TODO: You might want to send the delta to save the lookup
- // on the other end!!
- m_FriendsSimConnector.GrantRights(region, requester, target, myFlags, rights);
- }
+ GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
+ // TODO: You might want to send the delta to save the lookup
+ // on the other end!!
+ m_FriendsSimConnector.GrantRights(region, requester, target, myFlags, rights);
}
}
}
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs
index 730cc77..13bae2e 100644
--- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs
@@ -498,9 +498,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
if (lookupAgent)
{
// Non-cached user agent lookup.
- PresenceInfo[] presences = PresenceService.GetAgents(new string[] { toAgentID.ToString() });
- if (presences != null && presences.Length > 0)
- upd = presences[0];
+ upd = PresenceService.GetAgent(toAgentID);
if (upd != null)
{
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index b51b410..a9c5d10 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -3971,9 +3971,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
}
- PresenceInfo[] pinfos = World.PresenceService.GetAgents(new string[] { uuid.ToString() });
- if (pinfos != null && pinfos.Length > 0)
- pinfo = pinfos[0];
+ pinfo = World.PresenceService.GetAgent(uuid);
ce = new UserInfoCacheEntry();
ce.time = Util.EnvironmentTickCount();
@@ -3991,11 +3989,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (Util.EnvironmentTickCount() < ce.time || (Util.EnvironmentTickCount() - ce.time) >= 20000)
{
- PresenceInfo[] pinfos = World.PresenceService.GetAgents(new string[] { uuid.ToString() });
- if (pinfos != null && pinfos.Length > 0)
- pinfo = pinfos[0];
- else
- pinfo = null;
+ pinfo = World.PresenceService.GetAgent(uuid);
ce.time = Util.EnvironmentTickCount();
ce.pinfo = pinfo;
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs b/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
index 0ef4974..b7e8538 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
@@ -291,8 +291,8 @@ namespace OpenSim.Services.Connectors.SimianGrid
// Check if the user is online
if (client.Scene is Scene)
{
- OpenSim.Services.Interfaces.PresenceInfo[] presences = ((Scene)client.Scene).PresenceService.GetAgents(new string[] { avatarID.ToString() });
- if (presences != null && presences.Length > 0)
+ OpenSim.Services.Interfaces.PresenceInfo presence = ((Scene)client.Scene).PresenceService.GetAgent(avatarID);
+ if (presence != null)
flags |= ProfileFlags.Online;
}
--
cgit v1.1
From 8415b988063234ab7686b873520708891bca50a6 Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Thu, 9 Sep 2010 14:45:10 -0700
Subject: Over a dozen thread safety fixes in FriendsModule
---
.../CoreModules/Avatar/Friends/FriendsModule.cs | 330 ++++++++++-----------
1 file changed, 163 insertions(+), 167 deletions(-)
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
index 1c1ba2d..4e4eee9 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
@@ -54,7 +54,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
public UUID PrincipalID;
public FriendInfo[] Friends;
public int Refcount;
- public UUID RegionID;
public bool IsFriend(string friend)
{
@@ -67,7 +66,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
return false;
}
}
-
+
+ private static readonly FriendInfo[] EMPTY_FRIENDS = new FriendInfo[0];
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected List m_Scenes = new List();
@@ -79,7 +79,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
protected Dictionary m_Friends =
new Dictionary();
- protected List m_NeedsListOfFriends = new List();
+ protected HashSet m_NeedsListOfFriends = new HashSet();
protected IPresenceService PresenceService
{
@@ -146,7 +146,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
// Instantiate the request handler
IHttpServer server = MainServer.GetHttpServer((uint)mPort);
server.AddStreamHandler(new FriendsRequestHandler(this));
-
}
if (m_FriendsService == null)
@@ -173,7 +172,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
scene.EventManager.OnNewClient += OnNewClient;
scene.EventManager.OnClientClosed += OnClientClosed;
scene.EventManager.OnMakeRootAgent += OnMakeRootAgent;
- scene.EventManager.OnMakeChildAgent += OnMakeChildAgent;
scene.EventManager.OnClientLogin += OnClientLogin;
}
@@ -198,16 +196,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
public uint GetFriendPerms(UUID principalID, UUID friendID)
{
- if (!m_Friends.ContainsKey(principalID))
- return 0;
-
- UserFriendData data = m_Friends[principalID];
-
- foreach (FriendInfo fi in data.Friends)
+ FriendInfo[] friends = GetFriends(principalID);
+ foreach (FriendInfo fi in friends)
{
if (fi.Friend == friendID.ToString())
return (uint)fi.TheirFlags;
}
+
return 0;
}
@@ -217,73 +212,59 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
client.OnApproveFriendRequest += OnApproveFriendRequest;
client.OnDenyFriendRequest += OnDenyFriendRequest;
client.OnTerminateFriendship += OnTerminateFriendship;
-
client.OnGrantUserRights += OnGrantUserRights;
- lock (m_Friends)
- {
- if (m_Friends.ContainsKey(client.AgentId))
+ // Asynchronously fetch the friends list or increment the refcount for the existing
+ // friends list
+ Util.FireAndForget(
+ delegate(object o)
{
- m_Friends[client.AgentId].Refcount++;
- return;
- }
-
- UserFriendData newFriends = new UserFriendData();
-
- newFriends.PrincipalID = client.AgentId;
- newFriends.Friends = m_FriendsService.GetFriends(client.AgentId);
- newFriends.Refcount = 1;
- newFriends.RegionID = UUID.Zero;
+ lock (m_Friends)
+ {
+ UserFriendData friendsData;
+ if (m_Friends.TryGetValue(client.AgentId, out friendsData))
+ {
+ friendsData.Refcount++;
+ }
+ else
+ {
+ friendsData = new UserFriendData();
+ friendsData.PrincipalID = client.AgentId;
+ friendsData.Friends = FriendsService.GetFriends(client.AgentId);
+ friendsData.Refcount = 1;
- m_Friends.Add(client.AgentId, newFriends);
- }
-
+ m_Friends[client.AgentId] = friendsData;
+ }
+ }
+ }
+ );
}
private void OnClientClosed(UUID agentID, Scene scene)
{
ScenePresence sp = scene.GetScenePresence(agentID);
if (sp != null && !sp.IsChildAgent)
+ {
// do this for root agents closing out
StatusChange(agentID, false);
+ }
lock (m_Friends)
- if (m_Friends.ContainsKey(agentID))
+ {
+ UserFriendData friendsData;
+ if (m_Friends.TryGetValue(agentID, out friendsData))
{
- if (m_Friends[agentID].Refcount == 1)
+ friendsData.Refcount--;
+ if (friendsData.Refcount <= 0)
m_Friends.Remove(agentID);
- else
- m_Friends[agentID].Refcount--;
}
- }
-
- private void OnMakeRootAgent(ScenePresence sp)
- {
- UUID agentID = sp.ControllingClient.AgentId;
-
- if (m_Friends.ContainsKey(agentID))
- {
- // This is probably an overkill, but just
- // to make sure we have the latest and greatest
- // friends list -- always pull OnMakeRoot
- m_Friends[agentID].Friends =
- m_FriendsService.GetFriends(agentID);
-
- m_Friends[agentID].RegionID =
- sp.ControllingClient.Scene.RegionInfo.RegionID;
}
}
-
- private void OnMakeChildAgent(ScenePresence sp)
+ private void OnMakeRootAgent(ScenePresence sp)
{
UUID agentID = sp.ControllingClient.AgentId;
-
- if (m_Friends.ContainsKey(agentID))
- {
- if (m_Friends[agentID].RegionID == sp.ControllingClient.Scene.RegionInfo.RegionID)
- m_Friends[agentID].RegionID = UUID.Zero;
- }
+ UpdateFriendsCache(agentID);
}
private void OnClientLogin(IClientAPI client)
@@ -295,72 +276,56 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
// Register that we need to send the list of online friends to this user
lock (m_NeedsListOfFriends)
- if (!m_NeedsListOfFriends.Contains(agentID))
- {
- m_NeedsListOfFriends.Add(agentID);
- }
+ m_NeedsListOfFriends.Add(agentID);
}
public void SendFriendsOnlineIfNeeded(IClientAPI client)
{
UUID agentID = client.AgentId;
- if (m_NeedsListOfFriends.Contains(agentID))
+
+ // Check if the online friends list is needed
+ lock (m_NeedsListOfFriends)
{
- if (!m_Friends.ContainsKey(agentID))
- {
- m_log.DebugFormat("[FRIENDS MODULE]: agent {0} not found in local cache", agentID);
+ if (!m_NeedsListOfFriends.Remove(agentID))
return;
- }
-
- //
- // Send the friends online
- //
- List online = GetOnlineFriends(agentID);
- if (online.Count > 0)
- {
- m_log.DebugFormat("[FRIENDS MODULE]: User {0} in region {1} has {2} friends online", client.AgentId, client.Scene.RegionInfo.RegionName, online.Count);
- client.SendAgentOnline(online.ToArray());
- }
-
- //
- // Send outstanding friendship offers
- //
- if (m_Friends.ContainsKey(agentID))
- {
- List outstanding = new List();
+ }
- foreach (FriendInfo fi in m_Friends[agentID].Friends)
- if (fi.TheirFlags == -1)
- outstanding.Add(fi.Friend);
+ // Send the friends online
+ List online = GetOnlineFriends(agentID);
+ if (online.Count > 0)
+ {
+ m_log.DebugFormat("[FRIENDS MODULE]: User {0} in region {1} has {2} friends online", client.AgentId, client.Scene.RegionInfo.RegionName, online.Count);
+ client.SendAgentOnline(online.ToArray());
+ }
- GridInstantMessage im = new GridInstantMessage(client.Scene, UUID.Zero, "", agentID, (byte)InstantMessageDialog.FriendshipOffered, "Will you be my friend?", true, Vector3.Zero);
- foreach (string fid in outstanding)
- {
- try
- {
- im.fromAgentID = new Guid(fid);
- }
- catch
- {
- continue;
- }
+ // Send outstanding friendship offers
+ List outstanding = new List();
+ FriendInfo[] friends = GetFriends(agentID);
+ foreach (FriendInfo fi in friends)
+ {
+ if (fi.TheirFlags == -1)
+ outstanding.Add(fi.Friend);
+ }
- UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(client.Scene.RegionInfo.ScopeID, new UUID(im.fromAgentID));
- im.fromAgentName = account.FirstName + " " + account.LastName;
+ GridInstantMessage im = new GridInstantMessage(client.Scene, UUID.Zero, String.Empty, agentID, (byte)InstantMessageDialog.FriendshipOffered,
+ "Will you be my friend?", true, Vector3.Zero);
- PresenceInfo presence = PresenceService.GetAgent(new UUID(im.fromAgentID));
- if (presence != null)
- im.offline = 0;
+ foreach (string fid in outstanding)
+ {
+ UUID fromAgentID;
+ if (!UUID.TryParse(fid, out fromAgentID))
+ continue;
- im.imSessionID = im.fromAgentID;
+ UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(client.Scene.RegionInfo.ScopeID, fromAgentID);
+ PresenceInfo presence = PresenceService.GetAgent(fromAgentID);
- // Finally
- LocalFriendshipOffered(agentID, im);
- }
- }
+ im.fromAgentID = fromAgentID.Guid;
+ im.fromAgentName = account.FirstName + " " + account.LastName;
+ im.offline = (byte)((presence == null) ? 1 : 0);
+ im.imSessionID = im.fromAgentID;
- lock (m_NeedsListOfFriends)
- m_NeedsListOfFriends.Remove(agentID);
+ // Finally
+ LocalFriendshipOffered(agentID, im);
}
}
@@ -369,44 +334,46 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
List friendList = new List();
List online = new List();
- foreach (FriendInfo fi in m_Friends[userID].Friends)
+ FriendInfo[] friends = GetFriends(userID);
+ foreach (FriendInfo fi in friends)
{
if (((fi.TheirFlags & 1) != 0) && (fi.TheirFlags != -1))
friendList.Add(fi.Friend);
}
- if (friendList.Count == 0)
- // no friends whatsoever
- return online;
-
- PresenceInfo[] presence = PresenceService.GetAgents(friendList.ToArray());
-
- foreach (PresenceInfo pi in presence)
- online.Add(new UUID(pi.UserID));
- //m_log.DebugFormat("[XXX] {0} friend online {1}", userID, pi.UserID);
+ if (friendList.Count > 0)
+ {
+ PresenceInfo[] presence = PresenceService.GetAgents(friendList.ToArray());
+ foreach (PresenceInfo pi in presence)
+ {
+ UUID presenceID;
+ if (UUID.TryParse(pi.UserID, out presenceID))
+ online.Add(presenceID);
+ }
+ }
return online;
}
- //
- // Find the client for a ID
- //
+ ///
+ /// Find the client for a ID
+ ///
public IClientAPI LocateClientObject(UUID agentID)
{
Scene scene = GetClientScene(agentID);
- if (scene == null)
- return null;
-
- ScenePresence presence = scene.GetScenePresence(agentID);
- if (presence == null)
- return null;
+ if (scene != null)
+ {
+ ScenePresence presence = scene.GetScenePresence(agentID);
+ if (presence != null)
+ return presence.ControllingClient;
+ }
- return presence.ControllingClient;
+ return null;
}
- //
- // Find the scene for an agent
- //
+ ///
+ /// Find the scene for an agent
+ ///
private Scene GetClientScene(UUID agentId)
{
lock (m_Scenes)
@@ -414,13 +381,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
foreach (Scene scene in m_Scenes)
{
ScenePresence presence = scene.GetScenePresence(agentId);
- if (presence != null)
- {
- if (!presence.IsChildAgent)
- return scene;
- }
+ if (presence != null && !presence.IsChildAgent)
+ return scene;
}
}
+
return null;
}
@@ -431,35 +396,33 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
///
private void StatusChange(UUID agentID, bool online)
{
- //m_log.DebugFormat("[FRIENDS]: StatusChange {0}", online);
- if (m_Friends.ContainsKey(agentID))
+ FriendInfo[] friends = GetFriends(agentID);
+ if (friends.Length > 0)
{
- //m_log.DebugFormat("[FRIENDS]: # of friends: {0}", m_Friends[agentID].Friends.Length);
List friendList = new List();
- foreach (FriendInfo fi in m_Friends[agentID].Friends)
+ foreach (FriendInfo fi in friends)
{
if (((fi.MyFlags & 1) != 0) && (fi.TheirFlags != -1))
friendList.Add(fi);
}
- Util.FireAndForget(delegate
- {
- foreach (FriendInfo fi in friendList)
+ Util.FireAndForget(
+ delegate
{
- //m_log.DebugFormat("[FRIENDS]: Notifying {0}", fi.PrincipalID);
- // Notify about this user status
- StatusNotify(fi, agentID, online);
+ foreach (FriendInfo fi in friendList)
+ {
+ //m_log.DebugFormat("[FRIENDS]: Notifying {0}", fi.PrincipalID);
+ // Notify about this user status
+ StatusNotify(fi, agentID, online);
+ }
}
- });
+ );
}
- else
- m_log.WarnFormat("[FRIENDS]: {0} not found in cache", agentID);
}
private void StatusNotify(FriendInfo friend, UUID userID, bool online)
{
- UUID friendID = UUID.Zero;
-
+ UUID friendID;
if (UUID.TryParse(friend.Friend, out friendID))
{
// Try local
@@ -476,12 +439,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
}
}
else
+ {
m_log.WarnFormat("[FRIENDS]: Error parsing friend ID {0}", friend.Friend);
+ }
}
private void OnInstantMessage(IClientAPI client, GridInstantMessage im)
{
- if (im.dialog == (byte)OpenMetaverse.InstantMessageDialog.FriendshipOffered)
+ if ((InstantMessageDialog)im.dialog == InstantMessageDialog.FriendshipOffered)
{
// we got a friendship offer
UUID principalID = new UUID(im.fromAgentID);
@@ -527,9 +492,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
FriendsService.StoreFriend(agentID, friendID.ToString(), 1);
FriendsService.StoreFriend(friendID, agentID.ToString(), 1);
- // update the local cache
- m_Friends[agentID].Friends = FriendsService.GetFriends(agentID);
+ // Update the local cache
+ UpdateFriendsCache(agentID);
//
// Notify the friend
@@ -584,7 +549,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
FriendsService.Delete(exfriendID, agentID.ToString());
// Update local cache
- m_Friends[agentID].Friends = FriendsService.GetFriends(agentID);
+ UpdateFriendsCache(agentID);
client.SendTerminateFriend(exfriendID);
@@ -606,16 +571,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
private void OnGrantUserRights(IClientAPI remoteClient, UUID requester, UUID target, int rights)
{
- if (!m_Friends.ContainsKey(remoteClient.AgentId))
+ FriendInfo[] friends = GetFriends(remoteClient.AgentId);
+ if (friends.Length == 0)
return;
m_log.DebugFormat("[FRIENDS MODULE]: User {0} changing rights to {1} for friend {2}", requester, rights, target);
// Let's find the friend in this user's friend list
- UserFriendData fd = m_Friends[remoteClient.AgentId];
FriendInfo friend = null;
- foreach (FriendInfo fi in fd.Friends)
+ foreach (FriendInfo fi in friends)
+ {
if (fi.Friend == target.ToString())
friend = fi;
+ }
if (friend != null) // Found it
{
@@ -672,8 +639,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
GridInstantMessage im = new GridInstantMessage(Scene, userID, userName, friendID,
(byte)OpenMetaverse.InstantMessageDialog.FriendshipAccepted, userID.ToString(), false, Vector3.Zero);
friendClient.SendInstantMessage(im);
- // update the local cache
- m_Friends[friendID].Friends = FriendsService.GetFriends(friendID);
+
+ // Update the local cache
+ UpdateFriendsCache(friendID);
+
// we're done
return true;
}
@@ -687,7 +656,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
if (friendClient != null)
{
// the prospective friend in this sim as root agent
-
GridInstantMessage im = new GridInstantMessage(Scene, userID, userName, friendID,
(byte)OpenMetaverse.InstantMessageDialog.FriendshipDeclined, userID.ToString(), false, Vector3.Zero);
friendClient.SendInstantMessage(im);
@@ -706,7 +674,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
// the friend in this sim as root agent
friendClient.SendTerminateFriend(exfriendID);
// update local cache
- m_Friends[exfriendID].Friends = FriendsService.GetFriends(exfriendID);
+ UpdateFriendsCache(exfriendID);
// we're done
return true;
}
@@ -735,11 +703,16 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
}
- // update local cache
- //m_Friends[friendID].Friends = m_FriendsService.GetFriends(friendID);
- foreach (FriendInfo finfo in m_Friends[friendID].Friends)
- if (finfo.Friend == userID.ToString())
- finfo.TheirFlags = rights;
+ // Update local cache
+ lock (m_Friends)
+ {
+ FriendInfo[] friends = GetFriends(friendID);
+ foreach (FriendInfo finfo in friends)
+ {
+ if (finfo.Friend == userID.ToString())
+ finfo.TheirFlags = rights;
+ }
+ }
return true;
}
@@ -765,7 +738,30 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
return false;
}
+
#endregion
+ private FriendInfo[] GetFriends(UUID agentID)
+ {
+ UserFriendData friendsData;
+
+ lock (m_Friends)
+ {
+ if (m_Friends.TryGetValue(agentID, out friendsData))
+ return friendsData.Friends;
+ }
+
+ return EMPTY_FRIENDS;
+ }
+
+ private void UpdateFriendsCache(UUID agentID)
+ {
+ lock (m_Friends)
+ {
+ UserFriendData friendsData;
+ if (m_Friends.TryGetValue(agentID, out friendsData))
+ friendsData.Friends = FriendsService.GetFriends(agentID);
+ }
+ }
}
}
--
cgit v1.1
From 9609faa8eb330dc85dfb2efec1e7e5652f01d6f2 Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Thu, 9 Sep 2010 15:05:22 -0700
Subject: * Run SimianGrid session updates asynchronously instead of from the
main heartbeat thread * Minor dead code cleanup
---
.../SimianGrid/SimianActivityDetector.cs | 8 ++--
.../SimianGrid/SimianAvatarServiceConnector.cs | 3 --
.../SimianGrid/SimianFriendsServiceConnector.cs | 3 --
.../SimianGrid/SimianInventoryServiceConnector.cs | 1 -
.../SimianGrid/SimianPresenceServiceConnector.cs | 55 ----------------------
.../SimianUserAccountServiceConnector.cs | 1 -
6 files changed, 5 insertions(+), 66 deletions(-)
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs
index a871d07..67b73f3 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs
@@ -26,11 +26,9 @@
*/
using System;
-using System.Collections.Generic;
using System.Reflection;
using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
-using OpenSim.Services.Interfaces;
using OpenMetaverse;
using log4net;
@@ -107,7 +105,11 @@ namespace OpenSim.Services.Connectors.SimianGrid
void OnEnteringNewParcel(ScenePresence sp, int localLandID, UUID regionID)
{
- m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
+ // Asynchronously update the position stored in the session table for this agent
+ Util.FireAndForget(delegate(object o)
+ {
+ m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
+ });
}
}
}
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs
index 3505c64..4d0d53e 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs
@@ -28,8 +28,6 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
-using System.IO;
-using System.Net;
using System.Reflection;
using log4net;
using Mono.Addins;
@@ -37,7 +35,6 @@ using Nini.Config;
using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
-using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs
index 5b18aef..6f2d735 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs
@@ -30,13 +30,10 @@ using System.Collections.Generic;
using System.Collections.Specialized;
using System.Reflection;
using log4net;
-using Mono.Addins;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
using FriendInfo = OpenSim.Services.Interfaces.FriendInfo;
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
index 3953369..21ad4ab 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
@@ -37,7 +37,6 @@ using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
-using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
namespace OpenSim.Services.Connectors.SimianGrid
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs
index 077be3c..a344594 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs
@@ -28,17 +28,14 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
-using System.Net;
using System.Reflection;
using log4net;
using Mono.Addins;
using Nini.Config;
using OpenSim.Framework;
-using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
-using OpenSim.Server.Base;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
@@ -358,25 +355,6 @@ namespace OpenSim.Services.Connectors.SimianGrid
return null;
}
-// private OSDMap GetSessionData(UUID sessionID)
-// {
-// m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting session data for session " + sessionID);
-//
-// NameValueCollection requestArgs = new NameValueCollection
-// {
-// { "RequestMethod", "GetSession" },
-// { "SessionID", sessionID.ToString() }
-// };
-//
-// OSDMap response = WebUtil.PostToService(m_serverUrl, requestArgs);
-// if (response["Success"].AsBoolean())
-// return response;
-// else
-// m_log.Warn("[SIMIAN PRESENCE CONNECTOR]: Failed to retrieve session data for session " + sessionID);
-//
-// return null;
-// }
-
private List GetSessions(UUID userID)
{
List presences = new List(1);
@@ -429,39 +407,6 @@ namespace OpenSim.Services.Connectors.SimianGrid
return success;
}
- /////
- ///// Fetch the last known avatar location with GetSession and persist it
- ///// as user data with AddUserData
- /////
- //private bool SetLastLocation(UUID sessionID)
- //{
- // NameValueCollection requestArgs = new NameValueCollection
- // {
- // { "RequestMethod", "GetSession" },
- // { "SessionID", sessionID.ToString() }
- // };
-
- // OSDMap response = WebUtil.PostToService(m_serverUrl, requestArgs);
- // bool success = response["Success"].AsBoolean();
-
- // if (success)
- // {
- // UUID userID = response["UserID"].AsUUID();
- // UUID sceneID = response["SceneID"].AsUUID();
- // Vector3 position = response["ScenePosition"].AsVector3();
- // Vector3 lookAt = response["SceneLookAt"].AsVector3();
-
- // return SetLastLocation(userID, sceneID, position, lookAt);
- // }
- // else
- // {
- // m_log.Warn("[SIMIAN PRESENCE CONNECTOR]: Failed to retrieve presence information for session " + sessionID +
- // " while saving last location: " + response["Message"].AsString());
- // }
-
- // return success;
- //}
-
private PresenceInfo ResponseToPresenceInfo(OSDMap sessionResponse, OSDMap userResponse)
{
if (sessionResponse == null)
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
index 1ac9882..ddd2322 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
@@ -28,7 +28,6 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
-using System.IO;
using System.Reflection;
using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
--
cgit v1.1
From dd277a0d02f1aa79f4fcb5d108cbc696e90500c2 Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Fri, 10 Sep 2010 12:04:12 -0700
Subject: First pass at cleaning up thread safety in EntityManager and
SceneGraph
---
OpenSim/Data/IAssetData.cs | 11 -
OpenSim/Data/IInventoryData.cs | 11 -
.../Avatar/Attachments/AttachmentsModule.cs | 2 +-
.../Archiver/ArchiveWriteRequestPreparation.cs | 2 +-
.../CoreModules/World/Land/LandManagementModule.cs | 3 +-
.../World/Serialiser/SerialiseObjects.cs | 2 +-
.../World/Serialiser/SerialiserModule.cs | 4 +-
.../CoreModules/World/WorldMap/MapImageModule.cs | 2 +-
OpenSim/Region/DataSnapshot/ObjectSnapshot.cs | 3 +-
.../Interfaces/IRegionSerialiserModule.cs | 4 +-
OpenSim/Region/Framework/Scenes/EntityManager.cs | 210 ++++------------
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 3 +-
.../Framework/Scenes/Scene.PacketHandlers.cs | 16 +-
OpenSim/Region/Framework/Scenes/Scene.cs | 45 ++--
OpenSim/Region/Framework/Scenes/SceneGraph.cs | 263 ++++++++++-----------
OpenSim/Region/Framework/Scenes/SceneViewer.cs | 3 +-
.../Scenes/Serialization/SceneXmlLoader.cs | 23 +-
.../Server/IRCClientView.cs | 10 +-
.../ContentManagementSystem/CMEntityCollection.cs | 2 +-
.../ContentManagementEntity.cs | 2 +-
.../Scripting/Minimodule/ObjectAccessor.cs | 4 +-
.../OptionalModules/Scripting/Minimodule/World.cs | 6 +-
.../World/TreePopulator/TreePopulatorModule.cs | 3 +-
.../Api/Implementation/Plugins/SensorRepeat.cs | 2 +-
.../SimianGrid/SimianActivityDetector.cs | 5 +-
25 files changed, 249 insertions(+), 392 deletions(-)
diff --git a/OpenSim/Data/IAssetData.cs b/OpenSim/Data/IAssetData.cs
index 90d5eeb..f31b215c 100644
--- a/OpenSim/Data/IAssetData.cs
+++ b/OpenSim/Data/IAssetData.cs
@@ -40,15 +40,4 @@ namespace OpenSim.Data
void Initialise(string connect);
bool Delete(string id);
}
-
- public class AssetDataInitialiser : PluginInitialiserBase
- {
- private string connect;
- public AssetDataInitialiser (string s) { connect = s; }
- public override void Initialise (IPlugin plugin)
- {
- IAssetDataPlugin p = plugin as IAssetDataPlugin;
- p.Initialise (connect);
- }
- }
}
diff --git a/OpenSim/Data/IInventoryData.cs b/OpenSim/Data/IInventoryData.cs
index 90f74b7..74d5d37 100644
--- a/OpenSim/Data/IInventoryData.cs
+++ b/OpenSim/Data/IInventoryData.cs
@@ -155,15 +155,4 @@ namespace OpenSim.Data
///
List fetchActiveGestures(UUID avatarID);
}
-
- public class InventoryDataInitialiser : PluginInitialiserBase
- {
- private string connect;
- public InventoryDataInitialiser (string s) { connect = s; }
- public override void Initialise (IPlugin plugin)
- {
- IInventoryDataPlugin p = plugin as IInventoryDataPlugin;
- p.Initialise (connect);
- }
- }
}
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index dd7d831..7270304 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -436,7 +436,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
// We can NOT use the dictionries here, as we are looking
// for an entity by the fromAssetID, which is NOT the prim UUID
- List detachEntities = m_scene.GetEntities();
+ EntityBase[] detachEntities = m_scene.GetEntities();
SceneObjectGroup group;
foreach (EntityBase entity in detachEntities)
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs
index b25636f..283b33b 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs
@@ -102,7 +102,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
{
Dictionary assetUuids = new Dictionary();
- List entities = m_scene.GetEntities();
+ EntityBase[] entities = m_scene.GetEntities();
List sceneObjects = new List();
/*
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
index da7a284..ea71fd9 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
@@ -794,7 +794,8 @@ namespace OpenSim.Region.CoreModules.World.Land
public void EventManagerOnParcelPrimCountUpdate()
{
ResetAllLandPrimCounts();
- foreach (EntityBase obj in m_scene.Entities)
+ EntityBase[] entities = m_scene.Entities.GetEntities();
+ foreach (EntityBase obj in entities)
{
if (obj != null)
{
diff --git a/OpenSim/Region/CoreModules/World/Serialiser/SerialiseObjects.cs b/OpenSim/Region/CoreModules/World/Serialiser/SerialiseObjects.cs
index bef7fe4..5067ebd 100644
--- a/OpenSim/Region/CoreModules/World/Serialiser/SerialiseObjects.cs
+++ b/OpenSim/Region/CoreModules/World/Serialiser/SerialiseObjects.cs
@@ -80,7 +80,7 @@ namespace OpenSim.Region.CoreModules.World.Serialiser
{
string xmlstream = "";
- List EntityList = scene.GetEntities();
+ EntityBase[] EntityList = scene.GetEntities();
List EntityXml = new List();
foreach (EntityBase ent in EntityList)
diff --git a/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs b/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs
index 58e4261..98fe493 100644
--- a/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs
+++ b/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs
@@ -165,12 +165,12 @@ namespace OpenSim.Region.CoreModules.World.Serialiser
return SceneXmlLoader.SaveGroupToXml2(grp);
}
- public void SavePrimListToXml2(List entityList, string fileName)
+ public void SavePrimListToXml2(EntityBase[] entityList, string fileName)
{
SceneXmlLoader.SavePrimListToXml2(entityList, fileName);
}
- public void SavePrimListToXml2(List entityList, TextWriter stream, Vector3 min, Vector3 max)
+ public void SavePrimListToXml2(EntityBase[] entityList, TextWriter stream, Vector3 min, Vector3 max)
{
SceneXmlLoader.SavePrimListToXml2(entityList, stream, min, max);
}
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/MapImageModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/MapImageModule.cs
index 57eff8a..1d9c2bd 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/MapImageModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/MapImageModule.cs
@@ -212,7 +212,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
double[,] hm = whichScene.Heightmap.GetDoubles();
tc = Environment.TickCount;
m_log.Info("[MAPTILE]: Generating Maptile Step 2: Object Volume Profile");
- List objs = whichScene.GetEntities();
+ EntityBase[] objs = whichScene.GetEntities();
Dictionary z_sort = new Dictionary();
//SortedList z_sort = new SortedList();
List z_sortheights = new List();
diff --git a/OpenSim/Region/DataSnapshot/ObjectSnapshot.cs b/OpenSim/Region/DataSnapshot/ObjectSnapshot.cs
index 3c39f9e..5e75cae 100644
--- a/OpenSim/Region/DataSnapshot/ObjectSnapshot.cs
+++ b/OpenSim/Region/DataSnapshot/ObjectSnapshot.cs
@@ -101,7 +101,8 @@ namespace OpenSim.Region.DataSnapshot.Providers
XmlNode parent = nodeFactory.CreateNode(XmlNodeType.Element, "objectdata", "");
XmlNode node;
- foreach (EntityBase entity in m_scene.Entities)
+ EntityBase[] entities = m_scene.Entities.GetEntities();
+ foreach (EntityBase entity in entities)
{
// only objects, not avatars
if (entity is SceneObjectGroup)
diff --git a/OpenSim/Region/Framework/Interfaces/IRegionSerialiserModule.cs b/OpenSim/Region/Framework/Interfaces/IRegionSerialiserModule.cs
index e7562a5..18758c8 100644
--- a/OpenSim/Region/Framework/Interfaces/IRegionSerialiserModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IRegionSerialiserModule.cs
@@ -90,7 +90,7 @@ namespace OpenSim.Region.Framework.Interfaces
///
///
///
- void SavePrimListToXml2(List entityList, string fileName);
+ void SavePrimListToXml2(EntityBase[] entityList, string fileName);
///
/// Save a set of prims in the xml2 format, optionally specifying a bounding box for which
@@ -101,7 +101,7 @@ namespace OpenSim.Region.Framework.Interfaces
///
///
///
- void SavePrimListToXml2(List entityList, TextWriter stream, Vector3 min, Vector3 max);
+ void SavePrimListToXml2(EntityBase[] entityList, TextWriter stream, Vector3 min, Vector3 max);
void SaveNamedPrimsToXml2(Scene scene, string primName, string fileName);
diff --git a/OpenSim/Region/Framework/Scenes/EntityManager.cs b/OpenSim/Region/Framework/Scenes/EntityManager.cs
index 099fcce..85d0a4f 100644
--- a/OpenSim/Region/Framework/Scenes/EntityManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EntityManager.cs
@@ -34,187 +34,89 @@ using OpenMetaverse;
namespace OpenSim.Region.Framework.Scenes
{
- public class EntityManager : IEnumerable
+ public class EntityManager //: IEnumerable
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- private readonly Dictionary m_eb_uuid = new Dictionary();
- private readonly Dictionary m_eb_localID = new Dictionary();
- //private readonly Dictionary m_pres_uuid = new Dictionary();
- private readonly Object m_lock = new Object();
+ private readonly DoubleDictionary m_entities = new DoubleDictionary();
- [Obsolete("Use Add() instead.")]
- public void Add(UUID id, EntityBase eb)
+ public int Count
{
- Add(eb);
+ get { return m_entities.Count; }
}
public void Add(EntityBase entity)
{
- lock (m_lock)
- {
- try
- {
- m_eb_uuid.Add(entity.UUID, entity);
- m_eb_localID.Add(entity.LocalId, entity);
- }
- catch(Exception e)
- {
- m_log.ErrorFormat("Add Entity failed: {0}", e.Message);
- }
- }
- }
-
- public void InsertOrReplace(EntityBase entity)
- {
- lock (m_lock)
- {
- try
- {
- m_eb_uuid[entity.UUID] = entity;
- m_eb_localID[entity.LocalId] = entity;
- }
- catch(Exception e)
- {
- m_log.ErrorFormat("Insert or Replace Entity failed: {0}", e.Message);
- }
- }
+ m_entities.Add(entity.UUID, entity.LocalId, entity);
}
public void Clear()
{
- lock (m_lock)
- {
- m_eb_uuid.Clear();
- m_eb_localID.Clear();
- }
- }
-
- public int Count
- {
- get
- {
- return m_eb_uuid.Count;
- }
+ m_entities.Clear();
}
public bool ContainsKey(UUID id)
{
- try
- {
- return m_eb_uuid.ContainsKey(id);
- }
- catch
- {
- return false;
- }
+ return m_entities.ContainsKey(id);
}
public bool ContainsKey(uint localID)
{
- try
- {
- return m_eb_localID.ContainsKey(localID);
- }
- catch
- {
- return false;
- }
+ return m_entities.ContainsKey(localID);
}
public bool Remove(uint localID)
{
- lock (m_lock)
- {
- try
- {
- bool a = false;
- EntityBase entity;
- if (m_eb_localID.TryGetValue(localID, out entity))
- a = m_eb_uuid.Remove(entity.UUID);
-
- bool b = m_eb_localID.Remove(localID);
- return a && b;
- }
- catch (Exception e)
- {
- m_log.ErrorFormat("Remove Entity failed for {0}", localID, e);
- return false;
- }
- }
+ return m_entities.Remove(localID);
}
public bool Remove(UUID id)
{
- lock (m_lock)
- {
- try
- {
- bool a = false;
- EntityBase entity;
- if (m_eb_uuid.TryGetValue(id, out entity))
- a = m_eb_localID.Remove(entity.LocalId);
-
- bool b = m_eb_uuid.Remove(id);
- return a && b;
- }
- catch (Exception e)
- {
- m_log.ErrorFormat("Remove Entity failed for {0}", id, e);
- return false;
- }
- }
+ return m_entities.Remove(id);
}
- public List GetAllByType()
+ public EntityBase[] GetAllByType()
{
List tmp = new List();
- lock (m_lock)
- {
- try
+ m_entities.ForEach(
+ delegate(EntityBase entity)
{
- foreach (KeyValuePair pair in m_eb_uuid)
- {
- if (pair.Value is T)
- {
- tmp.Add(pair.Value);
- }
- }
+ if (entity is T)
+ tmp.Add(entity);
}
- catch (Exception e)
- {
- m_log.ErrorFormat("GetAllByType failed for {0}", e);
- tmp = null;
- }
- }
+ );
- return tmp;
+ return tmp.ToArray();
}
- public List GetEntities()
+ public EntityBase[] GetEntities()
{
- lock (m_lock)
- {
- return new List(m_eb_uuid.Values);
- }
+ List tmp = new List(m_entities.Count);
+ m_entities.ForEach(delegate(EntityBase entity) { tmp.Add(entity); });
+ return tmp.ToArray();
+ }
+
+ public void ForEach(Action action)
+ {
+ m_entities.ForEach(action);
+ }
+
+ public EntityBase Find(Predicate predicate)
+ {
+ return m_entities.FindValue(predicate);
}
public EntityBase this[UUID id]
{
get
{
- lock (m_lock)
- {
- EntityBase entity;
- if (m_eb_uuid.TryGetValue(id, out entity))
- return entity;
- else
- return null;
- }
+ EntityBase entity;
+ m_entities.TryGetValue(id, out entity);
+ return entity;
}
set
{
- InsertOrReplace(value);
+ Add(value);
}
}
@@ -222,50 +124,38 @@ namespace OpenSim.Region.Framework.Scenes
{
get
{
- lock (m_lock)
- {
- EntityBase entity;
- if (m_eb_localID.TryGetValue(localID, out entity))
- return entity;
- else
- return null;
- }
+ EntityBase entity;
+ m_entities.TryGetValue(localID, out entity);
+ return entity;
}
set
{
- InsertOrReplace(value);
+ Add(value);
}
}
public bool TryGetValue(UUID key, out EntityBase obj)
{
- lock (m_lock)
- {
- return m_eb_uuid.TryGetValue(key, out obj);
- }
+ return m_entities.TryGetValue(key, out obj);
}
public bool TryGetValue(uint key, out EntityBase obj)
{
- lock (m_lock)
- {
- return m_eb_localID.TryGetValue(key, out obj);
- }
+ return m_entities.TryGetValue(key, out obj);
}
///
/// This could be optimised to work on the list 'live' rather than making a safe copy and iterating that.
///
///
- public IEnumerator GetEnumerator()
- {
- return GetEntities().GetEnumerator();
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return GetEnumerator();
- }
-
+ //public IEnumerator GetEnumerator()
+ //{
+ // return GetEntities().GetEnumerator();
+ //}
+
+ //IEnumerator IEnumerable.GetEnumerator()
+ //{
+ // return GetEnumerator();
+ //}
}
}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index c49386a..a439eb9 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -58,7 +58,8 @@ namespace OpenSim.Region.Framework.Scenes
{
m_log.Info("[PRIM INVENTORY]: Starting scripts in scene");
- foreach (EntityBase group in Entities)
+ EntityBase[] entities = Entities.GetEntities();
+ foreach (EntityBase group in entities)
{
if (group is SceneObjectGroup)
{
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
index c511774..2f69476 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
@@ -116,9 +116,8 @@ namespace OpenSim.Region.Framework.Scenes
///
public void RequestPrim(uint primLocalID, IClientAPI remoteClient)
{
- List EntityList = GetEntities();
-
- foreach (EntityBase ent in EntityList)
+ EntityBase[] entityList = GetEntities();
+ foreach (EntityBase ent in entityList)
{
if (ent is SceneObjectGroup)
{
@@ -138,9 +137,8 @@ namespace OpenSim.Region.Framework.Scenes
///
public void SelectPrim(uint primLocalID, IClientAPI remoteClient)
{
- List EntityList = GetEntities();
-
- foreach (EntityBase ent in EntityList)
+ EntityBase[] entityList = GetEntities();
+ foreach (EntityBase ent in entityList)
{
if (ent is SceneObjectGroup)
{
@@ -259,7 +257,7 @@ namespace OpenSim.Region.Framework.Scenes
public virtual void ProcessObjectGrab(uint localID, Vector3 offsetPos, IClientAPI remoteClient, List surfaceArgs)
{
- List EntityList = GetEntities();
+ EntityBase[] EntityList = GetEntities();
SurfaceTouchEventArgs surfaceArg = null;
if (surfaceArgs != null && surfaceArgs.Count > 0)
@@ -303,7 +301,7 @@ namespace OpenSim.Region.Framework.Scenes
public virtual void ProcessObjectGrabUpdate(UUID objectID, Vector3 offset, Vector3 pos, IClientAPI remoteClient, List surfaceArgs)
{
- List EntityList = GetEntities();
+ EntityBase[] EntityList = GetEntities();
SurfaceTouchEventArgs surfaceArg = null;
if (surfaceArgs != null && surfaceArgs.Count > 0)
@@ -343,7 +341,7 @@ namespace OpenSim.Region.Framework.Scenes
public virtual void ProcessObjectDeGrab(uint localID, IClientAPI remoteClient, List surfaceArgs)
{
- List EntityList = GetEntities();
+ EntityBase[] EntityList = GetEntities();
SurfaceTouchEventArgs surfaceArg = null;
if (surfaceArgs != null && surfaceArgs.Count > 0)
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 82e7d76..7ce95a7 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1029,29 +1029,30 @@ namespace OpenSim.Region.Framework.Scenes
if (ScriptEngine)
{
m_log.Info("Stopping all Scripts in Scene");
- foreach (EntityBase ent in Entities)
+
+ EntityBase[] entities = Entities.GetEntities();
+ foreach (EntityBase ent in entities)
{
if (ent is SceneObjectGroup)
- {
- ((SceneObjectGroup) ent).RemoveScriptInstances(false);
- }
+ ((SceneObjectGroup)ent).RemoveScriptInstances(false);
}
}
else
{
m_log.Info("Starting all Scripts in Scene");
- lock (Entities)
+
+ EntityBase[] entities = Entities.GetEntities();
+ foreach (EntityBase ent in entities)
{
- foreach (EntityBase ent in Entities)
+ if (ent is SceneObjectGroup)
{
- if (ent is SceneObjectGroup)
- {
- ((SceneObjectGroup)ent).CreateScriptInstances(0, false, DefaultScriptEngine, 0);
- ((SceneObjectGroup)ent).ResumeScripts();
- }
+ SceneObjectGroup sog = (SceneObjectGroup)ent;
+ sog.CreateScriptInstances(0, false, DefaultScriptEngine, 0);
+ sog.ResumeScripts();
}
}
}
+
m_scripts_enabled = !ScriptEngine;
m_log.Info("[TOTEDD]: Here is the method to trigger disabling of the scripting engine");
}
@@ -1098,7 +1099,7 @@ namespace OpenSim.Region.Framework.Scenes
shuttingdown = true;
m_log.Debug("[SCENE]: Persisting changed objects");
- List entities = GetEntities();
+ EntityBase[] entities = GetEntities();
foreach (EntityBase entity in entities)
{
if (!entity.IsDeleted && entity is SceneObjectGroup && ((SceneObjectGroup)entity).HasGroupChanged)
@@ -2037,8 +2038,7 @@ namespace OpenSim.Region.Framework.Scenes
{
lock (Entities)
{
- ICollection entities = new List(Entities);
-
+ EntityBase[] entities = Entities.GetEntities();
foreach (EntityBase e in entities)
{
if (e is SceneObjectGroup)
@@ -3977,9 +3977,8 @@ namespace OpenSim.Region.Framework.Scenes
///
public void ForceClientUpdate()
{
- List EntityList = GetEntities();
-
- foreach (EntityBase ent in EntityList)
+ EntityBase[] entityList = GetEntities();
+ foreach (EntityBase ent in entityList)
{
if (ent is SceneObjectGroup)
{
@@ -3997,9 +3996,8 @@ namespace OpenSim.Region.Framework.Scenes
{
m_log.Debug("Searching for Primitive: '" + cmdparams[2] + "'");
- List EntityList = GetEntities();
-
- foreach (EntityBase ent in EntityList)
+ EntityBase[] entityList = GetEntities();
+ foreach (EntityBase ent in entityList)
{
if (ent is SceneObjectGroup)
{
@@ -4368,7 +4366,7 @@ namespace OpenSim.Region.Framework.Scenes
/// will not affect the original list of objects in the scene.
///
///
- public List GetEntities()
+ public EntityBase[] GetEntities()
{
return m_sceneGraph.GetEntities();
}
@@ -4402,9 +4400,8 @@ namespace OpenSim.Region.Framework.Scenes
public void CleanTempObjects()
{
- List objs = GetEntities();
-
- foreach (EntityBase obj in objs)
+ EntityBase[] entities = GetEntities();
+ foreach (EntityBase obj in entities)
{
if (obj is SceneObjectGroup)
{
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index dfb26b9..3d3e822 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -348,68 +348,57 @@ namespace OpenSim.Region.Framework.Scenes
if (sceneObject == null || sceneObject.RootPart == null || sceneObject.RootPart.UUID == UUID.Zero)
return false;
- lock (sceneObject)
- {
- if (Entities.ContainsKey(sceneObject.UUID))
- {
-// m_log.WarnFormat(
-// "[SCENE GRAPH]: Scene object {0} {1} was already in region {2} on add request",
-// sceneObject.Name, sceneObject.UUID, m_parentScene.RegionInfo.RegionName);
- return false;
- }
-
-// m_log.DebugFormat(
-// "[SCENE GRAPH]: Adding object {0} {1} to region {2}",
-// sceneObject.Name, sceneObject.UUID, m_parentScene.RegionInfo.RegionName);
-
- lock (sceneObject.Children)
+ if (Entities.ContainsKey(sceneObject.UUID))
+ return false;
+
+ // Clamp child prim sizes and add child prims to the m_numPrim count
+ lock (sceneObject.Children)
+ {
+ if (m_parentScene.m_clampPrimSize)
{
- if (m_parentScene.m_clampPrimSize)
+ foreach (SceneObjectPart part in sceneObject.Children.Values)
{
- foreach (SceneObjectPart part in sceneObject.Children.Values)
- {
- Vector3 scale = part.Shape.Scale;
-
- if (scale.X > m_parentScene.m_maxNonphys)
- scale.X = m_parentScene.m_maxNonphys;
- if (scale.Y > m_parentScene.m_maxNonphys)
- scale.Y = m_parentScene.m_maxNonphys;
- if (scale.Z > m_parentScene.m_maxNonphys)
- scale.Z = m_parentScene.m_maxNonphys;
-
- part.Shape.Scale = scale;
- }
+ Vector3 scale = part.Shape.Scale;
+
+ if (scale.X > m_parentScene.m_maxNonphys)
+ scale.X = m_parentScene.m_maxNonphys;
+ if (scale.Y > m_parentScene.m_maxNonphys)
+ scale.Y = m_parentScene.m_maxNonphys;
+ if (scale.Z > m_parentScene.m_maxNonphys)
+ scale.Z = m_parentScene.m_maxNonphys;
+
+ part.Shape.Scale = scale;
}
-
- m_numPrim += sceneObject.Children.Count;
}
-
- sceneObject.AttachToScene(m_parentScene);
- if (sendClientUpdates)
- sceneObject.ScheduleGroupForFullUpdate();
-
- Entities.Add(sceneObject);
+ m_numPrim += sceneObject.Children.Count;
+ }
- if (attachToBackup)
- sceneObject.AttachToBackup();
+ sceneObject.AttachToScene(m_parentScene);
- if (OnObjectCreate != null)
- OnObjectCreate(sceneObject);
-
- lock (SceneObjectGroupsByFullID)
- {
- SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject;
- foreach (SceneObjectPart part in sceneObject.Children.Values)
- SceneObjectGroupsByFullID[part.UUID] = sceneObject;
- }
-
- lock (SceneObjectGroupsByLocalID)
- {
- SceneObjectGroupsByLocalID[sceneObject.LocalId] = sceneObject;
- foreach (SceneObjectPart part in sceneObject.Children.Values)
- SceneObjectGroupsByLocalID[part.LocalId] = sceneObject;
- }
+ if (sendClientUpdates)
+ sceneObject.ScheduleGroupForFullUpdate();
+
+ Entities.Add(sceneObject);
+
+ if (attachToBackup)
+ sceneObject.AttachToBackup();
+
+ if (OnObjectCreate != null)
+ OnObjectCreate(sceneObject);
+
+ lock (SceneObjectGroupsByFullID)
+ {
+ SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject;
+ foreach (SceneObjectPart part in sceneObject.Children.Values)
+ SceneObjectGroupsByFullID[part.UUID] = sceneObject;
+ }
+
+ lock (SceneObjectGroupsByLocalID)
+ {
+ SceneObjectGroupsByLocalID[sceneObject.LocalId] = sceneObject;
+ foreach (SceneObjectPart part in sceneObject.Children.Values)
+ SceneObjectGroupsByLocalID[part.LocalId] = sceneObject;
}
return true;
@@ -421,42 +410,38 @@ namespace OpenSim.Region.Framework.Scenes
/// true if the object was deleted, false if there was no object to delete
public bool DeleteSceneObject(UUID uuid, bool resultOfObjectLinked)
{
- if (Entities.ContainsKey(uuid))
- {
- SceneObjectGroup grp = (SceneObjectGroup)Entities[uuid];
+ EntityBase entity;
+ if (!Entities.TryGetValue(uuid, out entity) && entity is SceneObjectGroup)
+ return false;
- if (!resultOfObjectLinked)
- {
- m_numPrim -= grp.PrimCount;
+ SceneObjectGroup grp = (SceneObjectGroup)entity;
- if ((grp.RootPart.Flags & PrimFlags.Physics) == PrimFlags.Physics)
- RemovePhysicalPrim(grp.PrimCount);
- }
+ if (!resultOfObjectLinked)
+ {
+ m_numPrim -= grp.PrimCount;
- if (OnObjectRemove != null)
- OnObjectRemove(Entities[uuid]);
+ if ((grp.RootPart.Flags & PrimFlags.Physics) == PrimFlags.Physics)
+ RemovePhysicalPrim(grp.PrimCount);
+ }
- lock (SceneObjectGroupsByFullID)
- {
- foreach (SceneObjectPart part in grp.Children.Values)
- SceneObjectGroupsByFullID.Remove(part.UUID);
- SceneObjectGroupsByFullID.Remove(grp.RootPart.UUID);
- }
- lock (SceneObjectGroupsByLocalID)
- {
- foreach (SceneObjectPart part in grp.Children.Values)
- SceneObjectGroupsByLocalID.Remove(part.LocalId);
- SceneObjectGroupsByLocalID.Remove(grp.RootPart.LocalId);
- }
+ if (OnObjectRemove != null)
+ OnObjectRemove(Entities[uuid]);
- Entities.Remove(uuid);
- //SceneObjectGroup part;
- //((part.RootPart.Flags & PrimFlags.Physics) == PrimFlags.Physics)
+ lock (SceneObjectGroupsByFullID)
+ {
+ foreach (SceneObjectPart part in grp.Children.Values)
+ SceneObjectGroupsByFullID.Remove(part.UUID);
+ SceneObjectGroupsByFullID.Remove(grp.RootPart.UUID);
+ }
- return true;
+ lock (SceneObjectGroupsByLocalID)
+ {
+ foreach (SceneObjectPart part in grp.Children.Values)
+ SceneObjectGroupsByLocalID.Remove(part.LocalId);
+ SceneObjectGroupsByLocalID.Remove(grp.RootPart.LocalId);
}
- return false;
+ return Entities.Remove(uuid);
}
///
@@ -468,9 +453,7 @@ namespace OpenSim.Region.Framework.Scenes
protected internal void AddToUpdateList(SceneObjectGroup obj)
{
lock (m_updateList)
- {
m_updateList[obj.UUID] = obj;
- }
}
///
@@ -480,34 +463,39 @@ namespace OpenSim.Region.Framework.Scenes
{
if (!Monitor.TryEnter(m_updateLock))
return;
-
- List updates;
-
- // Some updates add more updates to the updateList.
- // Get the current list of updates and clear the list before iterating
- lock (m_updateList)
- {
- updates = new List(m_updateList.Values);
- m_updateList.Clear();
- }
-
- // Go through all updates
- for (int i = 0; i < updates.Count; i++)
+ try
{
- SceneObjectGroup sog = updates[i];
+ List updates;
- // Don't abort the whole update if one entity happens to give us an exception.
- try
+ // Some updates add more updates to the updateList.
+ // Get the current list of updates and clear the list before iterating
+ lock (m_updateList)
{
- sog.Update();
+ updates = new List(m_updateList.Values);
+ m_updateList.Clear();
}
- catch (Exception e)
+
+ // Go through all updates
+ for (int i = 0; i < updates.Count; i++)
{
- m_log.ErrorFormat(
- "[INNER SCENE]: Failed to update {0}, {1} - {2}", sog.Name, sog.UUID, e);
+ SceneObjectGroup sog = updates[i];
+
+ // Don't abort the whole update if one entity happens to give us an exception.
+ try
+ {
+ sog.Update();
+ }
+ catch (Exception e)
+ {
+ m_log.ErrorFormat(
+ "[INNER SCENE]: Failed to update {0}, {1} - {2}", sog.Name, sog.UUID, e);
+ }
}
}
- Monitor.Exit(m_updateLock);
+ finally
+ {
+ Monitor.Exit(m_updateLock);
+ }
}
protected internal void AddPhysicalPrim(int number)
@@ -864,8 +852,9 @@ namespace OpenSim.Region.Framework.Scenes
/// null if no scene object group containing that prim is found
public SceneObjectGroup GetGroupByPrim(uint localID)
{
- if (Entities.ContainsKey(localID))
- return Entities[localID] as SceneObjectGroup;
+ EntityBase entity;
+ if (Entities.TryGetValue(localID, out entity))
+ return entity as SceneObjectGroup;
//m_log.DebugFormat("Entered GetGroupByPrim with localID {0}", localID);
SceneObjectGroup sog;
@@ -879,23 +868,22 @@ namespace OpenSim.Region.Framework.Scenes
}
}
- List EntityList = GetEntities();
- foreach (EntityBase ent in EntityList)
+ EntityBase[] entityList = GetEntities();
+ foreach (EntityBase ent in entityList)
{
//m_log.DebugFormat("Looking at entity {0}", ent.UUID);
if (ent is SceneObjectGroup)
{
- if (((SceneObjectGroup)ent).HasChildPrim(localID))
+ sog = (SceneObjectGroup)ent;
+ if (sog.HasChildPrim(localID))
{
- sog = (SceneObjectGroup)ent;
lock (SceneObjectGroupsByLocalID)
- {
SceneObjectGroupsByLocalID[localID] = sog;
- }
return sog;
}
}
}
+
return null;
}
@@ -921,23 +909,21 @@ namespace OpenSim.Region.Framework.Scenes
}
}
- List EntityList = GetEntities();
-
- foreach (EntityBase ent in EntityList)
+ EntityBase[] entityList = GetEntities();
+ foreach (EntityBase ent in entityList)
{
if (ent is SceneObjectGroup)
{
- if (((SceneObjectGroup)ent).HasChildPrim(fullID))
+ sog = (SceneObjectGroup)ent;
+ if (sog.HasChildPrim(fullID))
{
- sog = (SceneObjectGroup)ent;
lock (SceneObjectGroupsByFullID)
- {
SceneObjectGroupsByFullID[fullID] = sog;
- }
return sog;
}
}
}
+
return null;
}
@@ -946,7 +932,7 @@ namespace OpenSim.Region.Framework.Scenes
// Primitive Ray Tracing
float closestDistance = 280f;
EntityIntersection result = new EntityIntersection();
- List EntityList = GetEntities();
+ EntityBase[] EntityList = GetEntities();
foreach (EntityBase ent in EntityList)
{
if (ent is SceneObjectGroup)
@@ -984,23 +970,28 @@ namespace OpenSim.Region.Framework.Scenes
/// null if the part was not found
protected internal SceneObjectPart GetSceneObjectPart(string name)
{
- List EntityList = GetEntities();
+ SceneObjectPart sop = null;
- // FIXME: use a dictionary here
- foreach (EntityBase ent in EntityList)
- {
- if (ent is SceneObjectGroup)
+ Entities.Find(
+ delegate(EntityBase entity)
{
- foreach (SceneObjectPart p in ((SceneObjectGroup) ent).GetParts())
+ if (entity is SceneObjectGroup)
{
- if (p.Name == name)
+ foreach (SceneObjectPart p in ((SceneObjectGroup)entity).GetParts())
{
- return p;
+ if (p.Name == name)
+ {
+ sop = p;
+ return true;
+ }
}
}
+
+ return false;
}
- }
- return null;
+ );
+
+ return sop;
}
///
@@ -1021,7 +1012,7 @@ namespace OpenSim.Region.Framework.Scenes
/// it
///
///
- protected internal List GetEntities()
+ protected internal EntityBase[] GetEntities()
{
return Entities.GetEntities();
}
@@ -1030,7 +1021,7 @@ namespace OpenSim.Region.Framework.Scenes
{
Dictionary topScripts = new Dictionary();
- List EntityList = GetEntities();
+ EntityBase[] EntityList = GetEntities();
int limit = 0;
foreach (EntityBase ent in EntityList)
{
@@ -1726,8 +1717,8 @@ namespace OpenSim.Region.Framework.Scenes
UUID objid = UUID.Zero;
SceneObjectPart obj = null;
- List EntityList = GetEntities();
- foreach (EntityBase ent in EntityList)
+ EntityBase[] entityList = GetEntities();
+ foreach (EntityBase ent in entityList)
{
if (ent is SceneObjectGroup)
{
diff --git a/OpenSim/Region/Framework/Scenes/SceneViewer.cs b/OpenSim/Region/Framework/Scenes/SceneViewer.cs
index f478a4a..7aa5a93 100644
--- a/OpenSim/Region/Framework/Scenes/SceneViewer.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneViewer.cs
@@ -75,7 +75,8 @@ namespace OpenSim.Region.Framework.Scenes
lock(m_pendingObjects)
{
- foreach (EntityBase e in m_presence.Scene.Entities)
+ EntityBase[] entities = m_presence.Scene.Entities.GetEntities();
+ foreach (EntityBase e in entities)
{
if (e != null && e is SceneObjectGroup)
m_pendingObjects.Enqueue((SceneObjectGroup)e);
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs
index b6677f0..5494549 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs
@@ -84,9 +84,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
int primCount = 0;
stream.WriteLine("\n");
- List EntityList = scene.GetEntities();
-
- foreach (EntityBase ent in EntityList)
+ EntityBase[] entityList = scene.GetEntities();
+ foreach (EntityBase ent in entityList)
{
if (ent is SceneObjectGroup)
{
@@ -204,16 +203,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
public static void SavePrimsToXml2(Scene scene, string fileName)
{
- List EntityList = scene.GetEntities();
-
- SavePrimListToXml2(EntityList, fileName);
+ EntityBase[] entityList = scene.GetEntities();
+ SavePrimListToXml2(entityList, fileName);
}
public static void SavePrimsToXml2(Scene scene, TextWriter stream, Vector3 min, Vector3 max)
{
- List EntityList = scene.GetEntities();
-
- SavePrimListToXml2(EntityList, stream, min, max);
+ EntityBase[] entityList = scene.GetEntities();
+ SavePrimListToXml2(entityList, stream, min, max);
}
public static void SaveNamedPrimsToXml2(Scene scene, string primName, string fileName)
@@ -222,7 +219,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
"[SERIALISER]: Saving prims with name {0} in xml2 format for region {1} to {2}",
primName, scene.RegionInfo.RegionName, fileName);
- List entityList = scene.GetEntities();
+ EntityBase[] entityList = scene.GetEntities();
List primList = new List();
foreach (EntityBase ent in entityList)
@@ -236,10 +233,10 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
}
}
- SavePrimListToXml2(primList, fileName);
+ SavePrimListToXml2(primList.ToArray(), fileName);
}
- public static void SavePrimListToXml2(List entityList, string fileName)
+ public static void SavePrimListToXml2(EntityBase[] entityList, string fileName)
{
FileStream file = new FileStream(fileName, FileMode.Create);
try
@@ -260,7 +257,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
}
}
- public static void SavePrimListToXml2(List entityList, TextWriter stream, Vector3 min, Vector3 max)
+ public static void SavePrimListToXml2(EntityBase[] entityList, TextWriter stream, Vector3 min, Vector3 max)
{
int primCount = 0;
stream.WriteLine("\n");
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index 6793ef6..159af79 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -375,8 +375,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
private void IRC_SendNamesReply()
{
- List users = m_scene.Entities.GetAllByType();
-
+ EntityBase[] users = m_scene.Entities.GetAllByType();
foreach (EntityBase user in users)
{
SendServerCommand("353 " + m_nick + " = " + IrcRegionName + " :" + user.Name.Replace(" ", ""));
@@ -386,8 +385,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
private void IRC_SendWhoReply()
{
- List users = m_scene.Entities.GetAllByType();
-
+ EntityBase[] users = m_scene.Entities.GetAllByType();
foreach (EntityBase user in users)
{
/*SendServerCommand(String.Format("352 {0} {1} {2} {3} {4} {5} :0 {6}", IrcRegionName,
@@ -415,11 +413,11 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
private void IRC_SendReplyUsers()
{
- List users = m_scene.Entities.GetAllByType();
+ EntityBase[] users = m_scene.Entities.GetAllByType();
SendServerCommand("392 :UserID Terminal Host");
- if (users.Count == 0)
+ if (users.Length == 0)
{
SendServerCommand("395 :Nobody logged in");
return;
diff --git a/OpenSim/Region/OptionalModules/ContentManagementSystem/CMEntityCollection.cs b/OpenSim/Region/OptionalModules/ContentManagementSystem/CMEntityCollection.cs
index de1e01c..d21b652 100644
--- a/OpenSim/Region/OptionalModules/ContentManagementSystem/CMEntityCollection.cs
+++ b/OpenSim/Region/OptionalModules/ContentManagementSystem/CMEntityCollection.cs
@@ -111,7 +111,7 @@ namespace OpenSim.Region.OptionalModules.ContentManagement
}
// Check if there are SceneObjectGroups in the list that do not have corresponding ContentManagementGroups in the CMEntityHash
- public System.Collections.ArrayList CheckForMissingEntities(System.Collections.Generic.List currList)
+ public System.Collections.ArrayList CheckForMissingEntities(EntityBase[] currList)
{
System.Collections.ArrayList missingList = new System.Collections.ArrayList();
SceneObjectGroup temp = null;
diff --git a/OpenSim/Region/OptionalModules/ContentManagementSystem/ContentManagementEntity.cs b/OpenSim/Region/OptionalModules/ContentManagementSystem/ContentManagementEntity.cs
index 2730eee..49d20e1 100644
--- a/OpenSim/Region/OptionalModules/ContentManagementSystem/ContentManagementEntity.cs
+++ b/OpenSim/Region/OptionalModules/ContentManagementSystem/ContentManagementEntity.cs
@@ -127,7 +127,7 @@ namespace OpenSim.Region.OptionalModules.ContentManagement
///
public void FindDifferences()
{
- System.Collections.Generic.List sceneEntityList = m_Entity.Scene.GetEntities();
+ List sceneEntityList = new List(m_Entity.Scene.GetEntities());
DiffersFromSceneGroup = false;
// if group is not contained in scene's list
if (!ContainsKey(sceneEntityList, m_UnchangedEntity.UUID))
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/ObjectAccessor.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/ObjectAccessor.cs
index 6ba5ccf..140264b 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/ObjectAccessor.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/ObjectAccessor.cs
@@ -41,12 +41,14 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
private readonly Scene m_scene;
private readonly IEnumerator m_sogEnum;
private readonly ISecurityCredential m_security;
+ private readonly List m_entities;
public IObjEnum(Scene scene, ISecurityCredential security)
{
m_scene = scene;
m_security = security;
- m_sogEnum = m_scene.Entities.GetAllByType().GetEnumerator();
+ m_entities = new List(m_scene.Entities.GetEntities());
+ m_sogEnum = m_entities.GetEnumerator();
}
public void Dispose()
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs
index 45bb005..f2324d2 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs
@@ -205,10 +205,10 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{
get
{
- List ents = m_internalScene.Entities.GetAllByType();
- IAvatar[] rets = new IAvatar[ents.Count];
+ EntityBase[] ents = m_internalScene.Entities.GetAllByType();
+ IAvatar[] rets = new IAvatar[ents.Length];
- for (int i = 0; i < ents.Count; i++)
+ for (int i = 0; i < ents.Length; i++)
{
EntityBase ent = ents[i];
rets[i] = new SPAvatar(m_internalScene, ent.UUID, m_security);
diff --git a/OpenSim/Region/OptionalModules/World/TreePopulator/TreePopulatorModule.cs b/OpenSim/Region/OptionalModules/World/TreePopulator/TreePopulatorModule.cs
index 3ed338b..421da36 100644
--- a/OpenSim/Region/OptionalModules/World/TreePopulator/TreePopulatorModule.cs
+++ b/OpenSim/Region/OptionalModules/World/TreePopulator/TreePopulatorModule.cs
@@ -568,8 +568,7 @@ namespace OpenSim.Region.OptionalModules.World.TreePopulator
{
m_copse = new List();
- List objs = m_scene.GetEntities();
-
+ EntityBase[] objs = m_scene.GetEntities();
foreach (EntityBase obj in objs)
{
if (obj is SceneObjectGroup)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
index 5c2abd5..2b67e84 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
@@ -286,7 +286,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
}
else
{
- Entities = m_CmdManager.m_ScriptEngine.World.GetEntities();
+ Entities = new List(m_CmdManager.m_ScriptEngine.World.GetEntities());
}
SceneObjectPart SensePoint = ts.host;
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs
index 67b73f3..67a06f3 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs
@@ -69,7 +69,10 @@ namespace OpenSim.Services.Connectors.SimianGrid
public void OnMakeRootAgent(ScenePresence sp)
{
m_log.DebugFormat("[SIMIAN ACTIVITY DETECTOR]: Detected root presence {0} in {1}", sp.UUID, sp.Scene.RegionInfo.RegionName);
- m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
+ Util.FireAndForget(delegate(object o)
+ {
+ m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
+ });
}
public void OnNewClient(IClientAPI client)
--
cgit v1.1
From b597a295c489cef217b9dca6bd22df1340ca39ce Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Fri, 10 Sep 2010 12:41:36 -0700
Subject: Second pass at cleaning up thread safety in EntityManager and
SceneGraph
---
OpenSim/Region/Framework/Scenes/EntityManager.cs | 16 +-----
OpenSim/Region/Framework/Scenes/SceneGraph.cs | 66 +++++++++++-----------
.../Region/Framework/Scenes/SceneObjectGroup.cs | 11 +---
3 files changed, 35 insertions(+), 58 deletions(-)
diff --git a/OpenSim/Region/Framework/Scenes/EntityManager.cs b/OpenSim/Region/Framework/Scenes/EntityManager.cs
index 85d0a4f..0defa93 100644
--- a/OpenSim/Region/Framework/Scenes/EntityManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EntityManager.cs
@@ -34,7 +34,7 @@ using OpenMetaverse;
namespace OpenSim.Region.Framework.Scenes
{
- public class EntityManager //: IEnumerable
+ public class EntityManager
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private readonly DoubleDictionary m_entities = new DoubleDictionary();
@@ -143,19 +143,5 @@ namespace OpenSim.Region.Framework.Scenes
{
return m_entities.TryGetValue(key, out obj);
}
-
- ///
- /// This could be optimised to work on the list 'live' rather than making a safe copy and iterating that.
- ///
- ///
- //public IEnumerator GetEnumerator()
- //{
- // return GetEntities().GetEnumerator();
- //}
-
- //IEnumerator IEnumerable.GetEnumerator()
- //{
- // return GetEnumerator();
- //}
}
}
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 3d3e822..f779a6d 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -72,10 +72,7 @@ namespace OpenSim.Region.Framework.Scenes
protected Dictionary m_scenePresenceMap = new Dictionary();
protected List m_scenePresenceArray = new List();
- // SceneObjects is not currently populated or used.
- //public Dictionary SceneObjects;
protected internal EntityManager Entities = new EntityManager();
-// protected internal Dictionary Entities = new Dictionary();
protected internal Dictionary RestorePresences = new Dictionary();
protected RegionInfo m_regInfo;
@@ -351,28 +348,28 @@ namespace OpenSim.Region.Framework.Scenes
if (Entities.ContainsKey(sceneObject.UUID))
return false;
- // Clamp child prim sizes and add child prims to the m_numPrim count
+ List children;
lock (sceneObject.Children)
+ children = new List(sceneObject.Children.Values);
+
+ // Clamp child prim sizes and add child prims to the m_numPrim count
+ if (m_parentScene.m_clampPrimSize)
{
- if (m_parentScene.m_clampPrimSize)
+ foreach (SceneObjectPart part in children)
{
- foreach (SceneObjectPart part in sceneObject.Children.Values)
- {
- Vector3 scale = part.Shape.Scale;
+ Vector3 scale = part.Shape.Scale;
- if (scale.X > m_parentScene.m_maxNonphys)
- scale.X = m_parentScene.m_maxNonphys;
- if (scale.Y > m_parentScene.m_maxNonphys)
- scale.Y = m_parentScene.m_maxNonphys;
- if (scale.Z > m_parentScene.m_maxNonphys)
- scale.Z = m_parentScene.m_maxNonphys;
+ if (scale.X > m_parentScene.m_maxNonphys)
+ scale.X = m_parentScene.m_maxNonphys;
+ if (scale.Y > m_parentScene.m_maxNonphys)
+ scale.Y = m_parentScene.m_maxNonphys;
+ if (scale.Z > m_parentScene.m_maxNonphys)
+ scale.Z = m_parentScene.m_maxNonphys;
- part.Shape.Scale = scale;
- }
+ part.Shape.Scale = scale;
}
-
- m_numPrim += sceneObject.Children.Count;
}
+ m_numPrim += children.Count;
sceneObject.AttachToScene(m_parentScene);
@@ -390,14 +387,14 @@ namespace OpenSim.Region.Framework.Scenes
lock (SceneObjectGroupsByFullID)
{
SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject;
- foreach (SceneObjectPart part in sceneObject.Children.Values)
+ foreach (SceneObjectPart part in children)
SceneObjectGroupsByFullID[part.UUID] = sceneObject;
}
lock (SceneObjectGroupsByLocalID)
{
SceneObjectGroupsByLocalID[sceneObject.LocalId] = sceneObject;
- foreach (SceneObjectPart part in sceneObject.Children.Values)
+ foreach (SceneObjectPart part in children)
SceneObjectGroupsByLocalID[part.LocalId] = sceneObject;
}
@@ -859,13 +856,13 @@ namespace OpenSim.Region.Framework.Scenes
//m_log.DebugFormat("Entered GetGroupByPrim with localID {0}", localID);
SceneObjectGroup sog;
lock (SceneObjectGroupsByLocalID)
+ SceneObjectGroupsByLocalID.TryGetValue(localID, out sog);
+
+ if (sog != null)
{
- if (SceneObjectGroupsByLocalID.TryGetValue(localID, out sog))
- {
- if (sog.HasChildPrim(localID))
- return sog;
- SceneObjectGroupsByLocalID.Remove(localID);
- }
+ if (sog.HasChildPrim(localID))
+ return sog;
+ SceneObjectGroupsByLocalID.Remove(localID);
}
EntityBase[] entityList = GetEntities();
@@ -896,17 +893,18 @@ namespace OpenSim.Region.Framework.Scenes
{
SceneObjectGroup sog;
lock (SceneObjectGroupsByFullID)
+ SceneObjectGroupsByFullID.TryGetValue(fullID, out sog);
+
+ if (sog != null)
{
- if (SceneObjectGroupsByFullID.TryGetValue(fullID, out sog))
+ lock (sog.Children)
{
- lock (sog.Children)
- {
- if (sog.Children.ContainsKey(fullID))
- return sog;
- }
-
- SceneObjectGroupsByFullID.Remove(fullID);
+ if (sog.Children.ContainsKey(fullID))
+ return sog;
}
+
+ lock (SceneObjectGroupsByFullID)
+ SceneObjectGroupsByFullID.Remove(fullID);
}
EntityBase[] entityList = GetEntities();
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 09e3e0e..ba5e33c 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2091,16 +2091,9 @@ namespace OpenSim.Region.Framework.Scenes
/// null if a child part with the primID was not found
public SceneObjectPart GetChildPart(UUID primID)
{
- SceneObjectPart childPart = null;
-
+ SceneObjectPart childPart;
lock (m_parts)
- {
- if (m_parts.ContainsKey(primID))
- {
- childPart = m_parts[primID];
- }
- }
-
+ m_parts.TryGetValue(primID, out childPart);
return childPart;
}
--
cgit v1.1
From a7f4e10f425cef4b85810486ba31c59b3ba206fc Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 10 Sep 2010 21:50:40 +0100
Subject: Remove parenthesis around the release flavour to get the version
string back under 27 chars
Can't quite remember why this has to be <=27 chars, maybe something to do with the space available for the version string in a typical client
---
OpenSim/Framework/Servers/VersionInfo.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs
index 100bf1f..c88e0d1 100644
--- a/OpenSim/Framework/Servers/VersionInfo.cs
+++ b/OpenSim/Framework/Servers/VersionInfo.cs
@@ -49,7 +49,7 @@ namespace OpenSim
public static string GetVersionString(string versionNumber, Flavour flavour)
{
- string versionString = "OpenSim " + versionNumber + " (" + flavour + ")";
+ string versionString = "OpenSim " + versionNumber + " " + flavour;
return versionString.PadRight(VERSIONINFO_VERSION_LENGTH);
}
--
cgit v1.1
From 30306a775af74e1fe080590998a71a4c7e64ad12 Mon Sep 17 00:00:00 2001
From: randomhuman
Date: Sun, 5 Sep 2010 21:44:46 +0100
Subject: Made it impossible to create a user with names containing spaces and
prevented passwords from being echoed after enter is pressed.
---
OpenSim/Framework/Console/ConsoleBase.cs | 51 ++++++++++++++++++++++
OpenSim/Framework/Console/LocalConsole.cs | 5 ++-
OpenSim/Region/Framework/Scenes/Scene.cs | 5 ++-
.../UserAccountService/UserAccountService.cs | 6 ++-
4 files changed, 61 insertions(+), 6 deletions(-)
diff --git a/OpenSim/Framework/Console/ConsoleBase.cs b/OpenSim/Framework/Console/ConsoleBase.cs
index aab920b..22ce880 100755
--- a/OpenSim/Framework/Console/ConsoleBase.cs
+++ b/OpenSim/Framework/Console/ConsoleBase.cs
@@ -89,6 +89,57 @@ namespace OpenSim.Framework.Console
return ret;
}
+
+ public string CmdPrompt(string p, List excludedCharacters)
+ {
+ bool itisdone = false;
+ string ret = String.Empty;
+ while (!itisdone)
+ {
+ itisdone = true;
+ ret = CmdPrompt(p);
+
+ foreach (char c in excludedCharacters)
+ {
+ if (ret.Contains(c.ToString()))
+ {
+ System.Console.WriteLine("The character \"" + c.ToString() + "\" is not permitted.");
+ itisdone = false;
+ }
+ }
+ }
+
+ return ret;
+ }
+
+ public string CmdPrompt(string p, string def, List excludedCharacters)
+ {
+ bool itisdone = false;
+ string ret = String.Empty;
+ while (!itisdone)
+ {
+ itisdone = true;
+ ret = CmdPrompt(p, def);
+
+ if (ret == String.Empty)
+ {
+ ret = def;
+ }
+ else
+ {
+ foreach (char c in excludedCharacters)
+ {
+ if (ret.Contains(c.ToString()))
+ {
+ System.Console.WriteLine("The character \"" + c.ToString() + "\" is not permitted.");
+ itisdone = false;
+ }
+ }
+ }
+ }
+
+ return ret;
+ }
// Displays a command prompt and returns a default value, user may only enter 1 of 2 options
public string CmdPrompt(string prompt, string defaultresponse, List options)
diff --git a/OpenSim/Framework/Console/LocalConsole.cs b/OpenSim/Framework/Console/LocalConsole.cs
index a3036d0..c968031 100644
--- a/OpenSim/Framework/Console/LocalConsole.cs
+++ b/OpenSim/Framework/Console/LocalConsole.cs
@@ -461,7 +461,8 @@ namespace OpenSim.Framework.Console
SetCursorLeft(0);
y = SetCursorTop(y);
- System.Console.WriteLine("{0}{1}", prompt, cmdline);
+ System.Console.WriteLine();
+ //Show();
lock (cmdline)
{
@@ -486,7 +487,7 @@ namespace OpenSim.Framework.Console
}
}
- AddToHistory(cmdline.ToString());
+ //AddToHistory(cmdline.ToString());
return cmdline.ToString();
default:
break;
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 7ce95a7..6fa78e0 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1159,8 +1159,9 @@ namespace OpenSim.Region.Framework.Scenes
while (m_regInfo.EstateSettings.EstateOwner == UUID.Zero && MainConsole.Instance != null)
{
MainConsole.Instance.Output("The current estate has no owner set.");
- string first = MainConsole.Instance.CmdPrompt("Estate owner first name", "Test");
- string last = MainConsole.Instance.CmdPrompt("Estate owner last name", "User");
+ List excluded = new List(new char[1]{' '});
+ string first = MainConsole.Instance.CmdPrompt("Estate owner first name", "Test", excluded);
+ string last = MainConsole.Instance.CmdPrompt("Estate owner last name", "User", excluded);
UserAccount account = UserAccountService.GetUserAccount(m_regInfo.ScopeID, first, last);
diff --git a/OpenSim/Services/UserAccountService/UserAccountService.cs b/OpenSim/Services/UserAccountService/UserAccountService.cs
index 326e502..65c247f 100644
--- a/OpenSim/Services/UserAccountService/UserAccountService.cs
+++ b/OpenSim/Services/UserAccountService/UserAccountService.cs
@@ -296,13 +296,15 @@ namespace OpenSim.Services.UserAccountService
string lastName;
string password;
string email;
+
+ List excluded = new List(new char[]{' '});
if (cmdparams.Length < 3)
- firstName = MainConsole.Instance.CmdPrompt("First name", "Default");
+ firstName = MainConsole.Instance.CmdPrompt("First name", "Default", excluded);
else firstName = cmdparams[2];
if (cmdparams.Length < 4)
- lastName = MainConsole.Instance.CmdPrompt("Last name", "User");
+ lastName = MainConsole.Instance.CmdPrompt("Last name", "User", excluded);
else lastName = cmdparams[3];
if (cmdparams.Length < 5)
--
cgit v1.1
From 220f82a0f0e05ab7d01c9028675c5c779cb6f5fc Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Sat, 11 Sep 2010 00:27:52 +0100
Subject: Make it clear that the "create region" command will reference ini
files in the regions directory (usually Regions/)
Also convert some tabs into spaces.
---
OpenSim/Region/Application/OpenSim.cs | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index 3c2575d..4f2d223 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -316,7 +316,7 @@ namespace OpenSim
m_console.Commands.AddCommand("region", false, "create region",
"create region [\"region name\"] ",
"Create a new region.",
- "The settings for \"region name\" are read from ."
+ "The settings for \"region name\" are read from in your Regions directory."
+ " If \"region name\" does not exist in , it will be added." + Environment.NewLine
+ "Without \"region name\", the first region found in will be created." + Environment.NewLine
+ "If does not exist, it will be created.",
@@ -552,17 +552,18 @@ namespace OpenSim
regionFile = Path.Combine(regionsDir, regionFile);
}
- RegionInfo regInfo;
+ RegionInfo regInfo;
if (isXml)
{
- regInfo = new RegionInfo(regionName, regionFile, false, ConfigSource.Source);
+ regInfo = new RegionInfo(regionName, regionFile, false, ConfigSource.Source);
}
else
{
- regInfo = new RegionInfo(regionName, regionFile, false, ConfigSource.Source, regionName);
+ regInfo = new RegionInfo(regionName, regionFile, false, ConfigSource.Source, regionName);
}
+
IScene scene;
- PopulateRegionEstateInfo(regInfo);
+ PopulateRegionEstateInfo(regInfo);
CreateRegion(regInfo, true, out scene);
regInfo.EstateSettings.Save();
}
--
cgit v1.1
From 7e65590a55ba575d0086bdfc25addaf1051d799b Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Sat, 11 Sep 2010 01:13:08 +0100
Subject: Update Prebuild.exe with Prebuild r323 + an existing OpenSim specific
nant hack to correctly clean up chosen OpenSim exes and dlls in bin/ on a
"nant clean"
Source code is included for reference. This can go away again once Prebuild is updated with a more general mechanism for cleaning up files.
The Prebuild source code here can be built with nant, or regnerated for other tools using the prebuild at {root}/bin/Prebuild.exe
---
Prebuild/AUTHORS | 10 +
Prebuild/COPYING | 65 ++
Prebuild/ChangeLog | 461 +++++++++
Prebuild/INSTALL | 236 +++++
Prebuild/NEWS | 200 ++++
Prebuild/README | 274 +++++
Prebuild/THANKS | 18 +
Prebuild/TODO | 43 +
Prebuild/clean.bat | 1 +
Prebuild/clean.sh | 1 +
Prebuild/doc/.svn/all-wcprops | 35 +
Prebuild/doc/.svn/dir-prop-base | 5 +
Prebuild/doc/.svn/entries | 198 ++++
.../.svn/prop-base/prebuild-example1.xml.svn-base | 9 +
.../.svn/prop-base/prebuild-example2.xml.svn-base | 9 +
.../.svn/prop-base/prebuild-example3.xml.svn-base | 9 +
.../.svn/prop-base/prebuild-example4.xml.svn-base | 9 +
.../.svn/text-base/prebuild-example1.xml.svn-base | 300 ++++++
.../.svn/text-base/prebuild-example2.xml.svn-base | 72 ++
.../.svn/text-base/prebuild-example3.xml.svn-base | 113 +++
.../.svn/text-base/prebuild-example4.xml.svn-base | 715 +++++++++++++
.../.svn/text-base/prebuild-example5.xml.svn-base | 187 ++++
Prebuild/doc/prebuild-example1.xml | 300 ++++++
Prebuild/doc/prebuild-example2.xml | 72 ++
Prebuild/doc/prebuild-example3.xml | 113 +++
Prebuild/doc/prebuild-example4.xml | 715 +++++++++++++
Prebuild/doc/prebuild-example5.xml | 187 ++++
Prebuild/prebuild | 2 +
Prebuild/prebuild.xml | 73 ++
Prebuild/scripts/.svn/all-wcprops | 125 +++
Prebuild/scripts/.svn/dir-prop-base | 6 +
Prebuild/scripts/.svn/entries | 708 +++++++++++++
Prebuild/scripts/.svn/prop-base/Clean.bat.svn-base | 13 +
Prebuild/scripts/.svn/prop-base/Clean.sh.svn-base | 9 +
Prebuild/scripts/.svn/prop-base/Help.bat.svn-base | 13 +
.../scripts/.svn/prop-base/MonoDevelop.sh.svn-base | 13 +
.../scripts/.svn/prop-base/Prebuild.nsi.svn-base | 9 +
.../.svn/prop-base/SharpDevelop.bat.svn-base | 13 +
.../.svn/prop-base/SharpDevelop2.bat.svn-base | 5 +
.../scripts/.svn/prop-base/VS2002.bat.svn-base | 13 +
.../scripts/.svn/prop-base/VS2003.bat.svn-base | 13 +
.../scripts/.svn/prop-base/VS2005.bat.svn-base | 13 +
.../scripts/.svn/prop-base/VS2008.bat.svn-base | 5 +
.../scripts/.svn/prop-base/autotools.bat.svn-base | 5 +
.../scripts/.svn/prop-base/autotools.sh.svn-base | 5 +
.../scripts/.svn/prop-base/makefile.bat.svn-base | 9 +
.../scripts/.svn/prop-base/makefile.sh.svn-base | 9 +
Prebuild/scripts/.svn/prop-base/nant.bat.svn-base | 13 +
Prebuild/scripts/.svn/prop-base/nant.sh.svn-base | 13 +
Prebuild/scripts/.svn/prop-base/xcode.bat.svn-base | 9 +
Prebuild/scripts/.svn/prop-base/xcode.sh.svn-base | 9 +
Prebuild/scripts/.svn/text-base/Clean.bat.svn-base | 2 +
Prebuild/scripts/.svn/text-base/Clean.sh.svn-base | 4 +
Prebuild/scripts/.svn/text-base/Help.bat.svn-base | 2 +
.../scripts/.svn/text-base/MonoDevelop.sh.svn-base | 2 +
.../scripts/.svn/text-base/Prebuild.nsi.svn-base | 231 +++++
.../.svn/text-base/SharpDevelop.bat.svn-base | 4 +
.../.svn/text-base/SharpDevelop2.bat.svn-base | 4 +
.../scripts/.svn/text-base/VS2002.bat.svn-base | 4 +
.../scripts/.svn/text-base/VS2003.bat.svn-base | 4 +
.../scripts/.svn/text-base/VS2005.bat.svn-base | 4 +
.../scripts/.svn/text-base/VS2008.bat.svn-base | 4 +
.../scripts/.svn/text-base/VS2010.bat.svn-base | 4 +
.../scripts/.svn/text-base/autotools.bat.svn-base | 4 +
.../scripts/.svn/text-base/autotools.sh.svn-base | 5 +
.../scripts/.svn/text-base/makefile.bat.svn-base | 4 +
.../scripts/.svn/text-base/makefile.sh.svn-base | 10 +
Prebuild/scripts/.svn/text-base/nant.bat.svn-base | 4 +
Prebuild/scripts/.svn/text-base/nant.sh.svn-base | 2 +
Prebuild/scripts/.svn/text-base/xcode.bat.svn-base | 4 +
Prebuild/scripts/.svn/text-base/xcode.sh.svn-base | 2 +
Prebuild/scripts/Clean.bat | 2 +
Prebuild/scripts/Clean.sh | 4 +
Prebuild/scripts/Help.bat | 2 +
Prebuild/scripts/MonoDevelop.sh | 2 +
Prebuild/scripts/Prebuild.nsi | 231 +++++
Prebuild/scripts/SharpDevelop.bat | 4 +
Prebuild/scripts/SharpDevelop2.bat | 4 +
Prebuild/scripts/VS2002.bat | 4 +
Prebuild/scripts/VS2003.bat | 4 +
Prebuild/scripts/VS2005.bat | 4 +
Prebuild/scripts/VS2008.bat | 4 +
Prebuild/scripts/VS2010.bat | 4 +
Prebuild/scripts/autotools.bat | 4 +
Prebuild/scripts/autotools.sh | 5 +
Prebuild/scripts/makefile.bat | 4 +
Prebuild/scripts/makefile.sh | 10 +
Prebuild/scripts/nant.bat | 4 +
Prebuild/scripts/nant.sh | 2 +
Prebuild/scripts/xcode.bat | 4 +
Prebuild/scripts/xcode.sh | 2 +
Prebuild/src/.svn/all-wcprops | 23 +
Prebuild/src/.svn/dir-prop-base | 16 +
Prebuild/src/.svn/entries | 139 +++
Prebuild/src/.svn/prop-base/App.ico.svn-base | 5 +
Prebuild/src/.svn/prop-base/Prebuild.cs.svn-base | 9 +
Prebuild/src/.svn/prop-base/Prebuild.snk.svn-base | 5 +
Prebuild/src/.svn/text-base/App.ico.svn-base | Bin 0 -> 4286 bytes
Prebuild/src/.svn/text-base/Prebuild.cs.svn-base | 165 +++
Prebuild/src/.svn/text-base/Prebuild.snk.svn-base | Bin 0 -> 596 bytes
Prebuild/src/App.ico | Bin 0 -> 4286 bytes
Prebuild/src/Core/.svn/all-wcprops | 29 +
Prebuild/src/Core/.svn/dir-prop-base | 5 +
Prebuild/src/Core/.svn/entries | 182 ++++
.../Core/.svn/prop-base/FatalException.cs.svn-base | 9 +
.../src/Core/.svn/prop-base/Kernel.cs.svn-base | 9 +
.../prop-base/UnknownLanguageException.cs.svn-base | 9 +
.../.svn/prop-base/WarningException.cs.svn-base | 9 +
.../Core/.svn/text-base/FatalException.cs.svn-base | 85 ++
.../src/Core/.svn/text-base/Kernel.cs.svn-base | 832 +++++++++++++++
.../text-base/UnknownLanguageException.cs.svn-base | 63 ++
.../.svn/text-base/WarningException.cs.svn-base | 84 ++
Prebuild/src/Core/Attributes/.svn/all-wcprops | 23 +
Prebuild/src/Core/Attributes/.svn/dir-prop-base | 5 +
Prebuild/src/Core/Attributes/.svn/entries | 130 +++
.../.svn/prop-base/DataNodeAttribute.cs.svn-base | 9 +
.../.svn/prop-base/OptionNodeAttribute.cs.svn-base | 9 +
.../.svn/prop-base/TargetAttribute.cs.svn-base | 9 +
.../.svn/text-base/DataNodeAttribute.cs.svn-base | 72 ++
.../.svn/text-base/OptionNodeAttribute.cs.svn-base | 71 ++
.../.svn/text-base/TargetAttribute.cs.svn-base | 71 ++
Prebuild/src/Core/Attributes/DataNodeAttribute.cs | 72 ++
.../src/Core/Attributes/OptionNodeAttribute.cs | 71 ++
Prebuild/src/Core/Attributes/TargetAttribute.cs | 71 ++
Prebuild/src/Core/FatalException.cs | 85 ++
Prebuild/src/Core/Interfaces/.svn/all-wcprops | 17 +
Prebuild/src/Core/Interfaces/.svn/dir-prop-base | 5 +
Prebuild/src/Core/Interfaces/.svn/entries | 96 ++
.../.svn/prop-base/IDataNode.cs.svn-base | 9 +
.../Interfaces/.svn/prop-base/ITarget.cs.svn-base | 9 +
.../.svn/text-base/IDataNode.cs.svn-base | 47 +
.../Interfaces/.svn/text-base/ITarget.cs.svn-base | 51 +
Prebuild/src/Core/Interfaces/IDataNode.cs | 47 +
Prebuild/src/Core/Interfaces/ITarget.cs | 51 +
Prebuild/src/Core/Kernel.cs | 832 +++++++++++++++
Prebuild/src/Core/Nodes/.svn/all-wcprops | 119 +++
Prebuild/src/Core/Nodes/.svn/dir-prop-base | 5 +
Prebuild/src/Core/Nodes/.svn/entries | 674 ++++++++++++
.../.svn/prop-base/ConfigurationNode.cs.svn-base | 9 +
.../Core/Nodes/.svn/prop-base/DataNode.cs.svn-base | 9 +
.../Nodes/.svn/prop-base/ExcludeNode.cs.svn-base | 9 +
.../Core/Nodes/.svn/prop-base/FileNode.cs.svn-base | 9 +
.../Nodes/.svn/prop-base/FilesNode.cs.svn-base | 9 +
.../Nodes/.svn/prop-base/MatchNode.cs.svn-base | 9 +
.../Nodes/.svn/prop-base/OptionsNode.cs.svn-base | 9 +
.../Nodes/.svn/prop-base/ProcessNode.cs.svn-base | 9 +
.../Nodes/.svn/prop-base/ProjectNode.cs.svn-base | 9 +
.../Nodes/.svn/prop-base/ReferenceNode.cs.svn-base | 9 +
.../.svn/prop-base/ReferencePathNode.cs.svn-base | 9 +
.../Nodes/.svn/prop-base/SolutionNode.cs.svn-base | 9 +
.../Nodes/.svn/text-base/AuthorNode.cs.svn-base | 87 ++
.../.svn/text-base/CleanFilesNode.cs.svn-base | 80 ++
.../Nodes/.svn/text-base/CleanupNode.cs.svn-base | 85 ++
.../.svn/text-base/ConfigurationNode.cs.svn-base | 225 ++++
.../ConfigurationNodeCollection.cs.svn-base | 71 ++
.../Core/Nodes/.svn/text-base/DataNode.cs.svn-base | 117 +++
.../.svn/text-base/DatabaseProjectNode.cs.svn-base | 93 ++
.../text-base/DatabaseReferenceNode.cs.svn-base | 63 ++
.../.svn/text-base/DescriptionNode.cs.svn-base | 87 ++
.../Nodes/.svn/text-base/ExcludeNode.cs.svn-base | 89 ++
.../Core/Nodes/.svn/text-base/FileNode.cs.svn-base | 285 ++++++
.../Nodes/.svn/text-base/FilesNode.cs.svn-base | 204 ++++
.../Nodes/.svn/text-base/MatchNode.cs.svn-base | 367 +++++++
.../Nodes/.svn/text-base/OptionsNode.cs.svn-base | 634 ++++++++++++
.../Nodes/.svn/text-base/ProcessNode.cs.svn-base | 108 ++
.../Nodes/.svn/text-base/ProjectNode.cs.svn-base | 579 +++++++++++
.../Nodes/.svn/text-base/ReferenceNode.cs.svn-base | 144 +++
.../.svn/text-base/ReferencePathNode.cs.svn-base | 97 ++
.../Nodes/.svn/text-base/SolutionNode.cs.svn-base | 382 +++++++
Prebuild/src/Core/Nodes/AuthorNode.cs | 87 ++
Prebuild/src/Core/Nodes/CleanFilesNode.cs | 80 ++
Prebuild/src/Core/Nodes/CleanupNode.cs | 85 ++
Prebuild/src/Core/Nodes/ConfigurationNode.cs | 225 ++++
.../src/Core/Nodes/ConfigurationNodeCollection.cs | 71 ++
Prebuild/src/Core/Nodes/DataNode.cs | 117 +++
Prebuild/src/Core/Nodes/DatabaseProjectNode.cs | 93 ++
Prebuild/src/Core/Nodes/DatabaseReferenceNode.cs | 63 ++
Prebuild/src/Core/Nodes/DescriptionNode.cs | 87 ++
Prebuild/src/Core/Nodes/ExcludeNode.cs | 89 ++
Prebuild/src/Core/Nodes/FileNode.cs | 285 ++++++
Prebuild/src/Core/Nodes/FilesNode.cs | 204 ++++
Prebuild/src/Core/Nodes/MatchNode.cs | 367 +++++++
Prebuild/src/Core/Nodes/OptionsNode.cs | 634 ++++++++++++
Prebuild/src/Core/Nodes/ProcessNode.cs | 108 ++
Prebuild/src/Core/Nodes/ProjectNode.cs | 579 +++++++++++
Prebuild/src/Core/Nodes/ReferenceNode.cs | 144 +++
Prebuild/src/Core/Nodes/ReferencePathNode.cs | 97 ++
Prebuild/src/Core/Nodes/SolutionNode.cs | 382 +++++++
Prebuild/src/Core/Parse/.svn/all-wcprops | 17 +
Prebuild/src/Core/Parse/.svn/dir-prop-base | 5 +
Prebuild/src/Core/Parse/.svn/entries | 96 ++
.../Parse/.svn/prop-base/IfContext.cs.svn-base | 9 +
.../Parse/.svn/prop-base/Preprocessor.cs.svn-base | 9 +
.../Parse/.svn/text-base/IfContext.cs.svn-base | 154 +++
.../Parse/.svn/text-base/Preprocessor.cs.svn-base | 652 ++++++++++++
Prebuild/src/Core/Parse/IfContext.cs | 154 +++
Prebuild/src/Core/Parse/Preprocessor.cs | 652 ++++++++++++
Prebuild/src/Core/Targets/.NAntTarget.cs.swp | Bin 0 -> 49152 bytes
Prebuild/src/Core/Targets/.svn/all-wcprops | 101 ++
Prebuild/src/Core/Targets/.svn/dir-prop-base | 5 +
Prebuild/src/Core/Targets/.svn/entries | 572 +++++++++++
.../Targets/.svn/prop-base/DebugTarget.cs.svn-base | 9 +
.../.svn/prop-base/MakefileTarget.cs.svn-base | 9 +
.../.svn/prop-base/MonoDevelopTarget.cs.svn-base | 9 +
.../Targets/.svn/prop-base/NAntTarget.cs.svn-base | 9 +
.../.svn/prop-base/SharpDevelopTarget.cs.svn-base | 9 +
.../.svn/prop-base/VS2002Target.cs.svn-base | 9 +
.../.svn/prop-base/VS2003Target.cs.svn-base | 9 +
.../.svn/prop-base/VS2005Target.cs.svn-base | 9 +
.../Targets/.svn/prop-base/XcodeTarget.cs.svn-base | 9 +
.../.svn/text-base/AutotoolsTarget.cs.svn-base | 1070 ++++++++++++++++++++
.../Targets/.svn/text-base/DebugTarget.cs.svn-base | 102 ++
.../.svn/text-base/MakefileTarget.cs.svn-base | 469 +++++++++
.../.svn/text-base/MonoDevelopTarget.cs.svn-base | 515 ++++++++++
.../Targets/.svn/text-base/NAntTarget.cs.svn-base | 776 ++++++++++++++
.../.svn/text-base/SharpDevelop2Target.cs.svn-base | 82 ++
.../.svn/text-base/SharpDevelopTarget.cs.svn-base | 425 ++++++++
.../Targets/.svn/text-base/ToolInfo.cs.svn-base | 197 ++++
.../.svn/text-base/VS2002Target.cs.svn-base | 87 ++
.../.svn/text-base/VS2003Target.cs.svn-base | 593 +++++++++++
.../.svn/text-base/VS2005Target.cs.svn-base | 147 +++
.../.svn/text-base/VS2008Target.cs.svn-base | 127 +++
.../.svn/text-base/VS2010Target.cs.svn-base | 138 +++
.../.svn/text-base/VSGenericTarget.cs.svn-base | 922 +++++++++++++++++
.../Targets/.svn/text-base/VSVersion.cs.svn-base | 54 +
.../Targets/.svn/text-base/XcodeTarget.cs.svn-base | 594 +++++++++++
Prebuild/src/Core/Targets/AutotoolsTarget.cs | 1070 ++++++++++++++++++++
Prebuild/src/Core/Targets/DebugTarget.cs | 102 ++
Prebuild/src/Core/Targets/MakefileTarget.cs | 469 +++++++++
Prebuild/src/Core/Targets/MonoDevelopTarget.cs | 515 ++++++++++
Prebuild/src/Core/Targets/NAntTarget.cs | 792 +++++++++++++++
Prebuild/src/Core/Targets/SharpDevelop2Target.cs | 82 ++
Prebuild/src/Core/Targets/SharpDevelopTarget.cs | 425 ++++++++
Prebuild/src/Core/Targets/ToolInfo.cs | 197 ++++
Prebuild/src/Core/Targets/VS2002Target.cs | 87 ++
Prebuild/src/Core/Targets/VS2003Target.cs | 593 +++++++++++
Prebuild/src/Core/Targets/VS2005Target.cs | 147 +++
Prebuild/src/Core/Targets/VS2008Target.cs | 127 +++
Prebuild/src/Core/Targets/VS2010Target.cs | 138 +++
Prebuild/src/Core/Targets/VSGenericTarget.cs | 922 +++++++++++++++++
Prebuild/src/Core/Targets/VSVersion.cs | 54 +
Prebuild/src/Core/Targets/XcodeTarget.cs | 594 +++++++++++
Prebuild/src/Core/UnknownLanguageException.cs | 63 ++
Prebuild/src/Core/Utilities/.svn/all-wcprops | 29 +
Prebuild/src/Core/Utilities/.svn/dir-prop-base | 5 +
Prebuild/src/Core/Utilities/.svn/entries | 164 +++
.../prop-base/CommandLineCollection.cs.svn-base | 9 +
.../.svn/prop-base/CurrentDirectory.cs.svn-base | 9 +
.../Utilities/.svn/prop-base/Helper.cs.svn-base | 9 +
.../Core/Utilities/.svn/prop-base/Log.cs.svn-base | 9 +
.../text-base/CommandLineCollection.cs.svn-base | 152 +++
.../.svn/text-base/CurrentDirectory.cs.svn-base | 68 ++
.../Utilities/.svn/text-base/Helper.cs.svn-base | 575 +++++++++++
.../Core/Utilities/.svn/text-base/Log.cs.svn-base | 276 +++++
.../src/Core/Utilities/CommandLineCollection.cs | 152 +++
Prebuild/src/Core/Utilities/CurrentDirectory.cs | 68 ++
Prebuild/src/Core/Utilities/Helper.cs | 575 +++++++++++
Prebuild/src/Core/Utilities/Log.cs | 276 +++++
Prebuild/src/Core/WarningException.cs | 84 ++
Prebuild/src/Prebuild.cs | 165 +++
Prebuild/src/Prebuild.snk | Bin 0 -> 596 bytes
Prebuild/src/Properties/.svn/all-wcprops | 11 +
Prebuild/src/Properties/.svn/entries | 62 ++
.../.svn/prop-base/AssemblyInfo.cs.svn-base | 9 +
.../.svn/text-base/AssemblyInfo.cs.svn-base | 113 +++
Prebuild/src/Properties/AssemblyInfo.cs | 113 +++
Prebuild/src/data/.svn/all-wcprops | 71 ++
Prebuild/src/data/.svn/dir-prop-base | 6 +
Prebuild/src/data/.svn/entries | 402 ++++++++
.../src/data/.svn/prop-base/dnpb-1.0.xsd.svn-base | 9 +
.../src/data/.svn/prop-base/dnpb-1.1.xsd.svn-base | 9 +
.../src/data/.svn/prop-base/dnpb-1.2.xsd.svn-base | 9 +
.../src/data/.svn/prop-base/dnpb-1.3.xsd.svn-base | 9 +
.../src/data/.svn/prop-base/dnpb-1.4.xsd.svn-base | 9 +
.../src/data/.svn/prop-base/dnpb-1.5.xsd.svn-base | 9 +
.../data/.svn/prop-base/prebuild-1.6.xsd.svn-base | 9 +
.../src/data/.svn/text-base/autotools.xml.svn-base | 790 +++++++++++++++
.../src/data/.svn/text-base/dnpb-1.0.xsd.svn-base | 183 ++++
.../src/data/.svn/text-base/dnpb-1.1.xsd.svn-base | 184 ++++
.../src/data/.svn/text-base/dnpb-1.2.xsd.svn-base | 198 ++++
.../src/data/.svn/text-base/dnpb-1.3.xsd.svn-base | 206 ++++
.../src/data/.svn/text-base/dnpb-1.4.xsd.svn-base | 212 ++++
.../src/data/.svn/text-base/dnpb-1.5.xsd.svn-base | 215 ++++
.../data/.svn/text-base/prebuild-1.6.xsd.svn-base | 231 +++++
.../data/.svn/text-base/prebuild-1.7.xsd.svn-base | 350 +++++++
.../data/.svn/text-base/prebuild-1.8.xsd.svn-base | 331 ++++++
.../data/.svn/text-base/prebuild-1.9.xsd.svn-base | 336 ++++++
Prebuild/src/data/autotools.xml | 790 +++++++++++++++
Prebuild/src/data/dnpb-1.0.xsd | 183 ++++
Prebuild/src/data/dnpb-1.1.xsd | 184 ++++
Prebuild/src/data/dnpb-1.2.xsd | 198 ++++
Prebuild/src/data/dnpb-1.3.xsd | 206 ++++
Prebuild/src/data/dnpb-1.4.xsd | 212 ++++
Prebuild/src/data/dnpb-1.5.xsd | 215 ++++
Prebuild/src/data/prebuild-1.6.xsd | 231 +++++
Prebuild/src/data/prebuild-1.7.xsd | 350 +++++++
Prebuild/src/data/prebuild-1.8.xsd | 331 ++++++
Prebuild/src/data/prebuild-1.9.xsd | 336 ++++++
Prebuild/tests/.svn/all-wcprops | 59 ++
Prebuild/tests/.svn/entries | 334 ++++++
Prebuild/tests/.svn/text-base/Makefile.svn-base | 24 +
Prebuild/tests/.svn/text-base/README.txt.svn-base | 5 +
.../.svn/text-base/include-001.expected.svn-base | 46 +
.../.svn/text-base/include-001.include.svn-base | 33 +
.../.svn/text-base/include-001.prebuild.svn-base | 22 +
.../.svn/text-base/include-002-2.include.svn-base | 8 +
.../.svn/text-base/include-002.expected.svn-base | 26 +
.../.svn/text-base/include-002.include.svn-base | 14 +
.../.svn/text-base/include-002.prebuild.svn-base | 7 +
Prebuild/tests/Makefile | 24 +
Prebuild/tests/README.txt | 5 +
Prebuild/tests/include-001.expected | 46 +
Prebuild/tests/include-001.include | 33 +
Prebuild/tests/include-001.prebuild | 22 +
Prebuild/tests/include-002-2.include | 8 +
Prebuild/tests/include-002.expected | 26 +
Prebuild/tests/include-002.include | 14 +
Prebuild/tests/include-002.prebuild | 7 +
bin/Prebuild.exe | Bin 227840 -> 228352 bytes
319 files changed, 44002 insertions(+)
create mode 100644 Prebuild/AUTHORS
create mode 100644 Prebuild/COPYING
create mode 100644 Prebuild/ChangeLog
create mode 100644 Prebuild/INSTALL
create mode 100644 Prebuild/NEWS
create mode 100644 Prebuild/README
create mode 100644 Prebuild/THANKS
create mode 100644 Prebuild/TODO
create mode 100755 Prebuild/clean.bat
create mode 100755 Prebuild/clean.sh
create mode 100644 Prebuild/doc/.svn/all-wcprops
create mode 100644 Prebuild/doc/.svn/dir-prop-base
create mode 100644 Prebuild/doc/.svn/entries
create mode 100644 Prebuild/doc/.svn/prop-base/prebuild-example1.xml.svn-base
create mode 100644 Prebuild/doc/.svn/prop-base/prebuild-example2.xml.svn-base
create mode 100644 Prebuild/doc/.svn/prop-base/prebuild-example3.xml.svn-base
create mode 100644 Prebuild/doc/.svn/prop-base/prebuild-example4.xml.svn-base
create mode 100644 Prebuild/doc/.svn/text-base/prebuild-example1.xml.svn-base
create mode 100644 Prebuild/doc/.svn/text-base/prebuild-example2.xml.svn-base
create mode 100644 Prebuild/doc/.svn/text-base/prebuild-example3.xml.svn-base
create mode 100644 Prebuild/doc/.svn/text-base/prebuild-example4.xml.svn-base
create mode 100644 Prebuild/doc/.svn/text-base/prebuild-example5.xml.svn-base
create mode 100644 Prebuild/doc/prebuild-example1.xml
create mode 100644 Prebuild/doc/prebuild-example2.xml
create mode 100644 Prebuild/doc/prebuild-example3.xml
create mode 100644 Prebuild/doc/prebuild-example4.xml
create mode 100644 Prebuild/doc/prebuild-example5.xml
create mode 100755 Prebuild/prebuild
create mode 100644 Prebuild/prebuild.xml
create mode 100644 Prebuild/scripts/.svn/all-wcprops
create mode 100644 Prebuild/scripts/.svn/dir-prop-base
create mode 100644 Prebuild/scripts/.svn/entries
create mode 100644 Prebuild/scripts/.svn/prop-base/Clean.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/Clean.sh.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/Help.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/MonoDevelop.sh.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/Prebuild.nsi.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/SharpDevelop.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/SharpDevelop2.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/VS2002.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/VS2003.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/VS2005.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/VS2008.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/autotools.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/autotools.sh.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/makefile.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/makefile.sh.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/nant.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/nant.sh.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/xcode.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/prop-base/xcode.sh.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/Clean.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/Clean.sh.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/Help.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/MonoDevelop.sh.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/Prebuild.nsi.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/SharpDevelop.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/SharpDevelop2.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/VS2002.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/VS2003.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/VS2005.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/VS2008.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/VS2010.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/autotools.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/autotools.sh.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/makefile.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/makefile.sh.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/nant.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/nant.sh.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/xcode.bat.svn-base
create mode 100644 Prebuild/scripts/.svn/text-base/xcode.sh.svn-base
create mode 100755 Prebuild/scripts/Clean.bat
create mode 100755 Prebuild/scripts/Clean.sh
create mode 100755 Prebuild/scripts/Help.bat
create mode 100755 Prebuild/scripts/MonoDevelop.sh
create mode 100644 Prebuild/scripts/Prebuild.nsi
create mode 100755 Prebuild/scripts/SharpDevelop.bat
create mode 100755 Prebuild/scripts/SharpDevelop2.bat
create mode 100755 Prebuild/scripts/VS2002.bat
create mode 100755 Prebuild/scripts/VS2003.bat
create mode 100755 Prebuild/scripts/VS2005.bat
create mode 100755 Prebuild/scripts/VS2008.bat
create mode 100644 Prebuild/scripts/VS2010.bat
create mode 100755 Prebuild/scripts/autotools.bat
create mode 100755 Prebuild/scripts/autotools.sh
create mode 100755 Prebuild/scripts/makefile.bat
create mode 100755 Prebuild/scripts/makefile.sh
create mode 100755 Prebuild/scripts/nant.bat
create mode 100755 Prebuild/scripts/nant.sh
create mode 100755 Prebuild/scripts/xcode.bat
create mode 100755 Prebuild/scripts/xcode.sh
create mode 100644 Prebuild/src/.svn/all-wcprops
create mode 100644 Prebuild/src/.svn/dir-prop-base
create mode 100644 Prebuild/src/.svn/entries
create mode 100644 Prebuild/src/.svn/prop-base/App.ico.svn-base
create mode 100644 Prebuild/src/.svn/prop-base/Prebuild.cs.svn-base
create mode 100644 Prebuild/src/.svn/prop-base/Prebuild.snk.svn-base
create mode 100644 Prebuild/src/.svn/text-base/App.ico.svn-base
create mode 100644 Prebuild/src/.svn/text-base/Prebuild.cs.svn-base
create mode 100644 Prebuild/src/.svn/text-base/Prebuild.snk.svn-base
create mode 100644 Prebuild/src/App.ico
create mode 100644 Prebuild/src/Core/.svn/all-wcprops
create mode 100644 Prebuild/src/Core/.svn/dir-prop-base
create mode 100644 Prebuild/src/Core/.svn/entries
create mode 100644 Prebuild/src/Core/.svn/prop-base/FatalException.cs.svn-base
create mode 100644 Prebuild/src/Core/.svn/prop-base/Kernel.cs.svn-base
create mode 100644 Prebuild/src/Core/.svn/prop-base/UnknownLanguageException.cs.svn-base
create mode 100644 Prebuild/src/Core/.svn/prop-base/WarningException.cs.svn-base
create mode 100644 Prebuild/src/Core/.svn/text-base/FatalException.cs.svn-base
create mode 100644 Prebuild/src/Core/.svn/text-base/Kernel.cs.svn-base
create mode 100644 Prebuild/src/Core/.svn/text-base/UnknownLanguageException.cs.svn-base
create mode 100644 Prebuild/src/Core/.svn/text-base/WarningException.cs.svn-base
create mode 100644 Prebuild/src/Core/Attributes/.svn/all-wcprops
create mode 100644 Prebuild/src/Core/Attributes/.svn/dir-prop-base
create mode 100644 Prebuild/src/Core/Attributes/.svn/entries
create mode 100644 Prebuild/src/Core/Attributes/.svn/prop-base/DataNodeAttribute.cs.svn-base
create mode 100644 Prebuild/src/Core/Attributes/.svn/prop-base/OptionNodeAttribute.cs.svn-base
create mode 100644 Prebuild/src/Core/Attributes/.svn/prop-base/TargetAttribute.cs.svn-base
create mode 100644 Prebuild/src/Core/Attributes/.svn/text-base/DataNodeAttribute.cs.svn-base
create mode 100644 Prebuild/src/Core/Attributes/.svn/text-base/OptionNodeAttribute.cs.svn-base
create mode 100644 Prebuild/src/Core/Attributes/.svn/text-base/TargetAttribute.cs.svn-base
create mode 100644 Prebuild/src/Core/Attributes/DataNodeAttribute.cs
create mode 100644 Prebuild/src/Core/Attributes/OptionNodeAttribute.cs
create mode 100644 Prebuild/src/Core/Attributes/TargetAttribute.cs
create mode 100644 Prebuild/src/Core/FatalException.cs
create mode 100644 Prebuild/src/Core/Interfaces/.svn/all-wcprops
create mode 100644 Prebuild/src/Core/Interfaces/.svn/dir-prop-base
create mode 100644 Prebuild/src/Core/Interfaces/.svn/entries
create mode 100644 Prebuild/src/Core/Interfaces/.svn/prop-base/IDataNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Interfaces/.svn/prop-base/ITarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Interfaces/.svn/text-base/IDataNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Interfaces/.svn/text-base/ITarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Interfaces/IDataNode.cs
create mode 100644 Prebuild/src/Core/Interfaces/ITarget.cs
create mode 100644 Prebuild/src/Core/Kernel.cs
create mode 100644 Prebuild/src/Core/Nodes/.svn/all-wcprops
create mode 100644 Prebuild/src/Core/Nodes/.svn/dir-prop-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/entries
create mode 100644 Prebuild/src/Core/Nodes/.svn/prop-base/ConfigurationNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/prop-base/DataNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/prop-base/ExcludeNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/prop-base/FileNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/prop-base/FilesNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/prop-base/MatchNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/prop-base/OptionsNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/prop-base/ProcessNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/prop-base/ProjectNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/prop-base/ReferenceNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/prop-base/ReferencePathNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/prop-base/SolutionNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/AuthorNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/CleanFilesNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/CleanupNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/ConfigurationNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/ConfigurationNodeCollection.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/DataNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/DatabaseProjectNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/DatabaseReferenceNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/DescriptionNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/ExcludeNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/FileNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/FilesNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/MatchNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/OptionsNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/ProcessNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/ProjectNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/ReferenceNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/ReferencePathNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/.svn/text-base/SolutionNode.cs.svn-base
create mode 100644 Prebuild/src/Core/Nodes/AuthorNode.cs
create mode 100644 Prebuild/src/Core/Nodes/CleanFilesNode.cs
create mode 100644 Prebuild/src/Core/Nodes/CleanupNode.cs
create mode 100644 Prebuild/src/Core/Nodes/ConfigurationNode.cs
create mode 100644 Prebuild/src/Core/Nodes/ConfigurationNodeCollection.cs
create mode 100644 Prebuild/src/Core/Nodes/DataNode.cs
create mode 100644 Prebuild/src/Core/Nodes/DatabaseProjectNode.cs
create mode 100644 Prebuild/src/Core/Nodes/DatabaseReferenceNode.cs
create mode 100644 Prebuild/src/Core/Nodes/DescriptionNode.cs
create mode 100644 Prebuild/src/Core/Nodes/ExcludeNode.cs
create mode 100644 Prebuild/src/Core/Nodes/FileNode.cs
create mode 100644 Prebuild/src/Core/Nodes/FilesNode.cs
create mode 100644 Prebuild/src/Core/Nodes/MatchNode.cs
create mode 100644 Prebuild/src/Core/Nodes/OptionsNode.cs
create mode 100644 Prebuild/src/Core/Nodes/ProcessNode.cs
create mode 100644 Prebuild/src/Core/Nodes/ProjectNode.cs
create mode 100644 Prebuild/src/Core/Nodes/ReferenceNode.cs
create mode 100644 Prebuild/src/Core/Nodes/ReferencePathNode.cs
create mode 100644 Prebuild/src/Core/Nodes/SolutionNode.cs
create mode 100644 Prebuild/src/Core/Parse/.svn/all-wcprops
create mode 100644 Prebuild/src/Core/Parse/.svn/dir-prop-base
create mode 100644 Prebuild/src/Core/Parse/.svn/entries
create mode 100644 Prebuild/src/Core/Parse/.svn/prop-base/IfContext.cs.svn-base
create mode 100644 Prebuild/src/Core/Parse/.svn/prop-base/Preprocessor.cs.svn-base
create mode 100644 Prebuild/src/Core/Parse/.svn/text-base/IfContext.cs.svn-base
create mode 100644 Prebuild/src/Core/Parse/.svn/text-base/Preprocessor.cs.svn-base
create mode 100644 Prebuild/src/Core/Parse/IfContext.cs
create mode 100644 Prebuild/src/Core/Parse/Preprocessor.cs
create mode 100644 Prebuild/src/Core/Targets/.NAntTarget.cs.swp
create mode 100644 Prebuild/src/Core/Targets/.svn/all-wcprops
create mode 100644 Prebuild/src/Core/Targets/.svn/dir-prop-base
create mode 100644 Prebuild/src/Core/Targets/.svn/entries
create mode 100644 Prebuild/src/Core/Targets/.svn/prop-base/DebugTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/prop-base/MakefileTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/prop-base/MonoDevelopTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/prop-base/NAntTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/prop-base/SharpDevelopTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/prop-base/VS2002Target.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/prop-base/VS2003Target.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/prop-base/VS2005Target.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/prop-base/XcodeTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/AutotoolsTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/DebugTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/MakefileTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/MonoDevelopTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/NAntTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/SharpDevelop2Target.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/SharpDevelopTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/ToolInfo.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/VS2002Target.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/VS2003Target.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/VS2005Target.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/VS2008Target.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/VS2010Target.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/VSGenericTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/VSVersion.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/.svn/text-base/XcodeTarget.cs.svn-base
create mode 100644 Prebuild/src/Core/Targets/AutotoolsTarget.cs
create mode 100644 Prebuild/src/Core/Targets/DebugTarget.cs
create mode 100644 Prebuild/src/Core/Targets/MakefileTarget.cs
create mode 100644 Prebuild/src/Core/Targets/MonoDevelopTarget.cs
create mode 100644 Prebuild/src/Core/Targets/NAntTarget.cs
create mode 100644 Prebuild/src/Core/Targets/SharpDevelop2Target.cs
create mode 100644 Prebuild/src/Core/Targets/SharpDevelopTarget.cs
create mode 100644 Prebuild/src/Core/Targets/ToolInfo.cs
create mode 100644 Prebuild/src/Core/Targets/VS2002Target.cs
create mode 100644 Prebuild/src/Core/Targets/VS2003Target.cs
create mode 100644 Prebuild/src/Core/Targets/VS2005Target.cs
create mode 100644 Prebuild/src/Core/Targets/VS2008Target.cs
create mode 100644 Prebuild/src/Core/Targets/VS2010Target.cs
create mode 100644 Prebuild/src/Core/Targets/VSGenericTarget.cs
create mode 100644 Prebuild/src/Core/Targets/VSVersion.cs
create mode 100644 Prebuild/src/Core/Targets/XcodeTarget.cs
create mode 100644 Prebuild/src/Core/UnknownLanguageException.cs
create mode 100644 Prebuild/src/Core/Utilities/.svn/all-wcprops
create mode 100644 Prebuild/src/Core/Utilities/.svn/dir-prop-base
create mode 100644 Prebuild/src/Core/Utilities/.svn/entries
create mode 100644 Prebuild/src/Core/Utilities/.svn/prop-base/CommandLineCollection.cs.svn-base
create mode 100644 Prebuild/src/Core/Utilities/.svn/prop-base/CurrentDirectory.cs.svn-base
create mode 100644 Prebuild/src/Core/Utilities/.svn/prop-base/Helper.cs.svn-base
create mode 100644 Prebuild/src/Core/Utilities/.svn/prop-base/Log.cs.svn-base
create mode 100644 Prebuild/src/Core/Utilities/.svn/text-base/CommandLineCollection.cs.svn-base
create mode 100644 Prebuild/src/Core/Utilities/.svn/text-base/CurrentDirectory.cs.svn-base
create mode 100644 Prebuild/src/Core/Utilities/.svn/text-base/Helper.cs.svn-base
create mode 100644 Prebuild/src/Core/Utilities/.svn/text-base/Log.cs.svn-base
create mode 100644 Prebuild/src/Core/Utilities/CommandLineCollection.cs
create mode 100644 Prebuild/src/Core/Utilities/CurrentDirectory.cs
create mode 100644 Prebuild/src/Core/Utilities/Helper.cs
create mode 100644 Prebuild/src/Core/Utilities/Log.cs
create mode 100644 Prebuild/src/Core/WarningException.cs
create mode 100644 Prebuild/src/Prebuild.cs
create mode 100644 Prebuild/src/Prebuild.snk
create mode 100644 Prebuild/src/Properties/.svn/all-wcprops
create mode 100644 Prebuild/src/Properties/.svn/entries
create mode 100644 Prebuild/src/Properties/.svn/prop-base/AssemblyInfo.cs.svn-base
create mode 100644 Prebuild/src/Properties/.svn/text-base/AssemblyInfo.cs.svn-base
create mode 100644 Prebuild/src/Properties/AssemblyInfo.cs
create mode 100644 Prebuild/src/data/.svn/all-wcprops
create mode 100644 Prebuild/src/data/.svn/dir-prop-base
create mode 100644 Prebuild/src/data/.svn/entries
create mode 100644 Prebuild/src/data/.svn/prop-base/dnpb-1.0.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/prop-base/dnpb-1.1.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/prop-base/dnpb-1.2.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/prop-base/dnpb-1.3.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/prop-base/dnpb-1.4.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/prop-base/dnpb-1.5.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/prop-base/prebuild-1.6.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/text-base/autotools.xml.svn-base
create mode 100644 Prebuild/src/data/.svn/text-base/dnpb-1.0.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/text-base/dnpb-1.1.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/text-base/dnpb-1.2.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/text-base/dnpb-1.3.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/text-base/dnpb-1.4.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/text-base/dnpb-1.5.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/text-base/prebuild-1.6.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/text-base/prebuild-1.7.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/text-base/prebuild-1.8.xsd.svn-base
create mode 100644 Prebuild/src/data/.svn/text-base/prebuild-1.9.xsd.svn-base
create mode 100644 Prebuild/src/data/autotools.xml
create mode 100644 Prebuild/src/data/dnpb-1.0.xsd
create mode 100644 Prebuild/src/data/dnpb-1.1.xsd
create mode 100644 Prebuild/src/data/dnpb-1.2.xsd
create mode 100644 Prebuild/src/data/dnpb-1.3.xsd
create mode 100644 Prebuild/src/data/dnpb-1.4.xsd
create mode 100644 Prebuild/src/data/dnpb-1.5.xsd
create mode 100644 Prebuild/src/data/prebuild-1.6.xsd
create mode 100644 Prebuild/src/data/prebuild-1.7.xsd
create mode 100644 Prebuild/src/data/prebuild-1.8.xsd
create mode 100644 Prebuild/src/data/prebuild-1.9.xsd
create mode 100644 Prebuild/tests/.svn/all-wcprops
create mode 100644 Prebuild/tests/.svn/entries
create mode 100644 Prebuild/tests/.svn/text-base/Makefile.svn-base
create mode 100644 Prebuild/tests/.svn/text-base/README.txt.svn-base
create mode 100644 Prebuild/tests/.svn/text-base/include-001.expected.svn-base
create mode 100644 Prebuild/tests/.svn/text-base/include-001.include.svn-base
create mode 100644 Prebuild/tests/.svn/text-base/include-001.prebuild.svn-base
create mode 100644 Prebuild/tests/.svn/text-base/include-002-2.include.svn-base
create mode 100644 Prebuild/tests/.svn/text-base/include-002.expected.svn-base
create mode 100644 Prebuild/tests/.svn/text-base/include-002.include.svn-base
create mode 100644 Prebuild/tests/.svn/text-base/include-002.prebuild.svn-base
create mode 100644 Prebuild/tests/Makefile
create mode 100644 Prebuild/tests/README.txt
create mode 100644 Prebuild/tests/include-001.expected
create mode 100644 Prebuild/tests/include-001.include
create mode 100644 Prebuild/tests/include-001.prebuild
create mode 100644 Prebuild/tests/include-002-2.include
create mode 100644 Prebuild/tests/include-002.expected
create mode 100644 Prebuild/tests/include-002.include
create mode 100644 Prebuild/tests/include-002.prebuild
diff --git a/Prebuild/AUTHORS b/Prebuild/AUTHORS
new file mode 100644
index 0000000..9e86ac0
--- /dev/null
+++ b/Prebuild/AUTHORS
@@ -0,0 +1,10 @@
+Dave Hudson (jendave@yahoo.com),
+Matthew Holmes (matthew@wildfiregames.com)
+Dan Moorehead (dan05a@gmail.com)
+Rob Loach (http://www.robloach.net)
+C.J. Adams-Collier (cjac@colliertech.org)
+
+Patch Contributers
+lbsa71
+chi11ken
+sdague
diff --git a/Prebuild/COPYING b/Prebuild/COPYING
new file mode 100644
index 0000000..d3cdf7e
--- /dev/null
+++ b/Prebuild/COPYING
@@ -0,0 +1,65 @@
+BSD License
+Copyright (c)2004-2008
+
+See AUTHORS file for list of copyright holders
+
+Dave Hudson (jendave@yahoo.com),
+Matthew Holmes (matthew@wildfiregames.com)
+Dan Moorehead (dan05a@gmail.com)
+Rob Loach (http://www.robloach.net)
+C.J. Adams-Collier (cjac@colliertech.org)
+
+http://dnpb.sourceforge.net
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+---
+
+Portions of src/Core/Targets/AutotoolsTarget.cs
+// Copyright (C) 2006 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Prebuild/ChangeLog b/Prebuild/ChangeLog
new file mode 100644
index 0000000..bb8e7b0
--- /dev/null
+++ b/Prebuild/ChangeLog
@@ -0,0 +1,461 @@
+2008-12-09T02:15 D. Moonfire
+ * src/Core/Kernel.cs
+ - Added a /ppi target to get the results of processing but before
+ processing the actual results.
+ * src/Core/Preprocessor.cs
+ - Applied the patch from kanato with formatting changes.
+ - Uses the format.
+ * tests/
+ - Added some lightweight tests to test the functionality of the
+ include patch.
+
+2008-06-19T09:37 John Anderson
+ * src/Core/Kernel.cs
+ - Only Loop through targets that are not abstract.
+ * src/Core/Targets/VSGenericTarget.cs
+ - Marked abstract and removed the Target attribute.
+
+2008-06-16T17:37 John Anderson
+ * src/Core/Nodes/ProjectNode.cs,data/prebuild-1.7.xsd
+ - Added the ability to hardcode guid's in the projects
+
+2008-05-21T0737 C.J. Adams-Collier
+ * src/Core/Targets/AutotoolsTarget.cs
+ - catch exception when unable to compile AssemblyInfo.cs
+
+2008-05-07T17:29 John Anderson
+ * src/Core/Targets/VSGenericTarget.cs
+ - Generate asp.net output in bin\ folder (asp.net requires it there)
+
+2008-04-30T17:29 John Anderson
+ * src/Core/Nodes/DatabaseReferenceNode.cs,
+ src/Core/Nodes/Datanode.cs,
+ src/Core/Nodes/FileNode.cs,
+ src/Core/Nodes/FileNodes.cs,
+ src/Core/Nodes/MatchNode.cs,
+ src/Core/Targets/VS2008Target.cs,
+ src/data/prebuild-1.7.xsd
+ - Refactored the project generation code to handle web projects and more
+ logically handle embedded resources and designer files.
+
+2008-04-30T17:29 Joseph Lombrozo
+ * src/Core/Nodes/SolutionNode.cs
+ - Had solutions inherit Configurations in the same way that Projects do.
+
+2008-04-29T06:35 Joseph Lombrozo
+ * src/Core/Targets/VS2008Target.cs,
+ src/Core/Nodes/DatabaseProjectNode.cs,
+ src/Core/Nodes/DatabaseReferenceNode.cs,
+ src/data/prebuild-1.7.xsd
+ - Added database references to database projects.
+ - Prevented nested solutions from being written to disk.
+
+2008-04-29T05:43 Joseph Lombrozo
+ * src/Core/Targets/VS2008Target.cs
+ - Enabled embedded solutions to contain Files.
+
+2008-04-29T04:13 Joseph Lombrozo
+ * src/Core/VSVersion.cs
+ - Fixed spelling mistake in enum comment.
+ * src/Core/Attributes/DataNodeAttribute.cs
+ - Allowed the DataNodeAttribute to be attached to a single class
+ more than once, allowing one class to be used to parse more than
+ one node at a time.
+ * src/Core/Kernel.cs
+ - Changed CacheNodeTypes() to allow for multiple DataNodeAttribute
+ instances in one class. Refactored ProcessFile(...) to return Solutions,
+ rather than adding them to the Kernel.
+ * src/Core/Nodes/SolutionNode.cs
+ - Added Guid (for embedded folders)
+ - Added DatabaseProjects, Solutions and Processes to the SolutionNode
+ when parsing.
+ * src/Core/Nodes/ProjectNode.cs
+ - Added FrameworkVersion property to allow for 2.0/3.0/3.5 differentiation.
+ * src/Core/Targets/VS2008Target.cs, src/data/prebuild-1.7.xsd
+ - Added ability to have embedded solutions, and externally referenced
+ prebuild scripts.
+
+2008-04-24T04:33 John M. Anderson
+ * src/Core/Targets/VS2003Target.cs, src/Core/Targets/VSVersion.cs
+ - Moved the VSVersion enum into its own file.
+ * src/Core/Targets/VS2008Target.cs
+ - added support for VS2008
+ * src/Core/Nodes/ProjectNode.cs
+ - Added initial support for ASP.NET projects
+ * src/Core/Nodes/DatabaseProjectNode.cs
+ - Added support for Visual Studio database projects
+
+2008-02-19T07:08 C.J. Adams-Collier
+ * TODO
+ - added some tasks from Sam Hocevar
+ * src/Core/Targets/AutotoolsTarget.cs
+ - added a missing end paren
+ * COPYING
+ - Removed Randy Ridge's name from the copyright. Looks to me like
+ his name was present only because the file was nabbed from Tao
+
+2008-02-09T20:29 C.J. Adams-Collier
+ * COPYING
+ - added MIT/X11 license due to inclusion of code from Monodevelop
+ * THANKS
+ - added Lluis Sanchez Gual and Todd Berman - I yoinked code from
+ their pkg-config .pc file parser to build AutotoolsTarget.cs.
+ Sorry it took me so long to remember to add mention of you guys!
+ * src/Core/Targets/AutotoolsTarget.cs
+ - added MIT/X11 license. see above.
+
+2008-02-07T08:27 C.J. Adams-Collier
+ * AUTHORS
+ - consolidated names and contact info found laying around the
+ source
+ * src/Core/Kernel.cs
+ - updated copyright date
+ - re-formatted license for 80-column editor
+ - updated log banner to indicate new date, new authors
+ * src/Core/Targets/AutotoolsTarget.cs
+ - clarified reasoning behind use of constants in
+ AutotoolsTarget.ParsePCFile
+ - reduced length of some long lines using newline/indent
+ - added log messages for parsing .pc files, emitting solutions,
+ projects
+ - robustified the inter-package dependency resolution target
+ - log warning when we can't find assembly for
+ - clarified code for case of inability to find embedded
+ autotools.xml
+ * src/data/autotools.xml
+ - adding system lookup of resgen2 to configure.ac
+ - fixed .resource -> .resources typo
+ - added a rule to create .response file containing all sources
+ - using @.response on $(CSC) command line instead of listing
+ all source files
+ * src/Properties/AssemblyInfo.cs
+ - re-formatted license for an 80-column editor
+ - added more authors to the AssemblyCopyright attribute
+ - bumped version to 2.0.3
+ * prebuild.xml
+ - bumped version to 2.0.3
+ * scripts/autotools.sh
+ - if 'mono' is in the path, run Prebuild.exe with it
+ - using dirname to capture correct path to prebuild.xml &c
+
+2008-02-06T17:18 C.J. Adams-Collier
+ * src/Core/Targets/NAntTarget.cs
+ - re-formatted the license for an 80-column editor
+ - added myself to the copyright
+ - added a fix submitted by Gryc Ueusp
+ * src/Core/Targets/AutotoolsTarget.cs
+ - updated copyright to include 2008
+ * THANKS
+ - created file, added Gryc Ueusp
+
+2008-01-01T14:50 C.J. Adams-Collier
+ * src/data/autotools.xml
+ - fixed .resx -> .resource compilation
+ - fixed failing edge case where Project is an unsigned Library
+ - added $(RESOURCE_SRC) to list of extra dist files
+ * src/Core/Targets/AutotoolsTarget.cs
+ - removed embeddedResources from extraDistFiles list
+
+2007-04-18T07:49 C.J. Adams-Collier
+ * src/data/prebuild-1.7.xsd
+ - removed default version from references
+
+2007-04-06T12:42 C.J. Adams-Collier
+ * src/data/autotools.xml
+ - added support for /doc: output when XmlDocFile is not empty
+ - not printing \t \\n on lines that have no content
+ - gacutil now installs the root assembly instead of the one under
+ bin/Debug or whatever
+
+2007-04-04T22:12 C.J. Adams-Collier
+ * src/Core/Targets/AutotoolsTarget.cs
+ - removed debugging Console.WriteLine()
+ * src/data/autotools.xml
+ - ensuring that install-sh and missing get distributed
+ - explicitly stating that the sources, snk, resources and binary
+ references live under $(srcdir)
+ - corrected uninstall target
+ - verified distcheck completes successfully
+
+2007-04-03T21:56 C.J. Adams-Collier
+ * src/Core/Targets/AutotoolsTarget.cs
+ - added a using for System.Diagnostics
+ - added enum ClrVersion for use with the pkg-config parser
+ - added class SystemPackage for use with the pkg-config parser
+ - removed explicit "private" property of members since it is implied
+ - flushing the stream-writer before it's closed
+ - removed excess braces around an if statement
+ ! NormalizeAsmName(), AddAssembly(), GetAssembliesWithLibInfo(),
+ GetAssembliesWithoutLibInfo(), ProcessPiece(),
+ GetVariableFromPkgConfig(), ParsePCFile(),
+ RegisterSystemAssemblies(), RunInitialization()
+ - pulled the above from MonoDevelop to parse the system pkgconfig
+ files and determine /pkg: arguments. Original sources are here:
+ http://svn.myrealbox.com/source/trunk/monodevelop/Core/src/MonoDevelop.Core/MonoDevelop.Core/SystemAssemblyService.cs
+ http://svn.myrealbox.com/source/trunk/monodevelop/Core/src/MonoDevelop.Core/MonoDevelop.Core/ClrVersion.cs
+ ! WriteProject()
+ - now gathering project version from AssemblyInfo.cs if it is part
+ of the project
+ - changed the declaration of the ArrayList's in the method
+ - now copying assembly .config files to the project, distributing,
+ installing
+ - making sure all needed files live under the Project directory
+ - copying strongname keys to project directory
+ - parsing AssemblyInfo.cs to determine assembly version
+ - removing all references to ".."
+ - removed superfluous if(project.References.Count > 0) around
+ for(int refNum = 0; refNum < project.References.Count; refNum++)
+ - removed use of runtimeLibs
+ - adding hook to copy sibling project's generated assemblies to
+ this project during Make time
+ - added extra dist target to ensure all files required to build
+ get distributed during "make dist"
+ - added new xslt processing args:
+ -- assemblyName
+ -- extraDistFiles
+ -- pkgLibs (/pkg:foo)
+ -- localCopyTargets (to copy sibling assemblies at Make time)
+ -- projectVersion (if determined from AssemblyInfo.cs)
+ -- hasAssemblyConfig (if there's a assembly.exe.config present)
+ ! Write()
+ - calling RunInitialization() to gather pkg-config data
+ * src/data/autotools.xml
+ - accepting new args passed from AutotoolsTarget.cs
+ - modernized configure.ac a bit
+ - using a version of tar that allows >99-char filenames
+ - added ASSEMBLY_NAME variable
+ - using assembly name rather than project name for gac installation
+ - generated assembly is now assembly name and not project name
+ - accepting /pkg: flags gathered from AutotoolsTarget.cs
+ - adding Makefile targets to copy sibling project assemblies to .
+ - fixed Debug, Release targets
+ - adding support for strongname key signing
+ - adding /unsafe support
+ - adding a clean make target
+ - only running gacutil /u if the assembly being uninstalled is in gac
+ - added some templates to determine each Configuration's .snk
+ - added explanation as to why .exe assemblies live in $prefix/lib
+ * src/Properties/AssemblyInfo.cs
+ - bumped assembly version
+ * prebuild.xml
+ - bumped assembly version
+
+2007-03-29T18:03 C.J. Adams-Collier
+ * src/Core/Targets/AutotoolsTarget.cs
+ ! WriteProject()
+ - re-named incorrectly-named variable gacLibs to systemLibs
+ - added another reference list, runtimeLibs which contains the
+ libs we will need at runtime. we use this to build a MONO_PATH
+ - added monoPath to the xslt args list
+ * src/data/autotools.xml
+ !
+ - renamed gacLibs to systemLibs
+ - added the sources to the dist list
+ - added logic to install libs that aren't strongnamed
+ !
+ - accepting a param to update the MONO_PATH
+
+2007-03-28T19:46 C.J. Adams-Collier
+ * src/Core/Targets/MonoDevelopTarget.cs
+ ! CleanProject()
+ - using Assembly.LoadWithPartialName to locate the assembly
+ * src/Core/Targets/AutotoolsTarget.cs
+ ! WriteCombine()
+ - no longer using $PWD to determine a project's source dir; this
+ doesn't work with elements
+ - passing the solution name to all templates - fixes
+ multi-solution prebuild systems
+ ! WriteProject()
+ - no longer using $PWD to determine a project's source dir; this
+ doesn't work with elements
+ - passing the solution name to all templates - fixes
+ multi-solution prebuild systems
+ - copying strongname key to the autotools directory
+ - using Assembly.LoadWithPartialName to locate assemblies
+ * src/data/autotools.xml
+ !
+ - fixed the .pc AC_CONFIG_FILES macro
+ !
+ - added solution name param
+ - wrapping if type=exe check around script install macro
+ - added type=lib check and .pc file install macro
+ - added support for Configuration-specific builds (Debug, Release, etc)
+ - added strongname keyfile code
+ - TODO: support non-strongnamed library installation
+ !
+ - added space preservation attribute to stylesheet element
+ - added a lower-case project name variable
+ - added solution name param
+ - made for-each template more specific
+ !
+ - added solution name param
+ !
+ - added solution name param
+ !
+ - added solution name param
+ !
+ - added solution name param
+
+2007-03-27T09:33 C.J. Adams-Collier
+ * src/Core/Targets/AutotoolsTarget.cs
+ - now processing the wrapper script if type is "Exe" or "WinExe"
+ * src/data/autotools.xml
+ !
+ - being more exact about where text escaping is used
+ - using the correct variable name for the GACUTIL_FLAGS template
+ - using correct test="" for the AC_CONFIG_FILES macros
+ !
+ - uncommented the bin_SCRIPTS section now that the script is being
+ generated correctly
+ !
+ - fixed whitespace at beginning of file, before #!
+ - using lower-case packageName to indicate installation location
+
+2007-03-27T09:33 C.J. Adams-Collier
+ * src/data/autotools.xml
+ !
+ * added a lcProjectName which is $projectName lower-cased
+ * moved autoconf template specifier near AC_OUTPUT
+ * AC_OUTPUT with args is deprecated. now using AC_CONFIG_FILES
+ * placed AC_CONFIG_FILES() calls for wrapper script or pkg-config
+ file in xslt project type checks
+ !
+ * commented out bin_SCRIPTS
+ * added a lcProjectName which is $projectName lower-cased
+ * using $lcProjectName instead of the longer version
+
+2007-03-27T08:39 C.J. Adams-Collier
+ * src/data/autotools.xml
+ !
+ - added whitespace-preservation
+ - added the missing projectName param
+ - replaced bin_SCRIPTS with something that worked
+
+2007-03-27T07:56 C.J. Adams-Collier
+ * src/data/autotools.xml
+ !
+ - cleaned up duplicate checks
+ - placed initialization macros above system check macros
+ - added some more messages about what's going on
+ - added GACUTIL_FLAGS variable including /package option
+ !
+ - added an incomplete bin_SCRIPTS
+ - RCS check says "building" instead of "compiling"
+ !
+ - removed macros that are useful only for projects
+ !
+ - created this element on this revision
+ - this is a wrapper shell script that lives in the $PATH and runs
+ the CIL assembly
+
+2007-03-26T20:18 C.J. Adams-Collier
+ * src/Core/Targets/AutotoolsTarget.cs
+ - creating new template arguments to contain the list of libs to
+ reference: source, binary & GAC
+ - source libs are included as part of this solution (untested)
+ - binary libs are distributed with the source (untested)
+ - GAC libs are assumed to be in the GAC or other lib path (tested)
+ * src/data/autotools.xml
+ - created new params through which to accept reference info
+ - created a working $(CSC) line
+ - added a TODO item for ordering project dependency for
+ AC_CONFIG_SUBDIRS code
+
+2007-03-26T08:41 C.J. Adams-Collier
+ * src/Core/Targets/AutotoolsTarget.cs
+ - now creating list of source files in managed code and passing
+ them to the template via s
+ * src/data/prebuild-1.7.xsd
+ - updated the header comment to 2007
+ * src/data/autotools.xml
+ !
+ - copied checks from Solution-level configure.ac
+ - copied solution-level config status
+ !
+ - added elements for file list to be passed through
+ - made a temporary target for the assembly we're building
+ - added this target to the deps of "all:"
+ !
+ - changed status header/footer from "- - -" to "==="
+
+2007-03-23T08:33 C.J. Adams-Collier
+ Added version attribute handling code for Property element
+ Added description element handling code
+ * prebuild.xml
+ - added /Prebuild/Solution/Property/@version attribute
+ - added /Prebuild/Solution/Property/Description element
+ * src/Core/Nodes/ProjectNode.cs
+ - added some docs where they were missing and obvious
+ - added code to handle @version
+ * src/Core/Nodes/DescriptionNode.cs
+ - new file. Used to handle /Prebuild/Solution/Property/Description
+ * src/Core/Targets/AutotoolsTarget.cs
+ - added mkdirDashP(), a recursive directory creation method
+ - WriteProject() now copies the files to autotools/
+ * src/data/prebuild-1.7.xsd
+ - added /Prebuild/Solution/Property/Description element
+ - added /Prebuild/Solution/Property/@version attribute
+ * src/data/autotools.xml
+ - removed excess
+ - explicitly using dnpb: prefix
+
+2007-03-23T04:31 C.J. Adams-Collier
+ Merged code from my stripped-down test
+ Adding support for the /Prebuild/Solution/Project/Author element
+ * prebuild.xml
+ - added Author elements
+ - cleaned up the really long Project element
+ * src/Core/Nodes/ProjectNode.cs
+ - added Author tag processing code
+ * src/Core/Nodes/AuthorNode.cs
+ - Created to process Author elements
+ - based off of ReferencePathNode.cs
+ * src/Core/Targets/AutotoolsTarget.cs
+ - merged code from https://svn.colliertech.org/mono/dnpbAutotools/dnpbAutotools/test.cs
+ - renamed old WriteCombine to WriteCombineOld
+ - renamed old WriteProject to WriteProjectOld
+ * src/data/prebuild-1.7.xsd
+ - added Author element to Project
+ * src/data/autotools.xml
+ - lower-cased utf
+
+
+2007-03-22T13:58 C.J. Adams-Collier
+ Exposing an XmlDocument that represents the prebuild.xml file
+ passed to the program
+
+ * src/Core/Kernel.cs
+ - created an object member called XmlDocument m_CurrentDoc
+ - created a property to access its value
+ - using m_CurrentDoc to load up the prebuild.xml file rather than
+ a local variable called "doc"
+
+2007-03-22 C.J. Adams-Collier
+ * prebuild.xml
+ - added autotools.xml created at https://svn.colliertech.org/mono/dnpbAutotools/dnpbAutotools/autotools.xml
+ * src/data/autotools.xml
+ - the same
+ * src/Core/Targets/MonoDevelopTarget.cs
+ - fixed bug introduced in r206
+
+2007-03-07 C.J. Adams-Collier
+ * src/data/prebuild-1.7.xsd
+ - added version attribute to Solution and Project elements
+
+2006-11-04T00:38 C.J. Adams-Collier
+ * placing AssemblyInfo.cs into Properties/
+ * Fixed double-mention of the package name
+
+2006-11-03T15:23 C.J. Adams-Collier
+ * corrected a problem in the Include.am generation code
+ * created the new .exe
+ * copied it to the root of the build
+
+2006-11-03T14:57 C.J. Adams-Collier
+ * Updated the .exe file
+
+2006-11-03 C.J. Adams-Collier
+ * Added a TODO file
+ * Added a ChangeLog file
+ * applied some fixes for autotools gac and pkg-config installation
+ problems
diff --git a/Prebuild/INSTALL b/Prebuild/INSTALL
new file mode 100644
index 0000000..23e5f25
--- /dev/null
+++ b/Prebuild/INSTALL
@@ -0,0 +1,236 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
+Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about. Run `./configure --help' for
+details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory. After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script). Here is a another example:
+
+ /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
+configuration-related scripts to be executed by `/bin/bash'.
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/Prebuild/NEWS b/Prebuild/NEWS
new file mode 100644
index 0000000..bea28da
--- /dev/null
+++ b/Prebuild/NEWS
@@ -0,0 +1,200 @@
+Prebuild is an XML-driven pre-build tool allowing developers to easily generate project or make files for major IDE's and .NET development tools including: Visual Studio 2005, Visual Studio 2003, Visual Studio 2002, SharpDevelop, MonoDevelop, and NAnt.
+
+Documentation and downloads are available at http://dnpb.sourceforge.net.
+
+Prebuild is licensed under the BSD license.
+
+[ XXXXXXX XX, XXX - 1.3.2 ]
+ + Added Keyfile signing to NAnt target and VS2005 target
+ + Updated XSD file to 1.7
+ + Boo and VisualBasic Language support in VS2005 target
+ + Added basic Autotools target. It creates a non-recursive Autotools system.
+ ! Multiple files can be excluded from the Match node
+ ! VS2005 now handles .resx files correctly.
+ ! NAnt and Autotools now handle defines
+ ! NAnt and Autotools now handle resources
+ + Conditional XML variables can be passed through the command line.
+ + Added /install and /remove command line flags to install and remove assemblies from the GAC
+ + Many fixes to VS2005 target
+
+[ July 21, 2006 - 1.3.1 ]
+ ! VS2005 fixes from Rob Loach
+ ! NAnt fixes from Rob Loach and David Hudson
+ ! XML doc fixes from Rob Loach
+ + Added SharpDevelop2 target (really just uses VS2005 target)
+ ! Fixed bug with BuildEvents in Monodevelop target
+ + Passing /yes will default to answering yes to any warnings
+
+[ February 28, 2006 - 1.3 ]
+ + Added MonoDevelop target.
+ + Added NAnt target.
+ + Lots of fixes to all targets.
+ * Cleaned up the code using FXCop.
+ * Updated schema to 1.6 to fix a typo and add a new parameter.
+ * jendave is now the maintainer of the project. RobLoach has been added as a developer.
+ * Removed references to 'dnpb'.
+ + Added rudimentary support for pre- and post- build scripts
+ * Updated examples.
+
+[ August 5, 2004 - 1.2 ]
+ + Added Visual Studio Express (vs2005express) target contributed by Borrillis and modified for use with different languages
+ + Added the allowedgroups command line option followed by a pipe-delimited list of project group filter flags (eg. Group1|Group2) allow optional filtering of all projects that dont have at least one of these flags
+ + Added the filterGroups XML attribute to the project node and updated the scheme to v1.5 for this addition, it is used to specified the delimited list of filter groups to which a project belongs
+ * Modified the removedir command line option to allow for a pipe-delimited list of directory names
+ ! Modified the resource loading code to search for resourced without the prepended namespace (as Visual Studio .NET does it) to allow for it to be compiled with SharpDevelop as well
+ + Added the GenerateXmlDocFile boolean option to the Options XML element
+ * Changed the behavior of the XmlDocFile option so that if not specified it uses the assemblyName (without file extension) + .xml for the file name instead of just not generating the file since the new GenerateXmlDocFile takes care of this
+
+[ January 3, 2004 - 1.1 ]
+ ! Replaced regex use for more efficient manual parsing to allow use on non-windows platforms with Mono which has Regex problems
+ + Added the checkOsVars attribute to the root element for enabling interpolation for Enviroment variables in the form ${var}, otherwise no checking is performed for efficiency-sake
+ * Make the version attribute on the root element optional as it isn't used and not needed since the schema url contains the version
+
+[ December 30, 2004 - 1.1 ]
+ ! Applied Leed's fix for SharpDevelop references
+ + Rewrote much of the processing for better validation and without the use of a temp file
+ + Added support for configurations at the project level which are named All. They now apply changes to all Solution level defined configs
+ * Changed all spaces into tabs
+ + Added support for the None build action
+ * Replaced all sequence's in the XML schema for all's because the order doesn't matter since the xml file is loaded into an XmlDocument
+
+[ December 25, 2004 - 1.0 ]
+ + Added the /removedir option for cleaning directories like obj before file releases
+ + Changed WriteTempXml() and the new DeleteTempXml() methods to be compiled only in DEBUG builds
+ * Made path optional for Match elements (defaults to current directory) and updates schema for it
+ ! Fixed XML example in the readme.txt
+ + Added example xml files to docs directory
+ * Updated license.txt to add Dan Moorehead and update copyright years
+ + Updated prebuild.xml to take advantage of the default path attribute for match elements
+ + Updated Clean to delete the obj directories
+
+[ December 25, 2004 - 0.13 ]
+ + Added dnpb.exe so that it can be used to generate the project files
+ + Added dnpb.ico
+ * Added parameterless Write statement to Log for writing a single line
+ * Changed scehema to version 1.3 for support of icon attribute
+ * Added support for All configuration name under a Project node signifying common settings for all configurations
+ ! Fixed the SupressWarnings by adding the corresponding field to OptionsNode
+ * Wrote documentation in docs/readme.txt
+ * Added Dan Moorehead to copyrights and extended date from 2004 to 2004-2005
+ * Updated prebuild.xml
+ * Optimized Log class
+ * Updated OutputUsage()
+ * /clean targets all by default
+ * No log file is used by default, /log without value specified uses default file name
+ + Added support for the /pause which pauses the utility after execution to observe output
+
+
+[ September 27, 2004 - 0.12.2a ]
+ ! Fixed a nasty bug when trying to delete our temp file for pre-processing.
+
+[ September 15, 2004 - 0.12.2 ]
+ + Expanded platform identification, thanks to the NAnt guys for shedding some
+ light on how to properly check for UNIX platforms! Thanks guys!
+ * POSIX OS identifier changed to UNIX. Valid OS names are now "Win32", "UNIX",
+ and "Unknown".
+ ! Fixed SharpDevelop target to properly use the 'rootNamespace' attribute of
+ the Project tag.
+ + New command-line switch, /ppo, forces DNPB to pre-process the file and write
+ the pre-processed file. This allows you to test/debug your pre-processor
+ macros. No other processing will be done. You can specify a target file as
+ a paramter for the /ppo switch, or DNPB will write the file 'preprocessed.xml'
+ if you do not specify a file.
+ + The Match tag now has a 'buildAction' attribute which functions exactly like
+ the attribute of the same name for the File tag.
+
+[ August 5, 2004 - 0.12.1 ]
+ + Added environment variable expansion for all values. Environment variables
+ should be listed in the form ${VAR}.
+
+[ July 30, 2004 - 0.12.0 ]
+ + Added preprocessing via XML processing information tags. Available tags
+ are: ?>, ?>, and . The
+ current expression parser is very basic, but will be replaced with a more
+ capable parser over time. Current operators available are: =, !=, <, >,
+ <=, >=. Current test variables available: OS, RuntimeVersion, RuntimeMajor,
+ RuntimeMinor, RuntimeRevision.
+
+[ July 27, 2004 - 0.11.4 ]
+ + Added 'useRegex' attribute to the Match tag. Matches can now use regular
+ expressions to match filenames.
+ + Added the 'assemblyName' attribute to the Project tag. Projects can now
+ set their output assembly name.
+ ! Fixed several bugs in the way that Project tags inheirt their parent
+ Solutions configuration options. This operation should now work fully as
+ intended.
+ ! Due to some wierdness, Project Guid's are now stored as part of the Project
+ node and created at parse time.
+
+[ May 11, 2004 - 0.11.3 ]
+ ! Fixed a bug where I was writing the wrong property name for a projects root
+ namespace.
+ ! Removed a DEBUG statement I had left in the code in 0.11.2.
+ ! Fixed a bug in the VS2002 writer which caused the version variables to not
+ be overriden correctly.
+ + Added the rootNamespace property to the element, allowing you to
+ specify the root namespace.
+ * /target and /clean are now mutually exclusive command line switches, and
+ they both now take the all option. In the case of /target all, all build
+ file for all targets will be created. In the case of /clean all, the user
+ will be prompted to make sure they want to do it, and if so, will clean
+ all build files for all targets.
+
+[ April 22, 2004 - 0.11.2 ]
+ ! Fixed a bug with the /file command-line operator. Was using the unresolved
+ file path rather then the resolved one, was making the attempt to open the
+ dnpb file fail.
+ ! Fixed a bug in the schema that required at least 1 solution and 1 reference
+ path. We can do just fine with 0 of either of these. Some files may be all
+ statements and not have any tags.
+ ! Fixed a bug that caused the project references not to be written with the
+ SharpDevelop target.
+ * Changed the schema to version 1.2, allowing for Configuration nodes to exist
+ under project nodes. The inheritance of values is hierarchical. Meaning, if
+ you define a configuration named Debug at the Soltion level, and one by the
+ same name at the Project level, the one at the Project level will first
+ inherit the options of the Solution level configuration, then set it's own
+ options. If you define a configuration at the Project level and it does not
+ exist at the Solution level, it will be created at the Solution level.
+ * Project references should now work correctly across the board. Note that due
+ to a restriction in Visual Studio, you can only reference projects in the same
+ solution.
+
+[ April 21, 2004 - 0.11.1 ]
+ ! Fixed a problem with resolving paths in various targets. Was not properly
+ setting the CWD.
+ * Schema updated to 1.1, moving the ReferencePath element from the Options
+ element to the Project element. This makes more logical sense, given that
+ reference paths are resolved relative to the project path. Any prebuild.xml
+ file referecning verison 1.0 will fail! Please update to the 1.1 schema.
+
+[ April 19, 2004 - 0.11.0 ]
+ * Added several attributes across the code to make FxCop happy
+ ! Fixed bugs in reference paths being written in the VS targets.
+ ! Fixed a bug in ProjectNode which was doing two CWDStack.Push() calls instead of
+ a Push/Pop pair. Was wreaking havoc with tags.
+ ! Fixed some bugs in the path tracking, both the Project and Solution nodes now
+ have a FullPath property, which is the full path to the file resolved at load
+ time. This should fix all path relativity problems.
+ + Added new /clean switch, allowing the target to clean up any files it generated.
+ in accordance, the ITarget interface has been updated to support a new Clean()
+ method.
+ + Completed addition of the tag, to allow the referencing of external
+ prebuild.xml files.
+ + Added the runtime attribute to the Project element. This allows the developer
+ to specify which runtime a project should target (Mono or Microsoft). This is
+ of course ignored in certain targets like the Visual Studio targets.
+ + Added the SharpDevelop target.
+
+[ April 13, 2004 - 0.10.1a ]
+ + Added the buildAction attribute to the File node. This is needed for dnpb
+ to even be able to bootstrap itself (dnpb-1.0.xsd must be an embedded resource)
+
+[ April 13, 2004 - 0.10.1 ]
+ * First Release
+
+[ Key ]
+* = Change or information
++ = Addition
+! = Bug Fix
+
diff --git a/Prebuild/README b/Prebuild/README
new file mode 100644
index 0000000..2b05fb5
--- /dev/null
+++ b/Prebuild/README
@@ -0,0 +1,274 @@
+Prebuild Instructions
+
+Prebuild is an XML-driven pre-build tool allowing developers to easily generate project or make files for major IDE's and .NET development tools including: Visual Studio 2005, Visual Studio 2003, Visual Studio 2002, SharpDevelop, SharpDevelop2, MonoDevelop, and NAnt.
+
+_______________________________________________________________________________
+Overview
+
+Prebuild can be either be run from the command line to generate the
+project and make files or you can execute the included batch (*.bat)
+and Unix Shell script (*.sh) files.
+
+_______________________________________________________________________________
+The currently supported developement tools and their associated batch
+and shell script files.
+
+Visual Studio .NET 2005 (VS2005.bat)
+Visual Studio .NET 2003 (VS2003.bat)
+Visual Studio .NET 2002 (VS2002.bat)
+SharpDevelop (SharpDevelop.bat) - http://www.icsharpcode.net/OpenSource/SD/
+SharpDevelop2 (SharpDevelop.bat) - http://www.icsharpcode.net/OpenSource/SD/
+MonoDevelop (MonoDevelop.sh) - http://www.monodevelop.com/
+NAnt (nant.sh and nant.bat) - http://nant.sourceforge.net/
+Autotools (autotools.bat and autotools.sh) - http://en.wikipedia.org/wiki/GNU_build_system
+
+Notes:
+
+A Unix Shell script is provided for MonoDevelop, as it does not run on
+Windows at this time.
+
+Visual Studio .NET 2005 and the Visual Express IDE's can import
+solutions from older versions of Visual Studio .NET.
+
+Makefiles are not currently supported.
+
+_______________________________________________________________________________
+Command Line Syntax:
+
+Example:
+> Prebuild /target vs2003
+
+This will generate the project files for Visual Studio.NET 2003 and
+place the redirect the log to a file named PrebuildLog.txt in the
+parent directory
+
+
+The syntax structure is as below, where commandParameter is optional
+depending on the command and you can provide several option-value
+pairs.
+
+Note: The '> ' signifies the command prompt, do not enter this literally
+
+> Prebuild /