-
Notifications
You must be signed in to change notification settings - Fork 3.8k
/
Makefile
166 lines (135 loc) · 4.86 KB
/
Makefile
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
thisdir := .
SUBDIRS := build jay mcs tools/resgen class mbas nunit20 ilasm tools tests errors docs
DIST_ONLY_SUBDIRS := gmcs
basic_SUBDIRS := build jay mcs class
net_1_1_bootstrap_SUBDIRS := build jay mcs class ilasm tools
net_2_0_bootstrap_SUBDIRS := build class
net_2_0_SUBDIRS := build jay gmcs class nunit20 tests errors tools
# List of test subdirs that should pass 100%
centum_tests := \
class/corlib \
class/System \
class/Commons.Xml.Relaxng \
class/Cscompmgd \
class/Microsoft.JScript \
class/Mono.Posix \
class/Mono.Security \
class/System.Messaging \
class/System.Runtime.Remoting \
class/System.Runtime.Serialization.Formatters.Soap \
class/System.Security \
class/System.ServiceProcess \
class/System.Web.Services \
tests \
errors
default_centum_tests := \
$(centum_tests) \
class/System.XML \
class/System.Data
net_2_0_centum_tests := $(centum_tests) class/Mono.C5
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): platform-check profile-check
.PHONY: all-local $(STD_TARGETS:=-local)
all-local $(STD_TARGETS:=-local):
@:
# fun specialty targets
PROFILES = default net_2_0
.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_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--default--%
$(_boot_:%=profile-do--default--%): profile-do--default--%: 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=default 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 \
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 cvzf $(package).tar.gz $(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 tzf $(package)/$(package).tar.gz |sed -e 's,/$$,,' |sort >distdist.list ; \
rm $(package)/$(package).tar.gz ; \
tar tzf $(package).tar.gz |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 cvzf "$$chargedir".tgz "$$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 cvzf "$$chargedir".tgz "$$chargedir" ; \
rm -rf "$$chargedir"