Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel de Icaza <miguel@gnome.org>2014-05-08 06:44:41 +0400
committerMiguel de Icaza <miguel@gnome.org>2014-05-09 19:27:53 +0400
commite0e3f3cd4f2aad1f92aec1d53b00793541109c13 (patch)
tree7fca90712c170a9a79b900178c08e4dd8a3c2be0 /mcs/class/I18N
parent69a1519d25a5959aa0ea533b7feb933cc1d1b4ea (diff)
[build] Staged setup for building assemblies with cyclic dependencies
This patch introduces an infrastructure to stage the builds for the core assemblies that have cyclic dependencies. This deals directly with the following cycle: System.dll requires: System.Configuration.dll Mono.Security.dll System.Xml.dll They all require System.dll to be built System.Xml requires: System.dll System.Configuration.dll System.Security.dll requires: System.dll Mono.Security.dll System.Xml.dll Principle ========= The patch works by directing the build infrastructure to place intermediate build steps on their own directory. For example the first System.dll build that only takes a dependency in mscorlib.dll is placed not under the final directory but on a subdirectory called "bare". The second time that System.dll is built (after Mono.Security and System.Xml have been built) is placed on the "secxml" directory. The third time is the final build, and that one ends in the profile directory. The same principle is applied to System.Xml. Better Dependency Tracking ========================== To handle the multiple stages, the new Makefiles for the various parties involved in this loop are now able to build their dependencies. This means that typing "make" on System.Security or System.Xml or System will build all of the intermediate steps as required, without needing the toplevel Makefile to perform multiple build shots to incrementally build the result. Bug fixes ========= We must have regressed at some point the build of System.Xml as we were only doing one build of it, one without System.Configuration support. This patch introduces back the changes to build System.Xml in two steps. This patch fixes the setup where we end up rebuilding System.dll and overwriting it two times as the build progresses as a side effect (this is what required LIBRARY_USE_INTERMEDIATE_FILE). Details ======= library.make: Introduces a new "the_libdir_base" which is the raw directory where the final output will go. This points to the same location that libdir_base previously pointed to. The existing libdir_base is modified to contain an optional "intermediate" directory, where intermediate builds can be placed. Other cycles ============ The System.Design assembly was listed as having cycles, but while this cycle exists in theory, in practice we have not implemented any of the code that brings the cycle in System.Windows.Forms.Design's ImageListImageEditor and chances are, we wont any time soon.
Diffstat (limited to 'mcs/class/I18N')
-rw-r--r--mcs/class/I18N/CJK/Makefile1
-rw-r--r--mcs/class/I18N/Common/Makefile1
-rw-r--r--mcs/class/I18N/MidEast/Makefile1
-rw-r--r--mcs/class/I18N/Other/Makefile1
-rw-r--r--mcs/class/I18N/Rare/Makefile1
-rw-r--r--mcs/class/I18N/West/Makefile1
6 files changed, 0 insertions, 6 deletions
diff --git a/mcs/class/I18N/CJK/Makefile b/mcs/class/I18N/CJK/Makefile
index 9a221450468..9d6c885099c 100644
--- a/mcs/class/I18N/CJK/Makefile
+++ b/mcs/class/I18N/CJK/Makefile
@@ -3,7 +3,6 @@ SUBDIRS =
include ../../../build/rules.make
LIBRARY = I18N.CJK.dll
-LIBRARY_USE_INTERMEDIATE_FILE = yes
LOCAL_MCS_FLAGS = /unsafe /resource:big5.table /resource:gb2312.table /resource:jis.table /resource:ks.table /resource:gb18030.table /r:$(corlib) /r:I18N.dll /define:DISABLE_UNSAFE
EXTRA_DISTFILES = big5.table jis.table gb2312.table ks.table gb18030.table \
diff --git a/mcs/class/I18N/Common/Makefile b/mcs/class/I18N/Common/Makefile
index cfdd37feabf..af1aa401cd5 100644
--- a/mcs/class/I18N/Common/Makefile
+++ b/mcs/class/I18N/Common/Makefile
@@ -3,7 +3,6 @@ SUBDIRS =
include ../../../build/rules.make
LIBRARY = I18N.dll
-LIBRARY_USE_INTERMEDIATE_FILE = yes
LOCAL_MCS_FLAGS = /r:$(corlib) /unsafe /define:DISABLE_UNSAFE
NO_TEST = yes
diff --git a/mcs/class/I18N/MidEast/Makefile b/mcs/class/I18N/MidEast/Makefile
index ce785cc804a..aafe245f6a4 100644
--- a/mcs/class/I18N/MidEast/Makefile
+++ b/mcs/class/I18N/MidEast/Makefile
@@ -3,7 +3,6 @@ SUBDIRS =
include ../../../build/rules.make
LIBRARY = I18N.MidEast.dll
-LIBRARY_USE_INTERMEDIATE_FILE = yes
LOCAL_MCS_FLAGS = /r:$(corlib) /r:I18N.dll /unsafe
#NO_TEST = yes
diff --git a/mcs/class/I18N/Other/Makefile b/mcs/class/I18N/Other/Makefile
index b9166f3482c..e5740f32cb6 100644
--- a/mcs/class/I18N/Other/Makefile
+++ b/mcs/class/I18N/Other/Makefile
@@ -3,7 +3,6 @@ SUBDIRS =
include ../../../build/rules.make
LIBRARY = I18N.Other.dll
-LIBRARY_USE_INTERMEDIATE_FILE = yes
LOCAL_MCS_FLAGS = /r:$(corlib) /r:I18N.dll /unsafe
NO_TEST = yes
diff --git a/mcs/class/I18N/Rare/Makefile b/mcs/class/I18N/Rare/Makefile
index 81d1f1e8c71..fd315cfce14 100644
--- a/mcs/class/I18N/Rare/Makefile
+++ b/mcs/class/I18N/Rare/Makefile
@@ -3,7 +3,6 @@ SUBDIRS =
include ../../../build/rules.make
LIBRARY = I18N.Rare.dll
-LIBRARY_USE_INTERMEDIATE_FILE = yes
LOCAL_MCS_FLAGS = /r:$(corlib) /r:I18N.dll /unsafe
NO_TEST = yes
diff --git a/mcs/class/I18N/West/Makefile b/mcs/class/I18N/West/Makefile
index b63ebd5514a..e8b7afe3d07 100644
--- a/mcs/class/I18N/West/Makefile
+++ b/mcs/class/I18N/West/Makefile
@@ -3,7 +3,6 @@ SUBDIRS =
include ../../../build/rules.make
LIBRARY = I18N.West.dll
-LIBRARY_USE_INTERMEDIATE_FILE = yes
LOCAL_MCS_FLAGS = /r:$(corlib) /r:I18N.dll /unsafe
#NO_TEST = yes