[configure] Detect endianess and use mcs for big-endian systems.
authorMiguel de Icaza <miguel@gnome.org>
Wed, 30 Nov 2016 19:53:43 +0000 (14:53 -0500)
committerMiguel de Icaza <miguel@gnome.org>
Wed, 30 Nov 2016 19:53:55 +0000 (14:53 -0500)
Renames the flag to be more explicit on the intended purpose.  Also,
document the new configuration flag.

The default will probe the right compiler to use.

README.md
configure.ac

index 15e32dd886d074e63d6f8bb44d2871c34083325e..99e99427cc179696fd4672d883991a62bc136b47 100644 (file)
--- a/README.md
+++ b/README.md
@@ -462,6 +462,19 @@ disable it.
   * There are a number of runtime options to control this
 also, see the man page.
 
+* `--with-csc={roslyn,mcs,default}'
+
+  * Use this option to configure which C# compiler to use.  By default
+    the configure script will pick Roslyn, except on platforms where
+    Roslyn does not work (Big Endian systems) where it will pick mcs.
+
+    If you specify "mcs", then Mono's C# compiler will be used.  This
+    also allows for a complete bootstrap of Mono's core compiler and
+    core libraries from source.
+
+    If you specify "roslyn", then Roslyn's C# compiler will be used.
+    This uses currently uses Roslyn binaries.
+  
 * `--enable-nacl`
 
   * This configures the Mono compiler to generate code
index 36cdb61b5fb186c908f874d740c6dc043dcb0a08..962b70153a01688baf496c4ab7a84b9f2bc20a91 100644 (file)
@@ -758,9 +758,32 @@ fi
 AC_ARG_ENABLE(system-aot, [  --enable-system-aot  Enable the Ahead-Of-Time compilation of system assemblies during the build (on by default on some platforms)], enable_system_aot=$enableval, enable_system_aot=default)
 
 DISABLED_FEATURES=none
+csc_compiler=default
+endian=unknown
+AC_C_BIGENDIAN([endian=big],[endian=little],[endian=unknown])
+AC_MSG_CHECKING([CSharp compiler to use])
+AC_ARG_WITH(csc, [  --with-csc=mcs,roslyn,default      Configures the CSharp compiler to use],[
+   if test x$withval = xmcs; then
+       csc_compiler=mcs
+   elif test x$withval = xroslyn; then
+       csc_compiler=roslyn
+   elif test x$withval = xdefault; then
+       :
+   else
+       AC_MSG_ERROR([You must supply one of "mcs", "roslyn" or "default" to the --with-csc option])
+   fi
+],[csc_compiler=default])
 
-
-AC_ARG_WITH(mcs-compiler, [  --with-mcs-compiler=yes,no      Changes C# compiler used for compilation to be mcs instead of default csc],[],[with_mcs_compiler=no])
+if test $csc_compiler = default; then
+   if test $endian = big; then
+      csc_compiler=mcs
+   elif test $endian = little; then
+      csc_compiler=roslyn
+   else
+      csc_compiler=mcs
+   fi
+fi
+AC_MSG_RESULT($csc_compiler)
 
 #
 # Set the build profiles and options before things which use them
@@ -4403,7 +4426,7 @@ fi
 
     echo "CSC_LOCATION = $CSC" >> $srcdir/$mcsdir/build/config.make
 
-    if test "x$with_mcs_compiler" = "xyes"; then
+    if test $csc_compiler = mcs; then
       echo "MCS_MODE = 1" >> $srcdir/$mcsdir/build/config.make
     fi
 
@@ -4436,6 +4459,7 @@ fi
 
 echo "
         mcs source:    $mcsdir
+       C# Compiler:   $csc_compiler
 
    Engine:
        Host:          $host