Skip to content

Commit

Permalink
helper to produce distributions of cross-compiled statically-linked W…
Browse files Browse the repository at this point in the history
…indows build
  • Loading branch information
Birch-san committed Jan 12, 2022
1 parent 72ca4d3 commit ef7160f
Show file tree
Hide file tree
Showing 19 changed files with 3,852 additions and 0 deletions.
1 change: 1 addition & 0 deletions distribute/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/out/
40 changes: 40 additions & 0 deletions distribute/README.x64.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Juicy Soundfont Plugin

https://github.com/Birch-san/juicysfplugin

Targets Windows 7 x86_64
Commonly this means a 64-bit Intel or AMD processor.

## Installation

If the folder "C:\Program Files\Common Files\VST3" does not yet exist: make the folder yourself.
If the folder "C:\Program Files\Common Files\VST2" does not yet exist: make the folder yourself.

VST2\libjuicysfplugin.dll -> "C:\Program Files\Common Files\VST2\libjuicysfplugin.dll"
VST3\juicysfplugin.vst3 -> "C:\Program Files\Common Files\VST3\juicysfplugin.vst3"
Standalone\juicysfplugin.exe -> "C:\Program Files\Birchlabs\juicysfplugin.exe"

### Upgrading from a previous version of juicysfplugin

Run the uninstaller that came with juicysfplugin, or delete the files that are described in these release notes:
https://github.com/Birch-san/juicysfplugin/releases/tag/2.3.3

You may notice that opening SF3 soundfonts is slower than before.
This is because juicysfplugin is now linked statically which means we can no longer use OpenMP to load SF3 soundfonts via multi-threading.
(OpenMP does not support static linking on MinGW).
The upside is that installation is now easier (single-file binary).

## Usage

Pick a soundfont from the file-picker (drag-and-drop works too).

### Soundfonts

Here's some soundfonts to get you started:

- Fatboy (no specific license stated, but described as "free")
- https://fatboy.site/
- MuseScore's recommended soundfonts (includes MIT, GPL, other licenses)
- https://musescore.org/en/handbook/soundfonts-and-sfz-files#list
- FlameStudios' guitar soundfonts (GPL-licensed)
- http://www.flamestudios.org/free/Soundfonts
46 changes: 46 additions & 0 deletions distribute/README.x86.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Juicy Soundfont Plugin

https://github.com/Birch-san/juicysfplugin

Targets Windows 7 i686
Commonly this means a 32-bit Intel or AMD processor.

## Installation

If the folder "C:\Program Files (x86)\Common Files\VST3" does not yet exist: make the folder yourself.
If the folder "C:\Program Files (x86)\Common Files\VST2" does not yet exist: make the folder yourself.

VST2\libjuicysfplugin.dll -> "C:\Program Files (x86)\Common Files\VST2\libjuicysfplugin.dll"
VST3\juicysfplugin.vst3 -> "C:\Program Files (x86)\Common Files\VST3\juicysfplugin.vst3"
Standalone\juicysfplugin.exe -> "C:\Program Files (x86)\Birchlabs\juicysfplugin.exe"

### Upgrading from a previous version of juicysfplugin

Run the uninstaller that came with juicysfplugin, or delete the files that are described in these release notes:
https://github.com/Birch-san/juicysfplugin/releases/tag/2.3.3

You may notice that opening SF3 soundfonts is slower than before.
This is because juicysfplugin is now linked statically which means we can no longer use OpenMP to load SF3 soundfonts via multi-threading.
(OpenMP does not support static linking on MinGW).
The upside is that installation is now easier (single-file binary).

## Warning

The VST3 plugin is known to be incompatible with FL Studio (tested on v20.9, on Windows 11 ARM).
The error message from FL Studio does not give any details explaining why the plugin is considered invalid.
The VST3 plugin is nevertheless included, in case you fancy trying it with another DAW.

## Usage

Pick a soundfont from the file-picker (drag-and-drop works too).

### Soundfonts

Here's some soundfonts to get you started:

- Fatboy (no specific license stated, but described as "free")
- https://fatboy.site/
- MuseScore's recommended soundfonts (includes MIT, GPL, other licenses)
- https://musescore.org/en/handbook/soundfonts-and-sfz-files#list
- FlameStudios' guitar soundfonts (GPL-licensed)
- http://www.flamestudios.org/free/Soundfonts
65 changes: 65 additions & 0 deletions distribute/bundle_win32.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#!/usr/bin/env bash
# ./bundle_win32.sh 3.0.0

set -eo pipefail
DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

OUT="$DIR/out"
mkdir -p "$OUT"

VERSION="$1"

declare -a ARCHS=("x64" "x86")

# macOS bundled GNU bash doesn't support associative arrays
arch_long_ix() {
case $1 in
'x64') return 0;;
'x86') return 1;;
esac
}
arch_longs=("x86_64-win"
"x86-win");
# declare -A ARCH_LONGS=( [x64]=x86_64-win [x86]=x86-win )

FLAVOUR=Release
CONTAINER_NAME=win32_mount
docker create --name "$CONTAINER_NAME" llvm-mingw
trap "docker rm \"$CONTAINER_NAME\" > /dev/null" EXIT

for ARCH in ${ARCHS[@]}; do
echo "arch: $ARCH"

set +e
arch_long_ix "$ARCH"
ARCH_LONG="${arch_longs[$?]}"
set -e
# ARCH_LONG="${ARCH_LONGS[$ARCH]}"
echo "arch_long: $ARCH_LONG"

FLAVOUR_DIRNAME="win_$ARCH"
ARCH_OUT="$OUT/$FLAVOUR_DIRNAME"
echo "arch_out: $ARCH_OUT"

STANDALONE="$ARCH_OUT/Standalone"
mkdir -p "$STANDALONE"

VST2="$ARCH_OUT/VST2"
mkdir -p "$VST2"

VST3="$ARCH_OUT/VST3"
mkdir -p "$VST3"

docker cp "$CONTAINER_NAME":"/build/juicysfplugin/build_$ARCH/JuicySFPlugin_artefacts/$FLAVOUR/Standalone/juicysfplugin.exe" "$STANDALONE/juicysfplugin.exe"
docker cp "$CONTAINER_NAME":"/build/juicysfplugin/build_$ARCH/JuicySFPlugin_artefacts/$FLAVOUR/VST/libjuicysfplugin.dll" "$VST2/libjuicysfplugin.dll"
docker cp "$CONTAINER_NAME":"/build/juicysfplugin/build_$ARCH/JuicySFPlugin_artefacts/$FLAVOUR/VST3/juicysfplugin.vst3/Contents/$ARCH_LONG/juicysfplugin.vst3" "$VST3/juicysfplugin.vst3"

cp -r "$DIR/../licenses_of_dependencies" "$ARCH_OUT"
cp "$DIR/../LICENSE.txt" "$ARCH_OUT"

cp "$DIR/README.$ARCH.txt" "$ARCH_OUT/README.txt"

pushd "$OUT" > /dev/null
zip -9 -r "juicysfplugin-$VERSION-$ARCH.zip" "$FLAVOUR_DIRNAME"
popd > /dev/null
done
Loading

0 comments on commit ef7160f

Please sign in to comment.