<div dir="ltr">Any version of git can be used.  Use the following to make sure the line endings are correct by using core.autocrlf=input.<div><br></div><div>git clone <a href="https://github.com/mono/mono.git">https://github.com/mono/mono.git</a> --config core.autocrlf=input</div>
<div><br></div><div>With Cygwin, there is one change to make to etc/fstab before starting a build.  You need to add noacl to the cygdrive mount.  Without this change, any files created by a Win32 process outside of Cygwin will result in Cygwin having no permissions to do anything with the files.</div>
<div><a href="http://georgik.sinusgear.com/2012/07/14/how-to-fix-incorrect-cygwin-permission-inwindows-7/">http://georgik.sinusgear.com/2012/07/14/how-to-fix-incorrect-cygwin-permission-inwindows-7/</a><br></div><div><br>
</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 5 May 2014 12:20, Alex J Lennon <span dir="ltr"><<a href="mailto:ajlennon@dynamicdevices.co.uk" target="_blank">ajlennon@dynamicdevices.co.uk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    Ned,<br>
    <br>
    <div>On 04/05/2014 23:11, Edward Ned Harvey
      (mono) wrote:<br>
    </div>
    <blockquote type="cite">
      <blockquote type="cite">
        <pre>From: <a href="mailto:mono-devel-list-bounces@lists.ximian.com" target="_blank">mono-devel-list-bounces@lists.ximian.com</a> [<a href="mailto:mono-devel-list" target="_blank">mailto:mono-devel-list</a>-
<a href="mailto:bounces@lists.ximian.com" target="_blank">bounces@lists.ximian.com</a>] On Behalf Of Miguel de Icaza

To build Mono on Windows, you will need to use Cygwin to build you entire
stack.   Cygwin is a Unix-on-Windows system that will let you properly build
Mono.
</pre>
      </blockquote>
      <pre>Any pointers on how to get that to work?  I am nothing, if not helpful at documenting some process and then sharing it for others - I was motivated to get this working, I spent about a day on it last Sunday, and failed.  I never got a successful build.

I tried cygwin 32 bit, 64 bit...  I tried git checkout with sourcetree somewhere on C: but I found there were line endings problems, and I found some things on the internet suggest you need to use cygwin binaries (install cygwin git) to checkout to a cygwin mount (for example in your home directory) and in fact, I found that solved the line endings problem, so I think that was a good move...  </pre>

    </blockquote>
    <br>
    This is where I arrived at yesterday. I now have Mono compiled on
    Windows from the 3.4.0 release tarball and yesterday's Git master
    commit.<br>
    <br>
    NB. There was a problem with my previous set of instructions.
    /usr/local must not be mounted during the build or it seems to
    result in libiconv errors. Instead it should be mounted just before
    the install.<br>
    <br>
    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 href="http://www.cygwin.com/setup-x86.exe" target="_blank">http://www.cygwin.com/setup-x86.exe</a><br>
    <br>
    Follow instructions from "Compiling Mono on Windows" to install
    needed packages<br>
    <br>
    <a href="http://www.mono-project.com/Compiling_Mono_on_Windows" target="_blank">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>
    Nice to have's<br>
    <br>
    + wget, zip patch, openssh, vim<br>
    <br>
    NOTE: In addition to this you will need the following as per these
    instructions<br>
    <br>
<a href="http://www.codeproject.com/Articles/19575/Building-Mono-on-Windows-the-final-battle" target="_blank">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 <a href="http://go-mono.com" target="_blank">go-mono.com</a>, at time of
    writing: <br>
    <br>
<a href="http://download.mono-project.com/archive/3.2.3/windows-installer/mono-3.2.3-gtksharp-2.12.11-win32-0.exe" target="_blank">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>
    <br>
    (3) Grab new Mono sources<br>
    <br>
    <hr size="2" width="100%"><br>
    (a) From source tarball<br>
    ====================<br>
    <br>
    (i) Download and Extract<br>
    <br>
    Download the tarball you wish to use from
    <a href="http://download.mono-project.com/sources/mono/" target="_blank">http://download.mono-project.com/sources/mono/</a><br>
    <br>
    At the time of writing we are using 3.4.0:
    <a href="http://download.mono-project.com/sources/mono/mono-3.4.0.tar.bz2" target="_blank">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) Create baseline 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>
    (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>
    NOTE: There seems to be an intermittent issue linking against
    libiconv (even when present) relating to shared libraries.<br>
    <br>
    If you see this try,<br>
    <br>
    make clean<br>
    make<br>
    <br>
    (vi) Install mono<br>
    <br>
    Mount your destination folder under Cygwin as /usr/local with<br>
    <br>
    mount "C:\Mono-3.4.0" /usr/local<br>
    <br>
    NOTE: Do not have /usr/local mounted when performing the previous
    make step or you will see the following build error:<br>
                *** Warning: Trying to link with static lib archive
    /usr/local/lib/libiconv.a.<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>
    ...<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 href="http://stackoverflow.com/questions/22844569/build-error-mono-3-4-0-centos" target="_blank">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 href="http://schemas.microsoft.com/developer/msbuild/2003" target="_blank">"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 <br>
    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 href="http://www.mono-project.com" target="_blank">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 href="http://www.dynamicdevices.co.uk/downloads/Mono-3.4.0.zip" target="_blank">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 href="http://stackoverflow.com/questions/23448795/build-failed-could-not-find-type-system-globalization-sortversion" target="_blank">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 href="http://stackoverflow.com/questions/23448795/build-failed-could-not-find-type-system-globalization-sortversion" target="_blank">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 href="http://stackoverflow.com/questions/19933266/error-building-c-sharp-solution-using-xbuild-mono" target="_blank">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>
    <br>
    <hr size="2" width="100%"><br>
    (b) From Git repository<br>
    ====================<br>
    <br>
    (i) Checkout Mono using Git within Cygwin. Don't use Subversion as I
    have seen build problems which I think are because sub-modules are
    not checked out with Subversion.<br>
    <br>
    e.g.<br>
    <br>
    cd c:/<br>
    git clone <a>git://github.com/mono/mono.git</a><br>
    <br>
    NOTE: We are working with Git rev 
    47db8f756f409cd56d207b550ead42a156ad5a01 at present<br>
    <br>
    (This will take some time and checkout to a mono folder)<br>
    <br>
    (ii) <br>
    <br>
    From here the steps are similar to those above. i.e. Follow the
    above steps in (a) (ii) - (v) to create a baseline, autogen,
    configure and make<br>
    <br>
    NOTE: Ensure /usr/local is not mounted for the build, as discussed
    above<br>
    <br>
    NOTE: As in the build instructions for the Mono 3.4.0 source
    archive, above, you will need to rename the Cygwin header variable
    definition PEXECUTION_STATE in the file
    C:\cygwin\usr\i686-pc-mingw32\sys-root\mingw\include\ddk\ntapi.h to
    something else e.g. PEXECUTION_STATE_KLUDGE.<br>
    <br>
    e.g. With baseline copy of older mono in C:\Mono-3.4.0<br>
    <br>
    ./autogen.sh --prefix="C:\Mono-3.4.0" --with-preview=yes<br>
    ./configure --host=i686-pc-mingw32<br>
    make<br>
    <br>
    (this will take some time)<br>
    <br>
    mount "C:\Mono-3.4.0" /usr/local<br>
    make install<br>
    <br>
    Copy across mono.exe to bin folder from older installation<br>
    Delete mono file in bin folder<br>
    <br>
    There's an archive of binaries for 3.4.10-master-47db8f7 here<br>
    <br>
    <hr size="2" width="100%"><br>
  </div>

<br>_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
<br></blockquote></div><br></div>