/zyn-fusion-build

Fork of Zyn-Fusion with improvements for building and installing on GNU/Linux

Primary LanguageMakefileDo What The F*ck You Want To Public LicenseWTFPL

PowerAudio fork of Zyn-Fusion

This fork of Zyn-Fusion’s build scripts includes the following changes:

  • The installation destination on GNU/Linux is customizable and defaults to /usr/local.
  • The top-level make can be invoked with -j; e.g., make -j20 -f Makefile.linux.mk works without the need for the PARALLEL variable.
  • ZynAddSubFX and Zest are included as submodules rather than being fetched by the build scripts.
  • Fixed installation of Bash completions.
  • Tests in ZynAddSubFX are not compiled; this fixes linker errors/warnings with LTO.

All changes in this fork are released to the public domain using CC0, or (at your option) licensed under the same license as the original repository (see COPYING).


Zyn-Fusion Build Scripts

These are the build scripts used to generate the Zyn-Fusion packages.

These build scripts (and only these build scripts) are licensed under the WTFPL.


Fetch repositories

You need to fetch this repo first (if you're using Windows, see below for how to do it).

git clone https://github.com/zynaddsubfx/zyn-fusion-build zyn-fusion-build
cd zyn-fusion-build

How to build

Zyn-Fusion now uses Makefile. Each platform has a corresponding Makefile (Makefile.<platform>.mk):

Makefile Target platform (Where Zyn runs) Host platform (where compilers run)
Makefile.linux.mk Linux (native build) Linux
Makefile.windows.mk Windows Linux (cross compile)
Makefile.mingw64.mk Windows Msys2 Mingw-w64 64 bit

Since they are not in the default Makefile name, you need to explicitly specify them via parameter-f when invoking make.

Makefiles will automatically download ZynAddSubFX and Zest, as well as their dependencies. Then, automatically build them altogether.

Built packages are put in directory ./build/ :

  • ./build/zyn-fusion: Ready-to-use Zyn-Fusion files. You can directly use them as you wish, or copy this folder into your DAW's search-path.
  • ./build/zyn-fusion/zyn-fusion-*.{tar.gz|zip}: Compressed package(s) ready for distribution.

Building for Linux (native build)

Generic

# Install build dependencies
make -f Makefile.linux.mk install_deps

# Start building
PARALLEL=1 make -f Makefile.linux.mk all

# Or, you can also build a specific component,
# then finally use `package` to get a package file
PARALLEL=1 make -f Makefile.linux.mk zynaddsubfx
PARALLEL=1 make -f Makefile.linux.mk zest
make -f Makefile.linux.mk package

NOTICE: You need to run install-linux.sh within the built folder to install Zyn-Fusion properly, or it won't run, moreover you'll only see a black window in your host.

Building for Windows (cross-compile on Linux)

# Install build dependencies
make -f Makefile.windows.mk install_deps

# Start building
PARALLEL=1 make -f Makefile.windows.mk all

# Or, you can also build a specific component,
# then finally use `package` to get a package file
PARALLEL=1 make -f Makefile.windows.mk zynaddsubfx
PARALLEL=1 make -f Makefile.windows.mk zest
PARALLEL=1 make -f Makefile.windows.mk package

Building for Windows (native build via Msys2)

Msys2 installation

You must install Msys2 first. Remember to always use the Mingw64 terminal (you can find it in Start Menu). Any other terminal will not work.

Then finish updating the Msys installation by running in the Mingw64 terminal: pacman -Suy (twice). See https://www.msys2.org/docs/updating/ for details and https://archlinux.org/pacman/pacman.8.html for ̀pacman`.

Bootstrapping

Checking out the code:

pacman -S git make
git clone https://github.com/zynaddsubfx/zyn-fusion-build zyn-fusion-build
cd zyn-fusion-build

Then install the required tools through pacman:

make -f Makefile.mingw64.mk install_deps

Compile ZynFusion

To compile everything:

make -f Makefile.mingw64.mk all

Alternatively you can also build a specific component, then finally use package to get a package file:

make -f Makefile.mingw64.mk zynaddsubfx
make -f Makefile.mingw64.mk zest
make -f Makefile.mingw64.mk package

Moreover

  • Build types (modes): You can choose either demo or release, and demo is the default. Demo build will automatically mute after 10 minutes.

    You can explicitly specify build type:

    make MODE=release -f Makefile.<platform>.mk <target>
  • Get help: You can get a list of make targets by invoking:

    make -f Makefile.<platform>.mk help