Merge pull request #1087 from michaelwillis/macos-installer

Mac OS Installer
This commit is contained in:
Paul Ferrand 2022-07-25 13:41:19 +02:00 committed by GitHub
commit fc1afb1480
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 164 additions and 391 deletions

File diff suppressed because one or more lines are too long

View file

@ -80,9 +80,12 @@ jobs:
shell: bash
working-directory: ${{runner.workspace}}/build
run: cmake --build . --config "$BUILD_TYPE" -j 2 --target sfizz_tests
- name: Test
- name: Run tests
shell: bash
run: ${{runner.workspace}}/build/tests/sfizz_tests
# Reenable with newer cmakes
# working-directory: ${{runner.workspace}}/build
# run: ctest -j 2 -C "$BUILD_TYPE" --output-on-failure
- name: Build all
shell: bash
working-directory: ${{runner.workspace}}/build
@ -98,6 +101,69 @@ jobs:
name: Linux tarball
path: ${{runner.workspace}}/build/${{env.install_name}}.tar.gz
build_for_macos:
runs-on: macos-10.15
steps:
- name: Set install name
run: |
echo "install_ref=${GITHUB_REF##*/}" >> "$GITHUB_ENV"
echo "install_name=sfizz-${GITHUB_REF##*/}-macos" >> "$GITHUB_ENV"
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Create Build Environment
shell: bash
working-directory: ${{runner.workspace}}
run: cmake -E make_directory build
- name: Configure CMake
shell: bash
working-directory: ${{runner.workspace}}/build
run: |
cmake "$GITHUB_WORKSPACE" \
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
-DSFIZZ_AU=ON \
-DSFIZZ_LV2=ON \
-DSFIZZ_LV2_UI=ON \
-DSFIZZ_VST=ON \
-DSFIZZ_JACK=OFF \
-DSFIZZ_TESTS=ON \
-DSFIZZ_SHARED=OFF \
-DSFIZZ_STATIC_DEPENDENCIES=OFF
- name: Build tests
shell: bash
working-directory: ${{runner.workspace}}/build
run: |
cmake --build . --config "$BUILD_TYPE" -j 2 --target sfizz_tests
- name: Run tests
shell: bash
run: ${{runner.workspace}}/build/tests/sfizz_tests
# Reenable with newer cmakes
# working-directory: ${{runner.workspace}}/build
# run: ctest -j 2 -C "$BUILD_TYPE" --output-on-failure
- name: Build plugins
shell: bash
working-directory: ${{runner.workspace}}/build
run: cmake --build . --config "$BUILD_TYPE" -j 2
- name: Package OSX bundles
shell: bash
working-directory: ${{runner.workspace}}
run: ./sfizz/scripts/package-osx-bundles.sh
- name: Create OSX installer
shell: bash
working-directory: ${{runner.workspace}}/build
run: |
productbuild \
--distribution $GITHUB_WORKSPACE/scripts/plugin.pkg/package.xml \
--identifier "sfz.tools.sfizz" \
--package-path "${{runner.workspace}}/build" \
--version 0 \
${{env.install_name}}.pkg
- uses: actions/upload-artifact@v2
with:
name: MacOS installer
path: |
${{runner.workspace}}/build/${{env.install_name}}.pkg
build_for_mod:
runs-on: ubuntu-18.04
container:

View file

@ -1,68 +0,0 @@
language: cpp
os: linux
dist: bionic
cache:
directories:
- vst/download/
jobs:
include:
- name: "Linux arm64 test and build"
arch: arm64-graviton2
group: edge
virt: lxd
addons:
apt:
packages:
- libjack-jackd2-dev
- libsndfile1-dev
- libcairo2-dev
- libfontconfig1-dev
- libx11-xcb-dev
- libxcb-util-dev
- libxcb-cursor-dev
- libxcb-xkb-dev
- libxkbcommon-dev
- libxkbcommon-x11-dev
- libxcb-keysyms1-dev
install: .travis/download_cmake.sh
script: .travis/script_test_and_build.sh
- name: "Linux arm64 static plugins"
arch: arm64-graviton2
group: edge
virt: lxd
env:
- INSTALL_DIR="sfizz-plugins-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}"
- ENABLE_VST_PLUGIN=OFF
- ENABLE_LV2_UI=OFF
addons:
apt:
packages:
- libjack-jackd2-dev
- libsndfile1-dev
install:
- .travis/download_cmake.sh
- .travis/download_static_libs.sh
script: .travis/script_plugins.sh
after_success: .travis/prepare_tarball.sh
- name: "Discord Webhook"
install: skip
script: bash ${TRAVIS_BUILD_DIR}/.travis/discord_webhook.sh success
# Signal discord on failure
after_failure:
- bash ${TRAVIS_BUILD_DIR}/.travis/discord_webhook.sh failure
deploy:
edge: true
provider: releases
file: "${INSTALL_DIR}.tar.gz"
token:
secure: jBIMWMPva8OazC8Wnqc2vqATa3exjvGDGvejEu6fgwt/BMDkgJCsJ7gS3ITpYFuO0HoHtLGfTVrFcZIE+agGVRdRGRni5xZRp5Vuf9hvLf8hCTaxkS/HYoliYYPp9FLY6J4yq9mp/R/QyGrwgssQEjhYlI2GL4+lJzt750AcmYibnQo2AMe5SSOp3q8KdLBG1vca1o1BZWBhW/S7l2hA1aJ7y1ytwm0ETIdrTZHxgfz7bqdqQcw/Ytqjm1rgzty6iQKX3B/InaZNB6CqXy6FoGLf771lery8nWJbjTjKYD4QK2NelExldyp1vrdHGvknWguFk+8vlQ16Dt0+R7Byr/LOPRLTCf/T+IehMQGtVA9/gjrkH8LqHy9oVFB+33p11gGu3h6hvg7yB6z3sSck0u4FHjrlpNd5XmmCsKQVQ9vI1cPPkVkbMHIewc7uOu+bD6cmotFj1vJ9UYesvN6n4siyCiPOIhgV9++bjcyiLqX3DWP5UWyZ9/VT8bz5VcxUdJnEYtdNPx4x5pRW4081VUjIf2EmHhQTrjb1iz6FAGwNU/fpefA8x+bBxXP9MkFFgU0tbCDKw2y6o0GOXX82mZr/IB0/DIBg7UllTzCBKTuiJQV1prFPlZLc6V22H5ozAXHgu3E+qNjvHoMsoYjGssX3+AYHwu8isBINo/gGo6Y=
on:
repo: "sfztools/sfizz"
tags: true
condition: ${TRAVIS_TAG} =~ ^v?[0-9]

View file

@ -1,8 +0,0 @@
#!/bin/bash
set -ex
# Travis Webhook
wget https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh
chmod +x send.sh
./send.sh ${1} ${WEBHOOK_URL}

View file

@ -1,13 +0,0 @@
#!/bin/bash
set -ex
cmake_dir="cmake-3.13.0-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}"
cmake_arc="${cmake_dir}.tar.gz"
cmake_url="https://github.com/sfztools/cmake/releases/download/${TRAVIS_OS_NAME}/${cmake_arc}"
wget -q ${cmake_url}
tar xzf ${cmake_arc}
cd ${TRAVIS_BUILD_DIR}/${cmake_dir}
sudo cp bin/* /usr/local/bin/
sudo cp -r share/* /usr/local/share/

View file

@ -1,6 +0,0 @@
#!/bin/bash
set -ex
wget -q https://github.com/sfztools/sndfile-libraries/releases/download/${TRAVIS_OS_NAME}/sndfile-libraries-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}.tar.gz
tar xf sndfile-libraries-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}.tar.gz
sudo cp -R sndfile-libraries-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}/usr /

View file

@ -1,14 +0,0 @@
#!/bin/bash
set -ex
cd build
make DESTDIR=${PWD}/${INSTALL_DIR} install
tar -zcvf "${INSTALL_DIR}.tar.gz" ${INSTALL_DIR}
# Only release a tarball if there is a tag
if [[ ${TRAVIS_TAG} != "" ]] && [[ ${DEPLOY_BUILD} ]]; then
mv "${INSTALL_DIR}.tar.gz" ${TRAVIS_BUILD_DIR}
fi
cd ..

View file

@ -1,11 +0,0 @@
#!/bin/bash
set -ex
mkdir -p build/${INSTALL_DIR} && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DSFIZZ_LV2=OFF \
-DSFIZZ_VST=OFF \
-DSFIZZ_TESTS=OFF \
-DCMAKE_CXX_STANDARD=17 \
..
make -j2

View file

@ -1,14 +0,0 @@
#!/bin/bash
set -ex
mkdir -p build/${INSTALL_DIR} && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DSFIZZ_JACK=OFF \
-DSFIZZ_VST="$ENABLE_VST_PLUGIN" \
-DSFIZZ_LV2_UI="$ENABLE_LV2_UI" \
-DSFIZZ_TESTS=OFF \
-DSFIZZ_SHARED=OFF \
-DSFIZZ_STATIC_DEPENDENCIES=ON \
-DCMAKE_CXX_STANDARD=17 \
..
make -j2

View file

@ -1,21 +0,0 @@
#!/bin/bash
set -ex
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DSFIZZ_JACK=ON \
-DSFIZZ_VST=ON \
-DSFIZZ_LV2_UI=ON \
-DSFIZZ_TESTS=ON \
-DSFIZZ_SHARED=OFF \
-DSFIZZ_STATIC_DEPENDENCIES=OFF \
-DSFIZZ_LV2=ON \
-DCMAKE_CXX_STANDARD=17 \
..
make -j2 sfizz_tests
tests/sfizz_tests
make -j2 sfizz_jack
make -j2 sfizz_render
make -j2 sfizz_lv2
make -j2 sfizz_lv2_ui
make -j2 sfizz_vst3

View file

@ -1,7 +1,6 @@
# sfizz
[![Travis Build Status]](https://travis-ci.com/sfztools/sfizz)
[![AppVeyor Build Status]](https://ci.appveyor.com/project/sfztools/sfizz)
![build](https://github.com/sfztools/sfizz/actions/workflows/build.yml/badge.svg)
[![Discord Badge Image]](https://discord.gg/3ArE9Mw)
[![SFZv1 Status Image]](https://sfz.tools/sfizz/development/status/opcodes/?v=1)

View file

@ -1,5 +1,5 @@
set(VSTPLUGIN_NAME "sfizz")
set(VSTPLUGIN_VENDOR "Paul Ferrand")
set(VSTPLUGIN_VENDOR "SFZTools")
set(VSTPLUGIN_URL "http://sfztools.github.io/sfizz")
set(VSTPLUGIN_EMAIL "paul@ferrand.cc")

View file

@ -40,6 +40,8 @@ public:
memSize_ = numOutputs % 4 == 0 ? numOutputs * sizeof(float) : (numOutputs / 4 + 1) * 4 * sizeof(float);
#ifdef _WIN32
mem_ = (float *)_aligned_malloc(memSize_, 4 * sizeof(float));
#elif __APPLE__
mem_ = (float *)malloc(memSize_); // Should be 16 aligned
#else
mem_ = (float *)aligned_alloc(4 * sizeof(float), memSize_);
#endif

View file

@ -1042,7 +1042,7 @@ void Editor::Impl::createFrameContents()
return panel;
};
auto createCheckbox = [this, &palette](const CRect& bounds, int tag, const char* label, CHoriTxtAlign, int) {
auto createCheckbox = [this](const CRect& bounds, int tag, const char* label, CHoriTxtAlign, int) {
auto* checkbox = new CCheckBox(bounds, this, tag, label);
return checkbox;
};

View file

@ -25,10 +25,10 @@ protected:
void onKeyboardEvent(KeyboardEvent& event, CFrame* frame) override;
void onMouseEvent(MouseEvent& event, CFrame* frame) override;
#else
int32_t onKeyDown(const VstKeyCode&, CFrame*) { return enabled_ ? -1 : 1; }
int32_t onKeyUp(const VstKeyCode&, CFrame*) { return enabled_ ? -1 : 1; }
CMouseEventResult onMouseMoved(CFrame*, const CPoint&, const CButtonState&) { return enabled_ ? kMouseEventNotHandled : kMouseEventHandled; }
CMouseEventResult onMouseDown(CFrame*, const CPoint&, const CButtonState&) { return enabled_ ? kMouseEventNotHandled : kMouseEventHandled; }
int32_t onKeyDown(const VstKeyCode&, CFrame*) override { return enabled_ ? -1 : 1; }
int32_t onKeyUp(const VstKeyCode&, CFrame*) override { return enabled_ ? -1 : 1; }
CMouseEventResult onMouseMoved(CFrame*, const CPoint&, const CButtonState&) override { return enabled_ ? kMouseEventNotHandled : kMouseEventHandled; }
CMouseEventResult onMouseDown(CFrame*, const CPoint&, const CButtonState&) override { return enabled_ ? kMouseEventNotHandled : kMouseEventHandled; }
#endif
private:

View file

@ -244,9 +244,10 @@ elseif(SFIZZ_AU)
set(SFIZZ_AU_BUNDLE_IDENTIFIER "tools.sfz.sfizz.au")
set(SFIZZ_AU_BUNDLE_TYPE "aumu")
set(SFIZZ_AU_BUNDLE_SUBTYPE "samp")
set(SFIZZ_AU_BUNDLE_MANUFACTURER "Sfzt")
set(SFIZZ_AU_BUNDLE_MANUFACTURER "sfzt")
set(SFIZZ_AU_BUNDLE_AUTHOR "SFZTools")
math(EXPR SFIZZ_AU_DECIMAL_VERSION
"${PROJECT_VERSION_MAJOR}*10000 + ${PROJECT_VERSION_MINOR}*100 + ${PROJECT_VERSION_PATCH}")
"${PROJECT_VERSION_MAJOR}*256*256 + ${PROJECT_VERSION_MINOR}*256 + ${PROJECT_VERSION_PATCH}")
execute_process(
COMMAND "sh" "-c" "echo 'obase=16;${SFIZZ_AU_DECIMAL_VERSION}' | bc"
OUTPUT_VARIABLE SFIZZ_AU_HEXADECIMAL_VERSION

View file

@ -655,44 +655,44 @@ bool SfizzVstProcessor::processUpdate(FUnknown* changedUnknown, int32 message)
}
if (OSCUpdate* update = FCast<OSCUpdate>(changedUnknown)) {
if (IPtr<Vst::IMessage> message = update->convertToMessage(this))
sendMessage(message);
if (IPtr<Vst::IMessage> msg = update->convertToMessage(this))
sendMessage(msg);
return true;
}
if (PlayStateUpdate* update = FCast<PlayStateUpdate>(changedUnknown)) {
if (IPtr<Vst::IMessage> message = update->convertToMessage(this))
sendMessage(message);
if (IPtr<Vst::IMessage> msg = update->convertToMessage(this))
sendMessage(msg);
return true;
}
if (NoteUpdate* update = FCast<NoteUpdate>(changedUnknown)) {
if (IPtr<Vst::IMessage> message = update->convertToMessage(this))
sendMessage(message);
if (IPtr<Vst::IMessage> msg = update->convertToMessage(this))
sendMessage(msg);
return true;
}
if (SfzUpdate* update = FCast<SfzUpdate>(changedUnknown)) {
if (IPtr<Vst::IMessage> message = update->convertToMessage(this))
sendMessage(message);
if (IPtr<Vst::IMessage> msg = update->convertToMessage(this))
sendMessage(msg);
return true;
}
if (SfzDescriptionUpdate* update = FCast<SfzDescriptionUpdate>(changedUnknown)) {
if (IPtr<Vst::IMessage> message = update->convertToMessage(this))
sendMessage(message);
if (IPtr<Vst::IMessage> msg = update->convertToMessage(this))
sendMessage(msg);
return true;
}
if (ScalaUpdate* update = FCast<ScalaUpdate>(changedUnknown)) {
if (IPtr<Vst::IMessage> message = update->convertToMessage(this))
sendMessage(message);
if (IPtr<Vst::IMessage> msg = update->convertToMessage(this))
sendMessage(msg);
return true;
}
if (AutomationUpdate* update = FCast<AutomationUpdate>(changedUnknown)) {
if (IPtr<Vst::IMessage> message = update->convertToMessage(this))
sendMessage(message);
if (IPtr<Vst::IMessage> msg = update->convertToMessage(this))
sendMessage(msg);
return true;
}

View file

@ -30,7 +30,7 @@
<key>manufacturer</key>
<string>@SFIZZ_AU_BUNDLE_MANUFACTURER@</string>
<key>name</key>
<string>@SFIZZ_AU_BUNDLE_MANUFACTURER@: @PROJECT_NAME@</string>
<string>@SFIZZ_AU_BUNDLE_AUTHOR@: @PROJECT_NAME@</string>
<key>sandboxSafe</key>
<true/>
<key>type</key>

View file

@ -1,12 +1,12 @@
#define kAudioUnitBundleIdentifier @SFIZZ_AU_BUNDLE_IDENTIFIER@
#define kAudioUnitVersion 0x@SFIZZ_AU_HEXADECIMAL_VERSION@
#define kAUPluginName @SFIZZ_AU_BUNDLE_MANUFACTURER@: @PROJECT_NAME@
#define kAUPluginName @SFIZZ_AU_BUNDLE_AUTHOR@: @PROJECT_NAME@
#define kAUPluginDescription @PROJECT_NAME@
#define kAUPluginType @SFIZZ_AU_BUNDLE_TYPE@
#define kAUPluginSubType @SFIZZ_AU_BUNDLE_SUBTYPE@
#define kAUPluginManufacturer @SFIZZ_AU_BUNDLE_MANUFACTURER@
#define kAudioUnitName "@SFIZZ_AU_BUNDLE_MANUFACTURER@: @PROJECT_NAME@"
#define kAudioUnitName "@SFIZZ_AU_BUNDLE_AUTHOR@: @PROJECT_NAME@"
#define kAudioUnitDescription "@PROJECT_NAME@"
#define kAudioUnitType '@SFIZZ_AU_BUNDLE_TYPE@'
#define kAudioUnitComponentSubType '@SFIZZ_AU_BUNDLE_SUBTYPE@'

View file

@ -1,75 +0,0 @@
#!/bin/bash
set -ex
make DESTDIR=${PWD}/${INSTALL_DIR} install
# Set bundle icons
# Note: disabled, rejected by the code-sign step
if false; then
bundle_icns=/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/KEXT.icns
for bundle in sfizz.vst3 sfizz.component sfizz.lv2; do
fileicon set "${INSTALL_DIR}"/"$bundle" "$bundle_icns"
done
fi
# Perform code-signing
if test -z "${CODESIGN_PASSWORD}"; then
echo "! Secrets not available, skip code-signing"
else
# unlock the keychain
security unlock-keychain -p dummypasswd build.keychain
# code-sign VST3 and dylibs
codesign --sign "${CODESIGN_IDENTITY}" --deep --keychain build.keychain --force --verbose \
"${INSTALL_DIR}"/sfizz.vst3
# code-sign AudioUnit and dylibs
codesign --sign "${CODESIGN_IDENTITY}" --deep --keychain build.keychain --force --verbose \
"${INSTALL_DIR}"/sfizz.component
# code-sign LV2 and dylibs (note: manual, LV2 are not real bundles)
codesign --sign "${CODESIGN_IDENTITY}" --keychain build.keychain --force --verbose \
"${INSTALL_DIR}"/sfizz.lv2/Contents/Binary/*.so
if ls "${INSTALL_DIR}"/sfizz.lv2/Contents/Frameworks/*.dylib &> /dev/null; then
codesign --sign "${CODESIGN_IDENTITY}" --keychain build.keychain --force --verbose \
"${INSTALL_DIR}"/sfizz.lv2/Contents/Frameworks/*.dylib
fi
# code-sign Puredata and dylibs
codesign --sign "${CODESIGN_IDENTITY}" --keychain build.keychain --force --verbose \
"${INSTALL_DIR}"/Puredata/*/*.pd_darwin
if ls "${INSTALL_DIR}"/Puredata/*/*.dylib &> /dev/null; then
codesign --sign "${CODESIGN_IDENTITY}" --keychain build.keychain --force --verbose \
"${INSTALL_DIR}"/Puredata/*/*.dylib
fi
fi
# Create the DMG
cat > sfizz-dmg.json << EOF
{
"title": "sfizz",
"background": "${APPVEYOR_BUILD_FOLDER}/mac/dmg-back.png",
"window": {
"size": { "width": 650, "height": 500 }
},
"contents": [
{ "x": 100, "y": 50, "type": "file", "path": "${INSTALL_DIR}/sfizz.vst3" },
{ "x": 250, "y": 50, "type": "file", "path": "${INSTALL_DIR}/sfizz.component" },
{ "x": 400, "y": 50, "type": "file", "path": "${INSTALL_DIR}/sfizz.lv2" },
{ "x": 550, "y": 50, "type": "file", "path": "${INSTALL_DIR}/Puredata" },
{ "x": 100, "y": 400, "type": "link", "path": "/Library/Audio/Plug-Ins/VST3" },
{ "x": 250, "y": 400, "type": "link", "path": "/Library/Audio/Plug-Ins/Components" },
{ "x": 400, "y": 400, "type": "link", "path": "/Library/Audio/Plug-Ins/LV2" }
]
}
EOF
~/node_modules/appdmg/bin/appdmg.js sfizz-dmg.json "${INSTALL_DIR}.dmg"
# Code-sign the DMG
if test ! -z "${CODESIGN_PASSWORD}"; then
security unlock-keychain -p dummypasswd build.keychain
codesign --sign "${CODESIGN_IDENTITY}" --keychain build.keychain --force --verbose "${INSTALL_DIR}.dmg"
fi
# Only release a tarball if there is a tag
if [[ ${APPVEYOR_REPO_TAG} ]]; then
mv "${INSTALL_DIR}.dmg" ${APPVEYOR_BUILD_FOLDER}
fi
cd ${APPVEYOR_BUILD_FOLDER}

View file

@ -1,19 +0,0 @@
#!/bin/bash
set -ex
git submodule update --init --recursive
mkdir -p build/${INSTALL_DIR} && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
-DSFIZZ_VST=ON \
-DSFIZZ_AU=ON \
-DSFIZZ_PUREDATA=ON \
-DSFIZZ_RENDER=OFF \
-DSFIZZ_SHARED=OFF \
-DSFIZZ_TESTS=ON \
-DCMAKE_CXX_STANDARD=14 \
-DLV2PLUGIN_INSTALL_DIR=/ \
-DVSTPLUGIN_INSTALL_DIR=/ \
-DAUPLUGIN_INSTALL_DIR=/ \
-DPDPLUGIN_INSTALL_DIR=/Puredata \
..

View file

@ -1,47 +0,0 @@
#!/bin/bash
set -e
# do not `set -x` until after processing the secrets
# -- secret --
echo "* Set up code-signing"
if test -z "${CODESIGN_PASSWORD}"; then
echo "! Secrets not available, skip code-signing"
else
echo "1. Extract PKCS12"
echo "${CODESIGN_P12}" | base64 -D -o codesign.p12
stat codesign.p12
echo "2. Extract CA certificate"
echo "${SFZTOOLS_CRT}" | base64 -D -o sfztools.crt
stat sfztools.crt
echo "3. Create a new keychain"
security create-keychain -p dummypasswd build.keychain
echo "4. Configure the new keychain as default"
security default-keychain -s build.keychain
echo "5. Unlock the new keychain"
security unlock-keychain -p dummypasswd build.keychain
echo "6. Import the code-signing key pair"
security import codesign.p12 -k build.keychain -P "${CODESIGN_PASSWORD}" -T /usr/bin/codesign
rm -f codesign.p12
echo "7. Import the trusted CA certificate"
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain sfztools.crt
rm -f sfztools.crt
echo "8. Set up the code-signing ACL"
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k dummypasswd build.keychain
echo "9. Check the code-signing identity"
security find-identity -p codesigning build.keychain
fi
# -- /secret --
set -x
# -- Install if necessary; only if using external libraries (eg. jack, sndfile)
#brew install dylibbundler
cd ~; npm install appdmg; cd -
~/node_modules/appdmg/bin/appdmg.js --version

40
scripts/package-osx-bundles.sh Executable file
View file

@ -0,0 +1,40 @@
#!/bin/bash
# Adapted from Distrho's package-osx-bundles.sh script
set -e
if [ -d build ]; then
cd build
else
echo "Please run this script from the root folder"
exit
fi
rm -rf au
rm -rf lv2
rm -rf vst3
mkdir au lv2 vst3
mv sfizz.component au/
mv sfizz.lv2 lv2/
mv sfizz.vst3 vst3/
pkgbuild \
--identifier "sfz.tools.sfizz.au.bundle" \
--install-location "/Library/Audio/Plug-Ins/Components/" \
--root "${PWD}/au/" \
sfz-tools-sfizz-au-bundle.pkg
pkgbuild \
--identifier "sfz.tools.sfizz.lv2.bundle" \
--install-location "/Library/Audio/Plug-Ins/LV2/" \
--root "${PWD}/lv2/" \
sfz-tools-sfizz-lv2-bundle.pkg
pkgbuild \
--identifier "sfz.tools.sfizz.vst3.bundle" \
--install-location "/Library/Audio/Plug-Ins/VST3/" \
--root "${PWD}/vst3/" \
sfz-tools-sfizz-vst3-bundle.pkg
cd ..

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<installer-gui-script minSpecVersion="1">
<title>sfizz</title>
<domains enable_anywhere="false" enable_currentUserHome="false" enable_localSystem="true"/>
<options customize="always" hostArchitectures="x86_64" require-scripts="false" rootVolumeOnly="true"/>
<pkg-ref id="sfz.tools.sfizz"/>
<welcome file="welcome.txt" mime-type="text/plain"/>
<choice id="sfz.tools.sfizz.au" title="AU" description="Install AU plugin" visible="true">
<pkg-ref id="sfz.tools.sfizz.au.bundle" version="0">sfz-tools-sfizz-au-bundle.pkg</pkg-ref>
</choice>
<choice id="sfz.tools.sfizz.lv2" title="LV2" description="Install LV2 plugins" visible="true">
<pkg-ref id="sfz.tools.sfizz.lv2.bundle" version="0">sfz-tools-sfizz-lv2-bundle.pkg</pkg-ref>
</choice>
<choice id="sfz.tools.sfizz.vst3" title="VST3" description="Install VST3 plugins" visible="true">
<pkg-ref id="sfz.tools.sfizz.vst3.bundle" version="0">sfz-tools-sfizz-vst3-bundle.pkg</pkg-ref>
</choice>
<choices-outline>
<line choice="sfz.tools.sfizz.au"/>
<line choice="sfz.tools.sfizz.lv2"/>
<line choice="sfz.tools.sfizz.vst3"/>
</choices-outline>
</installer-gui-script>

View file

@ -0,0 +1,3 @@
OSX installer for sfizz
sfizz is a sample-based musical synthesizer.

View file

@ -300,6 +300,7 @@ int sfz::MidiState::getProgram() const noexcept
void sfz::MidiState::programChangeEvent(int delay, int program) noexcept
{
UNUSED(delay);
ASSERT(program >= 0 && program <= 127);
currentProgram = program;
}

View file

@ -293,7 +293,7 @@ void Parser::processOpcode()
// If we're parsing a base64 data field, ignore comments and process until the next header/directive
if (nameExpanded == "base64data") {
std::string valueRaw;
reader.extractWhile(&valueRaw, [&reader](char c) {
reader.extractWhile(&valueRaw, [&](char c) {
if (c == '<' || c == '#')
return false;

View file

@ -108,7 +108,7 @@ void gainSSE(const float* gain, const float* input, float* output, unsigned size
#if SFIZZ_HAVE_SSE2
const auto* lastAligned = prevAligned<ByteAlignment>(sentinel);
while (unaligned<ByteAlignment>(input, output) && output < lastAligned)
while (unaligned<ByteAlignment>(input, output, gain) && output < lastAligned)
*output++ = (*gain++) * (*input++);
while (output < lastAligned) {