<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    <div class="moz-cite-prefix">On 26/04/2014 10:37, Martin Thwaites
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAH07y4TOF2XR0G5s0sX=_OeVRxyCS9w_VstPAeYYsbGqgvC1Gg@mail.gmail.com"
      type="cite">
      <p dir="ltr">Thanks Edward,</p>
      <p dir="ltr">I'll have to wait until someone puts a guide together
        about developing on windows as I am seriously out of my depth. 
        I've spent about 2 evenings so far trying to get mono to build
        in cygwin, but coming up with various errors that googling isn't
        solving.</p>
    </blockquote>
    <br>
    Hi Martin,<br>
    <br>
    I've been trying to do the same thing for the  past few days as I
    can't find a binary release of Mono 3.4.0 for Windows and I want to
    build locally with 3.4.0 to remote debug on my ARM targets which are
    also running 3.4.0.<br>
    <br>
    There seem to be a variety of tutorials out there which are all
    helpful but none has quite worked for me.<br>
    <br>
    I am working on some documentation at present, which I'm going to
    upload to a wiki somewhere or other when I have it finished and
    polished up.<br>
    <br>
    I've just seen your email though, so these work-in-progress notes
    may be of help to you now. <br>
    <br>
    If they are of help I'd appreciate your feedback with what worked,
    any corrections/clarifications/additions so I can improve this.<br>
    <br>
    Thanks, Best Regards,<br>
    <br>
    Alex<br>
    <br>
    <hr size="2" width="100%"><br>
    Building Mono on Win32/Cygwin<br>
    =============================<br>
    <br>
    (1) Install Cygwin<br>
    <br>
    Run setup-x86.exe to install Cygwin   -   
    <a class="moz-txt-link-freetext" href="http://www.cygwin.com/setup-x86.exe">http://www.cygwin.com/setup-x86.exe</a><br>
    <br>
    Follow instructions from "Compiling Mono on Windows" to install
    needed packages<br>
    <br>
    <a class="moz-txt-link-freetext" href="http://www.mono-project.com/Compiling_Mono_on_Windows">http://www.mono-project.com/Compiling_Mono_on_Windows</a><br>
    <br>
    autoconf<br>
    automake<br>
    bison<br>
    gcc-core<br>
    gcc-g++<br>
    mingw-gcc<br>
    libtool, <br>
    make<br>
    python, <br>
    <br>
    Also nice to haves: wget, zip patch, openssh, vim<br>
    <br>
    NOTE: In addition to this you will need the following packages as
    per these instructions<br>
    <br>
<a class="moz-txt-link-freetext" href="http://www.codeproject.com/Articles/19575/Building-Mono-on-Windows-the-final-battle">http://www.codeproject.com/Articles/19575/Building-Mono-on-Windows-the-final-battle</a><br>
    <br>
    gettext-devel<br>
    intltool<br>
    libiconv<br>
    pkg-config<br>
    <br>
    2) Install working Mono binaries<br>
    <br>
    Use the installation executable from go-mono.com, at time of
    writing: <br>
    <br>
<a class="moz-txt-link-freetext" href="http://download.mono-project.com/archive/3.2.3/windows-installer/mono-3.2.3-gtksharp-2.12.11-win32-0.exe">http://download.mono-project.com/archive/3.2.3/windows-installer/mono-3.2.3-gtksharp-2.12.11-win32-0.exe</a><br>
    <br>
    For me this gives a working Mono in C:\Program Files
    (x86)\Mono-3.2.3 on a Windows 8.1 / x64 host<br>
    <br>
    (3) Grab new Mono sources<br>
    <br>
    (a) From source tarball<br>
    <br>
    (i) Download and Extract<br>
    <br>
    Download the tarball you wish to use from
    <a class="moz-txt-link-freetext" href="http://download.mono-project.com/sources/mono/">http://download.mono-project.com/sources/mono/</a><br>
    <br>
    NB. I have had different build issues with different Mono releases
    at different times, on differing platforms, <br>
    to paraphrase Mrs Gump, "Mono is like a box of chocolates, you never
    know what you are going to get"<br>
    <br>
    At the time of writing we are using 3.4.0:
    <a class="moz-txt-link-freetext" href="http://download.mono-project.com/sources/mono/mono-3.4.0.tar.bz2">http://download.mono-project.com/sources/mono/mono-3.4.0.tar.bz2</a><br>
    <br>
    Do not extract the source tarball with native Window tools as this
    appears to affect line endings, which will cause problems.<br>
    <br>
    To extract within Cygwin first run the Cywgin environment (Cygwin
    terminal on your start bar) and extract with,<br>
    <br>
    tar xjvf mono-3.4.0.tar.bz2<br>
    <br>
    This will give you a mono-3.4.0 directory<br>
    <br>
    (ii) Mount destination<br>
    <br>
    Create a destination folder, where we are going to install the newly
    built Mono, in this case C:\Mono-3.4.0<br>
    <br>
    Copy across files from your existing installation (e.g. Mono-3.2.3)
    to the 3.4.0 folder to give us a baseline<br>
    <br>
    NOTE: It is important not to have spaces in the path as otherwise
    the Mono build will fail, so we're putting this in the root of C:
    for this example<br>
               (From my reading it is also likely to be important not to
    have Windows user names with spaces in them, so a heads-up there...)<br>
    <br>
    Mount this folder as /usr/local with<br>
    <br>
    mount "C:\Mono-3.4.0" /usr/local<br>
    <br>
    As a check you can 'ls /usr/local' which should show the files that
    you have in C:\Mono-3.4.0<br>
    <br>
    (iii) Autogen the build<br>
    <br>
    ./autogen.sh --prefix="C:\Mono-3.4.0" --with-preview=yes<br>
    <br>
    (iv) Configure the build<br>
    <br>
    ./configure --host=i686-pc-mingw32<br>
    <br>
    At the end of this process, with the defaults, you should see
    something like<br>
    <br>
            mcs source:    mcs<br>
    <br>
       Engine:<br>
            GC:            sgen and bundled Boehm GC with typed GC and
    parallel mark<br>
            TLS:           pthread<br>
            SIGALTSTACK:   no<br>
            Engine:        Building and using the JIT<br>
            oprofile:      no<br>
            BigArrays:     no<br>
            DTrace:        no<br>
            LLVM Back End: no (dynamically loaded: no)<br>
    <br>
       Libraries:<br>
            .NET 2.0/3.5:  yes<br>
            .NET 4.0:      yes<br>
            .NET 4.5:      yes<br>
            MonoDroid:     no<br>
            MonoTouch:     no<br>
            Xamarin.Mac:   no<br>
            JNI support:   no<br>
            libgdiplus:    assumed to be installed<br>
            zlib:          system zlib<br>
    <br>
    (v) We're ready to build mono<br>
    <br>
    You can go ahead and try 'make' now but at the time of writing
    (03/05/2014) there is a problematical interaction between the Cygwin
    headers and the Mono build<br>
    <br>
    This will lead to an error along the lines of,<br>
    <br>
    /usr/i686-pc-mingw32/sys-root/mingw/include/ddk/ntapi.h:49:15:
    error: conflicting types for 'PEXECUTION_STATE'<br>
    In file included from
    /usr/i686-pc-mingw32/sys-root/mingw/include/windows.h:62:0,<br>
                     from
    /usr/i686-pc-mingw32/sys-root/mingw/include/winsock2.h:40,<br>
                     from ../../mono/io-layer/io-layer.h:24,<br>
                     from ../../mono/metadata/domain-internals.h:15,<br>
                     from ../../mono/metadata/metadata-internals.h:8,<br>
                     from ../../mono/metadata/class-internals.h:10,<br>
                     from ../../mono/metadata/object-internals.h:8,<br>
                     from process.c:16:<br>
    <br>
    A workaround is to edit the Cygwin header file ntapi.h (e.g.
    C:\cygwin\usr\i686-pc-mingw32\sys-root\mingw\include\ddk\ntapi.h) to
    rename PEXECUTION_STATE to PEXECUTION_STATE_KLUDGE, say.<br>
    <br>
    Then,<br>
    <br>
    make<br>
    <br>
    (this will take some time )<br>
    <br>
    (vi) Install mono<br>
    <br>
    At the time of writing (04/05/2014) there is a missing file in the
    Mono 3.4.0 release tarball. This causes installation failure.<br>
    <br>
    ref:
<a class="moz-txt-link-freetext" href="http://stackoverflow.com/questions/22844569/build-error-mono-3-4-0-centos">http://stackoverflow.com/questions/22844569/build-error-mono-3-4-0-centos</a><br>
    <br>
    To add the missing file create a new file in 
    mcs/tools/xbuild/targets/ called Microsoft.Portable.Common.targets<br>
    <br>
    This should contain the following<br>
    <br>
    <Project
    xmlns=<a class="moz-txt-link-rfc2396E" href="http://schemas.microsoft.com/developer/msbuild/2003">"http://schemas.microsoft.com/developer/msbuild/2003"</a>><br>
    <Import Project="..\Microsoft.Portable.Core.props" /><br>
    <Import Project="..\Microsoft.Portable.Core.targets" /><br>
    </Project><br>
    <br>
    Then ensure that /usr/local is correctly mounted as per 3(b)(ii) and
    run<br>
    <br>
    make install<br>
    <br>
    (vii) Fix "missing" mono.exe<br>
    <br>
    The installation removes the existing mono.exe from the
    C:\Mono-3.4.0\bin directory and does not seem to copy across a new
    version<br>
    <br>
    Within the Cygwin environment there is a "mono.exe" which is a
    symbolic link to mono-sgen.exe, which is rebuilt.<br>
    <br>
    So, assuming that under Win32 the mono.exe is a stub executable
    (which it seems to be as it is small) it should be reasonable to
    copy  across mono.exe from the older mono installation<br>
    <br>
    e.g. Copy C:\Program Files (x86)\Mono-3.2.3\bin\mono.exe to
    C:\Mono-3.4.0\bin<br>
    <br>
    (vii) Check installation<br>
    <br>
    Open a Windows cmd box, cd to C:\Mono-3.4.0 and run<br>
    <br>
    mono --version<br>
    <br>
    This should show something like<br>
    <br>
    Mono JIT compiler version 3.4.0 (tarball)<br>
    Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors.
    <a class="moz-txt-link-abbreviated" href="http://www.mono-project.com">www.mono-project.com</a><br>
            TLS:           normal<br>
            SIGSEGV:       normal<br>
            Notification:  Thread + polling<br>
            Architecture:  x86<br>
            Disabled:      none<br>
            Misc:          softdebug<br>
            LLVM:          supported, not enabled.<br>
            GC:            sgen<br>
    <br>
    (viii) Enable Xamarin Studio to add the new Mono runtime<br>
    <br>
    If you to to Xamarin Tools->Options and try to add the Mono-3.4.0
    folder it will fail to detect Mono.<br>
    <br>
    This is because of the presence of an installed symlink file,
    bin\mono<br>
    <br>
    So, for example, delete the file C:\Mono-3.4.0\bin\mono and you will
    then be able to add the runtime to Xamarin Studio<br>
    <br>
    There is an archive of the binaries resulting from my build here,<br>
    <br>
    <a class="moz-txt-link-freetext" href="http://www.dynamicdevices.co.uk/downloads/Mono-3.4.0.zip">http://www.dynamicdevices.co.uk/downloads/Mono-3.4.0.zip</a><br>
    <br>
    NOTE: That Mono 3.x fails to build projects for me with recent
    Xamarin Studio builds giving the error<br>
    <br>
    Build failed. Could not find type
    'System.Globalization.SortVersion'.<br>
    <br>
    This appears to be addressed in this commit which is not present in
    3.4.0<br>
    <br>
<a class="moz-txt-link-freetext" href="http://stackoverflow.com/questions/23448795/build-failed-could-not-find-type-system-globalization-sortversion">http://stackoverflow.com/questions/23448795/build-failed-could-not-find-type-system-globalization-sortversion</a><br>
    <br>
    The workaround is to use an older version of Xamarin Studio as
    discussed here<br>
    <br>
<a class="moz-txt-link-freetext" href="http://stackoverflow.com/questions/23448795/build-failed-could-not-find-type-system-globalization-sortversion">http://stackoverflow.com/questions/23448795/build-failed-could-not-find-type-system-globalization-sortversion</a><br>
    <br>
    i.e. Download Xamarin Studio 4.2.3 from your account at Xamarin.com
    with "view all versions"<br>
    <br>
    NOTE: You may then get a build error about UNC paths<br>
    <br>
    error : Error building target GetReferenceAssemblyPaths: UNC paths
    should be of the form \\server\share.<br>
    <br>
    This appears to relate to extra \\'s in configuration files as
    discussed here<br>
    <br>
<a class="moz-txt-link-freetext" href="http://stackoverflow.com/questions/19933266/error-building-c-sharp-solution-using-xbuild-mono">http://stackoverflow.com/questions/19933266/error-building-c-sharp-solution-using-xbuild-mono</a><br>
    <br>
    The workaround is to go to project options and unback "Use MSBuild
    engine" at which point you will be able to compile and debug
    applications<br>
    <div class="moz-signature">
      <div class="preview"> </div>
      <br>
      (b) From SVN  - TBD<br>
      <br>
    </div>
  </body>
</html>