| @@ -1,24 +1,31 @@ | |||
| HOW TO COMPILE JACK USING WAF AND MINGW | |||
| ======================================= | |||
| HOW TO COMPILE JACK ON WINDOWS/MINGW | |||
| ==================================== | |||
| Rev. 1 - 2019-09-01 - First version | |||
| Rev. 2 - 2019-09-18 - Include contributions from @Schroedingers-Cat | |||
| Rev. 3 - 2019-12-14 - Include contributions from @Schroedingers-Cat | |||
| Rev. 4 - 2020-11-27 - Rename, update intro and JackRouter build instructions | |||
| Introduction | |||
| ------------ | |||
| This guide contains detailed instructions for building JACK on a modern MinGW | |||
| installation. It was conceived as the starting point for unifying the JACK build | |||
| process across all platforms. | |||
| This guide was originally called "How to compile JACK using WAF and MinGW" | |||
| and later renamed to "How to compile JACK on Windows/MinGW" to avoid confusion | |||
| with the official way of building JACK for Windows, which is cross-compiling | |||
| on Linux. That should be considered the only officially supported method now. | |||
| Latest binary releases can be found here: https://jackaudio.org/downloads/ | |||
| JackRouter here: https://github.com/jackaudio/jack-router/tree/main/binaries | |||
| As this is work in progress, there are still a couple of caveats: | |||
| JACK is primarily targeted at Unix systems and thus the required toolchain is | |||
| Unix-centric. So the majority of the guide is actually about setting up the | |||
| required build tools. Once done, the build process itself does not differ much | |||
| from that found on other platforms. | |||
| - Asynchronous mode is unusable with low latencies | |||
| - JackRouter still builds using a Visual Studio project | |||
| - Lots of real world testing is needed | |||
| The information here can be of interest to anyone wishing to contribute to the | |||
| development of Windows specific code in JACK, and wants to avoid double booting, | |||
| VMs, etc. That can be particularly helpful when it comes to debug or testing. | |||
| @@ -179,28 +186,38 @@ The resulting files can be found at /c/opt/jack/bin, or C:\msys64\opt\jack\bin | |||
| Compiling JackRouter | |||
| -------------------- | |||
| Source code for JackRouter is not considered part of JACK anymore so you need to | |||
| clone an additional repository: | |||
| git clone https://github.com/jackaudio/jack-router | |||
| Visual Studio with MFC support is needed to build the included JackRouter VS | |||
| project. The project was tested to successfully generate a 64bit version of | |||
| JackRouter.dll using Visual Studio 2017 and 2019. MFC support can be added from | |||
| the VS installer, by selecting Workloads/Visual C++ build tools/Visual C++ MFC | |||
| for x86 and x64 (valid for VS 2017). Once ready, just open and build the project | |||
| for x86 and x64 (valid for VS 2017). | |||
| Once ready, just open and build the project | |||
| windows/JackRouter/JackRouter_MinGW_deps.vcxproj | |||
| win/JackRouter.sln | |||
| Differences from the original JackRouter.vcxproj: | |||
| Notes: | |||
| - Depends on the asiosdk files from the previous MinGW JACK installation (i.e., | |||
| it points to absolute paths starting with C:\msys64\opt) | |||
| - Links to the jack.dll.a created by the previous build, instead of libjack.lib | |||
| This means JackRouter.dll will currently depend on libjack-0.dll | |||
| - Force includes stdint.h and defines _STDINT_H to avoid int8_t, int32_t and | |||
| uint32_t basic types redefinition during compilation | |||
| - The project assumes the needed ASIO SDK is located in C:\Program Files\asiosdk | |||
| you can simply copy the SDK from the MinGW JACK installation, i.e. from | |||
| C:\msys64\opt to C:\Program Files | |||
| - Links against C:\Program Files\JACK2\lib\libjack64.dll.a which is the libjack | |||
| version installed by the official installer. You will have to update that path | |||
| so it points to the jack.dll.a created by the MinGW build instead. | |||
| Running and distributing | |||
| ------------------------ | |||
| !! This section is kept for historical reasons. The official JACK for Windows | |||
| build method includes the necessary steps to create a installer. !! | |||
| An automated installation process should copy files to two destinations. One for | |||
| the JACK server binary and standalone tools, and another for the client library. | |||
| The latter is needed by JACK enabled applications in order to be able to connect | |||