<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 12/05/2014 17:07, Bryan Crotaz
      wrote:<br>
    </div>
    <blockquote cite="mid:6069171048379862684@unknownmsgid" type="cite">
      <meta http-equiv="content-type" content="text/html;
        charset=ISO-8859-1">
      <div>Will this make building on windows possible?<br>
        <br>
      </div>
    </blockquote>
    Bryan,<br>
    <br>
    I've written a walkthrough here for building 3.4.0 from the release
    tarball and 3.4.1 from git on Windows.<br>
    <br>
<a class="moz-txt-link-freetext" href="http://www.codeproject.com/Articles/769292/How-to-build-Mono-on-Windows">http://www.codeproject.com/Articles/769292/How-to-build-Mono-on-Windows</a><br>
    <br>
    Best regards, Alex<br>
    <br>
    <blockquote cite="mid:6069171048379862684@unknownmsgid" type="cite">
      <div>Bryan Crotaz
        <div>Silver Curve</div>
      </div>
      <div><br>
        On 12 May 2014, at 16:59, Miguel de Icaza <<a
          moz-do-not-send="true" href="mailto:miguel@xamarin.com">miguel@xamarin.com</a>>
        wrote:<br>
        <br>
      </div>
      <blockquote type="cite">
        <div>
          <div dir="ltr">Hey guys,
            <div><br>
            </div>
            <div>Another update: I am almost done with the work, only
              one cycle left to resolve and I will be able to land the
              changes.</div>
            <div><br>
            </div>
            <div>All the changes are on a branch on github.</div>
            <div><br>
            </div>
            <div>MIguel</div>
          </div>
          <div class="gmail_extra"><br>
            <br>
            <div class="gmail_quote">On Fri, May 2, 2014 at 4:27 PM,
              Miguel de Icaza <span dir="ltr"><<a
                  moz-do-not-send="true"
                  href="mailto:miguel@xamarin.com" target="_blank">miguel@xamarin.com</a>></span>
              wrote:<br>
              <blockquote class="gmail_quote" style="margin:0 0 0
                .8ex;border-left:1px #ccc solid;padding-left:1ex">
                <div dir="ltr">Hello guys,
                  <div><br>
                  </div>
                  <div>Just a follow up to my previous posting on this.</div>
                  <div><br>
                  </div>
                  <div>
                    I have managed to untangle this mess, and now I have
                    a clean build that does not involve overwriting
                    assemblies.</div>
                  <div><br>
                  </div>
                  <div>In addition to untangling this, I added
                    dependencies on all the assemblies involved in this
                    circular dependency mess so if you type "make" in
                    any of System, System.Xml, System.Security,
                    Mono.Security or System.Configuration, all the
                    dependencies will be properly built.</div>
                  <div><br>
                  </div>
                  <div>During the fixing, I noticed that our System.Xml
                    build must have broke a few eons ago, because there
                    was code in place to perform a 2-stage System.Xml
                    build as well (without and with System.Configuration
                    support), but nobody noticed that this had happened.
                      While I fixed this, it raises the obvious point
                    that nobody really cares (or likes)
                    System.Configuration.</div>
                  <div><br>
                  </div>
                  <div>While doing this review, I found a few other
                    places that also have these ugly loops, so I am
                    going to be fixing those as well.</div>
                  <span class="HOEnZb"><font color="#888888">
                      <div><br>
                      </div>
                      <div>Miguel</div>
                    </font></span></div>
                <div class="gmail_extra"><br>
                  <br>
                  <div class="gmail_quote">
                    <div class="">On Tue, Apr 22, 2014 at 3:53 PM,
                      Miguel de Icaza <span dir="ltr"><<a
                          moz-do-not-send="true"
                          href="mailto:miguel@xamarin.com"
                          target="_blank">miguel@xamarin.com</a>></span>
                      wrote:<br>
                    </div>
                    <div>
                      <div class="h5">
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <div dir="ltr">Hey guys,
                            <div><br>
                            </div>
                            <div>I was looking at making the MSBuild
                              system work, and during the process I have
                              encountered a few problems that we have in
                              our existing build system that are
                              problematic.</div>
                            <div>
                              <br>
                            </div>
                            <div>The problem is that System, System.XML
                              and System.Configuration are each defined
                              in terms of the other assemblies.   So we
                              gradually bring up each one of those
                              assemblies up by first compiling a stub
                              System, which we use to build System.XML
                              and System.Configuration.   Then we
                              rebuild System, this time referencing
                              System.XML and System.Configuration so we
                              can take a dependency on them, and so on.</div>
                            <div><br>
                            </div>
                            <div>To build a complete System.dll for a
                              particular profile (net_2_0, net_4_0, etc)
                              takes three steps: </div>
                            <div>
                              <ul>
                                <li>Core Build</li>
                                <li>Secondary Build:</li>
                                <ul>
                                  <li>Core Build + </li>
                                  <li>Defines: XML_DEP + SECURITY_DEP</li>
                                  <li>Refs: </li>
                                  <ul>
                                    <li>-r:PrebuiltSystem=../lib/Previous/System.dll </li>
                                    <li>-r:System.Xml.dll<br>
                                    </li>
                                    <li>-r:MonoSecurity=Mono.Security.dll</li>
                                  </ul>
                                </ul>
                                <li>Final Build:</li>
                                <ul>
                                  <li>Secondary Build + </li>
                                  <li>defines: -d:CONFIGURATION_DEP</li>
                                  <li>Refs:</li>
                                  <ul>
                                    <li>System.Configuration.dll</li>
                                  </ul>
                                </ul>
                              </ul>
                              <div>The above is what is required to
                                bring up System.</div>
                            </div>
                            <div><br>
                            </div>
                            <div>Our implementation has one major
                              problem: it overwrites the intermediate
                              files.  So the core build output is
                              overwritten by the secondary build, and
                              the secondary build is overwritten by the
                              final build.</div>
                            <div><br>
                            </div>
                            <div>It seems that historically, instead of
                              introducing temporary directories for each
                              stage, instead we hacked our way out of
                              it.   We introduced a
                              LIBRARY_USE_INTERMEDIATE_FILE whose sole
                              purpose was to work around the case where
                              Windows was actively telling us we were
                              doing something wrong (we were overwriting
                              a file that we were actively referencing!)</div>
                            <div><br>
                            </div>
                            <div>The above is also likely going to
                              prevent reliable parallel builds, or
                              probably means that we introduced some
                              gross hack to make the above work in
                              parallel.</div>
                            <div><br>
                            </div>
                            <div>I am going to try to fix this, but the
                              Makefile goop is pretty dense, and I might
                              fail.   I just figured I should share my
                              findings in case civilization comes to an
                              end and a future archeologist tries to
                              figure out why this was not working.</div>
                            <div><br>
                            </div>
                            <div>These are the defines that we use to
                              bring up System for each profile:</div>
                            <div><br>
                            </div>
                            <div>basic Profile:</div>
                            <div>
                              <p>basic: -d:NET_1_1 -d:NET_2_0
                                -d:BOOTSTRAP_BASIC -d:CONFIGURATION_2_0</p>
                              <p>basic: -d:NET_1_1 -d:NET_2_0
                                -d:BOOTSTRAP_BASIC -d:CONFIGURATION_2_0
                                -d:XML_DEP</p>
                              <p><br>
                              </p>
                              <p>Build Profile:</p>
                              <p>build: -d:NET_1_1 -d:NET_2_0 -d:NET_3_0
                                -d:NET_3_5 -d:NET_4_0
                                -d:CONFIGURATION_2_0</p>
                              <p>build: -d:NET_1_1 -d:NET_2_0 -d:NET_3_0
                                -d:NET_3_5 -d:NET_4_0
                                -d:CONFIGURATION_2_0  -d:XML_DEP</p>
                              <p><br>
                              </p>
                              <p>Net 2.0 profile:</p>
                              <p>net_2_0: -d:NET_1_1 -d:NET_2_0 
                                -d:CONFIGURATION_2_0</p>
                              <p>net_2_0: -d:NET_1_1 -d:NET_2_0 
                                -d:CONFIGURATION_2_0  -d:XML_DEP
                                -d:SECURITY_DEP </p>
                              <p>net_2_0: -d:NET_1_1 -d:NET_2_0 
                                -d:CONFIGURATION_2_0  -d:XML_DEP
                                -d:SECURITY_DEP -d:CONFIGURATION_DEP </p>
                              <p><br>
                              </p>
                              <p>Net 4.0 profile:<br>
                              </p>
                              <p>net_4_0: -d:NET_1_1 -d:NET_2_0
                                -d:NET_3_0 -d:NET_3_5 -d:NET_4_0
                                -d:CONFIGURATION_2_0</p>
                              <p>net_4_0: -d:NET_1_1 -d:NET_2_0
                                -d:NET_3_0 -d:NET_3_5 -d:NET_4_0
                                -d:CONFIGURATION_2_0 -d:XML_DEP 
                                -d:SECURITY_DEP</p>
                              <p>net_4_0: -d:NET_1_1 -d:NET_2_0
                                -d:NET_3_0 -d:NET_3_5 -d:NET_4_0
                                -d:CONFIGURATION_2_0 -d:XML_DEP 
                                -d:SECURITY_DEP  -d:CONFIGURATION_DEP</p>
                              <p><br>
                              </p>
                              <p>Net 4.5 profile:<br>
                              </p>
                              <p>net_4_5: -d:NET_1_1 -d:NET_2_0
                                -d:NET_3_0 -d:NET_3_5 -d:NET_4_0
                                -d:NET_4_5 -d:CONFIGURATION_2_0 </p>
                              <p>net_4_5: -d:NET_1_1 -d:NET_2_0
                                -d:NET_3_0 -d:NET_3_5 -d:NET_4_0
                                -d:NET_4_5 -d:CONFIGURATION_2_0
                                -d:XML_DEP  -d:SECURITY_DEP </p>
                              <p>net_4_5: -d:NET_1_1 -d:NET_2_0
                                -d:NET_3_0 -d:NET_3_5 -d:NET_4_0
                                -d:NET_4_5 -d:CONFIGURATION_2_0 
                                -d:XML_DEP -d:SECURITY_DEP
                                -d:CONFIGURATION_DEP </p>
                              <span><font color="#888888">
                                  <p><br>
                                  </p>
                                </font></span></div>
                            <span><font color="#888888">
                                <div>Miguel</div>
                              </font></span></div>
                        </blockquote>
                      </div>
                    </div>
                  </div>
                  <br>
                </div>
              </blockquote>
            </div>
            <br>
          </div>
        </div>
      </blockquote>
      <blockquote type="cite">
        <div><span>_______________________________________________</span><br>
          <span>Mono-devel-list mailing list</span><br>
          <span><a moz-do-not-send="true"
              href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a></span><br>
          <span><a moz-do-not-send="true"
              href="http://lists.ximian.com/mailman/listinfo/mono-devel-list">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a></span><br>
        </div>
      </blockquote>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Mono-devel-list mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a>
<a class="moz-txt-link-freetext" href="http://lists.ximian.com/mailman/listinfo/mono-devel-list">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>