New build system from Peter Williams (peter@newton.cx)
[mono.git] / mcs / Makefile
1 thisdir := .
2 SUBDIRS := build jay mcs class mbas nunit20 monoresgen ilasm tools tests errors docs
3 include build/rules.make
4
5 all-local: platform-check
6
7 install-local: platform-check
8
9 test-local: platform-check
10
11 clean-local:
12
13 dist-local:
14
15 # fun specialty targets
16
17 testcorlib:
18         @cd class/corlib && $(MAKE) test run-test
19
20 bootstrap:
21         $(MAKE) all MCS='$$(INTERNAL_MCS)'
22
23 unbootstrap:
24         $(MAKE) all MCS='$$(BOOTSTRAP_MCS)'
25
26 # Disting. We need to override $(distdir) here.
27
28 package := mcs-$(VERSION)
29 top_distdir = $(dots)/$(package)
30 distdir = $(top_distdir)
31 export package
32
33 DISTFILES = \
34         AUTHORS                 \
35         ChangeLog               \
36         COPYING                 \
37         COPYING.LIB             \
38         INSTALL.txt             \
39         LICENSE                 \
40         LICENSE.GPL             \
41         LICENSE.LGPL            \
42         Makefile                \
43         mkinstalldirs           \
44         MIT.X11                 \
45         MonoIcon.png            \
46         README                  \
47         README.building         \
48         ScalableMonoIcon.svg    \
49         winexe.in
50
51 dist-pre:
52         rm -rf $(package)
53
54 dist-post:
55         tar cvzf $(package).tar.gz $(package)
56
57 dist-tarball: dist-pre dist-default dist-recursive dist-post
58
59 dist: dist-tarball
60         rm -rf $(package)
61
62 # the egrep -v is kind of a hack (to get rid of the makefrags)
63 # but otherwise we have to make dist then make clean which
64 # is sort of not kosher. And it breaks with DIST_ONLY_SUBDIRS.
65
66 distcheck:
67         rm -rf InstallTest Distcheck-MCS ; \
68         mkdir InstallTest ; \
69         destdir=`cd InstallTest && pwd` ; \
70         $(MAKE) dist-tarball || exit 1 ; \
71         mv $(package) Distcheck-MCS ; \
72         (cd Distcheck-MCS && \
73             make && make test && make install DESTDIR="$$destdir" && \
74             make clean && make dist || exit 1) || exit 1 ; \
75         mv Distcheck-MCS $(package) ; \
76         tar tzf $(package)/$(package).tar.gz |sed -e 's,/$$,,' |sort >distdist.list ; \
77         rm $(package)/$(package).tar.gz ; \
78         tar tzf $(package).tar.gz |sed -e 's,/$$,,' |sort >before.list ; \
79         find $(package) |egrep -v '(makefrag|response)' |sed -e 's,/$$,,' |sort >after.list ; \
80         cmp before.list after.list || exit 1 ; \
81         cmp before.list distdist.list || exit 1 ; \
82         rm -f before.list after.list distdist.list ; \
83         rm -rf $(package) InstallTest
84
85 monocharge:
86         chargedir=monocharge-`date -u +%Y%m%d` ; \
87         mkdir "$$chargedir" ; \
88         DESTDIR=`cd "$$chargedir" && pwd` ; \
89         $(MAKE) install DESTDIR="$$DESTDIR" || exit 1 ; \
90         tar cvzf "$$chargedir".tgz "$$chargedir" ; \
91         rm -rf "$$chargedir"
92
93 # A bare-bones monocharge.
94
95 monocharge-lite:
96         chargedir=monocharge-lite-`date -u +%Y%m%d` ; \
97         mkdir "$$chargedir" ; \
98         DESTDIR=`cd "$$chargedir" && pwd` ; \
99         $(MAKE) -C mcs install DESTDIR="$$DESTDIR" || exit 1; \
100         $(MAKE) -C class/corlib install DESTDIR="$$DESTDIR" || exit 1; \
101         $(MAKE) -C class/System install DESTDIR="$$DESTDIR" || exit 1; \
102         $(MAKE) -C class/System.XML install DESTDIR="$$DESTDIR" || exit 1; \
103         $(MAKE) -C class/Mono.CSharp.Debugger install DESTDIR="$$DESTDIR" || exit 1; \
104         tar cvzf "$$chargedir".tgz "$$chargedir" ; \
105         rm -rf "$$chargedir"