Cleanup some more CI details, auto-load nosimd wasm

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX 2023-04-23 12:20:52 +02:00
parent 26e206f3d8
commit 5a53cd37b8
No known key found for this signature in database
GPG key ID: CDBAA37ABC74FBA0
6 changed files with 103 additions and 230 deletions

View file

@ -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)

View file

@ -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 = \

View file

@ -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)

View file

@ -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 $@

View file

@ -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>

View file

@ -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>