Cleanup some more CI details, auto-load nosimd wasm
Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
26e206f3d8
commit
5a53cd37b8
6 changed files with 103 additions and 230 deletions
262
.github/workflows/build.yml
vendored
262
.github/workflows/build.yml
vendored
|
@ -107,8 +107,8 @@ jobs:
|
||||||
./deps/PawPaw/bootstrap-cardinal.sh linux-${{ matrix.target }} && ./deps/PawPaw/.cleanup.sh linux-${{ matrix.target }}
|
./deps/PawPaw/bootstrap-cardinal.sh linux-${{ matrix.target }} && ./deps/PawPaw/.cleanup.sh linux-${{ matrix.target }}
|
||||||
- name: Build linux
|
- name: Build linux
|
||||||
run: |
|
run: |
|
||||||
pushd deps/PawPaw; source local.env linux-${{ matrix.target }}; popd
|
|
||||||
export PATH="/usr/lib/ccache:${PATH}"
|
export PATH="/usr/lib/ccache:${PATH}"
|
||||||
|
source deps/PawPaw/local.env linux-${{ matrix.target }}
|
||||||
export PKG_CONFIG_PATH+=:/usr/lib/${{ matrix.target }}-linux-gnu/pkgconfig
|
export PKG_CONFIG_PATH+=:/usr/lib/${{ matrix.target }}-linux-gnu/pkgconfig
|
||||||
make features
|
make features
|
||||||
make HAVE_PULSEAUDIO=false NOOPT=true -j $(nproc)
|
make HAVE_PULSEAUDIO=false NOOPT=true -j $(nproc)
|
||||||
|
@ -169,7 +169,7 @@ jobs:
|
||||||
path: |
|
path: |
|
||||||
*.tar.gz
|
*.tar.gz
|
||||||
|
|
||||||
linux-headless:
|
headless:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
@ -186,7 +186,7 @@ jobs:
|
||||||
make HEADLESS=true features
|
make HEADLESS=true features
|
||||||
make HEADLESS=true -j $(nproc)
|
make HEADLESS=true -j $(nproc)
|
||||||
|
|
||||||
linux-lto:
|
lto:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
@ -202,7 +202,7 @@ jobs:
|
||||||
make features
|
make features
|
||||||
make WITH_LTO=true -j $(nproc)
|
make WITH_LTO=true -j $(nproc)
|
||||||
|
|
||||||
linux-sysdeps:
|
sysdeps:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
@ -256,32 +256,32 @@ jobs:
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
if: steps.cache.outputs.cache-hit == 'true'
|
||||||
run: |
|
run: |
|
||||||
export PATH="/usr/local/opt/ccache/libexec:${PATH}"
|
export PATH="/usr/local/opt/ccache/libexec:${PATH}"
|
||||||
pushd deps/PawPaw; source local.env macos-${{ matrix.target }}; popd
|
source deps/PawPaw/local.env macos-${{ matrix.target }}
|
||||||
make features
|
make features
|
||||||
make NOOPT=true -j $(sysctl -n hw.logicalcpu)
|
make NOOPT=true -j $(sysctl -n hw.logicalcpu)
|
||||||
- name: Build macOS (AU using juce)
|
- name: Build macOS (AU using juce)
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
if: steps.cache.outputs.cache-hit == 'true'
|
||||||
run: |
|
run: |
|
||||||
export PATH="/usr/local/opt/ccache/libexec:${PATH}"
|
export PATH="/usr/local/opt/ccache/libexec:${PATH}"
|
||||||
pushd deps/PawPaw; source local.env macos-${{ matrix.target }}; popd
|
source deps/PawPaw/local.env macos-${{ matrix.target }}
|
||||||
git clone --depth=1 -b v6.1.6 https://github.com/DISTRHO/JUCE.git jucewrapper/JUCE
|
git clone --depth=1 -b v6.1.6 https://github.com/DISTRHO/JUCE.git jucewrapper/JUCE
|
||||||
${{ matrix.target == 'intel' }} && sed -i -e 's/kAudioUnitProperty_SupportsMPE/kAudioUnitProperty_ignore_SupportsMPE/' jucewrapper/JUCE/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h
|
${{ matrix.target == 'intel' }} && sed -i -e 's/kAudioUnitProperty_SupportsMPE/kAudioUnitProperty_ignore_SupportsMPE/' jucewrapper/JUCE/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h
|
||||||
mkdir -p jucewrapper/build
|
mkdir -p jucewrapper/build
|
||||||
pushd jucewrapper/build; cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Release .. && make VERBOSE=1 -j $(sysctl -n hw.logicalcpu); popd
|
pushd jucewrapper/build; cmake -DCMAKE_BUILD_TYPE=Release .. && make VERBOSE=1 -j $(sysctl -n hw.logicalcpu); popd
|
||||||
mv jucewrapper/build/*_artefacts/Release/AU/*.component bin/
|
mv jucewrapper/build/*_artefacts/Release/AU/*.component bin/
|
||||||
- name: Build macOS (intel packaging)
|
- name: Build macOS (intel packaging)
|
||||||
if: ${{ steps.cache.outputs.cache-hit == 'true' && matrix.target == 'intel' }}
|
if: ${{ steps.cache.outputs.cache-hit == 'true' && matrix.target == 'intel' }}
|
||||||
env:
|
env:
|
||||||
MACOS_ARCHS: 'x86_64'
|
MACOS_ARCHS: 'x86_64'
|
||||||
run: |
|
run: |
|
||||||
pushd deps/PawPaw; source local.env macos-${{ matrix.target }}; popd
|
source deps/PawPaw/local.env macos-${{ matrix.target }}
|
||||||
./utils/create-macos-installer.sh
|
./utils/create-macos-installer.sh
|
||||||
- name: Build macOS (universal packaging)
|
- name: Build macOS (universal packaging)
|
||||||
if: ${{ steps.cache.outputs.cache-hit == 'true' && matrix.target == 'universal' }}
|
if: ${{ steps.cache.outputs.cache-hit == 'true' && matrix.target == 'universal' }}
|
||||||
env:
|
env:
|
||||||
MACOS_ARCHS: 'arm64,x86_64'
|
MACOS_ARCHS: 'arm64,x86_64'
|
||||||
run: |
|
run: |
|
||||||
pushd deps/PawPaw; source local.env macos-${{ matrix.target }}; popd
|
source deps/PawPaw/local.env macos-${{ matrix.target }}
|
||||||
./utils/create-macos-installer.sh
|
./utils/create-macos-installer.sh
|
||||||
- name: Set sha8 (non-release)
|
- name: Set sha8 (non-release)
|
||||||
if: startsWith(github.ref, 'refs/tags/') != true
|
if: startsWith(github.ref, 'refs/tags/') != true
|
||||||
|
@ -308,7 +308,17 @@ jobs:
|
||||||
files: |
|
files: |
|
||||||
${{ github.event.repository.name }}-*.pkg
|
${{ github.event.repository.name }}-*.pkg
|
||||||
|
|
||||||
modduo:
|
modaudio:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- name: modduo
|
||||||
|
target: modduo-static
|
||||||
|
extraflags: MODDUO=true
|
||||||
|
- name: modduox
|
||||||
|
target: modduox-static
|
||||||
|
- name: moddwarf
|
||||||
|
target: moddwarf
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
@ -320,7 +330,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/mod-workdir
|
~/mod-workdir
|
||||||
key: modduo-static-v${{ env.CACHE_VERSION }}
|
key: ${{ matrix.target }}-v${{ env.CACHE_VERSION }}
|
||||||
- name: Set up dependencies
|
- name: Set up dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update -qq
|
sudo apt-get update -qq
|
||||||
|
@ -332,112 +342,29 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
|
git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
|
||||||
sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
|
sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
|
||||||
$(pwd)/deps/mod-plugin-builder/bootstrap.sh modduo-static minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh modduo-static
|
$(pwd)/deps/mod-plugin-builder/bootstrap.sh ${{ matrix.target }} minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh ${{ matrix.target }}
|
||||||
- name: Build for modduo
|
- name: Build for modaudio
|
||||||
if: steps.mpb-cache.outputs.cache-hit == 'true'
|
if: steps.mpb-cache.outputs.cache-hit == 'true'
|
||||||
run: |
|
run: |
|
||||||
make HEADLESS=true modduo-features
|
make HEADLESS=true ${{ matrix.name }}-features
|
||||||
make HEADLESS=true MODDUO=true modduo -j $(nproc)
|
make HEADLESS=true ${{ matrix.extraflags }} ${{ matrix.name }} -j $(nproc)
|
||||||
- name: Set sha8
|
- name: Set sha8
|
||||||
id: slug
|
id: slug
|
||||||
run: echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
|
run: echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
|
||||||
- name: Pack binaries
|
- name: Pack binaries
|
||||||
if: steps.mpb-cache.outputs.cache-hit == 'true'
|
if: steps.mpb-cache.outputs.cache-hit == 'true'
|
||||||
run: |
|
run: |
|
||||||
tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-modduo-${{ github.event.pull_request.number || env.SHA8 }}.tar.gz -C bin $(ls bin | grep lv2)
|
tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-${{ matrix.name }}-${{ github.event.pull_request.number || env.SHA8 }}.tar.gz -C bin $(ls bin | grep lv2)
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: ${{ github.event.repository.name }}-modduo-${{ github.event.pull_request.number || env.SHA8 }}
|
name: ${{ github.event.repository.name }}-${{ matrix.name }}-${{ github.event.pull_request.number || env.SHA8 }}
|
||||||
path: |
|
|
||||||
*.tar.gz
|
|
||||||
|
|
||||||
modduox:
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
- name: Set up cache
|
|
||||||
uses: actions/cache@v3
|
|
||||||
id: mpb-cache
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/mod-workdir
|
|
||||||
key: modduox-v${{ env.CACHE_VERSION }}
|
|
||||||
- name: Set up dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -qq
|
|
||||||
sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev qemu-user-static
|
|
||||||
sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra
|
|
||||||
sudo apt-get clean
|
|
||||||
- name: Bootstrap toolchain
|
|
||||||
if: steps.mpb-cache.outputs.cache-hit != 'true'
|
|
||||||
run: |
|
|
||||||
git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
|
|
||||||
sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
|
|
||||||
$(pwd)/deps/mod-plugin-builder/bootstrap.sh modduox-static minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh modduox-static
|
|
||||||
- name: Build for modduox
|
|
||||||
if: steps.mpb-cache.outputs.cache-hit == 'true'
|
|
||||||
run: |
|
|
||||||
make HEADLESS=true modduox-features
|
|
||||||
make HEADLESS=true modduox -j $(nproc)
|
|
||||||
- name: Set sha8
|
|
||||||
id: slug
|
|
||||||
run: echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
|
|
||||||
- name: Pack binaries
|
|
||||||
if: steps.mpb-cache.outputs.cache-hit == 'true'
|
|
||||||
run: |
|
|
||||||
tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-modduox-${{ github.event.pull_request.number || env.SHA8 }}.tar.gz -C bin $(ls bin | grep lv2)
|
|
||||||
- uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: ${{ github.event.repository.name }}-modduox-${{ github.event.pull_request.number || env.SHA8 }}
|
|
||||||
path: |
|
|
||||||
*.tar.gz
|
|
||||||
|
|
||||||
moddwarf:
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
- name: Set up cache
|
|
||||||
uses: actions/cache@v3
|
|
||||||
id: mpb-cache
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/mod-workdir
|
|
||||||
key: moddwarf-v${{ env.CACHE_VERSION }}
|
|
||||||
- name: Set up dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -qq
|
|
||||||
sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev qemu-user-static
|
|
||||||
sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra
|
|
||||||
sudo apt-get clean
|
|
||||||
- name: Bootstrap toolchain
|
|
||||||
if: steps.mpb-cache.outputs.cache-hit != 'true'
|
|
||||||
run: |
|
|
||||||
git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
|
|
||||||
sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
|
|
||||||
$(pwd)/deps/mod-plugin-builder/bootstrap.sh moddwarf minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh moddwarf
|
|
||||||
- name: Build for moddwarf
|
|
||||||
if: steps.mpb-cache.outputs.cache-hit == 'true'
|
|
||||||
run: |
|
|
||||||
make HEADLESS=true moddwarf-features
|
|
||||||
make HEADLESS=true moddwarf -j $(nproc)
|
|
||||||
- name: Set sha8
|
|
||||||
id: slug
|
|
||||||
run: echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
|
|
||||||
- name: Pack binaries
|
|
||||||
if: steps.mpb-cache.outputs.cache-hit == 'true'
|
|
||||||
run: |
|
|
||||||
tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-moddwarf-${{ github.event.pull_request.number || env.SHA8 }}.tar.gz -C bin $(ls bin | grep lv2)
|
|
||||||
- uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: ${{ github.event.repository.name }}-moddwarf-${{ github.event.pull_request.number || env.SHA8 }}
|
|
||||||
path: |
|
path: |
|
||||||
*.tar.gz
|
*.tar.gz
|
||||||
|
|
||||||
wasm:
|
wasm:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
target: [simd, nosimd]
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
@ -458,7 +385,7 @@ jobs:
|
||||||
src/Rack/dep/libsamplerate-0.1.9
|
src/Rack/dep/libsamplerate-0.1.9
|
||||||
src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
|
src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
|
||||||
src/Rack/dep/zstd-1.4.5
|
src/Rack/dep/zstd-1.4.5
|
||||||
key: wasm-v${{ env.CACHE_VERSION }}
|
key: wasm-${{ matrix.target }}-v${{ env.CACHE_VERSION }}
|
||||||
- name: Set up dependencies
|
- name: Set up dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update -qq
|
sudo apt-get update -qq
|
||||||
|
@ -468,115 +395,40 @@ jobs:
|
||||||
cd ~/PawPawBuilds/emsdk && ./emsdk install ${{ env.EMSCRIPTEN_VERSION }} && ./emsdk activate ${{ env.EMSCRIPTEN_VERSION }}
|
cd ~/PawPawBuilds/emsdk && ./emsdk install ${{ env.EMSCRIPTEN_VERSION }} && ./emsdk activate ${{ env.EMSCRIPTEN_VERSION }}
|
||||||
- name: Build extra dependencies
|
- name: Build extra dependencies
|
||||||
run: |
|
run: |
|
||||||
|
${{ matrix.target == 'nosimd' }} && export PAWPAW_NOSIMD=1
|
||||||
source ~/PawPawBuilds/emsdk/emsdk_env.sh
|
source ~/PawPawBuilds/emsdk/emsdk_env.sh
|
||||||
./deps/PawPaw/bootstrap-cardinal.sh wasm && ./deps/PawPaw/.cleanup.sh wasm
|
./deps/PawPaw/bootstrap-cardinal.sh wasm && ./deps/PawPaw/.cleanup.sh wasm
|
||||||
- name: Build wasm cross-compiled
|
- name: Build wasm cross-compiled
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
if: steps.cache.outputs.cache-hit == 'true'
|
||||||
run: |
|
run: |
|
||||||
|
${{ matrix.target == 'nosimd' }} && export PAWPAW_NOSIMD=1
|
||||||
source ~/PawPawBuilds/emsdk/emsdk_env.sh
|
source ~/PawPawBuilds/emsdk/emsdk_env.sh
|
||||||
pushd deps/PawPaw; source local.env wasm; popd
|
source deps/PawPaw/local.env wasm
|
||||||
make features
|
|
||||||
make HAVE_LIBLO=false NOOPT=true -j $(nproc)
|
|
||||||
- name: Make wasm versioned and compress
|
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
|
||||||
run: |
|
|
||||||
VERSION=$(cat Makefile | awk 'sub("VERSION = ","")')
|
|
||||||
cd bin
|
|
||||||
sed -i "s/CardinalMini\./CardinalMini-v${VERSION}\./g" *.html *.js
|
|
||||||
sed -i "s/CardinalNative\./CardinalNative-v${VERSION}\./g" *.html *.js
|
|
||||||
mv CardinalMini.data CardinalMini-v${VERSION}.data
|
|
||||||
mv CardinalMini.js CardinalMini-v${VERSION}.js
|
|
||||||
mv CardinalMini.wasm CardinalMini-v${VERSION}.wasm
|
|
||||||
mv CardinalNative.data CardinalNative-v${VERSION}.data
|
|
||||||
mv CardinalNative.js CardinalNative-v${VERSION}.js
|
|
||||||
mv CardinalNative.wasm CardinalNative-v${VERSION}.wasm
|
|
||||||
brotli -k -q 11 *.data *.html *.js *.wasm
|
|
||||||
- name: Set sha8 (non-release)
|
|
||||||
if: startsWith(github.ref, 'refs/tags/') != true
|
|
||||||
run: echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
|
|
||||||
- name: Set sha8 (release)
|
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
|
||||||
run: echo "SHA8=$(echo ${{ github.ref_name }})" >> $GITHUB_ENV
|
|
||||||
- name: Pack binaries
|
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
|
||||||
run: |
|
|
||||||
cd bin; zip -r -9 ../${{ github.event.repository.name }}-wasm-${{ github.event.pull_request.number || env.SHA8 }}.zip $(ls *.br *.html *.data *.js *.wasm)
|
|
||||||
- uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: ${{ github.event.repository.name }}-wasm-${{ github.event.pull_request.number || env.SHA8 }}
|
|
||||||
path: |
|
|
||||||
*.zip
|
|
||||||
- uses: softprops/action-gh-release@v1
|
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
|
||||||
with:
|
|
||||||
tag_name: ${{ github.ref_name }}
|
|
||||||
name: ${{ github.ref_name }}
|
|
||||||
draft: false
|
|
||||||
prerelease: false
|
|
||||||
files: |
|
|
||||||
*.zip
|
|
||||||
|
|
||||||
wasm-noopt:
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
- name: Set up cache
|
|
||||||
id: cache
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/PawPawBuilds
|
|
||||||
src/Rack/dep/bin
|
|
||||||
src/Rack/dep/include
|
|
||||||
src/Rack/dep/lib
|
|
||||||
src/Rack/dep/share
|
|
||||||
src/Rack/dep/jansson-2.12
|
|
||||||
src/Rack/dep/libarchive-3.4.3
|
|
||||||
src/Rack/dep/libsamplerate-0.1.9
|
|
||||||
src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
|
|
||||||
src/Rack/dep/zstd-1.4.5
|
|
||||||
key: wasm-noopt-v${{ env.CACHE_VERSION }}
|
|
||||||
- name: Set up dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -qq
|
|
||||||
sudo apt-get install -yqq brotli gperf
|
|
||||||
sudo apt-get clean
|
|
||||||
[ -e ~/PawPawBuilds/emsdk ] || git clone https://github.com/emscripten-core/emsdk.git ~/PawPawBuilds/emsdk
|
|
||||||
cd ~/PawPawBuilds/emsdk && ./emsdk install ${{ env.EMSCRIPTEN_VERSION }} && ./emsdk activate ${{ env.EMSCRIPTEN_VERSION }}
|
|
||||||
- name: Build extra dependencies
|
|
||||||
env:
|
|
||||||
PAWPAW_NOSIMD: 1
|
|
||||||
run: |
|
|
||||||
source ~/PawPawBuilds/emsdk/emsdk_env.sh
|
|
||||||
./deps/PawPaw/bootstrap-cardinal.sh wasm && ./deps/PawPaw/.cleanup.sh wasm
|
|
||||||
- name: Build wasm-noopt cross-compiled
|
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
|
||||||
env:
|
|
||||||
PAWPAW_NOSIMD: 1
|
|
||||||
NOSIMD: true
|
|
||||||
run: |
|
|
||||||
source ~/PawPawBuilds/emsdk/emsdk_env.sh
|
|
||||||
pushd deps/PawPaw; source local.env wasm; popd
|
|
||||||
# FIXME send patch upstream, assuming this works..
|
# FIXME send patch upstream, assuming this works..
|
||||||
sed -i -e 's/defined(__riscv)/defined(__riscv) || defined(__EMSCRIPTEN__)/' plugins/surgext/surge/src/common/globals.h
|
sed -i -e 's/defined(__riscv)/defined(__riscv) || defined(__EMSCRIPTEN__)/' plugins/surgext/surge/src/common/globals.h
|
||||||
make features
|
make features
|
||||||
make HAVE_LIBLO=false NOOPT=true -j $(nproc)
|
make HAVE_LIBLO=false NOOPT=true NOSIMD=${{ matrix.target == 'nosimd' }} -j $(nproc)
|
||||||
make HAVE_LIBLO=false NOOPT=true -j $(nproc) -C src/CardinalMiniSep modgui
|
- name: Build modgui
|
||||||
- name: Make wasm-noopt versioned and compress
|
if: ${{ steps.cache.outputs.cache-hit == 'true' && matrix.target == 'nosimd' }}
|
||||||
|
run: |
|
||||||
|
${{ matrix.target == 'nosimd' }} && export PAWPAW_NOSIMD=1
|
||||||
|
source ~/PawPawBuilds/emsdk/emsdk_env.sh
|
||||||
|
source deps/PawPaw/local.env wasm
|
||||||
|
make HAVE_LIBLO=false NOOPT=true NOSIMD=true -j $(nproc) -C src/CardinalMiniSep modgui
|
||||||
|
- name: Make wasm versioned and compress
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
if: steps.cache.outputs.cache-hit == 'true'
|
||||||
run: |
|
run: |
|
||||||
|
${{ matrix.target == 'nosimd' }} && export SUFFIX="-nosimd"
|
||||||
VERSION=$(cat Makefile | awk 'sub("VERSION = ","")')
|
VERSION=$(cat Makefile | awk 'sub("VERSION = ","")')
|
||||||
cd bin
|
cd bin
|
||||||
sed -i "s/CardinalMini\./CardinalMini-noopt-v${VERSION}\./g" *.html *.js
|
sed -i "s/CardinalMini${SUFFIX}\./CardinalMini${SUFFIX}-v${VERSION}\./g" *.html *.js
|
||||||
sed -i "s/CardinalNative\./CardinalNative-noopt-v${VERSION}\./g" *.html *.js
|
sed -i "s/CardinalNative${SUFFIX}\./CardinalNative${SUFFIX}-v${VERSION}\./g" *.html *.js
|
||||||
mv CardinalMini.data CardinalMini-noopt-v${VERSION}.data
|
mv CardinalMini.data CardinalMini${SUFFIX}-v${VERSION}.data
|
||||||
mv CardinalMini.js CardinalMini-noopt-v${VERSION}.js
|
mv CardinalMini.js CardinalMini${SUFFIX}-v${VERSION}.js
|
||||||
mv CardinalMini.wasm CardinalMini-noopt-v${VERSION}.wasm
|
mv CardinalMini.wasm CardinalMini${SUFFIX}-v${VERSION}.wasm
|
||||||
mv CardinalNative.data CardinalNative-noopt-v${VERSION}.data
|
mv CardinalNative.data CardinalNative${SUFFIX}-v${VERSION}.data
|
||||||
mv CardinalNative.js CardinalNative-noopt-v${VERSION}.js
|
mv CardinalNative.js CardinalNative${SUFFIX}-v${VERSION}.js
|
||||||
mv CardinalNative.wasm CardinalNative-noopt-v${VERSION}.wasm
|
mv CardinalNative.wasm CardinalNative${SUFFIX}-v${VERSION}.wasm
|
||||||
brotli -k -q 11 *.data *.html *.js *.wasm
|
brotli -k -q 11 *.data *.html *.js *.wasm
|
||||||
- name: Set sha8 (non-release)
|
- name: Set sha8 (non-release)
|
||||||
if: startsWith(github.ref, 'refs/tags/') != true
|
if: startsWith(github.ref, 'refs/tags/') != true
|
||||||
|
@ -587,10 +439,10 @@ jobs:
|
||||||
- name: Pack binaries
|
- name: Pack binaries
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
if: steps.cache.outputs.cache-hit == 'true'
|
||||||
run: |
|
run: |
|
||||||
cd bin; zip -r -9 ../${{ github.event.repository.name }}-wasm-noopt-${{ github.event.pull_request.number || env.SHA8 }}.zip $(ls *.br *.html *.data *.js *.wasm-noopt) CardinalMini.lv2/modgui
|
cd bin; zip -r -9 ../${{ github.event.repository.name }}-wasm-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}.zip $(ls *.br *.html *.data *.js *.wasm)
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: ${{ github.event.repository.name }}-wasm-noopt-${{ github.event.pull_request.number || env.SHA8 }}
|
name: ${{ github.event.repository.name }}-wasm-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}
|
||||||
path: |
|
path: |
|
||||||
*.zip
|
*.zip
|
||||||
- uses: softprops/action-gh-release@v1
|
- uses: softprops/action-gh-release@v1
|
||||||
|
@ -660,21 +512,21 @@ jobs:
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
if: steps.cache.outputs.cache-hit == 'true'
|
||||||
run: |
|
run: |
|
||||||
export PATH="/usr/lib/ccache:${PATH}"
|
export PATH="/usr/lib/ccache:${PATH}"
|
||||||
pushd deps/PawPaw; source local.env ${{ matrix.target }}; popd
|
source deps/PawPaw/local.env ${{ matrix.target }}
|
||||||
make features
|
make features
|
||||||
make NOOPT=true -j $(nproc)
|
make NOOPT=true -j $(nproc)
|
||||||
- name: Build cross-compiled (carla)
|
- name: Build cross-compiled (carla)
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
if: steps.cache.outputs.cache-hit == 'true'
|
||||||
run: |
|
run: |
|
||||||
export PATH="/usr/lib/ccache:${PATH}"
|
export PATH="/usr/lib/ccache:${PATH}"
|
||||||
pushd deps/PawPaw; source local.env ${{ matrix.target }}; popd
|
source deps/PawPaw/local.env ${{ matrix.target }}
|
||||||
make carla-win32 -j $(nproc)
|
make carla-win32 -j $(nproc)
|
||||||
make -C carla EMBED_TARGET=true TESTING=true dist
|
make -C carla EMBED_TARGET=true TESTING=true dist
|
||||||
make -C carla EMBED_TARGET=true TESTING=true dist
|
make -C carla EMBED_TARGET=true TESTING=true dist
|
||||||
- name: Build cross-compiled (packaging)
|
- name: Build cross-compiled (packaging)
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
if: steps.cache.outputs.cache-hit == 'true'
|
||||||
run: |
|
run: |
|
||||||
pushd deps/PawPaw; source local.env ${{ matrix.target }}; popd
|
source deps/PawPaw/local.env ${{ matrix.target }}
|
||||||
xvfb-run ./utils/create-windows-installer.sh ${{ matrix.target }}
|
xvfb-run ./utils/create-windows-installer.sh ${{ matrix.target }}
|
||||||
make unzipfx
|
make unzipfx
|
||||||
- name: Set sha8 (non-release)
|
- name: Set sha8 (non-release)
|
||||||
|
|
|
@ -8,16 +8,22 @@ ifeq ($(ROOT),)
|
||||||
$(error invalid usage)
|
$(error invalid usage)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(NOSIMD),true)
|
||||||
|
ifneq (,$(findstring -msse,$(CXXFLAGS)))
|
||||||
|
$(error NOSIMD build requested but -msse compiler flag is present in CXXFLAGS)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Import base definitions
|
# Import base definitions
|
||||||
|
|
||||||
DISTRHO_NAMESPACE = CardinalDISTRHO
|
export DISTRHO_NAMESPACE = CardinalDISTRHO
|
||||||
DGL_NAMESPACE = CardinalDGL
|
export DGL_NAMESPACE = CardinalDGL
|
||||||
NVG_DISABLE_SKIPPING_WHITESPACE = true
|
export NVG_DISABLE_SKIPPING_WHITESPACE = true
|
||||||
NVG_FONT_TEXTURE_FLAGS = NVG_IMAGE_NEAREST
|
export NVG_FONT_TEXTURE_FLAGS = NVG_IMAGE_NEAREST
|
||||||
USE_NANOVG_FBO = true
|
export USE_NANOVG_FBO = true
|
||||||
WASM_EXCEPTIONS = true
|
export WASM_EXCEPTIONS = true
|
||||||
WINDOWS_ICON_ID = 401
|
export WINDOWS_ICON_ID = 401
|
||||||
include $(ROOT)/dpf/Makefile.base.mk
|
include $(ROOT)/dpf/Makefile.base.mk
|
||||||
|
|
||||||
DGL_EXTRA_ARGS = \
|
DGL_EXTRA_ARGS = \
|
||||||
|
|
|
@ -237,7 +237,6 @@ target_link_libraries(Cardinal
|
||||||
-lmagic
|
-lmagic
|
||||||
PUBLIC
|
PUBLIC
|
||||||
juce::juce_recommended_config_flags
|
juce::juce_recommended_config_flags
|
||||||
juce::juce_recommended_lto_flags
|
|
||||||
juce::juce_recommended_warning_flags)
|
juce::juce_recommended_warning_flags)
|
||||||
#]]
|
#]]
|
||||||
|
|
||||||
|
@ -340,7 +339,6 @@ target_link_libraries(CardinalFX
|
||||||
-lmagic
|
-lmagic
|
||||||
PUBLIC
|
PUBLIC
|
||||||
juce::juce_recommended_config_flags
|
juce::juce_recommended_config_flags
|
||||||
juce::juce_recommended_lto_flags
|
|
||||||
juce::juce_recommended_warning_flags)
|
juce::juce_recommended_warning_flags)
|
||||||
|
|
||||||
# MIDI variant
|
# MIDI variant
|
||||||
|
@ -442,7 +440,6 @@ target_link_libraries(CardinalMIDI
|
||||||
-lmagic
|
-lmagic
|
||||||
PUBLIC
|
PUBLIC
|
||||||
juce::juce_recommended_config_flags
|
juce::juce_recommended_config_flags
|
||||||
juce::juce_recommended_lto_flags
|
|
||||||
juce::juce_recommended_warning_flags)
|
juce::juce_recommended_warning_flags)
|
||||||
|
|
||||||
# Synth variant
|
# Synth variant
|
||||||
|
@ -544,5 +541,4 @@ target_link_libraries(CardinalSynth
|
||||||
-lmagic
|
-lmagic
|
||||||
PUBLIC
|
PUBLIC
|
||||||
juce::juce_recommended_config_flags
|
juce::juce_recommended_config_flags
|
||||||
juce::juce_recommended_lto_flags
|
|
||||||
juce::juce_recommended_warning_flags)
|
juce::juce_recommended_warning_flags)
|
||||||
|
|
|
@ -219,7 +219,7 @@ endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(WASM),true)
|
ifeq ($(WASM),true)
|
||||||
WASM_RESOURCES = $(LV2_RESOURCES)
|
WASM_RESOURCES = $(TARGET_DIR)/$(NAME).html $(LV2_RESOURCES)
|
||||||
|
|
||||||
ifneq ($(CARDINAL_VARIANT),mini)
|
ifneq ($(CARDINAL_VARIANT),mini)
|
||||||
WASM_RESOURCES += $(CURDIR)/lv2/fomp.lv2/manifest.ttl
|
WASM_RESOURCES += $(CURDIR)/lv2/fomp.lv2/manifest.ttl
|
||||||
|
@ -256,6 +256,10 @@ else ifneq ($(CARDINAL_VARIANT),mini)
|
||||||
FORCE_NATIVE_AUDIO_FALLBACK = true
|
FORCE_NATIVE_AUDIO_FALLBACK = true
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(WASM),true)
|
||||||
|
APP_EXT = .js
|
||||||
|
endif
|
||||||
|
|
||||||
USE_VST2_BUNDLE = true
|
USE_VST2_BUNDLE = true
|
||||||
USE_CLAP_BUNDLE = true
|
USE_CLAP_BUNDLE = true
|
||||||
include ../../dpf/Makefile.plugins.mk
|
include ../../dpf/Makefile.plugins.mk
|
||||||
|
@ -283,10 +287,8 @@ LINK_FLAGS += -sINITIAL_MEMORY=64Mb
|
||||||
LINK_FLAGS += -sLZ4=1
|
LINK_FLAGS += -sLZ4=1
|
||||||
|
|
||||||
ifeq ($(CARDINAL_VARIANT),mini)
|
ifeq ($(CARDINAL_VARIANT),mini)
|
||||||
LINK_FLAGS += --shell-file=../emscripten/CardinalMini.html
|
|
||||||
LINK_FLAGS += --preload-file=../../bin/CardinalMini.lv2/resources@/resources
|
LINK_FLAGS += --preload-file=../../bin/CardinalMini.lv2/resources@/resources
|
||||||
else
|
else
|
||||||
LINK_FLAGS += --shell-file=../emscripten/CardinalNative.html
|
|
||||||
LINK_FLAGS += --preload-file=../../bin/CardinalNative.lv2/resources@/resources
|
LINK_FLAGS += --preload-file=../../bin/CardinalNative.lv2/resources@/resources
|
||||||
LINK_FLAGS += --preload-file=./jsfx
|
LINK_FLAGS += --preload-file=./jsfx
|
||||||
LINK_FLAGS += --preload-file=./lv2
|
LINK_FLAGS += --preload-file=./lv2
|
||||||
|
@ -434,6 +436,10 @@ $(TARGET_DIR)/%.app/Contents/Resources/distrho.icns: ../../utils/distrho.icns
|
||||||
# Extra rules for wasm resources
|
# Extra rules for wasm resources
|
||||||
|
|
||||||
ifeq ($(WASM),true)
|
ifeq ($(WASM),true)
|
||||||
|
$(TARGET_DIR)/$(NAME).html: ../emscripten/$(NAME).html
|
||||||
|
-@mkdir -p $(shell dirname $@)
|
||||||
|
cp $< $@
|
||||||
|
|
||||||
$(CURDIR)/lv2/fomp.lv2/manifest.ttl: $(TARGET_DIR)/$(NAME).lv2/resources/PluginManifests/Cardinal.json
|
$(CURDIR)/lv2/fomp.lv2/manifest.ttl: $(TARGET_DIR)/$(NAME).lv2/resources/PluginManifests/Cardinal.json
|
||||||
wget -O - https://falktx.com/data/wasm-things-2022-08-15.tar.gz | tar xz -C $(CURDIR)
|
wget -O - https://falktx.com/data/wasm-things-2022-08-15.tar.gz | tar xz -C $(CURDIR)
|
||||||
touch $@
|
touch $@
|
||||||
|
|
|
@ -115,9 +115,6 @@
|
||||||
if (typeof(WebAssembly) === "undefined") {
|
if (typeof(WebAssembly) === "undefined") {
|
||||||
wasmErrors.push('WebAssembly unsupported');
|
wasmErrors.push('WebAssembly unsupported');
|
||||||
} else {
|
} else {
|
||||||
if (!WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,1,10,14,1,12,0,65,0,65,0,65,0,252,10,0,0,11]))) {
|
|
||||||
wasmErrors.push('Bulk Memory Operations unsupported');
|
|
||||||
}
|
|
||||||
if (!WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1]))) {
|
if (!WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1]))) {
|
||||||
wasmErrors.push('Importable/Exportable mutable globals unsupported');
|
wasmErrors.push('Importable/Exportable mutable globals unsupported');
|
||||||
}
|
}
|
||||||
|
@ -188,8 +185,19 @@
|
||||||
if (text) console.error('[post-exception status] ' + text);
|
if (text) console.error('[post-exception status] ' + text);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var jsModuleName;
|
||||||
|
if (!WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))) {
|
||||||
|
jsModuleName = "CardinalMini-nosimd.js";
|
||||||
|
} else {
|
||||||
|
jsModuleName = "CardinalMini.js";
|
||||||
|
}
|
||||||
|
var jsModuleScript = document.createElement('script');
|
||||||
|
jsModuleScript.setAttribute('async', true);
|
||||||
|
jsModuleScript.setAttribute('src', jsModuleName);
|
||||||
|
jsModuleScript.setAttribute('type','text/javascript');
|
||||||
|
document.head.appendChild(jsModuleScript);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{{{ SCRIPT }}}
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -115,15 +115,9 @@
|
||||||
if (typeof(WebAssembly) === "undefined") {
|
if (typeof(WebAssembly) === "undefined") {
|
||||||
wasmErrors.push('WebAssembly unsupported');
|
wasmErrors.push('WebAssembly unsupported');
|
||||||
} else {
|
} else {
|
||||||
if (!WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,1,10,14,1,12,0,65,0,65,0,65,0,252,10,0,0,11]))) {
|
|
||||||
wasmErrors.push('Bulk Memory Operations unsupported');
|
|
||||||
}
|
|
||||||
if (!WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1]))) {
|
if (!WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1]))) {
|
||||||
wasmErrors.push('Importable/Exportable mutable globals unsupported');
|
wasmErrors.push('Importable/Exportable mutable globals unsupported');
|
||||||
}
|
}
|
||||||
if (!WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))) {
|
|
||||||
wasmErrors.push('Fixed-Width SIMD unsupported');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wasmErrors.length !== 0) {
|
if (wasmErrors.length !== 0) {
|
||||||
|
@ -191,8 +185,19 @@
|
||||||
if (text) console.error('[post-exception status] ' + text);
|
if (text) console.error('[post-exception status] ' + text);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var jsModuleName;
|
||||||
|
if (!WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))) {
|
||||||
|
jsModuleName = "CardinalNative-nosimd.js";
|
||||||
|
} else {
|
||||||
|
jsModuleName = "CardinalNative.js";
|
||||||
|
}
|
||||||
|
var jsModuleScript = document.createElement('script');
|
||||||
|
jsModuleScript.setAttribute('async', true);
|
||||||
|
jsModuleScript.setAttribute('src', jsModuleName);
|
||||||
|
jsModuleScript.setAttribute('type','text/javascript');
|
||||||
|
document.head.appendChild(jsModuleScript);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{{{ SCRIPT }}}
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue