MSVC Dependencies: Update [As of July 2026]

Try figuring out where the installdir and cachedir are for what you installed, by running xmake require --info libwebsockets from where the xmake script is run.

See what shows up for -> cachedir: and -> installdir:. Go to both paths until the folder “packages”, and manually clear them.

Strangely enough, launching a conventional Windows terminal as Administrator and typing xrepo remove --all -y seemed to work. What’s weird is that when I then type xmake f -c it seems to have started a full build. Is that right?

Right. You will get an error when it reaches glibmm and tries building that, but at least you would’ve installed about all but 7 or so packages by then. I expect within a week I’ll have the glib issue and libintl issue sorted out.

It’s building now but I’m not convinced it’s building from source. I’m still not seeing any object files, nor source files (except that for some reason it seems to create lots of files called main.c / main.cpp / foo.c / foo.cpp / foo.h and test.h )

And it’s already got to the stage of building boost after around only 6 minutes?!?

Okay I’ve tracked down the source files and object files. They got created on my C: drive unfortunately :frowning:

And yes, it bailed out at glibmm

I managed to configure PowerShell to run the xrepo script so you might as well add it to your instructions. Before starting (for the very first time) users need to type the following in PowerShell:-

Get-ExecutionPolicy -List

If CurrentUser isn’t set to RemoteSigned they need to close PowerShell, re-open it as Administrator and type:-

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Then close PowerShell and re-open as a normal user and check again. If users try to run xmake from a normal Windows terminal, certain commands might look like they’re working but in fact they won’t be doing anything.

Anyway, it looks like I’m properly configured now so let me know once you’ve fixed the glibmm issue and I’ll try again.

You would have to run xrepo update-repo first, but the glib .pc file issue is now fixed. What’s mainly remaining is the libintl issue.

Theoretically, once you’re done installing everything you could copy an existing group of libintl .lib/.dll/.h files and paste them in place of what xrepo installed, if you want to test building ardour without some symbol errors. Meanwhile I’ll have to get libintl fixed on xrepo.

Hi Stephen. before I go too much further…

I updated the repo and tried again but I’m still getting a failure when it comes to glibmm. These are the messages I see:-

  => install glibmm 2.66.8 .. failed
ninja: Entering directory `C:/Users/JohnE/AppData/Local/.xmake/cache/packages/2607/g/glibmm/2.66.8/source/build_a623ce5e'
[1/280] Compiling C++ object glib/glibmm/glibmm-2.4- .dll.p/.._.._untracked_glib_glibmm_nodetree.cc.obj
[2/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_bytes.cc.obj
[3/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_date.cc.obj
[4/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_regex.cc.obj
[5/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_optionentry.cc.obj
[6/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_iochannel.cc.obj
[7/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_binding.cc.obj
[8/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_module.cc.obj
[9/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_markup.cc.obj
[10/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_miscutils.cc.obj
[11/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_keyfile.cc.obj
[12/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_wrap_init.cc.obj
[13/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_datetime.cc.obj
[14/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_bytearray.cc.obj
[15/280] Compiling C++ object glib/glibmm/glibmm-2.4-1.dll.p/.._.._untracked_glib_glibmm_enums.cc.obj
[16/280] Compiling Windows resource glib/glibmm/glibmm.rc
if you want to get more verbose errors, please see:
  -> C:\Users\JohnE\AppData\Local\.xmake\cache\packages\2607\g\glibmm\2.66.8\installdir.failed\logs\install.txt

The error in glibmm’s error log reads:- LNK1181: cannot open input file ‘intl.lib’ so maybe that does need fixing first?

It got fixed as of Update glib, rectify .pc patching (#10410) · xmake-io/xmake-repo@84ea9bc · GitHub. Maybe you have to remove the glib that you installed, or just remove everything with xrepo remove glib, or remove everything with xrepo remove all -y, then rebuild (everything).

The underlying cause of the errors you have right now is glib’s .pc file.


Also you can choose to see more logs by adding -v, like xmake f -c -v, in case you’re interested in the terminal having more logs.

Actually I meant to ask if you could check that at your end? Now that I’ve figured out how to run xrepo in PowerShell I’ve realised that it doesn’t seem to be doing anything here. If I run it without -y at the end, it successively gives me lists of things to remove (asking me to confirm them individually) but whether I use -y or not, nothing ever seems to get deleted. i.e. at the end of the process I still have all the same files I had before it started :confounded:

Or does it only delete some file contents somewhere, rather than deleting the files themselves?

Surely that’s a bug… I tested on my end, making sure I got everything from xrepo and not any modified local files, it worked.

PS C:\ADeps4\TheFile> xrepo remove --all -y
PS C:\ADeps4\TheFile> xmake f -c
checking for platform ... windows (x64)
checking for Microsoft C/C++ Compiler (x64) ... ok
checking for Microsoft Visual Studio (x64) version ... 2026
note: install or modify (m) these packages (pass -y to skip confirm)?
in xmake-repo:
  -> python 3.14.3 [host, binary, runtimes:"MD", shared:y, from:fontconfig,meson,meson#1,libsndfile, license:PSF]
  -> meson 1.11.1 [host, shared:y, from:glibmm,sord,serd,pango,cairomm,lilv,rubberband,zix,sratom,libsigcplusplus,pangomm,pkgconf,glib,lv2,fribidi,harfbuzz,pixman,cai ..)
  -> ninja v1.13.2 [host, shared:y, from:harfbuzz,pixman,serd,cairo,cmake,cairomm,lilv,rubberband,zix,sratom,libsigcplusplus,pangomm,pkgconf,glib,lv2,fribidi,glibmm,so ..)
  -> pkgconf 2.5.1 [host, shared:y, from:zix,harfbuzz,fontconfig,glib,cairo,aubio,freetype,sord,lilv,sratom]
  -> gperf 3.2.1 [host, shared:y, license:GPL-3.0-or-later]
  -> cmake 4.3.4 [host, shared:y, from:fftw,pcre2,wingetopt,libwebsockets,libxml2,vamp-plugin-sdk,aubio,libarchive,lz4,expat,freetype,libsndfile,boost,zstd,libusb,li ..)
  -> libcurl 8.21.0 [runtimes:"MD", shared:y, license:MIT]
  -> libogg v1.3.6 [runtimes:"MD", shared:y, from:libflac,libvorbis,libsndfile, license:BSD]
  -> libflac 1.5.0 [runtimes:"MD", shared:y, from:libsndfile, license:BSD]
  -> libopus v1.5.2 [runtimes:"MD", shared:y, from:libsndfile, license:BSD-3-Clause]
  -> libvorbis 1.3.7 [runtimes:"MD", shared:y, from:libsndfile, license:BSD-3]
  -> libsndfile 1.2.2 [runtimes:"MD", shared:y, license:LGPL-2.1]
  -> zlib v1.3.2 [runtimes:"MD", shared:y, from:libpng,cairo,libarchive,freetype,taglib,glib, license:zlib]
  -> bzip2 1.0.8 [runtimes:"MD", shared:y, from:libarchive]
  -> lz4 v1.10.0 [runtimes:"MD", shared:y, from:libarchive, license:BSD-2-Clause]
  -> zstd v1.5.7 [runtimes:"MD", shared:y, from:libarchive, license:BSD-3-Clause]
  -> openssl3 3.6.3 [runtimes:"MD", shared:y, from:libarchive, license:Apache-2.0]
  -> libarchive 3.8.8 [runtimes:"MD", shared:y, license:BSD-2-Clause]
  -> liblo 0.35 [runtimes:"MD", shared:y, license:LGPL-2.1-or-later]
  -> utfcpp v4.1.1 [shared:y, from:taglib, license:BSL-1.0]
  -> taglib v2.3 [runtimes:"MD", shared:y, license:LGPL-2.1]
  -> vamp-plugin-sdk 2024.11.20 [runtimes:"MD", shared:y, license:BSD-3-Clause AND MIT]
  -> libusb v1.0.30 [runtimes:"MD", shared:y, license:LGPL-2.1]
  -> rubberband 4.0.0 [runtimes:"MD", shared:y, license:GPL-2.0-or-later OR Commercial Licenses]
  -> jack2 v1.9.22 [runtimes:"MD", shared:y, license:GPL-2.0]
  -> fftw 3.3.10 [runtimes:"MD", shared:y, license:GPL-2.0]
  -> aubio 2026.4.10 [runtimes:"MD", shared:y, license:GPL-3.0-or-later]
  -> libxml2 v2.14.3 [runtimes:"MD", shared:y, license:MIT]
  -> cppunit 1.15.1 [runtimes:"MD", shared:y, license:LGPL-2.1-or-later]
  -> libwebsockets v4.5.8 [runtimes:"MD", shared:y, license:MIT]
  -> portaudio 2024.08.25 [shared:y, asio:y, runtimes:"MD"]
  -> libsamplerate 0.2.2 [runtimes:"MD", shared:y, license:BSD-2-Clause]
  -> lv2 1.18.10 [shared:y, from:sratom,lilv, license:ISC]
  -> serd v0.32.8 [runtimes:"MD", shared:y, from:lilv,sratom,sord, license:ISC]
  -> zix 0.8.0 [runtimes:"MD", shared:y, from:lilv,sratom,sord, license:ISC]
  -> sord 0.16.22 [runtimes:"MD", shared:y, from:sratom,lilv, license:ISC]
  -> sratom 0.6.22 [runtimes:"MD", shared:y, from:lilv, license:ISC]
  -> lilv 0.28.0 [runtimes:"MD", shared:y, license:ISC]
  -> libjpeg-turbo 3.1.4+1 [runtimes:"MD", shared:y, license:BSD-3-Clause]
  -> boost 1.90.0 [runtimes:"MD", shared:y, license:BSL-1.0]
  -> libffi 3.4.8 [runtimes:"MD", shared:y, from:glib, license:MIT]
  -> libintl 0.22.3 [runtimes:"MD", shared:y, from:glib]
  -> pcre2 10.44 [runtimes:"MD", shared:y, from:glib, license:BSD-3-Clause]
  -> glib 2.89.1 [runtimes:"MD", shared:y, from:glibmm,harfbuzz,pango, license:LGPL-2.1]
  -> fribidi v1.0.16 [runtimes:"MD", shared:y, from:pango, license:LGPL-2.1]
  -> freetype 2.14.1 [runtimes:"MD", shared:y, from:pango,fontconfig,harfbuzz,cairo, license:BSD]
  -> harfbuzz 13.1.1 [shared:y, runtimes:"MD", glib:y, from:pango, license:MIT]
  -> expat 2.8.1 [runtimes:"MD", shared:y, from:fontconfig, license:MIT]
  -> meson#1 1.11.1 [host, binary, shared:y, from:fontconfig, license:Apache-2.0]
  -> ninja#1 v1.13.2 [host, binary, shared:y, from:fontconfig, license:Apache-2.0]
  -> gperf#1 3.2.1 [host, binary, shared:y, from:fontconfig, license:GPL-3.0-or-later]
  -> fontconfig 2.17.1 [runtimes:"MD", shared:y, from:pango,cairo, license:MIT]
  -> libpng v1.6.58 [runtimes:"MD", shared:y, from:cairo, license:libpng-2.0]
  -> pixman 0.46.2 [runtimes:"MD", shared:y, from:cairo, license:MIT]
  -> cairo 1.18.0 [runtimes:"MD", shared:y, from:cairomm,pango, license:MPL-1.1]
  -> pango 1.57.1 [runtimes:"MD", shared:y, from:pangomm, license:LGPL-2.0]
  -> libsigcplusplus 2.12.1 [runtimes:"MD", shared:y, from:glibmm,cairomm, license:LGPL-3.0]
  -> glibmm 2.66.8 [runtimes:"MD", shared:y, from:pangomm, license:LGPL-2.1-or-later]
  -> cairomm 1.14.5 [runtimes:"MD", shared:y, from:pangomm, license:LGPL-2.1-or-later]
  -> pangomm 2.46.4 [runtimes:"MD", shared:y, license:LGPL-2.1]
  -> pthreads4w 3.0.0 [runtimes:"MD", shared:y]
  -> wingetopt 2025.12.01 [runtimes:"MD", shared:y]
please input: y (y/n/m)

  => install ninja v1.13.2 .. ok
  => install cmake 4.3.4 (binary) .. ok
  => install gperf 3.2.1 .. ok
  => install zlib v1.3.2 .. ok
  => install libopus v1.5.2 .. ok
  => install libogg v1.3.6 .. ok
  => install libflac 1.5.0 (precompiled) .. ok
  => install bzip2 1.0.8 (precompiled) .. ok
  => install libvorbis 1.3.7 (precompiled) .. ok
  => install zstd v1.5.7 (precompiled) .. ok
  => install openssl3 3.6.3 (precompiled) .. ok
  => install lz4 v1.10.0 (precompiled) .. ok
  => install libarchive 3.8.8 (precompiled) .. ok
  => install python 3.14.3 .. ok
  => install libcurl 8.21.0 .. ok
  => install libsndfile 1.2.2 (precompiled) .. ok
  => install liblo 0.35 .. ok
  => install utfcpp v4.1.1 .. ok
  => install vamp-plugin-sdk 2024.11.20 .. ok
  => install jack2 v1.9.22 (precompiled) .. ok
  => install fftw 3.3.10 (precompiled) .. ok
  => install libusb v1.0.30 .. ok
  => install cppunit 1.15.1 (precompiled) .. ok
  => install libxml2 v2.14.3 .. ok
  => install meson 1.11.1 .. ok
  => install taglib v2.3 .. ok
  => install portaudio 2024.08.25 .. ok
  => install pkgconf 2.5.1 .. ok
  => install libsamplerate 0.2.2 .. ok
  => install rubberband 4.0.0 .. ok
  => install serd v0.32.8 (precompiled) .. ok
  => install zix 0.8.0 (precompiled) .. ok
  => install sord 0.16.22 (precompiled) .. ok
  => install aubio 2026.4.10 .. ok
  => install libjpeg-turbo 3.1.4+1 (precompiled) .. ok
  => install lv2 1.18.10 .. ok
  => install libffi 3.4.8 (precompiled) .. ok
  => install sratom 0.6.22 (precompiled) .. ok
  => install libintl 0.22.3 (precompiled) .. ok
  => install pcre2 10.44 (precompiled) .. ok
  => download https://download.gnome.org/sources/glib/2.89/glib-2.89.1.tar.xz .. ok
  => install libwebsockets v4.5.8 .. ok
  => install lilv 0.28.0 .. ok
  => install freetype 2.14.1 (precompiled) .. ok
  => install expat 2.8.1 (precompiled) .. ok
  => install meson#1 1.11.1 .. ok
  => install ninja#1 v1.13.2 .. ok
  => install gperf#1 3.2.1 .. ok
  => install fontconfig 2.17.1 (precompiled) .. ok
  => install fribidi v1.0.16 .. ok
  => install pixman 0.46.2 .. ok
  => install libpng v1.6.58 .. ok
  => install cairo 1.18.0 (precompiled) .. ok
  => install pthreads4w 3.0.0 .. ok
  => install wingetopt 2025.12.01 .. ok
  => install libsigcplusplus 2.12.1 .. ok
  => install cairomm 1.14.5 .. ok
  => install glib 2.89.1 .. ok
  => install harfbuzz 13.1.1 .. ok
  => install pango 1.57.1 (precompiled) .. ok
  => install glibmm 2.66.8 .. ok
  => install pangomm 2.46.4 .. ok
  => install boost 1.90.0 .. ok
warning: If cmake build failure, set package config cmake = false fallback to b2 for the build
1 Like

That’s okay then. I see the same thing if I follow up with xmake f -c but I assumed that if I just typed xrepo remove --all -y I’d end up with a lower number of files than I started off with, but I don’t for some reason???

BTW Your new build works fine here now !

You should now be able to prove that the libintl files are not yet usable for building, by opening developer cmd/ps, then setting path to include the release/bin folder, then set pkg_config_path to be in release/lib/pkgconfig, then run something as follows:

python waf configure --prefix=C:\ArdourTest7 --configdir=share --ptformat --dist-target=msvc --cxx17 --optimize --also-include=C:\ADeps4/TheFile/release/include,C:\ADeps4/TheFile/release/include/pthread --also-libdir=C:\ADeps4/TheFile/release/lib

Just replace my --prefix, --also-include and --also-libdir to where yours should go to. (Note the pthread include folder.)

Then when you run python waf, you should get a mix of some warnings, and when it tries to link pbd, an unresolved symbol in 6 or so files.


In your case, since you’ve built ardour before, you might have a replacement libintl files which you can use to replace the include header, .lib and .dll…

Thanks Stephen. I assume cmd/ is a folder somewhere? I’ve searched my MSVC folders and my xmake folders but I can’t see cmd anywhere. Another complication is that I don’t use waf (and I’ve also run out of time!)

Best of luck with everything from now on…

By developer cmd/ps, I meant developer command prompt/powershell… Not a folder.

BTW Stephen I might have discovered the reason for your libintl unresolved externals. In a nutshell, libintl is plain old ‘C’ but xmake might be building it with __cplusplus defined. Or it might be the opposite way around (i.e. __cplusplus isn’t defied when it needs to be). Maybe check with the guys at xmake or see what you can figure out from libintl.h.

If you’ve somewhere where I can upload a zip file I could let you have my own build to try at your end? I build libintl here as a static lib BTW, At ine time, the Ardour forum wouldn’t allow zip files but I’m not sure if that’s still the case.

That’ll be unnecessary. I’m figuring out how to build libintl v1.0 and test whether my approach for 1.0 won’t have issues, before submitting it to xrepo.

libintl 1.0 has been added to xmake-repo and should build, BUT glib 2.89.2 got added as well, and it causes build failures for glibmm (not just for the older ABI).

Currently, the following things need change between xrepo and ardour.

xrepo:

  1. Fix taglib .pc file to not have -lz
  2. Add version limit for glib for building glibmm
    (Would need to double check if I skipped something later)

Ardour:

  1. (MSVC only) Use the getopt that’s in libs/pbd/msvc
  2. Lots of small edits relating to sigc++ to be able to build ardour without deprecated api’s (I got build errors and was thinking it had to do with MSVC, but recently found out it was because libsigc++ was built without deprecated apis)
  3. (MSVC only) Few changes in libs/surfaces/websockets
1 Like