3 with_mono_path = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH"
4 with_mono_path_monolite = MONO_PATH="$(topdir)/class/lib/monolite$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH"
6 BOOTSTRAP_MCS = $(EXTERNAL_MCS)
7 MCS = $(with_mono_path) $(INTERNAL_MCS)
9 PROFILE_MCS_FLAGS = -d:NET_1_1 -d:ONLY_1_1 -d:BOOTSTRAP_WITH_OLDLIB
10 NO_SIGN_ASSEMBLY = yes
13 FRAMEWORK_VERSION = 1.0
15 .PHONY: profile-check do-profile-check
20 all-recursive: do-profile-check
21 clean-local: clean-profile
25 -rm -f $(PROFILE_CS) $(PROFILE_EXE) $(PROFILE_OUT)
27 PROFILE_CS = $(topdir)/build/deps/basic-profile-check.cs
28 PROFILE_EXE = $(PROFILE_CS:.cs=.exe)
29 PROFILE_OUT = $(PROFILE_CS:.cs=.out)
33 rm -f $(PROFILE_EXE) $(PROFILE_OUT); \
34 $(MAKE) -s $(PROFILE_OUT) > /dev/null 2>&1 || ok=false; \
35 rm -f $(PROFILE_EXE) $(PROFILE_OUT); \
36 if $$ok; then :; else \
37 echo "*** The compiler '$(EXTERNAL_MCS)' doesn't appear to be usable." 1>&2 ; \
38 if test -f $(topdir)/class/lib/monolite/mcs.exe; then \
39 monolite_corlib_version=`$(with_mono_path_monolite) $(ILDISASM) $(topdir)/class/lib/monolite/mscorlib.dll | sed -n 's,.*mono_corlib_version.*int32.*(\([^)]*\)),\1,p'`; \
40 source_corlib_version=`sed -n 's,.*mono_corlib_version.*=[^0-9]*\([0-9]*\)[^0-9]*$$,\1,p' $(topdir)/class/corlib/System/Environment.cs`; \
41 case $$monolite_corlib_version in \
42 0x* | 0X*) monolite_corlib_version=`echo $$monolite_corlib_version | sed 's,^0[xX],,'`; \
43 monolite_corlib_version=`(echo 16; echo i; echo $$monolite_corlib_version; echo p) | dc` ;; esac ; \
44 if test x$$monolite_corlib_version = x$$source_corlib_version; then \
45 echo "*** Falling back to using pre-compiled binaries. Be warned, this may not work." 1>&2 ; \
46 ( cd $(topdir)/jay && $(MAKE) ); \
47 ( cd $(topdir)/mcs && $(MAKE) PROFILE=basic cs-parser.cs ); \
48 ( cd $(topdir)/class/lib/monolite/ && cp *.exe *.dll ../basic ); \
49 case `ls -1t $(topdir)/class/lib/basic/mcs.exe $(topdir)/mcs/cs-parser.cs | sed 1q` in \
50 $(topdir)/class/lib/basic/mcs.exe) : ;; \
51 *) sleep 5; cp $(topdir)/class/lib/monolite/mcs.exe $(topdir)/class/lib/basic ;; \
54 echo "*** The contents of your 'monolite' directory are out-of-date" 1>&2; \
55 echo "*** You may want to try 'make get-monolite-latest'" 1>&2; \
56 echo "*** The source has version $$source_corlib_version, but monolite has version $$monolite_corlib_version" 1>&2; \
59 echo "*** You need a C# compiler installed to build MCS (make sure mcs works from the command line)" 1>&2 ; \
60 echo "*** Read INSTALL.txt for information on how to bootstrap a Mono installation." 1>&2 ; \
63 $(PROFILE_CS): $(topdir)/build/profiles/basic.make
64 echo 'class X { static int Main () { return 0; } }' > $@
66 $(PROFILE_EXE): $(PROFILE_CS)
67 $(EXTERNAL_MCS) /out:$@ $<
69 $(PROFILE_OUT): $(PROFILE_EXE)
70 $(EXTERNAL_RUNTIME) $< > $@ 2>&1