From fa1e84a10957e2543352cd178b91765bee7828a0 Mon Sep 17 00:00:00 2001
From: mterwoord_cp <7cd3fd84a0151ea055c2f79e4d2eef9576fe9afesxUZAwxD>
Date: Fri, 13 Aug 2010 13:23:32 +0000
Subject: [PATCH]
---
Build/VSIP/install.bat | 3 +-
Setup2/BuildUserKit.bat | 6 +-
Setup2/Code.inc | 35 +++++++++--
Setup2/Cosmos.iss | 16 +++--
source2/Build/Cosmos.Build.MSBuild/IL2CPU.cs | 21 ++++---
.../Cosmos.VS.Package.csproj | 38 ++++++++----
.../Cosmos.vstemplate} | 2 +-
.../CosmosProject.Cosmos | 0
.../{CosmosExpress => Cosmos}/Kernel.ico | Bin
.../CosmosKernel (C#)/AssemblyInfo.cs | 36 ++++++++++++
.../CosmosKernel (C#)/CSharpProj.vstemplate | 19 ++++++
.../CosmosKernel (C#)/CSharpProject.csproj | 55 ++++++++++++++++++
.../Projects/CosmosKernel (C#)/Kernel.cs | 21 +++++++
.../Projects/CosmosKernel (C#)/Kernel.ico | Bin 0 -> 25214 bytes
.../Projects/CosmosKernel (C#)/Readme.txt | 2 +
.../Templates/Projects/Readme.txt | 8 +++
16 files changed, 229 insertions(+), 33 deletions(-)
rename source2/VSIP/Cosmos.VS.Package/Templates/Projects/{CosmosExpress/CosmosExpress.vstemplate => Cosmos/Cosmos.vstemplate} (91%)
rename source2/VSIP/Cosmos.VS.Package/Templates/Projects/{CosmosExpress => Cosmos}/CosmosProject.Cosmos (100%)
rename source2/VSIP/Cosmos.VS.Package/Templates/Projects/{CosmosExpress => Cosmos}/Kernel.ico (100%)
create mode 100644 source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/AssemblyInfo.cs
create mode 100644 source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/CSharpProj.vstemplate
create mode 100644 source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/CSharpProject.csproj
create mode 100644 source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/Kernel.cs
create mode 100644 source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/Kernel.ico
create mode 100644 source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/Readme.txt
create mode 100644 source2/VSIP/Cosmos.VS.Package/Templates/Projects/Readme.txt
diff --git a/Build/VSIP/install.bat b/Build/VSIP/install.bat
index c2a0fb967..d0e74d026 100644
--- a/Build/VSIP/install.bat
+++ b/Build/VSIP/install.bat
@@ -36,7 +36,8 @@ xcopy /Y ..\..\source\Cosmos\Cosmos.Sys.Plugs\bin\Debug\Cosmos.Sys.Plugs.* .
xcopy /Y ..\..\source\Cosmos.Kernel.FileSystems\bin\debug\Cosmos.Sys.FileSystem.* .
xcopy /Y ..\..\source2\VSIP\Cosmos.VS.Package\bin\Debug\Cosmos.VS.Package.* .
xcopy /Y "..\..\source2\VSIP\Cosmos.VS.Package\obj\Debug\CosmosProject (C#).zip" .
-xcopy /Y "..\..\source2\VSIP\Cosmos.VS.Package\obj\Debug\CosmosExpress.zip" .
+xcopy /Y "..\..\source2\VSIP\Cosmos.VS.Package\obj\Debug\Cosmos.zip" .
+xcopy /Y "..\..\source2\VSIP\Cosmos.VS.Package\obj\Debug\CosmosKernel (C#).zip" .
REM splitup compiler:
xcopy /Y ..\..\source2\Compiler\Cosmos.Compiler.Assembler\bin\debug\Cosmos.Compiler.Assembler.* .
xcopy /Y ..\..\source2\Compiler\Cosmos.Compiler.Assembler.X86\bin\debug\Cosmos.Compiler.Assembler.X86.* .
diff --git a/Setup2/BuildUserKit.bat b/Setup2/BuildUserKit.bat
index 1188f69f5..b96c55d92 100644
--- a/Setup2/BuildUserKit.bat
+++ b/Setup2/BuildUserKit.bat
@@ -36,7 +36,9 @@ xcopy /Y ..\..\source\Cosmos\Cosmos.Sys.Plugs\bin\Debug\Cosmos.Sys.Plugs.* .
xcopy /Y ..\..\source\Cosmos.Kernel.FileSystems\bin\debug\Cosmos.Sys.FileSystem.* .
xcopy /Y ..\..\source2\VSIP\Cosmos.VS.Package\bin\Debug\Cosmos.VS.Package.* .
xcopy /Y "..\..\source2\VSIP\Cosmos.VS.Package\obj\Debug\CosmosProject (C#).zip" .
-xcopy /Y "..\..\source2\VSIP\Cosmos.VS.Package\obj\Debug\CosmosExpress.zip" .
+xcopy /Y "..\..\source2\VSIP\Cosmos.VS.Package\obj\Debug\Cosmos.zip" .
+xcopy /Y "..\..\source2\VSIP\Cosmos.VS.Package\obj\Debug\CosmosKernel (C#).zip" .
+xcopy /Y "..\..\source2\VSIP\Cosmos.VS.Package\obj\Debug\CosmosKernel (C#).zip" ".\CosmosKernel (C#) 2.zip"
REM splitup compiler:
xcopy /Y ..\..\source2\Compiler\Cosmos.Compiler.Assembler\bin\debug\Cosmos.Compiler.Assembler.* .
xcopy /Y ..\..\source2\Compiler\Cosmos.Compiler.Assembler.X86\bin\debug\Cosmos.Compiler.Assembler.X86.* .
@@ -53,4 +55,4 @@ IF EXIST "C:\Program Files\Inno Setup 5\ISCC.exe" (
) ELSE (
"C:\Program Files (x86)\Inno Setup 5\ISCC" /Q ..\..\Setup2\Cosmos.iss /dBuildConfiguration=Userkit
)
-cd ..\..\Setup2
\ No newline at end of file
+cd ..\..\Setup2
diff --git a/Setup2/Code.inc b/Setup2/Code.inc
index 995ff267d..bb88f4997 100644
--- a/Setup2/Code.inc
+++ b/Setup2/Code.inc
@@ -18,7 +18,8 @@ var
__VSNET2008_PATH,
__VSNET2010_PATH,
__VSNET2008_BASE_PATH,
- __VSNET2010_BASE_PATH: string;
+ __VSNET2010_BASE_PATH,
+ __CSharpExpress2008ProjectTemplatePath: string;
procedure InitializePaths;
begin
@@ -59,6 +60,10 @@ __NET_FRAMEWORK4_INSTALLED := ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\.NETF
__VSNET2008_BASE_PATH := ExpandFilename(AddBackslash(__VSNET2008_PATH)+'..\..');
if __VSNET2010 then
__VSNET2010_BASE_PATH := ExpandFilename(AddBackslash(__VSNET2010_PATH)+'..\..');
+
+ RegQueryStringValue(HKCU, 'SOFTWARE\Microsoft\VCSExpress\9.0', 'UserProjectTemplatesLocation', __CSharpExpress2008ProjectTemplatePath);
+
+ StringChangeEx(__CSharpExpress2008ProjectTemplatePath, '%USERPROFILE%', GetEnv('USERPROFILE'), False);
end;
@@ -120,12 +125,20 @@ end;
function Vb2010_Installed: Boolean;
begin
- result := RegValueExists(HKLM,'SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{F184B08F-C81C-45f6-A57F-5ABD9991F28F}','Package');
+ result := RegValueExists(HKLM,'SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{F184B08F-C81C-45f6-A57F-5ABD9991F28F}','Package');
end;
-function csharp2008_Installed: Boolean;
+function booltostr(value: Boolean) : string;
begin
- result := RegValueExists(HKLM,'SOFTWARE\Microsoft\VisualStudio\9.0\Projects\{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}','Package');
+ if value then
+ Result := 'true'
+ else
+ Result := 'false';
+end;
+
+function csharp2008_Installed(test: string): Boolean;
+begin
+ result := RegValueExists(HKLM,'SOFTWARE\Microsoft\VisualStudio\9.0\Projects\{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}','Package');
end;
function csharp2010_Installed: Boolean;
@@ -210,6 +223,20 @@ begin
Result := __NET_FRAMEWORK4_INSTALLED;
end;
+function IsCSharpExpress2008Installed(dummy: string): boolean;
+begin
+ if (Length(Trim(__CSharpExpress2008ProjectTemplatePath)) > 0) then
+ Result := True
+ else
+ Result := False;
+end;
+
+function GetCSharpExpress2008ProjectTemplatePath(dummy: string) : string;
+begin
+ InitializePaths;
+ Result := __CSharpExpress2008ProjectTemplatePath;
+ SaveStringToFile('c:\setup.log', Format('C# Express TemplatePath: "%s"'#13#10, [Result]), true);
+end;
function InitializeSetup: Boolean;
begin
diff --git a/Setup2/Cosmos.iss b/Setup2/Cosmos.iss
index 7ff5053ee..5f4abbabe 100644
--- a/Setup2/Cosmos.iss
+++ b/Setup2/Cosmos.iss
@@ -56,6 +56,7 @@ UninstallLogMode=overwrite
ChangesAssociations=yes
#include "Code.inc"
+#include "Events.inc"
[Languages]
Name: en; MessagesFile: compiler:Default.isl; InfoBeforeFile: .\setup2\Readme.txt
@@ -129,6 +130,7 @@ tw.BeveledLabel=Chinese Traditional
[Dirs]
Name: {code:VSNET2008_PATH|}\ProjectTemplates\Cosmos; Flags: uninsalwaysuninstall
+Name: {app}; Flags: uninsalwaysuninstall;
[Files]
Source: .\Build\Tools\*.exe; DestDir: {app}\Build\Tools; Flags: ignoreversion uninsremovereadonly
@@ -147,10 +149,13 @@ Source: .\Build\ISO\isolinux.*; DestDir: {app}\Build\ISO
Source: .\Build\ISO\mboot.c32; DestDir: {app}\Build\ISO
; Templates
-Source: ".\Build\VSIP\CosmosProject (C#).zip"; DestDir: {code:VSNET2008_PATH|}\ProjectTemplates\Cosmos; Flags: ignoreversion uninsremovereadonly; Check: csharp2008_Installed;
-Source: ".\Build\VSIP\CosmosExpress.zip"; DestDir: {code:VSNET2008_PATH|}\ProjectTemplates\Cosmos; Flags: ignoreversion uninsremovereadonly;
-
-
+; ; Install files into VS Integrated Shell (which includes full Visual Studio)
+Source: ".\Build\VSIP\CosmosProject (C#).zip"; DestDir: {code:VSNET2008_PATH|}\ProjectTemplates\Cosmos; Flags: ignoreversion uninsremovereadonly; Check: csharp2008_Installed('dummy');
+Source: ".\Build\VSIP\Cosmos.zip"; DestDir: {code:VSNET2008_PATH|}\ProjectTemplates\Cosmos; Flags: ignoreversion uninsremovereadonly;
+Source: ".\Build\VSIP\CosmosKernel (C#).zip"; DestDir: {code:VSNET2008_PATH|}\ProjectTemplates\Cosmos; Flags: ignoreversion uninsremovereadonly; Check: csharp2008_Installed('dummy');
+; ; Install templates into C# Express
+Source: ".\Build\VSIP\CosmosKernel (C#).zip"; DestDir: {code:GetCSharpExpress2008ProjectTemplatePath|}; DestName: "CosmosKernel (C#).zip"; Flags: ignoreversion uninsremovereadonly; Check: IsCSharpExpress2008Installed('dummy');
+Source: ".\Build\VSIP\Cosmos.zip"; DestDir: c:\; Flags: ignoreversion uninsremovereadonly
[Registry]
@@ -253,5 +258,4 @@ Root: HKCR; SubKey: Cosmos.ProjectFile\shell\open\command; ValueType: string; Va
[Run]
Filename: {code:VSNET2008_PATH|}\devenv.exe; Parameters: /setup; Flags: waituntilterminated
-[UninstallRun]
-Filename: {code:VSNET2008_PATH|}\devenv.exe; Parameters: /setup; Flags: waituntilterminated
+
diff --git a/source2/Build/Cosmos.Build.MSBuild/IL2CPU.cs b/source2/Build/Cosmos.Build.MSBuild/IL2CPU.cs
index 1a71d69bc..7fc563e64 100644
--- a/source2/Build/Cosmos.Build.MSBuild/IL2CPU.cs
+++ b/source2/Build/Cosmos.Build.MSBuild/IL2CPU.cs
@@ -235,17 +235,20 @@ namespace Cosmos.Build.MSBuild
if (xType.Name == "Kernel")
{
var xMethod = xType.GetMethod("Boot");
- if (!xMethod.IsStatic)
+ if (xMethod != null)
{
- continue;
+ if (!xMethod.IsStatic)
+ {
+ continue;
+ }
+ if (xInitMethod != null)
+ {
+ // already found an init method. log error.
+ Log.LogError("Project has multiple Kernel.Boot methods!");
+ return false;
+ }
+ xInitMethod = xMethod;
}
- if (xInitMethod != null)
- {
- // already found an init method. log error.
- Log.LogError("Project has multiple Kernel.Boot methods!");
- return false;
- }
- xInitMethod = xMethod;
}
}
}
diff --git a/source2/VSIP/Cosmos.VS.Package/Cosmos.VS.Package.csproj b/source2/VSIP/Cosmos.VS.Package/Cosmos.VS.Package.csproj
index 917aeea31..ec926da1a 100644
--- a/source2/VSIP/Cosmos.VS.Package/Cosmos.VS.Package.csproj
+++ b/source2/VSIP/Cosmos.VS.Package/Cosmos.VS.Package.csproj
@@ -175,6 +175,25 @@
+
+
+ Templates\Projects\CosmosKernel %28C#%29
+
+
+ Templates\Projects\CosmosKernel %28C#%29
+
+
+ Templates\Projects\CosmosKernel %28C#%29
+
+
+ Templates\Projects\CosmosKernel %28C#%29
+
+
+ Templates\Projects\CosmosKernel %28C#%29
+
+
+ Templates\Projects\CosmosKernel %28C#%29
+
Templates\Projects\CosmosProject %28C#%29
@@ -190,17 +209,16 @@
Templates\Projects\CosmosProject %28C#%29
-
- Templates\Projects\CosmosExpress
-
-
- Templates\Projects\CosmosExpress
+
+ Templates\Projects\Cosmos
-
- Templates\Projects\CosmosExpress
-
-
-
+
+ Templates\Projects\Cosmos
+
+
+ Templates\Projects\Cosmos
+
+
Templates\Projects\CosmosProject %28C#%29
diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosExpress/CosmosExpress.vstemplate b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/Cosmos/Cosmos.vstemplate
similarity index 91%
rename from source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosExpress/CosmosExpress.vstemplate
rename to source2/VSIP/Cosmos.VS.Package/Templates/Projects/Cosmos/Cosmos.vstemplate
index 12b044743..f6c2aff3d 100644
--- a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosExpress/CosmosExpress.vstemplate
+++ b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/Cosmos/Cosmos.vstemplate
@@ -1,6 +1,6 @@
- Cosmos Express Project
+ Cosmos Project
A project for running your code as operating system. Does not include any language.
Kernel.ico
Cosmos
diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosExpress/CosmosProject.Cosmos b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/Cosmos/CosmosProject.Cosmos
similarity index 100%
rename from source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosExpress/CosmosProject.Cosmos
rename to source2/VSIP/Cosmos.VS.Package/Templates/Projects/Cosmos/CosmosProject.Cosmos
diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosExpress/Kernel.ico b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/Cosmos/Kernel.ico
similarity index 100%
rename from source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosExpress/Kernel.ico
rename to source2/VSIP/Cosmos.VS.Package/Templates/Projects/Cosmos/Kernel.ico
diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/AssemblyInfo.cs b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/AssemblyInfo.cs
new file mode 100644
index 000000000..8c251fe82
--- /dev/null
+++ b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 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("Package Name")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Company")]
+[assembly: AssemblyProduct("Package Name")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: ComVisible(false)]
+[assembly: CLSCompliant(false)]
+[assembly: NeutralResourcesLanguage("en-US")]
+
+// 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:
+
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+
+
+
diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/CSharpProj.vstemplate b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/CSharpProj.vstemplate
new file mode 100644
index 000000000..57ab7c293
--- /dev/null
+++ b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/CSharpProj.vstemplate
@@ -0,0 +1,19 @@
+
+
+ Cosmos Kernel (C#)
+ A project for creating a Cosmos Kernel
+ Kernel.ico
+ CSharp
+
+ true
+ CSharpKernel
+ true
+
+
+
+ AssemblyInfo.cs
+ Kernel.cs
+
+
+
\ No newline at end of file
diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/CSharpProject.csproj b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/CSharpProject.csproj
new file mode 100644
index 000000000..d2671f664
--- /dev/null
+++ b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/CSharpProject.csproj
@@ -0,0 +1,55 @@
+
+
+
+ Debug
+ AnyCPU
+ 8.0.30703
+ 2.0
+ $guid1$
+ Library
+ Properties
+ $safeprojectname$
+ $safeprojectname$
+ 512
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/Kernel.cs b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/Kernel.cs
new file mode 100644
index 000000000..7e678a4ea
--- /dev/null
+++ b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/Kernel.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace $safeprojectname$
+{
+ public class Kernel
+ {
+ public static void Boot()
+ {
+ // Boot the Cosmos kernel:
+ Cosmos.Sys.Boot xBoot = new Cosmos.Sys.Boot();
+ xBoot.Execute();
+
+ Console.WriteLine("Cosmos booted successfully. Type a line of text to get it echoed back:");
+ string xResult = Console.ReadLine();
+ Console.Write("Text typed: ");
+ Console.WriteLine(xResult);
+ }
+ }
+}
diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/Kernel.ico b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosKernel (C#)/Kernel.ico
new file mode 100644
index 0000000000000000000000000000000000000000..fcdc4018323d6394947898b5445c7c219df93a15
GIT binary patch
literal 25214
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