[Pkg-cli-apps-commits] [fsharp] 11/71: Simply build to use xbuild. Install targets into correct place. Adjust policy DLLs for F# 3.1

Christopher Halse Rogers raof-guest at moszumanska.debian.org
Fri Jan 17 05:18:09 UTC 2014


This is an automated email from the git hooks/post-receive script.

raof-guest pushed a commit to tag 3.1.0
in repository fsharp.

commit e581d6ca1038b12dcb3d24168cce825af47d9ba5
Author: Don Syme <donsyme at fastmail.fm>
Date:   Thu Oct 3 20:53:10 2013 +0100

    Simply build to use xbuild. Install targets into correct place. Adjust policy DLLs for F# 3.1
---
 .gitattributes                                     |   7 +
 Makefile.in                                        |   2 +-
 README.md                                          |  11 ++
 config.make.in                                     | 107 +-----------
 configure.ac                                       |   3 +-
 src/FSharpSource.targets                           |  30 ++--
 src/fsharp/FSharp.Build-proto/Makefile.in          |  33 +---
 src/fsharp/FSharp.Build/Makefile.in                |  31 +---
 .../FSharp.Compiler-proto.fsproj                   |  10 ++
 src/fsharp/FSharp.Compiler-proto/Makefile.in       | 183 +------------------
 .../Makefile.in                                    |  20 +--
 .../FSharp.Compiler.Server.Shared/Makefile.in      |  19 +-
 src/fsharp/FSharp.Compiler/FSharp.Compiler.fsproj  |   1 +
 src/fsharp/FSharp.Compiler/Makefile.in             | 194 +--------------------
 src/fsharp/FSharp.Core/FSharp.Core.fsproj          |   3 +-
 src/fsharp/FSharp.Core/Makefile.in                 |  98 +----------
 src/fsharp/FSharp.Data.TypeProviders/Makefile.in   |  36 +---
 src/fsharp/Fsc-proto/Makefile.in                   |  27 +--
 src/fsharp/Fsc/Makefile.in                         |   4 +-
 src/fsharp/Fsc/fsc.exe.config                      |  25 +--
 src/fsharp/Makefile.in                             |  14 +-
 src/fsharp/fsi/Makefile.in                         |  34 +---
 src/fsharp/fsi/fsi.exe.config                      |  39 +----
 src/fsharp/fsiAnyCpu/Makefile.in                   |  35 +---
 src/fsharp/fsiAnyCpu/fsiAnyCPU.exe.config          |  39 +----
 src/fsharp/policy.2.0.FSharp.Core/Makefile.in      |  28 +--
 src/fsharp/policy.2.3.FSharp.Core/Makefile.in      |  28 +--
 src/fsharp/policy.3.3.FSharp.Core/Makefile.in      |  37 ++++
 .../policy.3.3.FSharp.Core.dll.config              |  11 ++
 src/fsharp/policy.4.0.FSharp.Core/Makefile.in      |  25 ++-
 src/fsharp/policy.4.3.FSharp.Core/Makefile.in      |  25 ++-
 src/fsharp/targets.make                            | 186 +++++---------------
 32 files changed, 281 insertions(+), 1064 deletions(-)

diff --git a/.gitattributes b/.gitattributes
index 6a35cef..ac2ad93 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -20,3 +20,10 @@
 *.PDF	 diff=astextplain
 *.rtf	 diff=astextplain
 *.RTF	 diff=astextplain
+
+autogen.sh text eol=lf
+launcher.in text eol=lf
+config.make.in text eol=lf
+targets.make text eol=lf
+configure.ac text eol=lf
+Makefile.in text eol=lf
\ No newline at end of file
diff --git a/Makefile.in b/Makefile.in
index be25c99..419cf77 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,6 +1,6 @@
 include $(topsrcdir)config.make
 
-all clean install do-proto do-final do-2-1 install-2-1 clean-2-0 clean-2-1 clean-4-0:
+all clean install build-proto build-final build-2-0 build-2-1 build-4-0 install-2-1 clean-2-0 clean-2-1 clean-4-0:
 	$(MAKE) -C src/fsharp $@
 
 dist:
diff --git a/README.md b/README.md
index 258bc7c..9ba1a30 100644
--- a/README.md
+++ b/README.md
@@ -221,3 +221,14 @@ F# compiler sources dropped by Microsoft are available from [fsharppowerpack.cod
 
 Uses bootstrapping libraries, tools and F# compiler. The `lib/bootstrap/X.0` directories contain mono-built libraries, compiler and tools that can be used to bootstrap a build. You can also supply your own via the `--with-bootstrap` option.
 
+
+### Wheezy build
+
+vagrant up
+vagrant ssh
+cd /vagrant
+sudo apt-get install dos2unix autoconf
+dos2unix ./autogen.sh launcher.in Makefile.in config.make.in configure.ac
+./autogen.sh --prefix=/usr
+make
+sudo make install
diff --git a/config.make.in b/config.make.in
index 54498c6..f77297b 100644
--- a/config.make.in
+++ b/config.make.in
@@ -9,7 +9,7 @@ monogacdir := @MONOGACDIR@
 
 monogacdir20 := @MONOGACDIR20@
 
-#This is where to find MonoTouch of MonoAndroid, for "make do-2-1"
+#This is where to find MonoTouch of MonoAndroid, for "make build-2-1"
 #
 #For now this is hardwired, it should be optionally detected by configure.ac
 monogacdir21 := @abs_top_srcdir@/dependencies/mono/2.1
@@ -23,14 +23,16 @@ gacdir40 := ${gacdir}/4.0
 
 tooldir := $(topdir)lib/bootstrap/4.0/
 
+monoopts = @mono_gc_options@
 MONO_OPTIONS += @mono_gc_options@
 
 CONFIG = release
+Configuration = Release
 DISTVERSION = 201011
 
-VERSION_2_0 = 2.3.0.0
-VERSION_2_1 = 2.3.1.0
-VERSION_4_0 = 4.3.0.0
+VERSION_2_0 = 2.3.1.0
+VERSION_2_1 = 2.3.98.0
+VERSION_4_0 = 4.3.1.0
 TARGET_2_0 = 2.0
 TARGET_2_1 = 2.1
 TARGET_4_0 = 4.0
@@ -42,101 +44,8 @@ tmpdir = .libs/$(CONFIG)/
 objdir = $(tmpdir)$(TARGET)/
 protodir = $(builddir)/lib/proto/4.0/
 outdir = $(builddir)lib/$(CONFIG)/$(TARGET)/
-
-FSSRGEN = $(tooldir)../2.0/fssrgen.exe
-FSLEX = $(tooldir)../2.0/fslex.exe
-FSYACC = $(tooldir)../2.0/fsyacc.exe
-
-
-FLAGS = \
-	--doc:$(objdir)$(NAME).xml \
-	--version:$(VERSION) \
-	--debug:pdbonly \
-	--optimize+ \
-	--mlcompatibility \
-	--noframework \
-	--fullpaths \
-	--times \
-	--nowarn:9
-
-DELAY_SIGN_FLAGS = \
-	--define:STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY \
-	--delaysign+ \
-	--keyfile:$(topdir)msfinal.pub
-
-SIGN_FLAGS = \
-	--define:STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY \
-	--keyfile:$(topdir)/src/fsharp/test.snk
-
-DEFINES_GENERAL = \
-	--define:TRACE \
-	--define:CROSS_PLATFORM_COMPILER
-	
-ifeq ($(CONFIG),debug)
-DEFINES_DEBUG = \
-	--define:CODE_ANALYSIS \
-	--define:DEBUG
-else
-DEFINES_DEBUG =
-endif
-
-DEFINES_2_0 = \
-	$(DEFINES_GENERAL) \
-	$(DEFINES_DEBUG) \
-	--define:FX_NO_STRUCTURAL_EQUALITY \
-	--define:FX_NO_IOBSERVABLE \
-	--define:FX_NO_TUPLE \
-	--define:FX_ATLEAST_35 \
-	--define:FX_NO_LAZY \
-	--define:FX_NO_CANCELLATIONTOKEN_CLASSES \
-	--define:FX_NO_MONITOR_REPORTS_LOCKTAKEN \
-	--define:FX_NO_TPL_PARALLEL \
-	--define:FX_NO_CUSTOMATTRIBUTEDATA \
-	--define:FX_NO_TASK \
-	--define:FX_NO_BIGINT
-
-DEFINES_2_1 = \
-	$(DEFINES_GENERAL) \
-	$(DEFINES_DEBUG) \
-	--define:FX_NO_STRUCTURAL_EQUALITY \
-	--define:FX_NO_CUSTOMATTRIBUTEDATA \
-	--define:FX_NO_BIGINT_CULTURE_PARSE \
-	--define:FX_ATLEAST_40 \
-	--define:FX_ATLEAST_35 \
-	--define:FX_ATLEAST_LINQ \
-	--define:FX_NO_BIGINT
-
-DEFINES_4_0 = \
-	$(DEFINES_GENERAL) \
-	$(DEFINES_DEBUG) \
-	--define:FX_NO_BIGINT_CULTURE_PARSE \
-	--define:FX_ATLEAST_40 \
-	--define:FX_ATLEAST_35 \
-	--define:FX_ATLEAST_LINQ
-
-REFERENCES_2_0 = \
-	-r:$(monogacdirXX)/Microsoft.Build.Engine.dll \
-	-r:$(monogacdirXX)/Microsoft.Build.Framework.dll \
-	-r:$(monogacdir35)/Microsoft.Build.Tasks.v3.5.dll \
-	-r:$(monogacdir35)/Microsoft.Build.Utilities.v3.5.dll \
-	-r:$(monogacdirXX)/mscorlib.dll \
-	-r:$(monogacdirXX)/System.Core.dll \
-	-r:$(monogacdirXX)/System.dll
-
-REFERENCES_2_1 = \
-	-r:$(monogacdir21)/mscorlib.dll \
-	-r:$(monogacdir21)/System.Core.dll \
-	-r:$(monogacdir21)/System.dll
-
-REFERENCES_4_0 = \
-	-r:$(monogacdirXX)/Microsoft.Build.Engine.dll \
-	-r:$(monogacdirXX)/Microsoft.Build.Framework.dll \
-	-r:$(monogacdirXX)/Microsoft.Build.Tasks.v4.0.dll \
-	-r:$(monogacdirXX)/Microsoft.Build.Utilities.v4.0.dll \
-	-r:$(monogacdirXX)/mscorlib.dll \
-	-r:$(monogacdirXX)/System.Core.dll \
-	-r:$(monogacdirXX)/System.dll \
-	-r:$(monogacdirXX)/System.Numerics.dll
+outdir20 = $(builddir)lib/$(CONFIG)/$(TARGET_2_0)
+outdir40 = $(builddir)lib/$(CONFIG)/$(TARGET_4_0)
 
 INSTALL = $(SHELL) $(topdir)install-sh
 INSTALL_DATA = $(INSTALL) -c -m 644
diff --git a/configure.ac b/configure.ac
index f74f7f8..e6d5da5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -102,8 +102,9 @@ src/fsharp/FSharp.Data.TypeProviders/Makefile
 src/fsharp/fsi/Makefile
 src/fsharp/fsiAnyCpu/Makefile
 src/fsharp/policy.2.0.FSharp.Core/Makefile
-src/fsharp/policy.4.0.FSharp.Core/Makefile
 src/fsharp/policy.2.3.FSharp.Core/Makefile
+src/fsharp/policy.3.3.FSharp.Core/Makefile
+src/fsharp/policy.4.0.FSharp.Core/Makefile
 src/fsharp/policy.4.3.FSharp.Core/Makefile
 ])
 AC_OUTPUT
diff --git a/src/FSharpSource.targets b/src/FSharpSource.targets
index 71d799d..53830da 100755
--- a/src/FSharpSource.targets
+++ b/src/FSharpSource.targets
@@ -22,23 +22,23 @@
     <!-- Compute the assembly version numbers to use -->
     <AssemblyVersion>2.9.9.999</AssemblyVersion>
     <!-- This is the primary framework, used to run the compiler itself -->
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'net40'">4.3.1.0</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'net40'">4.3.1.0</AssemblyVersion>
     <!-- These correspond to the frameworks supported by Microsoft -->
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'net20'">2.3.1.0</AssemblyVersion>
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'portable-net45+sl5+win8' ">2.3.5.1</AssemblyVersion>
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'portable-net4+sl4+wp71+win8' ">2.3.6.1</AssemblyVersion>
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'mono21' ">2.3.98.1</AssemblyVersion>
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'monotouch' ">2.3.99.1</AssemblyVersion>
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'portable-windows8+net45'">3.3.1.0</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'net20'">2.3.1.0</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'portable-net45+sl5+win8' ">2.3.5.1</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'portable-net4+sl4+wp71+win8' ">2.3.6.1</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'mono21' ">2.3.98.1</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'monotouch' ">2.3.99.1</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'portable-windows8+net45'">3.3.1.0</AssemblyVersion>
 
     <!-- These are simulations of previous versions of FSharp.Core for F# 3.0, useable to support the 'build a library compatible with a back version of F#' multi-targeting option supported by some IDEs -->
     <!-- The actual libraries will contain additional functionality related to F# 3.1 etc. but that doesn't matter - the version number will be right which is what counts -->
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'net20' AND '$(FSharpCoreBackVersion)' == '3.0' ">2.3.0.0</AssemblyVersion>
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'net40' AND '$(FSharpCoreBackVersion)' == '3.0' ">4.3.0.0</AssemblyVersion>
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'portable-net45+sl5+win8' AND '$(FSharpCoreBackVersion)' == '3.0' ">2.3.5.0</AssemblyVersion>
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'portable-net4+sl4+wp71+win8' AND '$(FSharpCoreBackVersion)' == '3.0' ">2.3.6.0</AssemblyVersion>
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'mono21' AND '$(FSharpCoreBackVersion)' == '3.0' ">2.3.98.0</AssemblyVersion>
-    <AssemblyVersion Condition="'$(AssemblyName)' == 'FSharp.Core' AND '$(TargetFramework)' == 'monotouch' AND '$(FSharpCoreBackVersion)' == '3.0' ">2.3.99.0</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'net20' AND '$(FSharpCoreBackVersion)' == '3.0' ">2.3.0.0</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'net40' AND '$(FSharpCoreBackVersion)' == '3.0' ">4.3.0.0</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'portable-net45+sl5+win8' AND '$(FSharpCoreBackVersion)' == '3.0' ">2.3.5.0</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'portable-net4+sl4+wp71+win8' AND '$(FSharpCoreBackVersion)' == '3.0' ">2.3.6.0</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'mono21' AND '$(FSharpCoreBackVersion)' == '3.0' ">2.3.98.0</AssemblyVersion>
+    <AssemblyVersion Condition="'$(TargetFramework)' == 'monotouch' AND '$(FSharpCoreBackVersion)' == '3.0' ">2.3.99.0</AssemblyVersion>
     <!-- FSharp.Core using System.Runtime -->
     <OtherFlags>$(OtherFlags) --version:$(AssemblyVersion)</OtherFlags>
     <!--
@@ -94,6 +94,7 @@ Some other NuGET monikers to support in the future, see http://docs.nuget.org/do
   <PropertyGroup Condition="'$(Configuration)'=='Proto'">
     <Optimize>true</Optimize>
     <DefineConstants>DEBUG;NO_STRONG_NAMES;$(DefineConstants)</DefineConstants>
+    <DefineConstants Condition="'$(TargetFrameworkVersion)' == 'v4.5'">$(DefineConstants);FX_ATLEAST_45</DefineConstants>
     <ConfigurationOutputDirectory>proto</ConfigurationOutputDirectory>
   </PropertyGroup>
 
@@ -121,8 +122,9 @@ Some other NuGET monikers to support in the future, see http://docs.nuget.org/do
   </PropertyGroup>
 
   <PropertyGroup Condition="'$(TargetFramework)'=='net40'">
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkVersion Condition="'$(TargetFrameworkVersion)' == '' ">v4.0</TargetFrameworkVersion>
     <TargetFrameworkOutputDirectory>4.0</TargetFrameworkOutputDirectory>
+    <DefineConstants Condition="'$(TargetFrameworkVersion)' == 'v4.5'">$(DefineConstants);FX_ATLEAST_45</DefineConstants>
     <DefineConstants>$(DefineConstants);FX_ATLEAST_40</DefineConstants>
     <DefineConstants>$(DefineConstants);FX_ATLEAST_35</DefineConstants>
     <DefineConstants>$(DefineConstants);BE_SECURITY_TRANSPARENT</DefineConstants>
diff --git a/src/fsharp/FSharp.Build-proto/Makefile.in b/src/fsharp/FSharp.Build-proto/Makefile.in
index 60a0463..2c89507 100644
--- a/src/fsharp/FSharp.Build-proto/Makefile.in
+++ b/src/fsharp/FSharp.Build-proto/Makefile.in
@@ -5,36 +5,11 @@ srcdir := @abs_srcdir@/
 
 include @abs_top_builddir@/config.make
 
-CONFIG=proto
+build-proto:
+	xbuild /p:Configuration=Proto
 
-FSC=$(bootstrapdir)fsc.exe
-
-FLAGS += --target:library
-
-DEFINES += \
-	--define:BUILDING_WITH_LKG
-
-REFERENCES += \
-	-r:$(bootstrapdir)FSharp.Core.dll
-
-sources= \
-	$(tmpdir)FSBuild.fs \
-	../../utils/CompilerLocationUtils.fs \
-	../FSharp.Build/CreateFSharpManifestResourceName.fsi \
-	../FSharp.Build/CreateFSharpManifestResourceName.fs \
-	../FSharp.Build/Fsc.fsi \
-	../FSharp.Build/Fsc.fs
-
-RESOURCES = \
-	$(tmpdir)FSBuild.resources
-
-$(tmpdir)FSBuild.fs $(tmpdir)FSBuild.resources: ../FSharp.Build/FSBuild.txt
-	mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSBuild.fs $(tmpdir)FSBuild.resx
-	resgen $(tmpdir)FSBuild.resx $(tmpdir)FSBuild.resources
-
-do-proto: do-4-0
-
-clean: clean-4-0
+clean: 
+	xbuild /p:Configuration=Proto /t:Clean
 
 include $(topdir)/src/fsharp/targets.make
 
diff --git a/src/fsharp/FSharp.Build/Makefile.in b/src/fsharp/FSharp.Build/Makefile.in
index 8aea6db..54ae5a0 100644
--- a/src/fsharp/FSharp.Build/Makefile.in
+++ b/src/fsharp/FSharp.Build/Makefile.in
@@ -6,36 +6,11 @@ srcdir := @abs_srcdir@/
 
 include @abs_top_builddir@/config.make
 
-FSC=$(protodir)fsc-proto.exe
-
-FLAGS += \
-	$(SIGN_FLAGS) \
-	--target:library
-
-REFERENCES += \
-	-r:$(outdir)FSharp.Core.dll
-
-sources= \
-	$(tmpdir)FSBuild.fs \
-	../../assemblyinfo/assemblyinfo.FSharp.Build.dll.fs \
-	../../utils/CompilerLocationUtils.fs \
-	Fsc.fsi \
-	Fsc.fs \
-	CreateFSharpManifestResourceName.fsi \
-	CreateFSharpManifestResourceName.fs
-
-RESOURCES = \
-	$(tmpdir)FSBuild.resources
-
-$(tmpdir)FSBuild.fs $(tmpdir)FSBuild.resources: FSBuild.txt
-	mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSBuild.fs $(tmpdir)FSBuild.resx
-	resgen $(tmpdir)FSBuild.resx $(tmpdir)FSBuild.resources
-
 include $(topdir)/src/fsharp/targets.make
 
-do-final: do-2-0 do-4-0 
+build-final: build-4-0
 
-clean: clean-2-0 clean-4-0
+clean: clean-4-0
 
-install: install-lib-2 install-lib-4 install-lib-4-5
+install: install-lib-4-0 install-lib-4-5
 
diff --git a/src/fsharp/FSharp.Compiler-proto/FSharp.Compiler-proto.fsproj b/src/fsharp/FSharp.Compiler-proto/FSharp.Compiler-proto.fsproj
index 40e5e01..9fe60a4 100644
--- a/src/fsharp/FSharp.Compiler-proto/FSharp.Compiler-proto.fsproj
+++ b/src/fsharp/FSharp.Compiler-proto/FSharp.Compiler-proto.fsproj
@@ -1,4 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+# Copyright (c) 2002-2011 Microsoft Corporation. 
+#
+# 
+# 
+# 
+#
+#
+# You must not remove this notice, or any other, from this software.
+-->
 <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <FSharpSourcesRoot>$(MSBuildProjectDirectory)\..\..</FSharpSourcesRoot>
diff --git a/src/fsharp/FSharp.Compiler-proto/Makefile.in b/src/fsharp/FSharp.Compiler-proto/Makefile.in
index ee92d99..c58cf0f 100644
--- a/src/fsharp/FSharp.Compiler-proto/Makefile.in
+++ b/src/fsharp/FSharp.Compiler-proto/Makefile.in
@@ -5,185 +5,10 @@ srcdir := @abs_srcdir@/
 
 include @abs_top_builddir@/config.make
 
-CONFIG=proto
+build-proto:
+	xbuild /p:Configuration=Proto
 
-FSC=$(bootstrapdir)fsc.exe
-
-FLAGS += --target:library
-
-DEFINES += \
-	--define:BUILDING_WITH_LKG \
-	--define:BUILDING_PROTO \
-	--define:COMPILER \
-	--define:NO_STRONG_NAMES \
-	--define:INCLUDE_METADATA_READER \
-	--define:INCLUDE_METADATA_WRITER
-
-REFERENCES += \
-	-r:$(bootstrapdir)FSharp.Core.dll \
-	-r:$(monogacdirXX)/System.Windows.Forms.dll
-
-
-sources = \
-	$(tmpdir)FSComp.fs \
-	../../assemblyinfo/assemblyinfo.FSharp.Compiler.dll.fs \
-	../../utils/sformat.fsi \
-	../../utils/sformat.fs \
-	../sr.fsi \
-	../sr.fs \
-	../../utils/prim-lexing.fsi \
-	../../utils/prim-lexing.fs \
-	../../utils/prim-parsing.fsi \
-	../../utils/prim-parsing.fs \
-	../../utils/resizearray.fsi \
-	../../utils/resizearray.fs \
-	../../utils/HashMultiMap.fsi \
-	../../utils/HashMultiMap.fs \
-	../../utils/TaggedCollections.fsi \
-	../../utils/TaggedCollections.fs \
-	../FlatList.fs \
-	../../absil/illib.fs \
-	../../utils/filename.fsi \
-	../../utils/filename.fs \
-	../../absil/zmap.fsi \
-	../../absil/zmap.fs \
-	../../absil/zset.fsi \
-	../../absil/zset.fs \
-	../../absil/bytes.fsi \
-	../../absil/bytes.fs \
-	../../absil/ildiag.fsi \
-	../../absil/ildiag.fs \
-	../ReferenceResolution.fs \
-	../../absil/il.fsi \
-	../../absil/il.fs \
-	../../absil/ilx.fsi \
-	../../absil/ilx.fs \
-	../../absil/ilascii.fsi \
-	../../absil/ilascii.fs \
-	../../absil/ilprint.fsi \
-	../../absil/ilprint.fs \
-	../../absil/ilmorph.fsi \
-	../../absil/ilmorph.fs \
-	../../absil/ilsupp.fsi \
-	../../absil/ilsupp.fs \
-	$(tmpdir)ilpars.fs \
-	$(tmpdir)illex.fs \
-	../../absil/ilbinary.fsi \
-	../../absil/ilbinary.fs \
-	../lib.fs \
-	../range.fsi \
-	../range.fs \
-	../ErrorLogger.fs \
-	../InternalCollections.fsi \
-	../InternalCollections.fs \
-	../../absil/ilread.fsi \
-	../../absil/ilread.fs \
-	../../absil/ilwrite.fsi \
-	../../absil/ilwrite.fs \
-	../../absil/ilreflect.fs \
-	../../utils/CompilerLocationUtils.fs \
-	../PrettyNaming.fs \
-	../../ilx/ilxsettings.fs \
-	../../ilx/pubclo.fsi \
-	../../ilx/pubclo.fs \
-	../../ilx/cu_erase.fsi \
-	../../ilx/cu_erase.fs \
-	../InternalFileSystemUtils.fsi \
-	../InternalFileSystemUtils.fs \
-	../unilex.fsi \
-	../unilex.fs \
-	../layout.fsi \
-	../layout.fs \
-	../ast.fs \
-	$(tmpdir)pars.fs \
-	../lexhelp.fsi \
-	../lexhelp.fs \
-	$(tmpdir)lex.fs \
-	../sreflect.fsi \
-	../sreflect.fs \
-	../QueueList.fs \
-	../tast.fs \
-	../env.fs \
-	../tastops.fsi \
-	../tastops.fs \
-	../pickle.fsi \
-	../pickle.fs \
-	../lexfilter.fs \
-	../import.fsi \
-	../import.fs \
-	../infos.fs \
-	../NicePrint.fs \
-	../augment.fsi \
-	../augment.fs \
-	../typrelns.fs \
-	../patcompile.fsi \
-	../patcompile.fs \
-	../outcome.fsi \
-	../outcome.fs \
-	../csolve.fsi \
-	../csolve.fs \
-	../formats.fsi \
-	../formats.fs \
-	../nameres.fsi \
-	../nameres.fs \
-	../unsolved.fs \
-	../creflect.fsi \
-	../creflect.fs \
-	../check.fsi \
-	../check.fs \
-	../tc.fsi \
-	../tc.fs \
-	../opt.fsi \
-	../opt.fs \
-	../detuple.fsi \
-	../detuple.fs \
-	../tlr.fsi \
-	../tlr.fs \
-	../lowertop.fs \
-	../ilxgen.fsi \
-	../ilxgen.fs \
-	../TraceCall.fs \
-	../build.fsi \
-	../build.fs \
-	../fscopts.fsi \
-	../fscopts.fs \
-	../vs/IncrementalBuild.fsi \
-	../vs/IncrementalBuild.fs \
-	../fsc.fs
-
-RESOURCES= \
-	$(tmpdir)FSStrings.resources \
-	$(tmpdir)FSComp.resources
-
-$(tmpdir)FSComp.fs $(tmpdir)FSComp.resources: ../FSComp.txt
-	mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSComp.fs $(tmpdir)FSComp.resx
-	resgen $(tmpdir)FSComp.resx $(tmpdir)FSComp.resources
-
-$(tmpdir)FSStrings.resources: ../FSStrings.resx
-	resgen $< $@
-
-$(tmpdir)lex.fs: ../lex.fsl
-	mono $(MONO_OPTIONS) $(FSLEX) $< -o $@ --lexlib Internal.Utilities.Text.Lexing --unicode
-	@-mkdir -p ../FSharp.Compiler/.libs/
-	cp -p $(tmpdir)lex.fs* ../FSharp.Compiler/.libs/
-
-$(tmpdir)illex.fs: ../../absil/illex.fsl
-	mono $(MONO_OPTIONS) $(FSLEX) $< -o $@ --lexlib Internal.Utilities.Text.Lexing --unicode
-	@-mkdir -p ../FSharp.Compiler/.libs/
-	cp -p $(tmpdir)illex.fs* ../FSharp.Compiler/.libs/
-
-$(tmpdir)pars.fs: ../pars.fsy
-	mono $(MONO_OPTIONS) $(FSYACC) $< -o $@ --internal --open Microsoft.FSharp.Compiler --module Microsoft.FSharp.Compiler.Parser --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing | tee $@.report | grep  "time"
-	@-mkdir -p ../FSharp.Compiler/.libs/
-	cp -p $(tmpdir)pars.fs* ../FSharp.Compiler/.libs/
-
-$(tmpdir)ilpars.fs: ../../absil/ilpars.fsy
-	mono $(MONO_OPTIONS) $(FSYACC) $< -o $@ --internal --module Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing | tee $@.report | grep "time" 
-	@-mkdir -p ../FSharp.Compiler/.libs/
-	cp -p $(tmpdir)ilpars.fs* ../FSharp.Compiler/.libs/
-
-do-proto: do-4-0
-
-clean: clean-4-0
+clean: 
+	xbuild /p:Configuration=Proto /t:Clean
 
 include $(topdir)/src/fsharp/targets.make
diff --git a/src/fsharp/FSharp.Compiler.Interactive.Settings/Makefile.in b/src/fsharp/FSharp.Compiler.Interactive.Settings/Makefile.in
index fed3f5d..3ecefba 100644
--- a/src/fsharp/FSharp.Compiler.Interactive.Settings/Makefile.in
+++ b/src/fsharp/FSharp.Compiler.Interactive.Settings/Makefile.in
@@ -6,29 +6,13 @@ srcdir := @abs_srcdir@/
 
 include @abs_top_builddir@/config.make
 
-FSC=$(protodir)fsc-proto.exe
-
-FLAGS += \
-	$(SIGN_FLAGS) \
-	--target:library
-
-REFERENCES += \
-	-r:$(outdir)FSharp.Core.dll \
-	-r:Mono.Security.dll
-
-sources = \
-	../../assemblyinfo/assemblyinfo.FSharp.Compiler.Interactive.Settings.dll.fs \
-	../fsiaux.fsi \
-	../fsiaux.fs \
-	../fsiattrs.fs
-
 include $(topdir)/src/fsharp/targets.make
 
-do-final: do-4-0 
+build-final: build-4-0 
 
 clean: clean-4-0
 
-install: install-lib-4 install-lib-4-5
+install: install-lib-4-0 install-lib-4-5
 
 
 
diff --git a/src/fsharp/FSharp.Compiler.Server.Shared/Makefile.in b/src/fsharp/FSharp.Compiler.Server.Shared/Makefile.in
index 2678437..c558054 100644
--- a/src/fsharp/FSharp.Compiler.Server.Shared/Makefile.in
+++ b/src/fsharp/FSharp.Compiler.Server.Shared/Makefile.in
@@ -6,28 +6,13 @@ srcdir := @abs_srcdir@/
 
 include @abs_top_builddir@/config.make
 
-FSC=$(protodir)fsc-proto.exe
-
-FLAGS += \
-	$(SIGN_FLAGS) \
-	--target:library
-
-REFERENCES += \
-	-r:$(outdir)FSharp.Core.dll \
-	-r:System.Runtime.Remoting.dll \
-	-r:Mono.Security.dll
-
-sources = \
-	../../assemblyinfo/assemblyinfo.FSharp.Compiler.Server.Shared.dll.fs \
-	../fsiserver/fsiserver.fs
-
 include $(topdir)/src/fsharp/targets.make
 
-do-final: do-4-0 
+build-final: build-4-0 
 
 clean: clean-4-0
 
-install: install-lib-4 install-lib-4-5
+install: install-lib-4-0 install-lib-4-5
 
 
 
diff --git a/src/fsharp/FSharp.Compiler/FSharp.Compiler.fsproj b/src/fsharp/FSharp.Compiler/FSharp.Compiler.fsproj
index afa77b9..f2668c1 100644
--- a/src/fsharp/FSharp.Compiler/FSharp.Compiler.fsproj
+++ b/src/fsharp/FSharp.Compiler/FSharp.Compiler.fsproj
@@ -17,6 +17,7 @@
     <ProjectGuid>{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}</ProjectGuid>
     <AllowCrossTargeting>true</AllowCrossTargeting>
     <TargetFrameworkVersion Condition="'$(TargetFramework)'=='net20'">v2.0</TargetFrameworkVersion>
+    <TargetFrameworkVersion Condition="'$(TargetFramework)'=='net40'">v4.5</TargetFrameworkVersion>
     <BaseAddress>0x06800000</BaseAddress>
     <OtherFlags>$(OtherFlags) /warnon:1182</OtherFlags>
   </PropertyGroup>
diff --git a/src/fsharp/FSharp.Compiler/Makefile.in b/src/fsharp/FSharp.Compiler/Makefile.in
index 67b850f..afcb5ae 100644
--- a/src/fsharp/FSharp.Compiler/Makefile.in
+++ b/src/fsharp/FSharp.Compiler/Makefile.in
@@ -6,203 +6,13 @@ srcdir := @abs_srcdir@/
 
 include @abs_top_builddir@/config.make
 
-FSC=$(protodir)fsc-proto.exe
-
-FLAGS += \
-	$(SIGN_FLAGS) \
-	--target:library
-
-DEFINES += \
-	--define:COMPILER \
-	--define:INCLUDE_METADATA_READER \
-	--define:INCLUDE_METADATA_WRITER
-
-DEFINES_4_0 += \
-        --define:EXTENSIONTYPING
-
-REFERENCES += \
-	-r:$(outdir)FSharp.Core.dll \
-	-r:$(monogacdirXX)/System.Drawing.dll \
-	-r:$(monogacdirXX)/System.Windows.Forms.dll
-
-
-sources = \
-	$(tmpdir)FSComp.fs \
-	../../assemblyinfo/assemblyinfo.FSharp.Compiler.dll.fs \
-	../../utils/sformat.fsi \
-	../../utils/sformat.fs \
-	../sr.fsi \
-	../sr.fs \
-	../../utils/prim-lexing.fsi \
-	../../utils/prim-lexing.fs \
-	../../utils/prim-parsing.fsi \
-	../../utils/prim-parsing.fs \
-	../../utils/resizearray.fsi \
-	../../utils/resizearray.fs \
-	../../utils/HashMultiMap.fsi \
-	../../utils/HashMultiMap.fs \
-	../../utils/TaggedCollections.fsi \
-	../../utils/TaggedCollections.fs \
-	../FlatList.fs \
-	../../absil/illib.fs \
-	../../utils/filename.fsi \
-	../../utils/filename.fs \
-	../../absil/zmap.fsi \
-	../../absil/zmap.fs \
-	../../absil/zset.fsi \
-	../../absil/zset.fs \
-	../../absil/bytes.fsi \
-	../../absil/bytes.fs \
-	../../absil/ildiag.fsi \
-	../../absil/ildiag.fs \
-	../ReferenceResolution.fs \
-	../../absil/il.fsi \
-	../../absil/il.fs \
-	../../absil/ilx.fsi \
-	../../absil/ilx.fs \
-	../../absil/ilascii.fsi \
-	../../absil/ilascii.fs \
-	../../absil/ilprint.fsi \
-	../../absil/ilprint.fs \
-	../../absil/ilmorph.fsi \
-	../../absil/ilmorph.fs \
-	../../absil/ilsupp.fsi \
-	../../absil/ilsupp.fs \
-	$(tmpdir)ilpars.fs \
-	$(tmpdir)illex.fs \
-	../../absil/ilbinary.fsi \
-	../../absil/ilbinary.fs \
-	../lib.fs \
-	../range.fsi \
-	../range.fs \
-	../ErrorLogger.fs \
-	../tainted.fsi \
-	../tainted.fs \
-	../InternalCollections.fsi \
-	../InternalCollections.fs \
-	../../absil/ilread.fsi \
-	../../absil/ilread.fs \
-	../../absil/ilwrite.fsi \
-	../../absil/ilwrite.fs \
-	../../absil/ilreflect.fs \
-	../../utils/CompilerLocationUtils.fs \
-	../PrettyNaming.fs \
-	../../ilx/ilxsettings.fs \
-	../../ilx/pubclo.fsi \
-	../../ilx/pubclo.fs \
-	../../ilx/cu_erase.fsi \
-	../../ilx/cu_erase.fs \
-	../InternalFileSystemUtils.fsi \
-	../InternalFileSystemUtils.fs \
-	../unilex.fsi \
-	../unilex.fs \
-	../layout.fsi \
-	../layout.fs \
-	../ast.fs \
-	../est.fsi \
-	../est.fs \
-	$(tmpdir)pars.fs \
-	../lexhelp.fsi \
-	../lexhelp.fs \
-	$(tmpdir)lex.fs \
-	../sreflect.fsi \
-	../sreflect.fs \
-	../QueueList.fs \
-	../tast.fs \
-	../env.fs \
-	../tastops.fsi \
-	../tastops.fs \
-	../pickle.fsi \
-	../pickle.fs \
-	../lexfilter.fs \
-	../import.fsi \
-	../import.fs \
-	../infos.fs \
-	../NicePrint.fs \
-	../augment.fsi \
-	../augment.fs \
-	../typrelns.fs \
-	../patcompile.fsi \
-	../patcompile.fs \
-	../outcome.fsi \
-	../outcome.fs \
-	../csolve.fsi \
-	../csolve.fs \
-	../formats.fsi \
-	../formats.fs \
-	../nameres.fsi \
-	../nameres.fs \
-	../unsolved.fs \
-	../creflect.fsi \
-	../creflect.fs \
-	../check.fsi \
-	../check.fs \
-	../tc.fsi \
-	../tc.fs \
-	../opt.fsi \
-	../opt.fs \
-	../detuple.fsi \
-	../detuple.fs \
-	../tlr.fsi \
-	../tlr.fs \
-	../lowertop.fs \
-	../ilxgen.fsi \
-	../ilxgen.fs \
-	../TraceCall.fs \
-	../build.fsi \
-	../build.fs \
-	../fscopts.fsi \
-	../fscopts.fs \
-	../vs/IncrementalBuild.fsi \
-	../vs/IncrementalBuild.fs \
-	../vs/Reactor.fsi \
-	../vs/Reactor.fs \
-	../vs/ServiceLexing.fsi \
-	../vs/ServiceLexing.fs \
-	../vs/ServiceConstants.fs \
-	../vs/ServiceParseTreeWalk.fs \
-	../vs/ServiceNavigation.fsi \
-	../vs/ServiceNavigation.fs \
-	../vs/ServiceParamInfoLocations.fsi \
-	../vs/ServiceParamInfoLocations.fs \
-	../vs/ServiceUntypedParse.fsi \
-	../vs/ServiceUntypedParse.fs \
-	../vs/ServiceDeclarations.fsi \
-	../vs/ServiceDeclarations.fs \
-	../vs/service.fsi \
-	../vs/service.fs \
-	../fsc.fs
-
-RESOURCES= \
-	$(tmpdir)FSStrings.resources \
-	$(tmpdir)FSComp.resources
-
-$(tmpdir)FSComp.fs $(tmpdir)FSComp.resources: ../FSComp.txt
-	mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSComp.fs $(tmpdir)FSComp.resx
-	resgen $(tmpdir)FSComp.resx $(tmpdir)FSComp.resources
-
-$(tmpdir)FSStrings.resources: ../FSStrings.resx
-	resgen $< $@
-
-$(tmpdir)lex.fs: ../lex.fsl
-	mono $(MONO_OPTIONS)  $(FSLEX) $< -o $@ --lexlib Internal.Utilities.Text.Lexing --unicode
-
-$(tmpdir)illex.fs: ../../absil/illex.fsl
-	mono $(MONO_OPTIONS)  $(FSLEX) $< -o $@ --lexlib Internal.Utilities.Text.Lexing --unicode
-
-$(tmpdir)pars.fs: ../pars.fsy
-	mono $(MONO_OPTIONS)  $(FSYACC) $< -o $@ --internal --open Microsoft.FSharp.Compiler --module Microsoft.FSharp.Compiler.Parser --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing | tee $@.report | grep "time"
-
-$(tmpdir)ilpars.fs: ../../absil/ilpars.fsy
-	mono $(MONO_OPTIONS)  $(FSYACC) $< -o $@ --internal --module Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing | tee $@.report | grep "time"
-
 include $(topdir)/src/fsharp/targets.make
 
-do-final: do-4-0 
+build-final: build-4-0 
 
 clean: clean-4-0
 
-install: install-lib-4 install-lib-4-5
+install: install-lib-4-0 install-lib-4-5
 
 
 
diff --git a/src/fsharp/FSharp.Core/FSharp.Core.fsproj b/src/fsharp/FSharp.Core/FSharp.Core.fsproj
index 2e187b1..a43a96f 100644
--- a/src/fsharp/FSharp.Core/FSharp.Core.fsproj
+++ b/src/fsharp/FSharp.Core/FSharp.Core.fsproj
@@ -22,7 +22,8 @@
     <AllowCrossTargeting>true</AllowCrossTargeting>
     <TargetFrameworkVersion Condition=" '$(TargetFramework)'=='net20'">v2.0</TargetFrameworkVersion>
     <OtherFlags>$(OtherFlags) --warnon:1182 --compiling-fslib --optimize --maxerrors:20 --extraoptimizationloops:1 </OtherFlags>
-    <OtherFlags Condition=" '$(TargetFramework)'=='net20'">$(OtherFlags) --compiling-fslib-20:"$(SystemRoot)\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll" </OtherFlags>
+    <OtherFlags Condition=" '$(TargetFramework)'=='net20' AND EXISTS('$(SystemRoot)\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll')">$(OtherFlags) --compiling-fslib-20:"$(SystemRoot)\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll" </OtherFlags>
+    <OtherFlags Condition=" '$(TargetFramework)'=='net20' AND EXISTS('$(MonoLibDir40)/mscorlib.dll')">$(OtherFlags) --compiling-fslib-20:"$(MonoLibDir40)/mscorlib.dll" </OtherFlags>
     <OtherFlags Condition=" '$(TargetFramework)'=='net40'">$(OtherFlags) --compiling-fslib-40</OtherFlags>	
   </PropertyGroup>
   <!-- MonoDevelop likes these here to recognise the configurations -->
diff --git a/src/fsharp/FSharp.Core/Makefile.in b/src/fsharp/FSharp.Core/Makefile.in
index b051736..86866af 100644
--- a/src/fsharp/FSharp.Core/Makefile.in
+++ b/src/fsharp/FSharp.Core/Makefile.in
@@ -7,106 +7,12 @@ srcdir := @abs_srcdir@/
 
 include @abs_top_builddir@/config.make
 
-FSC=$(protodir)fsc-proto.exe
-
-FLAGS_2_0 += \
-	$(DELAY_SIGN_FLAGS) \
-	--compiling-fslib \
-	--nowarn:75,1204 \
-	--target:library \
-	--compiling-fslib-20:$(monogacdir40)/mscorlib.dll \
-	--extraoptimizationloops:1 
-
-FLAGS_2_1 += \
-	$(DELAY_SIGN_FLAGS) \
-	--compiling-fslib \
-	--nowarn:75,1204 \
-	--target:library \
-	--extraoptimizationloops:1 
-
-FLAGS_4_0 += \
-	$(DELAY_SIGN_FLAGS) \
-	--compiling-fslib \
-	--nowarn:75,1204 \
-	--target:library \
-	--compiling-fslib-40 \
-	--define:BE_SECURITY_TRANSPARENT \
-	--define:QUERIES_IN_FSLIB \
-	--define:PUT_TYPE_PROVIDERS_IN_FSCORE \
-	--extraoptimizationloops:1 
-
-DEFINES += \
-	--define:RUNTIME
-
-sources = \
-	prim-types-prelude.fsi \
-	prim-types-prelude.fs \
-	SR.fs \
-	prim-types.fsi \
-	prim-types.fs \
-	local.fsi \
-	local.fs \
-	array2.fsi \
-	array2.fs \
-	option.fsi \
-	option.fs \
-	collections.fsi \
-	collections.fs \
-	seq.fsi \
-	seq.fs \
-	string.fsi \
-	string.fs \
-	list.fsi \
-	list.fs \
-	array.fsi \
-	array.fs \
-	array3.fsi \
-	array3.fs \
-	map.fsi \
-	map.fs \
-	set.fsi \
-	set.fs \
-	reflect.fsi \
-	reflect.fs \
-	event.fsi \
-	event.fs \
-	math/n.fsi \
-	math/n.fs \
-	math/z.fsi \
-	math/z.fs \
-	../../utils/sformat.fsi \
-	../../utils/sformat.fs \
-	printf.fsi \
-	printf.fs \
-	quotations.fsi \
-	quotations.fs \
-	nativeptr.fsi \
-	nativeptr.fs \
-	control.fsi \
-	control.fs \
-	Linq.fsi \
-	Linq.fs \
-	MutableTuple.fs \
-	QueryExtensions.fs \
-	Query.fsi \
-	Query.fs \
-	SI.fs \
-	fslib-extra-pervasives.fsi \
-	fslib-extra-pervasives.fs \
-	../../assemblyinfo/assemblyinfo.FSharp.Core.dll.fs
-
-RESOURCES = \
-	$(tmpdir)FSCore.resources
-
-$(tmpdir)FSCore.resources: FSCore.resx
-	resgen $< $@
-
 include $(topdir)/src/fsharp/targets.make
 
-do-final: do-4-0 do-2-0 do-2-1
+build-final: build-4-0 build-2-0 build-2-1
 
 clean: clean-4-0 clean-2-0 clean-2-1
 
-install: install-lib-4 install-lib-4-5 install-lib-2 install-lib-2-1
+install: install-lib-4-0 install-lib-4-5 install-lib-2 install-lib-2-1
 
 
diff --git a/src/fsharp/FSharp.Data.TypeProviders/Makefile.in b/src/fsharp/FSharp.Data.TypeProviders/Makefile.in
index 9167054..ec115cf 100644
--- a/src/fsharp/FSharp.Data.TypeProviders/Makefile.in
+++ b/src/fsharp/FSharp.Data.TypeProviders/Makefile.in
@@ -6,45 +6,13 @@ srcdir := @abs_srcdir@/
 
 include @abs_top_builddir@/config.make
 
-FSC=$(protodir)fsc-proto.exe
-
-FLAGS += \
-	$(SIGN_FLAGS) \
-	--target:library \
-	--define:TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS
-
-REFERENCES += \
-	-r:$(outdir)FSharp.Core.dll \
-	-r:System.Xml.dll \
-	-r:System.Configuration.dll \
-	-r:System.ServiceModel.dll \
-	-r:System.Xml.Linq.dll \
-	-r:System.Core.dll \
-	-r:System.Data.dll
-
-sources = \
-	$(tmpdir)FSData.fs \
-	../../assemblyinfo/assemblyinfo.FSharp.Data.TypeProviders.dll.fs \
-	Util.fsi Util.fs \
-	TypeProviderEmit.fsi TypeProviderEmit.fs \
-	TypeProvidersImpl.fs \
-	TypeProviders.fs
-
-RESOURCES= \
-	$(tmpdir)FSData.resources
-
-$(tmpdir)FSData.fs $(tmpdir)FSData.resources: FSData.txt
-	mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSData.fs $(tmpdir)FSData.resx
-	resgen $(tmpdir)FSData.resx $(tmpdir)FSData.resources
-
-
 include $(topdir)/src/fsharp/targets.make
 
-do-final: do-4-0 
+build-final: build-4-0 
 
 clean: clean-4-0
 
-install: install-lib-4 install-lib-4-5
+install: install-lib-4-0 install-lib-4-5
 
 
 
diff --git a/src/fsharp/Fsc-proto/Makefile.in b/src/fsharp/Fsc-proto/Makefile.in
index 81deb1a..15f66c9 100644
--- a/src/fsharp/Fsc-proto/Makefile.in
+++ b/src/fsharp/Fsc-proto/Makefile.in
@@ -5,30 +5,11 @@ srcdir := @abs_srcdir@/
 
 include @abs_top_builddir@/config.make
 
-CONFIG=proto
+build-proto: $(protodir)FSharp.Core.dll
+	xbuild /p:Configuration=Proto
 
-FSC=$(bootstrapdir)fsc.exe
-
-FLAGS += --target:exe
-
-DEFINES += \
-	--define:BUILDING_PROTO \
-	--define:BUILDING_WITH_LKG \
-	--define:COMPILER \
-	--define:NO_STRONG_NAMES
-
-REFERENCES += \
-	-r:$(bootstrapdir)FSharp.Core.dll \
-	-r:$(outdir)FSharp.Compiler-proto.dll \
-	-r:$(monogacdirXX)/System.Runtime.Remoting.dll \
-	-r:$(monogacdirXX)/System.Windows.Forms.dll
-
-sources = \
-	../fscmain.fs
-
-do-proto: do-4-0 $(protodir)FSharp.Core.dll
-
-clean: clean-4-0
+clean: 
+	xbuild /p:Configuration=Proto /t:Clean
 
 include $(topdir)/src/fsharp/targets.make
 
diff --git a/src/fsharp/Fsc/Makefile.in b/src/fsharp/Fsc/Makefile.in
index 8497cf0..c436ffb 100644
--- a/src/fsharp/Fsc/Makefile.in
+++ b/src/fsharp/Fsc/Makefile.in
@@ -24,11 +24,11 @@ sources = \
 
 include $(topdir)/src/fsharp/targets.make
 
-do-final: do-4-0 
+build-final: build-4-0 
 
 clean: clean-4-0
 
-install: install-bin-4 install-lib-4-5
+install: install-bin 
 
 
 
diff --git a/src/fsharp/Fsc/fsc.exe.config b/src/fsharp/Fsc/fsc.exe.config
index 694b0ff..cf4b939 100644
--- a/src/fsharp/Fsc/fsc.exe.config
+++ b/src/fsharp/Fsc/fsc.exe.config
@@ -4,22 +4,15 @@
     <legacyUnhandledExceptionPolicy enabled="true" />
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
-        <assemblyIdentity
-          name="FSharp.Core"
-          publicKeyToken="b03f5f7f11d50a3a"
-          culture="neutral"/>
-        <bindingRedirect
-          oldVersion="2.0.0.0"
-          newVersion="4.3.0.0"/>
-        <bindingRedirect
-          oldVersion="2.3.0.0"
-          newVersion="4.3.0.0"/>
-        <bindingRedirect
-          oldVersion="2.3.5.0"
-          newVersion="4.3.0.0"/>
-        <bindingRedirect
-          oldVersion="4.0.0.0"
-          newVersion="4.3.0.0"/>
+        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
+        <bindingRedirect oldVersion="2.0.0.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="2.3.0.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="2.3.1.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="2.3.5.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="2.3.5.1" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="3.3.1.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="4.0.0.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="4.3.0.0" newVersion="4.3.1.0"/>
       </dependentAssembly>
     </assemblyBinding>
   </runtime>
diff --git a/src/fsharp/Makefile.in b/src/fsharp/Makefile.in
index 6ddf24d..83793ff 100644
--- a/src/fsharp/Makefile.in
+++ b/src/fsharp/Makefile.in
@@ -1,18 +1,18 @@
 
 # Make the proto using the bootstrap, then make the final compiler using the proto
-# We call MAKE sequentially because we don't want do-final to explicitly depend on do-proto,
+# We call MAKE sequentially because we don't want build-final to explicitly depend on build-proto,
 # as that causes a complete recompilation of both proto and final everytime you touch the 
 # compiler sources.
 all:
-	$(MAKE) do-proto
-	$(MAKE) do-final
+	$(MAKE) build-proto
+	$(MAKE) build-final
 
-do-proto:
+build-proto:
 	$(MAKE) -C FSharp.Build-proto $@
 	$(MAKE) -C FSharp.Compiler-proto $@
 	$(MAKE) -C Fsc-proto $@
 
-do-final install:
+build-2-0 build-4-0 build-final install:
 	$(MAKE) -C FSharp.Core $@
 	$(MAKE) -C FSharp.Build $@
 	$(MAKE) -C FSharp.Compiler $@
@@ -47,10 +47,10 @@ clean clean-2-0 clean-4-0:
 	$(MAKE) -C policy.3.3.FSharp.Core $@
 	$(MAKE) -C policy.4.3.FSharp.Core $@
 
-clean-2-1 do-2-1:
+clean-2-1 build-2-1:
 	$(MAKE) -C FSharp.Core $@
 
-install-2-1: do-2-1
+install-2-1: build-2-1
 	$(MAKE) -C FSharp.Core $@
 
 
diff --git a/src/fsharp/fsi/Makefile.in b/src/fsharp/fsi/Makefile.in
index 99d9b7b..e0a6b42 100644
--- a/src/fsharp/fsi/Makefile.in
+++ b/src/fsharp/fsi/Makefile.in
@@ -6,43 +6,13 @@ srcdir := @abs_srcdir@/
 
 include @abs_top_builddir@/config.make
 
-FSC=$(protodir)fsc-proto.exe
-
-FLAGS += \
-	$(SIGN_FLAGS) \
-	--target:exe
-
-REFERENCES += \
-	-r:$(outdir)FSharp.Core.dll \
-	-r:$(outdir)FSharp.Compiler.dll \
-	-r:$(outdir)FSharp.Compiler.Interactive.Settings.dll \
-	-r:$(outdir)FSharp.Compiler.Server.Shared.dll \
-	-r:$(monogacdirXX)/System.Windows.Forms.dll \
-	-r:$(monogacdirXX)/System.Drawing.dll
-
-sources = \
-	$(tmpdir)FSIstrings.fs \
-	../../assemblyinfo/assemblyinfo.fsi.exe.fs \
-	../InternalCollections.fsi \
-	../InternalCollections.fs \
-	console.fs \
-	fsi.fs \
-	fsimain.fs
-
-RESOURCES = \
-	$(tmpdir)FSIstrings.resources
-
-$(tmpdir)FSIstrings.fs $(tmpdir)FSIstrings.resources: FSIstrings.txt
-	mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSIstrings.fs $(tmpdir)FSIstrings.resx
-	resgen $(tmpdir)FSIstrings.resx $(tmpdir)FSIstrings.resources
-
 include $(topdir)/src/fsharp/targets.make
 
-do-final: do-4-0 
+build-final: build-4-0 
 
 clean: clean-4-0
 
-install: install-bin-4  install-lib-4-5
+install: install-bin
 
 
 
diff --git a/src/fsharp/fsi/fsi.exe.config b/src/fsharp/fsi/fsi.exe.config
index e48f68f..cf4b939 100755
--- a/src/fsharp/fsi/fsi.exe.config
+++ b/src/fsharp/fsi/fsi.exe.config
@@ -4,36 +4,15 @@
     <legacyUnhandledExceptionPolicy enabled="true" />
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
-        <assemblyIdentity
-          name="FSharp.Core"
-          publicKeyToken="b03f5f7f11d50a3a"
-          culture="neutral"/>
-        <bindingRedirect
-          oldVersion="2.0.0.0"
-          newVersion="4.3.1.0"/>
-        <bindingRedirect
-          oldVersion="2.3.0.0"
-          newVersion="4.3.0.0"/>
-        <bindingRedirect
-          oldVersion="2.3.5.0"
-          newVersion="4.3.0.0"/>
-        <bindingRedirect
-          oldVersion="4.0.0.0"
-          newVersion="4.3.1.0"/>
-        <bindingRedirect
-          oldVersion="4.3.0.0"
-          newVersion="4.3.1.0"/>
-        <!-- Old style portable -->
-        <bindingRedirect
-          oldVersion="2.3.5.0"
-          newVersion="4.3.1.0"/>
-        <bindingRedirect
-          oldVersion="2.3.5.1"
-          newVersion="4.3.1.0"/>
-        <!-- .NETCore portable -->
-        <bindingRedirect
-          oldVersion="3.3.1.0"
-          newVersion="4.3.1.0"/>
+        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
+        <bindingRedirect oldVersion="2.0.0.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="2.3.0.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="2.3.1.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="2.3.5.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="2.3.5.1" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="3.3.1.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="4.0.0.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="4.3.0.0" newVersion="4.3.1.0"/>
       </dependentAssembly>
     </assemblyBinding>
   </runtime>
diff --git a/src/fsharp/fsiAnyCpu/Makefile.in b/src/fsharp/fsiAnyCpu/Makefile.in
index 943cb8b..596ace5 100644
--- a/src/fsharp/fsiAnyCpu/Makefile.in
+++ b/src/fsharp/fsiAnyCpu/Makefile.in
@@ -6,44 +6,13 @@ srcdir := @abs_srcdir@/
 
 include @abs_top_builddir@/config.make
 
-FSC=$(protodir)fsc-proto.exe
-
-FLAGS += \
-	$(SIGN_FLAGS) \
-	--platform:anycpu \
-	--target:exe
-
-REFERENCES += \
-	-r:$(outdir)FSharp.Core.dll \
-	-r:$(outdir)FSharp.Compiler.dll \
-	-r:$(outdir)FSharp.Compiler.Interactive.Settings.dll \
-	-r:$(outdir)FSharp.Compiler.Server.Shared.dll \
-	-r:$(monogacdirXX)/System.Windows.Forms.dll \
-	-r:$(monogacdirXX)/System.Drawing.dll
-
-sources = \
-	$(tmpdir)FSIstrings.fs \
-	../../assemblyinfo/assemblyinfo.fsi.exe.fs \
-	../InternalCollections.fsi \
-	../InternalCollections.fs \
-	../fsi/console.fs \
-	../fsi/fsi.fs \
-	../fsi/fsimain.fs
-
-RESOURCES = \
-	$(tmpdir)FSIstrings.resources
-
-$(tmpdir)FSIstrings.fs $(tmpdir)FSIstrings.resources: ../fsi/FSIstrings.txt
-	mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSIstrings.fs $(tmpdir)FSIstrings.resx
-	resgen $(tmpdir)FSIstrings.resx $(tmpdir)FSIstrings.resources
-
 include $(topdir)/src/fsharp/targets.make
 
-do-final: do-4-0 
+build-final: build-4-0 
 
 clean: clean-4-0
 
-install: install-bin-4  install-lib-4-5
+install: install-bin
 
 
 
diff --git a/src/fsharp/fsiAnyCpu/fsiAnyCPU.exe.config b/src/fsharp/fsiAnyCpu/fsiAnyCPU.exe.config
index e48f68f..cf4b939 100755
--- a/src/fsharp/fsiAnyCpu/fsiAnyCPU.exe.config
+++ b/src/fsharp/fsiAnyCpu/fsiAnyCPU.exe.config
@@ -4,36 +4,15 @@
     <legacyUnhandledExceptionPolicy enabled="true" />
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
-        <assemblyIdentity
-          name="FSharp.Core"
-          publicKeyToken="b03f5f7f11d50a3a"
-          culture="neutral"/>
-        <bindingRedirect
-          oldVersion="2.0.0.0"
-          newVersion="4.3.1.0"/>
-        <bindingRedirect
-          oldVersion="2.3.0.0"
-          newVersion="4.3.0.0"/>
-        <bindingRedirect
-          oldVersion="2.3.5.0"
-          newVersion="4.3.0.0"/>
-        <bindingRedirect
-          oldVersion="4.0.0.0"
-          newVersion="4.3.1.0"/>
-        <bindingRedirect
-          oldVersion="4.3.0.0"
-          newVersion="4.3.1.0"/>
-        <!-- Old style portable -->
-        <bindingRedirect
-          oldVersion="2.3.5.0"
-          newVersion="4.3.1.0"/>
-        <bindingRedirect
-          oldVersion="2.3.5.1"
-          newVersion="4.3.1.0"/>
-        <!-- .NETCore portable -->
-        <bindingRedirect
-          oldVersion="3.3.1.0"
-          newVersion="4.3.1.0"/>
+        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
+        <bindingRedirect oldVersion="2.0.0.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="2.3.0.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="2.3.1.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="2.3.5.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="2.3.5.1" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="3.3.1.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="4.0.0.0" newVersion="4.3.1.0"/>
+        <bindingRedirect oldVersion="4.3.0.0" newVersion="4.3.1.0"/>
       </dependentAssembly>
     </assemblyBinding>
   </runtime>
diff --git a/src/fsharp/policy.2.0.FSharp.Core/Makefile.in b/src/fsharp/policy.2.0.FSharp.Core/Makefile.in
index 5c7b4d6..898ed38 100644
--- a/src/fsharp/policy.2.0.FSharp.Core/Makefile.in
+++ b/src/fsharp/policy.2.0.FSharp.Core/Makefile.in
@@ -8,22 +8,30 @@ include @abs_top_builddir@/config.make
 
 include $(topdir)/src/fsharp/targets.make
 
-#override the method to build the assembly
+# override the targets to build the assembly
 
-$(objdir)$(TARGET_2_0)/policy.2.0.FSharp.Core.dll: policy.2.0.FSharp.Core.dll.config 
+$(outdir20)/$(NAME).dll: $(NAME).dll.config 
 	@mkdir -p $(@D)
-	cp policy.2.0.FSharp.Core.dll.config $(@D)
-	al /link:policy.2.0.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_2_0)
+	cp $(NAME).dll.config $(@D)
+	al /link:$(NAME).dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub
 
-$(objdir)$(TARGET_4_0)/policy.2.0.FSharp.Core.dll: policy.2.0.FSharp.Core.dll.config 
+$(outdir40)/$(NAME).dll: $(NAME).dll.config 
 	@mkdir -p $(@D)
-	cp policy.2.0.FSharp.Core.dll.config $(@D)
-	al /link:policy.2.0.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_4_0)
+	cp $(NAME).dll.config $(@D)
+	al /link:$(NAME).dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub
 
-do-final: do-2-0 do-4-0 
+build-2-0: 
+	$(MAKE) $(outdir20)/$(NAME).dll
 
-clean: clean-2-0 clean-4-0
+build-4-0: 
+	$(MAKE) $(outdir40)/$(NAME).dll
+
+build-final: build-2-0 build-4-0
+
+clean: 
+	-rm -f $(outdir20)/$(NAME).dll $(outdir40)/$(NAME).dll
+
+install: install-lib-2 install-lib-4-0
 
-install: install-lib-2 install-lib-4
 
 
diff --git a/src/fsharp/policy.2.3.FSharp.Core/Makefile.in b/src/fsharp/policy.2.3.FSharp.Core/Makefile.in
index 53c77ef..10d75ba 100644
--- a/src/fsharp/policy.2.3.FSharp.Core/Makefile.in
+++ b/src/fsharp/policy.2.3.FSharp.Core/Makefile.in
@@ -8,22 +8,30 @@ include @abs_top_builddir@/config.make
 
 include $(topdir)/src/fsharp/targets.make
 
-#override the method to build the assembly
+# override the targets to build the assembly
 
-$(objdir)$(TARGET_2_0)/policy.2.3.FSharp.Core.dll: policy.2.3.FSharp.Core.dll.config 
+$(outdir20)/$(NAME).dll: $(NAME).dll.config 
 	@mkdir -p $(@D)
-	cp policy.2.3.FSharp.Core.dll.config $(@D)
-	al /link:policy.2.3.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_2_0)
+	cp $(NAME).dll.config $(@D)
+	al /link:$(NAME).dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub
 
-$(objdir)$(TARGET_4_0)/policy.2.3.FSharp.Core.dll: policy.2.3.FSharp.Core.dll.config 
+$(outdir40)/$(NAME).dll: $(NAME).dll.config 
 	@mkdir -p $(@D)
-	cp policy.2.3.FSharp.Core.dll.config $(@D)
-	al /link:policy.2.3.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_4_0)
+	cp $(NAME).dll.config $(@D)
+	al /link:$(NAME).dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub
 
-do-final: do-2-0 do-4-0 
+build-2-0: 
+	$(MAKE) $(outdir20)/$(NAME).dll
 
-clean: clean-2-0 clean-4-0
+build-4-0: 
+	$(MAKE) $(outdir40)/$(NAME).dll
+
+build-final: build-2-0 build-4-0
+
+clean: 
+	-rm -f $(outdir20)/$(NAME).dll $(outdir20)/$(NAME).dll
+
+install: install-lib-2 install-lib-4-0
 
-install: install-lib-2 install-lib-4
 
 
diff --git a/src/fsharp/policy.3.3.FSharp.Core/Makefile.in b/src/fsharp/policy.3.3.FSharp.Core/Makefile.in
new file mode 100644
index 0000000..2bf10df
--- /dev/null
+++ b/src/fsharp/policy.3.3.FSharp.Core/Makefile.in
@@ -0,0 +1,37 @@
+NAME=policy.3.3.FSharp.Core
+ASSEMBLY = $(NAME).dll
+DELAY_SIGN=1
+
+srcdir := @abs_srcdir@/
+
+include @abs_top_builddir@/config.make
+
+include $(topdir)/src/fsharp/targets.make
+
+# override the targets to build the assembly
+
+$(outdir20)/$(NAME).dll: $(NAME).dll.config 
+	@mkdir -p $(@D)
+	cp $(NAME).dll.config $(@D)
+	al /link:$(NAME).dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub
+
+$(outdir40)/$(NAME).dll: $(NAME).dll.config 
+	@mkdir -p $(@D)
+	cp $(NAME).dll.config $(@D)
+	al /link:$(NAME).dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub
+
+build-2-0: 
+	$(MAKE) $(outdir20)/$(NAME).dll
+
+build-4-0: 
+	$(MAKE) $(outdir40)/$(NAME).dll
+
+build-final: build-2-0 build-4-0
+
+clean: 
+	-rm -f $(outdir20)/$(NAME).dll $(outdir20)/$(NAME).dll
+
+install: install-lib-2 install-lib-4-0
+
+
+
diff --git a/src/fsharp/policy.3.3.FSharp.Core/policy.3.3.FSharp.Core.dll.config b/src/fsharp/policy.3.3.FSharp.Core/policy.3.3.FSharp.Core.dll.config
new file mode 100644
index 0000000..d6a18af
--- /dev/null
+++ b/src/fsharp/policy.3.3.FSharp.Core/policy.3.3.FSharp.Core.dll.config
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+   <runtime>
+      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+         <dependentAssembly>
+            <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" processorArchitecture="msil" Culture="neutral" />
+            <bindingRedirect oldVersion="3.3.1.0" newVersion="4.3.1.0" />
+         </dependentAssembly>
+      </assemblyBinding>
+   </runtime>
+</configuration> 
diff --git a/src/fsharp/policy.4.0.FSharp.Core/Makefile.in b/src/fsharp/policy.4.0.FSharp.Core/Makefile.in
index 3dfe5a5..21d3f4d 100644
--- a/src/fsharp/policy.4.0.FSharp.Core/Makefile.in
+++ b/src/fsharp/policy.4.0.FSharp.Core/Makefile.in
@@ -10,21 +10,28 @@ include $(topdir)/src/fsharp/targets.make
 
 # override the targets to build the assembly
 
-$(objdir)$(TARGET_2_0)/policy.4.0.FSharp.Core.dll: policy.4.0.FSharp.Core.dll.config 
+$(outdir20)/$(NAME).dll: $(NAME).dll.config 
 	@mkdir -p $(@D)
-	cp policy.4.0.FSharp.Core.dll.config $(@D)
-	al /link:policy.4.0.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_2_0)
+	cp $(NAME).dll.config $(@D)
+	al /link:$(NAME).dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub
 
-$(objdir)$(TARGET_4_0)/policy.4.0.FSharp.Core.dll: policy.4.0.FSharp.Core.dll.config 
+$(outdir40)/$(NAME).dll: $(NAME).dll.config 
 	@mkdir -p $(@D)
-	cp policy.4.0.FSharp.Core.dll.config $(@D)
-	al /link:policy.4.0.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_4_0)
+	cp $(NAME).dll.config $(@D)
+	al /link:$(NAME).dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub
 
-do-final: do-2-0 do-4-0 
+build-2-0: 
+	$(MAKE) $(outdir20)/$(NAME).dll
 
-clean: clean-2-0 clean-4-0
+build-4-0: 
+	$(MAKE) $(outdir40)/$(NAME).dll
 
-install: install-lib-2 install-lib-4
+build-final: build-2-0 build-4-0
+
+clean: 
+	-rm -f $(outdir20)/$(NAME).dll $(outdir20)/$(NAME).dll
+
+install: install-lib-2 install-lib-4-0
 
 
 
diff --git a/src/fsharp/policy.4.3.FSharp.Core/Makefile.in b/src/fsharp/policy.4.3.FSharp.Core/Makefile.in
index 0ae7e69..1572656 100644
--- a/src/fsharp/policy.4.3.FSharp.Core/Makefile.in
+++ b/src/fsharp/policy.4.3.FSharp.Core/Makefile.in
@@ -10,21 +10,28 @@ include $(topdir)/src/fsharp/targets.make
 
 # override the targets to build the assembly
 
-$(objdir)$(TARGET_2_0)/policy.4.3.FSharp.Core.dll: policy.4.3.FSharp.Core.dll.config 
+$(outdir20)/$(NAME).dll: $(NAME).dll.config 
 	@mkdir -p $(@D)
-	cp policy.4.3.FSharp.Core.dll.config $(@D)
-	al /link:policy.4.3.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_2_0)
+	cp $(NAME).dll.config $(@D)
+	al /link:$(NAME).dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub
 
-$(objdir)$(TARGET_4_0)/policy.4.3.FSharp.Core.dll: policy.4.3.FSharp.Core.dll.config 
+$(outdir40)/$(NAME).dll: $(NAME).dll.config 
 	@mkdir -p $(@D)
-	cp policy.4.3.FSharp.Core.dll.config $(@D)
-	al /link:policy.4.3.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_4_0)
+	cp $(NAME).dll.config $(@D)
+	al /link:$(NAME).dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub
 
-do-final: do-2-0 do-4-0 
+build-2-0: 
+	$(MAKE) $(outdir20)/$(NAME).dll
 
-clean: clean-2-0 clean-4-0
+build-4-0: 
+	$(MAKE) $(outdir40)/$(NAME).dll
 
-install: install-lib-2 install-lib-4
+build-final: build-2-0 build-4-0
+
+clean: 
+	-rm -f $(outdir20)/$(NAME).dll $(outdir20)/$(NAME).dll
+
+install: install-lib-2 install-lib-4-0
 
 
 
diff --git a/src/fsharp/targets.make b/src/fsharp/targets.make
index 559de34..6c21b2c 100644
--- a/src/fsharp/targets.make
+++ b/src/fsharp/targets.make
@@ -1,123 +1,25 @@
 SOURCES := $(patsubst $(srcdir)$(tmpdir)%,$(tmpdir)%,$(patsubst %,$(srcdir)%,$(sources)))
 
-.PHONY: install install-bin install-bin-2 install-bin-4 install-lib
+.PHONY: install install-lib-2-0 install-lib-2-1 install-lib-4-0
+
+build-2-0:
+	MONO_ENV_OPTIONS=$(monoopts) xbuild /p:Configuration=$(Configuration) /p:TargetFramework=net20 /p:MonoLibDir40=$(monogacdir40)
+
+build-2-1:
+	MONO_ENV_OPTIONS=$(monoopts) xbuild /p:Configuration=$(Configuration) /p:TargetFramework=mono21
+
+build-4-0:
+	MONO_ENV_OPTIONS=$(monoopts) xbuild /p:Configuration=$(Configuration) /p:TargetFramework=net40
 
-clean-2-0: TARGET := $(TARGET_2_0)
 clean-2-0:
-	-rm -rf $(tmpdir)
-	-rm -rf $(objdir)
-	-rm -f $(outdir)$(ASSEMBLY)
-	-rm -f $(outdir)$(ASSEMBLY).mdb
-	-rm -f $(outdir)$(NAME).xml
-	-rm -f $(outdir)$(NAME).sigdata
-	-rm -f $(outdir)$(NAME).optdata
-
-clean-2-1: TARGET := $(TARGET_2_1)
+	xbuild /p:Configuration=$(Configuration) /p:TargetFramework=net20 /t:Clean
+
 clean-2-1:
-	-rm -rf $(tmpdir)
-	-rm -rf $(objdir)
-	-rm -f $(outdir)$(ASSEMBLY)
-	-rm -f $(outdir)$(ASSEMBLY).mdb
-	-rm -f $(outdir)$(NAME).xml
-	-rm -f $(outdir)$(NAME).sigdata
-	-rm -f $(outdir)$(NAME).optdata
-
-clean-4-0: TARGET := $(TARGET_4_0)
+	xbuild /p:Configuration=$(Configuration) /p:TargetFramework=mono21 /t:Clean
+
 clean-4-0:
-	-rm -rf $(tmpdir)
-	-rm -rf $(objdir)
-	-rm -f $(outdir)$(ASSEMBLY)
-	-rm -f $(outdir)$(ASSEMBLY).mdb
-	-rm -f $(outdir)$(NAME).xml
-	-rm -f $(outdir)$(NAME).sigdata
-	-rm -f $(outdir)$(NAME).optdata
-
-do-2-0: DEFINES += $(DEFINES_2_0)
-do-2-0: REFERENCES += $(REFERENCES_2_0)
-do-2-0: FLAGS += $(FLAGS_2_0)
-do-2-0: TARGET := $(TARGET_2_0)
-do-2-0: VERSION := $(VERSION_2_0)
-do-2-0: monogacdirXX = $(monogacdir20)
-do-2-0: gacdirXX = $(gacdir20)
-do-2-0: $(objdir) $(objdir)$(TARGET_2_0) $(objdir)$(TARGET_4_0) $(objdir)$(TARGET_2_0)/$(ASSEMBLY)
-	@mkdir -p $(outdir)
-	@cp $(objdir)$(ASSEMBLY) $(outdir)
-	@if test -e $(objdir)$(ASSEMBLY).xml; then \
-	    cp $(objdir)$(NAME).xml $(outdir); \
-	fi
-	@if test -e $(objdir)$(ASSEMBLY).mdb; then \
-	    cp $(objdir)$(ASSEMBLY).mdb $(outdir); \
-	fi
-	@if test -e $(objdir)$(NAME).sigdata; then \
-		cp $(objdir)$(NAME).sigdata $(outdir); \
-	fi
-	@if test -e $(objdir)$(NAME).optdata; then \
-		cp $(objdir)$(NAME).optdata $(outdir); \
-	fi
-	@if test "x$(DELAY_SIGN)" = "x1"; then \
-		sn -q -R $(outdir)$(ASSEMBLY) $(srcdir)../../../mono.snk; \
-	fi
-	@if test -e Microsoft.FSharp.Targets; then \
-		cp Microsoft.FSharp.Targets $(outdir)Microsoft.FSharp.Targets; \
-	fi
+	xbuild /p:Configuration=$(Configuration) /p:TargetFramework=net40 /t:Clean
 
-do-2-1: DEFINES += $(DEFINES_2_1)
-do-2-1: REFERENCES += $(REFERENCES_2_1)
-do-2-1: FLAGS += $(FLAGS_2_1)
-do-2-1: TARGET := $(TARGET_2_1)
-do-2-1: VERSION := $(VERSION_2_1)
-do-2-1: monogacdirXX = $(monogacdir20)
-do-2-1: gacdirXX = $(gacdir20)
-do-2-1: $(objdir) $(objdir)$(TARGET_2_1) $(objdir)$(TARGET_4_0) $(objdir)$(TARGET_2_1)/$(ASSEMBLY)
-	@mkdir -p $(outdir)
-	@cp $(objdir)$(ASSEMBLY) $(outdir)
-	@if test -e $(objdir)$(NAME).xml; then \
-	    cp $(objdir)$(NAME).xml $(outdir); \
-	fi
-	@if test -e $(objdir)$(ASSEMBLY).mdb; then \
-	    cp $(objdir)$(ASSEMBLY).mdb $(outdir); \
-	fi
-	@if test -e $(objdir)$(NAME).sigdata; then \
-		cp $(objdir)$(NAME).sigdata $(outdir); \
-	fi
-	@if test -e $(objdir)$(NAME).optdata; then \
-		cp $(objdir)$(NAME).optdata $(outdir); \
-	fi
-	@if test "x$(DELAY_SIGN)" = "x1"; then \
-		sn -q -R $(outdir)$(ASSEMBLY) $(srcdir)../../../mono.snk; \
-	fi
-	@if test -e Microsoft.FSharp.Targets; then \
-		cp Microsoft.FSharp.Targets $(outdir)Microsoft.FSharp.Targets; \
-	fi
-
-do-4-0: DEFINES += $(DEFINES_4_0)
-do-4-0: REFERENCES += $(REFERENCES_4_0)
-do-4-0: FLAGS += $(FLAGS_4_0)
-do-4-0: TARGET := $(TARGET_4_0)
-do-4-0: VERSION := $(VERSION_4_0)
-do-4-0: monogacdirXX = $(monogacdir40)
-do-4-0: gacdirXX = $(gacdir40)
-do-4-0: $(objdir) $(objdir)$(TARGET_2_0) $(objdir)$(TARGET_4_0) $(objdir)$(TARGET_4_0)/$(ASSEMBLY)
-	@mkdir -p $(outdir)
-	@cp $(objdir)$(ASSEMBLY) $(outdir)
-	@if test -e $(objdir)$(NAME).xml; then \
-	    cp $(objdir)$(NAME).xml $(outdir); \
-	fi
-	@if test -e $(objdir)$(ASSEMBLY).mdb; then \
-	    cp $(objdir)$(ASSEMBLY).mdb $(outdir); \
-	fi
-	@if test -e $(objdir)$(NAME).sigdata; then \
-		cp $(objdir)$(NAME).sigdata $(outdir); \
-	fi
-	@if test -e $(objdir)$(NAME).optdata; then \
-		cp $(objdir)$(NAME).optdata $(outdir); \
-	fi
-	@if test "x$(DELAY_SIGN)" = "x1"; then \
-		sn -q -R $(outdir)$(ASSEMBLY) $(srcdir)../../../mono.snk; \
-	fi
-	@if test -e Microsoft.FSharp.Targets; then \
-		cp Microsoft.FSharp.Targets $(outdir)Microsoft.FSharp.Targets; \
-	fi
 
 install-lib-2: TARGET := $(TARGET_2_0)
 install-lib-2: VERSION := $(VERSION_2_0)
@@ -125,53 +27,60 @@ install-lib-2: VERSION := $(VERSION_2_0)
 install-lib-2-1: TARGET := $(TARGET_2_1)
 install-lib-2-1: VERSION := $(VERSION_2_1)
 
-install-lib-4: TARGET := $(TARGET_4_0)
-install-lib-4: VERSION := $(VERSION_4_0)
-
-install-bin-2: TARGET := $(TARGET_2_0)
-install-bin-2: VERSION := 2
+install-lib-4-0: TARGET := $(TARGET_4_0)
+install-lib-4-0: VERSION := $(VERSION_4_0)
 
-install-bin-2-1: TARGET := $(TARGET_2_1)
-install-bin-2-1: VERSION := 2.1
-
-install-bin-4: TARGET := $(TARGET_4_0)
+# At the moment SDK binaries go in the mono/4.0 directory.
+install-bin: TARGET := $(TARGET_4_0)
 
 
 # Install the library binaries in the GAC and the framework directory, 
 # Install .optdata/.sigdata if they exist (they go alongside FSharp.Core)
 # Install the .Targets file. The XBuild targets file gets installed into the place(s) expected for standard F# project
 # files. For F# 2.0 project files this is
-#     .../Microsoft F#/v4.0/Microsoft.FSharp.Targets
+#     /usr/lib/mono/Microsoft F#/v4.0/Microsoft.FSharp.Targets
 # For F# 3.0 project files this is
-#     .../Microsoft SDKs/F#/3.0/Framework/v4.0/Microsoft.FSharp.Targets
+#     /usr/lib/mono/Microsoft SDKs/F#/3.0/Framework/v4.0/Microsoft.FSharp.Targets
+# For F# 3.1 project files this is
+#     /usr/lib/mono/xbuild/Microsoft/VisualStudio/v12.0/FSharp/Microsoft.FSharp.Targets
 # 
-install-lib-2 install-lib-2-1 install-lib-4:
+# Here 12.0 is 'VisualStudioVersion'. xbuild should set this to 12.0, copying MSBuild.
+#
+# We put the F# 3.1 targets and link the SDK DLLs for all three locations
+
+install-lib-2 install-lib-2-1 install-lib-4-0:
 	@echo "Installing $(ASSEMBLY)"
 	@mkdir -p $(DESTDIR)$(gacdir)/$(TARGET)
+	@if test "x$(DELAY_SIGN)" = "x1"; then \
+		sn -q -R $(outdir)$(ASSEMBLY) $(srcdir)../../../mono.snk; \
+	fi
 	gacutil -i $(outdir)$(ASSEMBLY) -root $(DESTDIR)$(libdir) -package $(TARGET)
 	@if test -e $(outdir)Microsoft.FSharp.Targets; then \
+	    $(INSTALL_LIB) $(outdir)Microsoft.FSharp.Targets $(DESTDIR)$(gacdir)/$(TARGET)/; \
 	    mkdir -p $(DESTDIR)$(gacdir)/Microsoft\ F#/v$(TARGET)/; \
-	    mkdir -p $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.0/Framework/v$(TARGET)/; \
 	    ln -fs ../../$(TARGET)/$(ASSEMBLY) $(DESTDIR)$(gacdir)/Microsoft\ F#/v$(TARGET)/$(ASSEMBLY); \
-	    ln -fs ../../../../../$(TARGET)/$(ASSEMBLY) $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.0/Framework/v$(TARGET)/$(ASSEMBLY); \
-	    $(INSTALL_LIB) $(outdir)Microsoft.FSharp.Targets $(DESTDIR)$(gacdir)/$(TARGET)/; \
 	    ln -fs ../../$(TARGET)/Microsoft.FSharp.Targets $(DESTDIR)$(gacdir)/Microsoft\ F#/v$(TARGET)/Microsoft.FSharp.Targets; \
+	    mkdir -p $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.0/Framework/v$(TARGET); \
+	    ln -fs ../../../../../$(TARGET)/$(ASSEMBLY) $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.0/Framework/v$(TARGET)/$(ASSEMBLY); \
 	    ln -fs ../../../../../$(TARGET)/Microsoft.FSharp.Targets $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.0/Framework/v$(TARGET)/Microsoft.FSharp.Targets; \
+	    mkdir -p $(DESTDIR)$(gacdir)/../xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
+	    ln -fs ../../../../../$(TARGET)/$(ASSEMBLY) $(DESTDIR)$(gacdir)/../xbuild/Microsoft/VisualStudio/v12.0/FSharp/$(ASSEMBLY); \
+	    ln -fs ../../../../../$(TARGET)/Microsoft.FSharp.Targets $(DESTDIR)$(gacdir)/../xbuild/Microsoft/VisualStudio/v12.0/FSharp/Microsoft.FSharp.Targets; \
 	fi
 	@if test -e $(outdir)$(NAME).xml; then \
-		$(INSTALL_LIB) $(outdir)$(NAME).xml $(DESTDIR)$(gacdir)/gac/$(NAME)/$(VERSION)__$(TOKEN); \
+		$(INSTALL_LIB) $(outdir)$(NAME).xml $(DESTDIR)$(gacdir)/gac/$(NAME)/$(VERSION)__$(TOKEN)/; \
 		ln -fs  ../gac/$(NAME)/$(VERSION)__$(TOKEN)/$(NAME).xml $(DESTDIR)$(gacdir)/$(TARGET)/$(NAME).xml; \
 	fi
 	@if test -e $(outdir)$(NAME).sigdata; then \
-		$(INSTALL_LIB) $(outdir)$(NAME).sigdata $(DESTDIR)$(gacdir)/gac/$(NAME)/$(VERSION)__$(TOKEN); \
+		$(INSTALL_LIB) $(outdir)$(NAME).sigdata $(DESTDIR)$(gacdir)/gac/$(NAME)/$(VERSION)__$(TOKEN)/; \
 		ln -fs  ../gac/$(NAME)/$(VERSION)__$(TOKEN)/$(NAME).sigdata $(DESTDIR)$(gacdir)/$(TARGET)/$(NAME).sigdata; \
 	fi
 	@if test -e $(outdir)$(NAME).optdata; then \
-		$(INSTALL_LIB) $(outdir)$(NAME).optdata $(DESTDIR)$(gacdir)/gac/$(NAME)/$(VERSION)__$(TOKEN); \
+		$(INSTALL_LIB) $(outdir)$(NAME).optdata $(DESTDIR)$(gacdir)/gac/$(NAME)/$(VERSION)__$(TOKEN)/; \
 		ln -fs ../gac/$(NAME)/$(VERSION)__$(TOKEN)/$(NAME).optdata $(DESTDIR)$(gacdir)/$(TARGET)/$(NAME).optdata; \
 	fi
 
-install-lib-4-5: install-lib-4
+install-lib-4-5: install-lib-4-0
 	@if test -e $(DESTDIR)$(gacdir)/4.5/; then \
 		ln -fs ../4.0/$(ASSEMBLY) $(DESTDIR)$(gacdir)/4.5/$(ASSEMBLY); \
 		if test -e $(DESTDIR)$(gacdir)/4.0/$(ASSEMBLY).config; then \
@@ -190,7 +99,7 @@ install-lib-4-5: install-lib-4
 
 # The binaries fsc.exe and fsi.exe only get installed for Mono 4.0 profile
 # This also installs 'fsharpc' and 'fsharpi'
-install-bin-4:
+install-bin:
 	sed -e 's,[@]DIR[@],$(gacdir)/$(TARGET),g' -e 's,[@]TOOL[@],$(ASSEMBLY),g' < $(topdir)launcher > $(outdir)$(subst fs,fsharp,$(NAME))$(VERSION)
 	chmod +x $(outdir)$(subst fs,fsharp,$(NAME))$(VERSION)
 	@mkdir -p $(DESTDIR)$(gacdir)/$(TARGET)
@@ -199,14 +108,3 @@ install-bin-4:
 	$(INSTALL_BIN) $(outdir)$(subst fs,fsharp,$(NAME))$(VERSION) $(DESTDIR)$(bindir)
 
 
-$(objdir) $(objdir)$(TARGET_2_0) $(objdir)$(TARGET_2_1) $(objdir)$(TARGET_4_0):
-	mkdir -p $@
-
-$(objdir)$(TARGET_2_0)/$(ASSEMBLY): $(RESOURCES) $(SOURCES)
-	mono $(MONO_OPTIONS) $(FSC) -o:$(objdir)$(ASSEMBLY) $(REFERENCES) $(DEFINES) $(FLAGS) $(patsubst %,--resource:%,$(RESOURCES)) $(SOURCES)
-
-$(objdir)$(TARGET_2_1)/$(ASSEMBLY): $(RESOURCES) $(SOURCES)
-	mono $(MONO_OPTIONS) $(FSC) -o:$(objdir)$(ASSEMBLY) $(REFERENCES) $(DEFINES) $(FLAGS) $(patsubst %,--resource:%,$(RESOURCES)) $(SOURCES)
-
-$(objdir)$(TARGET_4_0)/$(ASSEMBLY):  $(RESOURCES) $(SOURCES)
-	mono $(MONO_OPTIONS) $(FSC) -o:$(objdir)$(ASSEMBLY) $(REFERENCES) $(DEFINES) $(FLAGS) $(patsubst %,--resource:%,$(RESOURCES)) $(SOURCES)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-cli-apps/packages/fsharp.git



More information about the Pkg-cli-apps-commits mailing list