Windows cross build

Ardour probably isn’t the best choice of software to try compiling for your first project to compile honestly. It is a fairly complex build and having a firm grasp on understanding of compilation is probably a good idea before doing so, especially on non-linux platforms.

    Seablade
1 Like

@gylotip - are you aware of detailed C++ concepts such as name-mangling? Among other things it means that you’ll need to build all your C++ libraries using the same compiler. If MSYS is currently using mingw, you won’t be able to use your support libs with a version of Ardour built with MSVC - but as Robin hinted earlier, obtaining the correct support libs and building them with MSVC is near enough impossible now.

Okay, I installed all of the packages (some of them didn’t work) on https://github.com/msys2/MINGW-packages, and currently, I am at 4. Build Ardour step. Now, I have issues with ./waf distclean, because it gives an error Error: run waf-light from a folder containing waflib. The Ardour folder is at C:\Program Files\msys64\usr\src and the waflib is at C:\Program Files\msys64\mingw64\lib\waf, and I cannot access that directory with mingw64, since it says that there are no such file directories. Moving that waflib folder to the ardour folder, and running ./waf distclean will gives this error Waf script '2.0.23' and library '2.0.20' do not match (directory 'C:/Program Files/msys64/usr/src/ardour'). Now what am I supposed to do? Since I have issues with waf situation.

I do not know of any Ardour developers who use ./waf distclean. However, it does run normally here.

So, what am I supposed to do instead? Since this error seems like it cannot be fixed.

Generally I just use rm -rf build/ but the error would suggest that there is something else wrong with the setup. I don’t know what, because we’ve not seen that error before.

On the first run of waf, it “unpacks itself” into a subfolder with a name like .waf-<VERSION>-<HASH> You may want to check that this exists - if not that would be a clue.

Here are all of the folders containing waf:

The one that would matter should be in /usr/src/ardour

There isn’t any waf files at usr/src/ardour directory.

Your image paste above shows cd’ing into /usr/src/ardour, patching the code and then running ./waf

What do you mean with that? I don’t understand.

There are currently these things that are not folders:

Currently, my situation is now like this:

But I still experience issues with compiling, and I don’t know what the issue is.

You seem to have attempted to install waf as a system-wide tool. That is not how waf works. It is included inside a project that uses it. There is never any reason to have waf “installed on your system”.

That said, your image paste showed you using ./waf which ought to work. At this point, I don’t have any advice on how to proceed.

Hmm, now I get a different error. Also, I am using Discord, so where can I ask about issues with compiling? Like, which server is suitable for asking help with compiling?

  1. We do not run a Discord. The few that I participate in should be considered inferior to this Discourse instance for talking about compiling Ardour.

  2. I have no idea what this “ardour_pack.sh” file is supposed to be. It does not exist in our repositories. I could guess, from the name, but your build did not complete successfully, so there is nothing to pack.

  3. Your ./waf configure step is running … well, I don’t know what it is running. Ardour’s configure step should print out on the order of 100 lines of output before finishing.

I can’t remember his name but didn’t there used to be an Australian guy who was building successfully using MinGW? Maybe that was before the days of waf though??

Based on the directory /usr/src/ardour/waf-master I would guess that it is configuring waf, i.e. attempting to rebuild waf rather than build ardour.

The “./waf configure” command should be run in /usr/src/ardour.

If I try to attempt that, then it gives an error like Error: run waf-light from a folder containing waflib

Why do you have a waf-master directory inside the ardour directory? Why are you not just using waf which is already in the ardour source tree?