I’ll be honest with you Stephen, I’ve spent waaay too much time on this already. I honestly think you need to configure your repo to use the same folder names that Microsoft uses (along with all the packages that are relevant for your build!!) And there’s another important aspect you need to consider:-
When someone downloads Microsoft’s repo, the first thing they need to do is to run a batch file which sets things up correctly (for example it downloads a version of vcpkg.exe that’s known to work with the downloaded repo). The batch file is called bootstrap-vcpkg.bat and once again, it’s absent from your repo. So you need to consider adding that and the doing whatever’s necessary to make it work. Once you’ve managed to get it all working again, I’ll be happy to give it another try.
In fact there’s another important aspect which @x42 and @paul need to consider…
Even if you make this all work, it’s by no means a quick shoe-in for potential new developers. For Microsoft’s official repo, the various packages often depend on other packages which we don’t need in Ardour. So to build everything takes a very long time. I’ve built Microsoft’s repo here up to glibmm and even on a fast machine, it took over 7 hours ![]()
Based on your feedback, I’ll incorporate downloading vcpkg and doing what’s needed to that bootstrap file as well. Vcpkg by itself should handle getting any dependencies’ dependencies. Personally, the one-time cost of using vcpkg feels low (Except for maybe time and disk space), but when it works, it doesn’t need to be rerun.
If any file/dependency version changes down the line, I assume only the baseline commit string can be optionally edited by whoever has a copy of vcpkg.json, and only the packages that are affected will rebuild when running vcpkg install.
Do I think a script could be made to install all dependencies, instead of relying on vcpkg for most of them, + a script? Yes. Am I going to look into that? Unlikely.
Added the python script to build the remaining deps if everything from vcpkg.json successfully installed. Note that the script also handles making a copy of pkgconf.exe as pkg-config.exe, and the renumbering of jack.pc’s version to 1.9.22, and the creation of aubio’s .pc files.
Also added boost-uuid to the file as a library to be installed, but it’s for building rather than passing configuration.
(Note that The python script is yet to incorporate downloading and installing vcpkg, and run the install command by itself.)
There’s also a small inconvenience that some of the .pc files’ prefixes are hardcoded paths instead of prefix=${pcfiledir}/…/… , while the chances of one moving those dependencies around is low, that is a current limitation that will need a little fix.
TLDR: If installing with vcpkg works, the script should be good enough (except for maybe including pkg-config.exe in your path, and PKG_CONFIG_PATH before running configure for Ardour), though the MSVC version line might give an error.
Someone other than me or @John_E please try installing. Feedback to confirm whether the libffi error is more widespread, and if anything else gives errors, or if the whole thing works, is needed.
Thanks to ccache it’s been a while since I’ve rebuilt the whole stack from scratch, but on other platforms it’s a 45 min - 3 hour task (depending on CPU and disk speed).
Well in any case, Stephen’s repo is considerably simpler than Microsoft’s so with any luck, it might not be a problem.
Were you talking about building the stack with vcpkg? If you’ve done that in the past it’d be worthwhile if you could try it with Stephen’s repo and let us know how it goes.
no, I refer to the build stack we use for official binaries (mingw cross compile on Linux).
I never compiled Ardour or its dependencies on Windows.
A big part of the time for vcpkg builds are that they rely on libraries that we don’t need. For example, atk in vcpkg depends on libgettext (which I don’t think we build??) I know we build atk ourselves these days but as an example, gettext alone takes over an hour to build ![]()
