1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
thisdir := .
SUBDIRS := build jay mcs class nunit20 ilasm tools tests errors docs
basic_SUBDIRS := build jay mcs class
net_1_1_bootstrap_SUBDIRS := build jay mcs class ilasm tools
net_2_0_bootstrap_SUBDIRS := build jay mcs class ilasm tools
net_2_0_SUBDIRS := build jay mcs class nunit20 ilasm tools tests errors
net_2_1_bootstrap_SUBDIRS := build mcs class
net_2_1_raw_SUBDIRS := build mcs class tools
net_2_1_SUBDIRS := tools tests errors
net_3_5_SUBDIRS := build class
# List of test subdirs that should pass 100%
centum_tests := \
class/corlib \
class/System \
class/System.XML \
class/Commons.Xml.Relaxng \
class/Cscompmgd \
class/Microsoft.JScript \
class/Mono.Posix \
class/Mono.Security \
class/System.Design \
class/System.DirectoryServices \
class/System.Drawing \
class/System.Messaging \
class/System.Runtime.Remoting \
class/System.Runtime.Serialization.Formatters.Soap \
class/System.Security \
class/System.ServiceProcess \
class/System.Web \
class/System.Web.Services \
tests \
errors
default_centum_tests := \
$(centum_tests) \
class/System.Data
net_2_0_centum_tests := \
$(centum_tests) \
class/System.Core \
class/System.Configuration \
class/System.Data.DataSetExtensions \
class/System.Xml.Linq \
class/System.Transactions \
class/Microsoft.Build.Framework \
class/Microsoft.Build.Utilities \
class/Microsoft.Build.Engine \
class/Mono.C5
# class/System.Web.Extensions
# class/Microsoft.Build.Tasks
# note that System.Xml.Linq is here to prevent this from being empty
net_3_5_centum_tests := \
class/System.Xml.Linq
ifdef ONLY_CENTUM_TESTS
TEST_SUBDIRS := $($(PROFILE)_centum_tests)
endif
ifdef TEST_SUBDIRS
$(PROFILE)_SUBDIRS := $(TEST_SUBDIRS)
endif
include build/rules.make
all-recursive $(STD_TARGETS:=-recursive): dir-check platform-check profile-check
.PHONY: all-local $(STD_TARGETS:=-local)
all-local $(STD_TARGETS:=-local):
@:
dir-check:
@if [ "$(NO_DIR_CHECK)" = "" -a "$(PROFILE)" != "basic" ]; then echo "Running make from the mcs directory is not supported. Run make from the parent directory (if using a tarball), or from the directory where the runtime is checked out (if using an SVN checkout)."; exit 1; fi
# fun specialty targets
PROFILES = net_1_1 net_2_0 net_3_5
.PHONY: all-profiles $(STD_TARGETS:=-profiles)
all-profiles $(STD_TARGETS:=-profiles): %-profiles: profiles-do--%
@:
profiles-do--%:
$(MAKE) $(PROFILES:%=profile-do--%--$*)
# The % below looks like profile-name--target-name
profile-do--%:
$(MAKE) PROFILE=$(subst --, ,$*)
# We don't want to run the tests in parallel. We want behaviour like -k.
profiles-do--run-test:
ret=:; $(foreach p,$(PROFILES), { $(MAKE) PROFILE=$(p) run-test || ret=false; }; ) $$ret
# Orchestrate the bootstrap here.
_boot_ = all clean install
$(_boot_:%=profile-do--net_3_5--%): profile-do--net_3_5--%: profile-do--net_2_0--%
$(_boot_:%=profile-do--net_2_1--%): profile-do--net_2_1--%: profile-do--net_2_1_raw--%
$(_boot_:%=profile-do--net_2_1_raw--%): profile-do--net_2_1_raw--%: profile-do--net_2_1_bootstrap--%
$(_boot_:%=profile-do--net_2_1_bootstrap--%): profile-do--net_2_1_bootstrap--%: profile-do--net_2_0--%
$(_boot_:%=profile-do--net_2_0--%): profile-do--net_2_0--%: profile-do--net_2_0_bootstrap--%
$(_boot_:%=profile-do--net_2_0_bootstrap--%): profile-do--net_2_0_bootstrap--%: profile-do--net_1_1--%
$(_boot_:%=profile-do--net_1_1--%): profile-do--net_1_1--%: profile-do--net_1_1_bootstrap--%
$(_boot_:%=profile-do--net_1_1_bootstrap--%): profile-do--net_1_1_bootstrap--%: profile-do--basic--%
testcorlib:
@cd class/corlib && $(MAKE) test run-test
compiler-tests:
$(MAKE) TEST_SUBDIRS="tests errors" run-test-profiles
test-installed-compiler:
$(MAKE) TEST_SUBDIRS="tests errors" PROFILE=net_1_1 TEST_RUNTIME=mono MCS=mcs run-test
$(MAKE) TEST_SUBDIRS="tests errors" PROFILE=net_2_0 TEST_RUNTIME=mono MCS=gmcs run-test
package := mcs-$(VERSION)
DISTFILES = \
AUTHORS \
ChangeLog \
COPYING \
COPYING.LIB \
INSTALL.txt \
LICENSE \
LICENSE.GPL \
LICENSE.LGPL \
LICENSE.MPL \
Makefile \
mkinstalldirs \
MIT.X11 \
MonoIcon.png \
README \
ScalableMonoIcon.svg \
winexe.in \
nunit.key
dist-local: dist-default
dist-pre:
rm -rf $(package)
mkdir $(package)
dist-tarball: dist-pre
$(MAKE) distdir='$(package)' dist-recursive
tar cvjf $(package).tar.bz2 $(package)
dist: dist-tarball
rm -rf $(package)
# the egrep -v is kind of a hack (to get rid of the makefrags)
# but otherwise we have to make dist then make clean which
# is sort of not kosher. And it breaks with DIST_ONLY_SUBDIRS.
#
# We need to set prefix on make so class/System/Makefile can find
# the installed System.Xml to build properly
distcheck: dist-tarball
rm -rf InstallTest Distcheck-MCS ; \
mkdir InstallTest ; \
destdir=`cd InstallTest && pwd` ; \
mv $(package) Distcheck-MCS ; \
(cd Distcheck-MCS && \
$(MAKE) prefix=$(prefix) && $(MAKE) test && $(MAKE) install DESTDIR="$$destdir" && \
$(MAKE) clean && $(MAKE) dist || exit 1) || exit 1 ; \
mv Distcheck-MCS $(package) ; \
tar tjf $(package)/$(package).tar.bz2 |sed -e 's,/$$,,' |sort >distdist.list ; \
rm $(package)/$(package).tar.bz2 ; \
tar tjf $(package).tar.bz2 |sed -e 's,/$$,,' |sort >before.list ; \
find $(package) |egrep -v '(makefrag|response)' |sed -e 's,/$$,,' |sort >after.list ; \
cmp before.list after.list || exit 1 ; \
cmp before.list distdist.list || exit 1 ; \
rm -f before.list after.list distdist.list ; \
rm -rf $(package) InstallTest
monocharge:
chargedir=monocharge-`date -u +%Y%m%d` ; \
mkdir "$$chargedir" ; \
DESTDIR=`cd "$$chargedir" && pwd` ; \
$(MAKE) install DESTDIR="$$DESTDIR" || exit 1 ; \
tar cvjf "$$chargedir".tar.bz2 "$$chargedir" ; \
rm -rf "$$chargedir"
# A bare-bones monocharge.
monocharge-lite:
chargedir=monocharge-lite-`date -u +%Y%m%d` ; \
mkdir "$$chargedir" ; \
DESTDIR=`cd "$$chargedir" && pwd` ; \
$(MAKE) -C mcs install DESTDIR="$$DESTDIR" || exit 1; \
$(MAKE) -C class/corlib install DESTDIR="$$DESTDIR" || exit 1; \
$(MAKE) -C class/System install DESTDIR="$$DESTDIR" || exit 1; \
$(MAKE) -C class/System.XML install DESTDIR="$$DESTDIR" || exit 1; \
$(MAKE) -C class/Mono.CSharp.Debugger install DESTDIR="$$DESTDIR" || exit 1; \
tar cvjf "$$chargedir".tar.bz2 "$$chargedir" ; \
rm -rf "$$chargedir"
|