<div dir="ltr">That's definitely good news.<div><br></div><div>As you seem to be in the depths of fundamental features implementations,</div><div>I suppose that it is not yet the right time to try to participate with small patches.</div><div>I think I can help with trying Windows/VC++ (last versions at least) and providing patches there.</div><div>Feel free to notify me to see if I can find time to experiment on Windows.</div><div><br></div><div>If I understand correctly for #1, working with the /showIncludes flag for VC++ should help (if it works as advertised).</div><div><br></div><div>Process management will certainly be a mess on Windows except if you have your own child-process</div><div>tracking protocol.</div><div><br></div><div><div class="gmail_extra"><br><div class="gmail_quote">On 29 February 2016 at 16:44, Boris Kolpackov <span dir="ltr"><<a href="mailto:boris@codesynthesis.com" target="_blank">boris@codesynthesis.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi Joėl,<br>
<span class=""><br>
Klaim - Joėl Lamotte <<a href="mailto:mjklaim@gmail.com">mjklaim@gmail.com</a>> writes:<br>
<br>
> What is missing to get build2 (including bpkg, brep etc) working<br>
> on windows and with visual studio compiler (assuming support of<br>
> only the last version of it, which have a compiler-only installable<br>
> package available).<br>
><br>
> What problems need to be solved?<br>
<br>
</span>This can be broken down into two, well, actually three parts:<br>
<br>
1. Add support for the VC++ compiler. Most of it should be straightforward<br>
   except, perhaps, the header dependency extraction part (equivalent to<br>
   the -M* functionality in GCC/Clang). We will probably first do this from<br>
   Linux as a cross-compiler since we can run cl.exe under Wine.<br>
<br>
2. Build the toolchain for Win32 using a C++ compiler with a reasonably<br>
   complete support for C++11/14 (GCC on MinGW). While this should be<br>
   mostly straightforward, there are a couple of platform-specific areas<br>
   (like process management) that will require work.<br>
<br>
3. Build the toolchain with VC++.<br>
<br>
#1 and #2 above can be done independently and in any order while #3<br>
requires #1.<br>
<br>
We don't want to rush into #1 because we want to work out the C++<br>
compilation logic using a single compiler interface (GCC/Clang). As<br>
soon as we also support VC++, we will have to make changes in two<br>
places.<br>
<br>
But we are going get into it sooner rather than later.<br>
<span class=""><br>
<br>
> Also there is no obvious list of things that are being worked on right<br>
> now and some kind of list of tasks that will be attacked soon (a roadmap<br>
> basically). Could you provide one?<br>
<br>
</span>The list exists, it's just not public (since nobody asked for it until<br>
now ;-)). In the build system we are currently working on what we call<br>
"high fidelity builds", i.e., detecting when things like compiler,<br>
options, etc., change and updating affected targets. There are also<br>
various minor improvements in bpkg and brep. Once this is done (probably<br>
in a week or so), we plan to release the next alpha version.<br>
<br>
You can also track the development in the git repo:<br>
<br>
<a href="https://git.build2.org/cgit/" rel="noreferrer" target="_blank">https://git.build2.org/cgit/</a><br>
<br>
As for a more general roadmap, here are the major items for the foreseeable<br>
future (as you can see, Windows/VC++ are at the top of the list):<br>
<br>
- Windows support<br>
<br>
- VC++ support<br>
<br>
- C compiler support<br>
<br>
- Parallel builds<br>
<br>
- Config initializer (ability to say 'config=gcc,release' instead of<br>
  'config.cxx=gcc config.cxx.coptions=-O3').<br>
<br>
- Library versioning<br>
<br>
- Dynamic module building/loading<br>
<br>
- C++ code fragments in buildfiles<br>
<span class=""><font color="#888888"><br>
Boris<br>
</font></span></blockquote></div><br></div></div></div>