[build] Roslyn switch
[mono.git] / runtime / Makefile.am
index 7fdb42da30f9b14b6a27af1ed0953777ae946d31..7af06ebeee507c8dbd07d0b1d21d414bd3175374 100644 (file)
@@ -48,8 +48,12 @@ if INSTALL_MONOTOUCH_TV
 build_profiles += monotouch_tv monotouch_tv_runtime
 endif
 
-if INSTALL_MOBILE_STATIC
-build_profiles += mobile_static
+if INSTALL_AOT_HYBRID
+build_profiles += aot_hybrid
+endif
+
+if INSTALL_AOT_ONLY
+build_profiles += aot_only
 endif
 
 if INSTALL_XAMMAC
@@ -88,7 +92,7 @@ clean-local:
 
 endif BUILD_MCS
 
-TEST_SUPPORT_FILES = $(tmpinst)/bin/mono $(tmpinst)/bin/ilasm $(tmpinst)/bin/mcs $(tmpinst)/bin/dmcs $(tmpinst)/bin/al2 $(tmpinst)/bin/al
+TEST_SUPPORT_FILES = $(tmpinst)/bin/mono $(tmpinst)/bin/ilasm $(tmpinst)/bin/csc $(tmpinst)/bin/al
 
 mcs-do-test-profiles:
        cd $(mcs_topdir) && $(MAKE) NO_DIR_CHECK=1 PROFILES='$(test_profiles)' test-profiles
@@ -109,10 +113,20 @@ cur_dir_cmd = pwd
 PLATFORM_PATH_SEPARATOR = :
 endif
 
+if INSTALL_AOT_ONLY
+#  ILASM.exe has features which a aot_only runtime will not support.
+#  It is invoked with an external mono when used in the runtime.
+#  We skip it here because otherwise it will fail to verify.
+AOT_ONLY_FILTER=grep -v ilasm
+else
+AOT_ONLY_FILTER=echo
+endif
+
 # Compile all assemblies with the verifier turned on. Code must be valid but not verifiable.
 # TODO it would be nice to split assemblies without unsafe code to use the verifier with verifiable mode.
 # Skip binary_reference_assemblies because they contain metadata only
 mcs-compileall: mono-wrapper etc/mono/config
+       export verifiable_files=`ls "$(mcs_topdir)/class/lib/$$profile/" | grep -E '\.(dll|exe)$$' | $(AOT_ONLY_FILTER)` ; \
        save_MONO_PATH=$$MONO_PATH; mcs_topdir=`cd $(mcs_topdir) && $(cur_dir_cmd)`; ok=:; \
        for profile in $(test_profiles); do \
          if [ "binary_reference_assemblies" = "$$profile" ]; then \
@@ -126,7 +140,9 @@ mcs-compileall: mono-wrapper etc/mono/config
                  MONO_PATH="$$mcs_topdir/class/lib/$$profile$(PLATFORM_PATH_SEPARATOR)$$save_MONO_PATH"; \
          fi; \
          export MONO_PATH; \
-         for i in $(mcs_topdir)/class/lib/$$profile/*.{dll,exe}; do \
+         for stub in $$verifiable_files; do \
+         i=$(mcs_topdir)/class/lib/$$profile/$$stub ; \
+         echo $$i ; \
                if [ ! -f $$i ] ; then \
                        continue ; \
                fi ;  \
@@ -153,25 +169,22 @@ CLEANFILES = etc/mono/config
 etc/mono/config: ../data/config Makefile $(symlinks)
        d=`cd ../support && pwd`; \
        sed 's,target="$$mono_libdir/libMonoPosixHelper$(libsuffix)",target="'$$d'/libMonoPosixHelper.la",' ../data/config > $@t
+       d=`cd ../mono/btls/build-shared && pwd`; \
+       sed 's,target="$$mono_libdir/libmono-btls-shared$(libsuffix)",target="'$$d'/libmono-btls-shared$(libsuffix)",' $@t > $@tt
        if test -z "$(libgdiplus_loc)"; then :; else \
-         sed 's,target="$(libgdiplus_install_loc)",target="$(libgdiplus_loc)",' $@t > $@tt; \
-         mv -f $@tt $@t; fi
-       mv -f $@t $@
+         sed 's,target="$(libgdiplus_install_loc)",target="$(libgdiplus_loc)",' $@tt > $@ttt; \
+         mv -f $@ttt $@tt; fi
+       mv -f $@tt $@
+       rm -f $@t
 
 $(tmpinst)/bin/mono: mono-wrapper etc/mono/config
        $(mkinstalldirs) $(tmpinst)/bin
        cp mono-wrapper $@
 
-$(tmpinst)/bin/mcs: $(tmpinst)/bin/mono Makefile
+$(tmpinst)/bin/csc: $(tmpinst)/bin/mono Makefile
        echo '#! /bin/sh' > $@ ; \
        r=`pwd`; m=`cd $(mcs_topdir) && pwd`; \
-       echo 'exec "'"$$r/$(tmpinst)/bin/mono"'" "'"$$m/class/lib/build/mcs.exe"'" "$$@"' >> $@ ; \
-       chmod +x $@
-
-$(tmpinst)/bin/dmcs: $(tmpinst)/bin/mono Makefile
-       echo '#! /bin/sh' > $@ ; \
-       r=`pwd`; m=`cd $(mcs_topdir) && pwd`; \
-       echo 'exec "'"$$r/$(tmpinst)/bin/mono"'" "'"$$m/class/lib/build/mcs.exe -sdk:4"'" "$$@"' >> $@ ; \
+       echo 'exec "'"$$r/$(tmpinst)/bin/mono"'" "'"$(CSC)"'" "$$@"' >> $@ ; \
        chmod +x $@
 
 $(tmpinst)/bin/ilasm: $(tmpinst)/bin/mono Makefile
@@ -180,12 +193,6 @@ $(tmpinst)/bin/ilasm: $(tmpinst)/bin/mono Makefile
        echo 'exec "'"$$r/$(tmpinst)/bin/mono"'" "'"$$m/ilasm/ilasm.exe"'" "$$@"' >> $@ ; \
        chmod +x $@
 
-$(tmpinst)/bin/al2: $(tmpinst)/bin/mono Makefile
-       echo '#! /bin/sh' > $@ ; \
-       r=`pwd`; m=`cd $(mcs_topdir) && pwd`; \
-       echo 'exec "'"$$r/$(tmpinst)/bin/mono"'" "'"$$m/class/lib/net_2_0/al.exe"'" "$$@"' >> $@ ; \
-       chmod +x $@
-
 $(tmpinst)/bin/al: $(tmpinst)/bin/mono Makefile
        echo '#! /bin/sh' > $@ ; \
        r=`pwd`; m=`cd $(mcs_topdir) && pwd`; \