Skip to content

Commit

Permalink
[Build] better guess for the C# compiler available
Browse files Browse the repository at this point in the history
There are some distributions that bundle only a limited set of class
libraries to be able to meet size requirements better. Such is the case
of Ubuntu, which normally ships with only the subset compiled for the
4.0 version of the runtime.

In this case, the user may install the default Mono SDK packages when
asked by the configure script, which only includes the 4.0 compiler by
default (dmcs). At that point, banshee can already be compiled, but
the configure script would insist in requiring a 2.0 compiler. If the
user installs it, compiles Banshee and launches the "run" target, she
may get a runtime exception because of a runtime version mismatch, like
in bgo#675113.

This problem is commonly known, and there is a clear workaround for it:
http://orangesquash.org.uk/~laney/blog/posts/2011/10/mono-gotcha/
However it poses a small barrier of entry for new developers that try
to compile and run banshee from sources for the first time.

Now the configure script is smarter and tries to guess harder if there
is a C# compiler, even one that targets a higher version of the runtime
than the one that is required to compile banshee.

This possibility is only enabled in case the Mono version found is 2.8
or higher, because Mono 2.6.1 included the 4.0 profile only as a
"preview" [1] and might not be stable enough.

[1] http://www.mono-project.com/Release_Notes_Mono_2.6.4#C.23_Language

(commit taken from Banshee 3d3f7899465ee46e634b53c236401f612dac1492)
  • Loading branch information
knocte authored and meebey committed Oct 9, 2013
1 parent 1d0ff7d commit 892867b
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions mono.m4
Expand Up @@ -8,6 +8,20 @@ AC_DEFUN([SHAMROCK_FIND_MONO_2_0_COMPILER],
SHAMROCK_FIND_PROGRAM_OR_BAIL(MCS, gmcs)
])

AC_DEFUN([SHAMROCK_FIND_MONO_2_0_COMPILER_OR_HIGHER],
[
if pkg-config --atleast-version=2.8 mono; then
SHAMROCK_FIND_PROGRAM(MCS, dmcs)
fi
if test "x$MCS" = "x" ; then
SHAMROCK_FIND_PROGRAM(MCS, gmcs)
fi
if test "x$MCS" = "x" ; then
AC_MSG_ERROR([You need to install 'dmcs' or 'gmcs'])
fi
])

AC_DEFUN([SHAMROCK_FIND_MONO_RUNTIME],
[
SHAMROCK_FIND_PROGRAM_OR_BAIL(MONO, mono)
Expand Down

0 comments on commit 892867b

Please sign in to comment.