@@ -4,39 +4,34 @@ on: [push, pull_request] | |||||
env: | env: | ||||
DEBIAN_FRONTEND: noninteractive | DEBIAN_FRONTEND: noninteractive | ||||
EMSCRIPTEN_VERSION: 3.1.27 | |||||
HOMEBREW_NO_AUTO_UPDATE: 1 | HOMEBREW_NO_AUTO_UPDATE: 1 | ||||
WITH_LTO: false | |||||
HOMEBREW_NO_INSTALL_CLEANUP: 1 | |||||
jobs: | jobs: | ||||
macos-11: | |||||
runs-on: macos-11 | |||||
linux: | |||||
strategy: | |||||
matrix: | |||||
include: | |||||
- target: debian:11 | |||||
- target: debian:12 | |||||
- target: ubuntu:18.04 | |||||
- target: ubuntu:20.04 | |||||
- target: ubuntu:22.04 | |||||
runs-on: ubuntu-latest | |||||
container: | |||||
image: ${{ matrix.target }} | |||||
steps: | steps: | ||||
- uses: actions/checkout@v3 | - uses: actions/checkout@v3 | ||||
- name: Set up dependencies | - name: Set up dependencies | ||||
run: | | run: | | ||||
brew install fluid-synth liblo libmagic libsndfile pkg-config pyqt@5 qt@5 sdl2 | |||||
- name: make features | |||||
run: make features | |||||
- name: make | |||||
run: make -j $(sysctl -n hw.logicalcpu) | |||||
ubuntu-20_04: | |||||
runs-on: ubuntu-20.04 | |||||
steps: | |||||
- uses: actions/checkout@v3 | |||||
- name: Fix GitHub's mess | |||||
run: | | |||||
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list | |||||
sudo dpkg --add-architecture i386 | |||||
sudo apt-get update -qq | |||||
sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal | |||||
- name: Set up dependencies | |||||
run: | | |||||
sudo apt-get install -yqq libasound2-dev libfluidsynth-dev libgl1-mesa-dev liblo-dev libmagic-dev libpulse-dev libsdl2-dev libsndfile1-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev pkg-config pyqt5-dev-tools qtbase5-dev | |||||
sudo apt-get install -yqq g++-multilib libx11-6:i386 libxext6:i386 | |||||
dpkg --add-architecture i386 | |||||
apt-get update -qq | |||||
apt-get install -yqq g++-multilib libasound2-dev libfluidsynth-dev libgl1-mesa-dev liblo-dev libmagic-dev libpulse-dev libsdl2-dev libsndfile1-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev make pkg-config pyqt5-dev-tools qtbase5-dev | |||||
apt-get install -yqq libx11-6:i386 libxext6:i386 | |||||
# Fix 32bit bridge build | # Fix 32bit bridge build | ||||
sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so | |||||
sudo ln -s /usr/lib/i386-linux-gnu/libXext.so.6 /usr/lib/i386-linux-gnu/libXext.so | |||||
ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so | |||||
ln -s /usr/lib/i386-linux-gnu/libXext.so.6 /usr/lib/i386-linux-gnu/libXext.so | |||||
- name: make features | - name: make features | ||||
run: make features | run: make features | ||||
- name: make | - name: make | ||||
@@ -44,34 +39,27 @@ jobs: | |||||
- name: make posix32 | - name: make posix32 | ||||
run: make posix32 -j $(nproc) | run: make posix32 -j $(nproc) | ||||
ubuntu-22_04: | |||||
runs-on: ubuntu-22.04 | |||||
macos: | |||||
strategy: | |||||
matrix: | |||||
include: | |||||
#- target: macos-11 | |||||
- target: macos-12 | |||||
runs-on: ${{ matrix.target }} | |||||
steps: | steps: | ||||
- uses: actions/checkout@v3 | - uses: actions/checkout@v3 | ||||
- name: Fix GitHub's mess | |||||
run: | | |||||
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list | |||||
sudo dpkg --add-architecture i386 | |||||
sudo apt-get update -qq | |||||
sudo apt-get install -yqq --allow-downgrades libc6:i386 libgcc-s1:i386 libstdc++6:i386 | |||||
with: | |||||
submodules: recursive | |||||
- name: Set up dependencies | - name: Set up dependencies | ||||
run: | | run: | | ||||
sudo apt-get install -yqq libasound2-dev libfluidsynth-dev libgl1-mesa-dev liblo-dev libmagic-dev libpulse-dev libsdl2-dev libsndfile1-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev pkg-config pyqt5-dev-tools qtbase5-dev | |||||
sudo apt-get install -yqq g++-multilib libx11-6:i386 libxext6:i386 | |||||
# Fix 32bit bridge build | |||||
sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so | |||||
sudo ln -s /usr/lib/i386-linux-gnu/libXext.so.6 /usr/lib/i386-linux-gnu/libXext.so | |||||
brew install fluid-synth liblo libmagic libsndfile pkg-config pyqt@5 qt@5 sdl2 | |||||
- name: make features | - name: make features | ||||
run: make features | run: make features | ||||
- name: make | - name: make | ||||
run: make -j $(nproc) | |||||
- name: make posix32 | |||||
run: make posix32 -j $(nproc) | |||||
run: make -j $(sysctl -n hw.logicalcpu) | |||||
wasm: | wasm: | ||||
runs-on: ubuntu-22.04 | runs-on: ubuntu-22.04 | ||||
env: | |||||
EMSCRIPTEN_VERSION: 3.1.27 | |||||
steps: | steps: | ||||
- uses: actions/checkout@v3 | - uses: actions/checkout@v3 | ||||
with: | with: | ||||
@@ -6,140 +6,138 @@ env: | |||||
DESTDIR: ${{ github.workspace }}/build/tmp | DESTDIR: ${{ github.workspace }}/build/tmp | ||||
jobs: | jobs: | ||||
macos-libs: | |||||
runs-on: macos-latest | |||||
linux: | |||||
strategy: | |||||
matrix: | |||||
include: | |||||
- container: debian:11 | |||||
- container: debian:12 | |||||
#- container: ubuntu:20.04 | |||||
- container: ubuntu:22.04 | |||||
- container: ubuntu:23.10 | |||||
runs-on: ubuntu-latest | |||||
container: | |||||
image: ${{ matrix.container }} | |||||
steps: | steps: | ||||
- uses: actions/checkout@v3 | - uses: actions/checkout@v3 | ||||
- name: Set up dependencies | - name: Set up dependencies | ||||
run: | | run: | | ||||
brew install cmake fluid-synth liblo libmagic libsndfile pkg-config | |||||
apt-get update -qq | |||||
apt-get install -yqq cmake g++ libfluidsynth-dev liblo-dev libmagic-dev libsndfile1-dev libx11-dev lsb-release pkg-config | |||||
echo "PACK_NAME=$(lsb_release -cs 2>/dev/null)" >> "${GITHUB_ENV}" | |||||
- name: configure | - name: configure | ||||
run: cmake -S cmake -B build -DCARLA_BUILD_FRAMEWORKS=OFF | |||||
run: cmake -S cmake -B build | |||||
- name: build | - name: build | ||||
run: cmake --build build -j $(sysctl -n hw.logicalcpu) | |||||
run: cmake --build build -j $(nproc) | |||||
- name: install | - name: install | ||||
run: cmake --install build --verbose | run: cmake --install build --verbose | ||||
- uses: actions/upload-artifact@v3 | - uses: actions/upload-artifact@v3 | ||||
with: | with: | ||||
name: macos-libs | |||||
name: linux-${{ env.PACK_NAME }} | |||||
path: ${{ env.DESTDIR }} | path: ${{ env.DESTDIR }} | ||||
macos-frameworks: | |||||
macos: | |||||
strategy: | |||||
matrix: | |||||
include: | |||||
- frameworks: ON | |||||
- frameworks: OFF | |||||
runs-on: macos-latest | runs-on: macos-latest | ||||
steps: | steps: | ||||
- uses: actions/checkout@v3 | - uses: actions/checkout@v3 | ||||
- name: Set up dependencies | - name: Set up dependencies | ||||
run: | | run: | | ||||
brew install cmake fluid-synth liblo libmagic libsndfile pkg-config | brew install cmake fluid-synth liblo libmagic libsndfile pkg-config | ||||
if [ "${{ matrix.frameworks }}" = "" ]; then | |||||
echo "PACK_NAME=frameworks" >> "${GITHUB_ENV}" | |||||
else | |||||
echo "PACK_NAME=libs" >> "${GITHUB_ENV}" | |||||
fi | |||||
- name: configure | - name: configure | ||||
run: cmake -S cmake -B build -DCARLA_BUILD_FRAMEWORKS=ON | |||||
run: cmake -S cmake -B build -DCARLA_BUILD_FRAMEWORKS=${{ matrix.frameworks }} | |||||
- name: build | - name: build | ||||
run: cmake --build build -j $(sysctl -n hw.logicalcpu) | run: cmake --build build -j $(sysctl -n hw.logicalcpu) | ||||
- name: install | - name: install | ||||
run: cmake --install build --verbose | run: cmake --install build --verbose | ||||
- uses: actions/upload-artifact@v3 | - uses: actions/upload-artifact@v3 | ||||
with: | with: | ||||
name: macos-frameworks | |||||
name: macos-${{ env.PACK_NAME }} | |||||
path: ${{ env.DESTDIR }} | path: ${{ env.DESTDIR }} | ||||
mingw32-cross: | mingw32-cross: | ||||
runs-on: ubuntu-22.04 | |||||
strategy: | |||||
matrix: | |||||
include: | |||||
- container: debian:11 | |||||
- container: debian:12 | |||||
#- container: ubuntu:20.04 | |||||
- container: ubuntu:22.04 | |||||
- container: ubuntu:23.10 | |||||
runs-on: ubuntu-latest | |||||
container: | |||||
image: ${{ matrix.container }} | |||||
steps: | steps: | ||||
- uses: actions/checkout@v3 | - uses: actions/checkout@v3 | ||||
- name: Set up dependencies | - name: Set up dependencies | ||||
run: | | run: | | ||||
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list | |||||
sudo dpkg --add-architecture i386 | |||||
sudo apt-get update -qq | |||||
sudo apt-get install -yqq --allow-downgrades cmake libc6:i386 libgcc-s1:i386 libstdc++6:i386 binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 wine-stable:i386 | |||||
dpkg --add-architecture i386 | |||||
apt-get update -qq | |||||
apt-get install -yqq cmake binutils-mingw-w64-i686 gcc g++-mingw-w64 lsb-release mingw-w64 pkg-config | |||||
if [ "$(lsb_release -si 2>/dev/null)" = "Debian" ]; then | |||||
apt-get install -yqq wine wine32 wine64 | |||||
else | |||||
apt-get install -yqq wine-stable | |||||
fi | |||||
echo "PACK_NAME=$(lsb_release -cs 2>/dev/null)" >> "${GITHUB_ENV}" | |||||
- name: configure | - name: configure | ||||
env: | env: | ||||
PKG_CONFIG: false | PKG_CONFIG: false | ||||
run: cmake -S cmake -B build \ | |||||
-DCMAKE_CROSSCOMPILING=ON \ | |||||
-DCMAKE_CROSSCOMPILING_EMULATOR=wine \ | |||||
-DCMAKE_SYSTEM_NAME=Windows \ | |||||
-DCMAKE_SYSTEM_PROCESSOR=i686 \ | |||||
-DCMAKE_C_COMPILER=i686-w64-mingw32-gcc \ | |||||
-DCMAKE_CXX_COMPILER=i686-w64-mingw32-g++ \ | |||||
-DCMAKE_RANLIB=i686-w64-mingw32-ranlib \ | |||||
-DCMAKE_AR=$(which i686-w64-mingw32-ar) | |||||
run: cmake -S cmake -B build -DCMAKE_CROSSCOMPILING=ON -DCMAKE_CROSSCOMPILING_EMULATOR=wine -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=i686 -DCMAKE_C_COMPILER=i686-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=i686-w64-mingw32-g++ -DCMAKE_AR=/usr/bin/i686-w64-mingw32-ar -DCMAKE_C_COMPILER_AR=/usr/bin/i686-w64-mingw32-ar -DCMAKE_CXX_COMPILER_AR=/usr/bin/i686-w64-mingw32-ar -DCMAKE_RANLIB=/usr/bin/i686-w64-mingw32-ranlib -DCMAKE_C_COMPILER_RANLIB=/usr/bin/i686-w64-mingw32-ranlib -DCMAKE_CXX_COMPILER_RANLIB=/usr/bin/i686-w64-mingw32-ranlib -DCMAKE_RC_COMPILER=/usr/bin/i686-w64-mingw32-windres | |||||
- name: build | - name: build | ||||
run: cmake --build build -j $(nproc) | run: cmake --build build -j $(nproc) | ||||
- name: install | - name: install | ||||
run: cmake --install build --verbose | run: cmake --install build --verbose | ||||
- uses: actions/upload-artifact@v3 | - uses: actions/upload-artifact@v3 | ||||
with: | with: | ||||
name: mingw32 | |||||
name: mingw32-${{ env.PACK_NAME }} | |||||
path: ${{ env.DESTDIR }} | path: ${{ env.DESTDIR }} | ||||
mingw64-cross: | mingw64-cross: | ||||
runs-on: ubuntu-22.04 | |||||
strategy: | |||||
matrix: | |||||
include: | |||||
- container: debian:11 | |||||
- container: debian:12 | |||||
#- container: ubuntu:20.04 | |||||
- container: ubuntu:22.04 | |||||
- container: ubuntu:23.10 | |||||
runs-on: ubuntu-latest | |||||
container: | |||||
image: ${{ matrix.container }} | |||||
steps: | steps: | ||||
- uses: actions/checkout@v3 | - uses: actions/checkout@v3 | ||||
- name: Set up dependencies | - name: Set up dependencies | ||||
run: | | run: | | ||||
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list | |||||
sudo dpkg --add-architecture i386 | |||||
sudo apt-get update -qq | |||||
sudo apt-get install -yqq --allow-downgrades cmake libc6:i386 libgcc-s1:i386 libstdc++6:i386 binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64 wine-stable | |||||
dpkg --add-architecture i386 | |||||
apt-get update -qq | |||||
apt-get install -yqq cmake binutils-mingw-w64-x86-64 gcc g++-mingw-w64 lsb-release mingw-w64 pkg-config | |||||
if [ "$(lsb_release -si 2>/dev/null)" = "Debian" ]; then | |||||
apt-get install -yqq wine wine32 wine64 | |||||
else | |||||
apt-get install -yqq wine-stable | |||||
fi | |||||
echo "PACK_NAME=$(lsb_release -cs 2>/dev/null)" >> "${GITHUB_ENV}" | |||||
- name: configure | - name: configure | ||||
env: | env: | ||||
PKG_CONFIG: false | PKG_CONFIG: false | ||||
run: cmake -S cmake -B build \ | |||||
-DCMAKE_CROSSCOMPILING=ON \ | |||||
-DCMAKE_CROSSCOMPILING_EMULATOR=wine \ | |||||
-DCMAKE_SYSTEM_NAME=Windows \ | |||||
-DCMAKE_SYSTEM_PROCESSOR=x86_64 \ | |||||
-DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \ | |||||
-DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ \ | |||||
-DCMAKE_RANLIB=x86_64-w64-mingw32-ranlib \ | |||||
-DCMAKE_AR=$(which x86_64-w64-mingw32-ar) | |||||
- name: build | |||||
run: cmake --build build -j $(nproc) | |||||
- name: install | |||||
run: cmake --install build --verbose | |||||
- uses: actions/upload-artifact@v3 | |||||
with: | |||||
name: mingw64 | |||||
path: ${{ env.DESTDIR }} | |||||
ubuntu-20_04: | |||||
runs-on: ubuntu-20.04 | |||||
steps: | |||||
- uses: actions/checkout@v3 | |||||
- name: Set up dependencies | |||||
run: | | |||||
sudo apt-get update -qq | |||||
sudo apt-get install -yqq cmake libfluidsynth-dev liblo-dev libmagic-dev libsndfile1-dev libx11-dev pkg-config | |||||
- name: configure | |||||
run: cmake -S cmake -B build | |||||
- name: build | |||||
run: cmake --build build -j $(nproc) | |||||
- name: install | |||||
run: cmake --install build --verbose | |||||
- uses: actions/upload-artifact@v3 | |||||
with: | |||||
name: ubuntu-20.04 | |||||
path: ${{ env.DESTDIR }} | |||||
ubuntu-22_04: | |||||
runs-on: ubuntu-22.04 | |||||
steps: | |||||
- uses: actions/checkout@v3 | |||||
- name: Set up dependencies | |||||
run: | | |||||
sudo apt-get update -qq | |||||
sudo apt-get install -yqq cmake libfluidsynth-dev liblo-dev libmagic-dev libsndfile1-dev libx11-dev pkg-config | |||||
- name: configure | |||||
run: cmake -S cmake -B build | |||||
run: cmake -S cmake -B build -DCMAKE_CROSSCOMPILING=ON -DCMAKE_CROSSCOMPILING_EMULATOR=wine -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_AR=/usr/bin/x86_64-w64-mingw32-ar -DCMAKE_C_COMPILER_AR=/usr/bin/x86_64-w64-mingw32-ar -DCMAKE_CXX_COMPILER_AR=/usr/bin/x86_64-w64-mingw32-ar -DCMAKE_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib -DCMAKE_C_COMPILER_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib -DCMAKE_CXX_COMPILER_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib -DCMAKE_RC_COMPILER=/usr/bin/x86_64-w64-mingw32-windres | |||||
- name: build | - name: build | ||||
run: cmake --build build -j $(nproc) | run: cmake --build build -j $(nproc) | ||||
- name: install | - name: install | ||||
run: cmake --install build --verbose | run: cmake --install build --verbose | ||||
- uses: actions/upload-artifact@v3 | - uses: actions/upload-artifact@v3 | ||||
with: | with: | ||||
name: ubuntu-22.04 | |||||
name: mingw64-${{ env.PACK_NAME }} | |||||
path: ${{ env.DESTDIR }} | path: ${{ env.DESTDIR }} | ||||
windows: | windows: | ||||
@@ -2,12 +2,17 @@ name: dpf | |||||
on: [push, pull_request] | on: [push, pull_request] | ||||
env: | |||||
PAWPAW_SKIP_LTO: 1 | |||||
PAWPAW_SKIP_TESTS: 1 | |||||
jobs: | jobs: | ||||
linux: | linux: | ||||
strategy: | strategy: | ||||
matrix: | matrix: | ||||
target: [linux-x86_64] | target: [linux-x86_64] | ||||
# linux-arm64, linux-armhf, linux-i686, linux-riscv64 | |||||
# TODO: add PawPaw bootstrap type | |||||
# linux-arm64, linux-armhf, linux-i686, linux-riscv64, | |||||
runs-on: ubuntu-20.04 | runs-on: ubuntu-20.04 | ||||
steps: | steps: | ||||
- uses: actions/checkout@v3 | - uses: actions/checkout@v3 | ||||
@@ -22,7 +27,7 @@ jobs: | |||||
macos: | macos: | ||||
strategy: | strategy: | ||||
matrix: | matrix: | ||||
target: [macos-intel, macos-universal] | |||||
target: [macos-intel, macos-universal, macos-universal-10.15] | |||||
runs-on: macos-11 | runs-on: macos-11 | ||||
steps: | steps: | ||||
- uses: actions/checkout@v3 | - uses: actions/checkout@v3 | ||||
@@ -54,15 +59,20 @@ jobs: | |||||
pawpaw: true | pawpaw: true | ||||
release: false | release: false | ||||
# pluginval: | |||||
# runs-on: ubuntu-20.04 | |||||
# steps: | |||||
# - uses: actions/checkout@v3 | |||||
# with: | |||||
# submodules: recursive | |||||
# - uses: distrho/dpf-makefile-action@v1 | |||||
# with: | |||||
# target: pluginval | |||||
# NOTE disabled for now | |||||
# lv2lint does not allow to differentiate exposed features for multiple plugins in a single binary | |||||
# (e.g. plugin A uses worker while plugin B does not, but they come from the same binary) | |||||
# see https://github.com/falkTX/Carla/actions/runs/7389992205/job/20103997236 | |||||
#pluginval: | |||||
#runs-on: ubuntu-20.04 | |||||
#steps: | |||||
#- uses: actions/checkout@v3 | |||||
#with: | |||||
#submodules: recursive | |||||
#- uses: distrho/dpf-makefile-action@v1 | |||||
#with: | |||||
#target: pluginval | |||||
#pawpaw: true | |||||
source: | source: | ||||
runs-on: ubuntu-20.04 | runs-on: ubuntu-20.04 | ||||
@@ -4,8 +4,12 @@ on: [push, pull_request] | |||||
env: | env: | ||||
CACHE_VERSION: 1 | CACHE_VERSION: 1 | ||||
DEBIAN_FRONTEND: noninteractive | |||||
HOMEBREW_NO_AUTO_UPDATE: 1 | |||||
HOMEBREW_NO_INSTALL_CLEANUP: 1 | |||||
PAWPAW_SKIP_LTO: 1 | PAWPAW_SKIP_LTO: 1 | ||||
PAWPAW_VERSION: cd7b760d6a32ecad263b112c12be8a306ed1e89c | |||||
PAWPAW_SKIP_TESTS: 1 | |||||
PAWPAW_VERSION: 9534e2b4f9bafc993e05fada89b824f3a2176708 | |||||
jobs: | jobs: | ||||
# macOS native universal build | # macOS native universal build | ||||
@@ -29,6 +33,7 @@ jobs: | |||||
run: | | run: | | ||||
git clone https://github.com/DISTRHO/PawPaw.git | git clone https://github.com/DISTRHO/PawPaw.git | ||||
git -C PawPaw checkout ${{ env.PAWPAW_VERSION }} | git -C PawPaw checkout ${{ env.PAWPAW_VERSION }} | ||||
./PawPaw/.github/workflows/bootstrap-deps.sh macos-universal | |||||
./PawPaw/bootstrap-carla.sh macos-universal && ./PawPaw/.cleanup.sh macos-universal | ./PawPaw/bootstrap-carla.sh macos-universal && ./PawPaw/.cleanup.sh macos-universal | ||||
- name: Build macOS universal | - name: Build macOS universal | ||||
shell: bash | shell: bash | ||||
@@ -92,6 +97,7 @@ jobs: | |||||
run: | | run: | | ||||
git clone https://github.com/DISTRHO/PawPaw.git | git clone https://github.com/DISTRHO/PawPaw.git | ||||
git -C PawPaw checkout ${{ env.PAWPAW_VERSION }} | git -C PawPaw checkout ${{ env.PAWPAW_VERSION }} | ||||
./PawPaw/.github/workflows/bootstrap-deps.sh win32 | |||||
./PawPaw/bootstrap-carla.sh win32 && ./PawPaw/.cleanup.sh win32 | ./PawPaw/bootstrap-carla.sh win32 && ./PawPaw/.cleanup.sh win32 | ||||
- name: Build win32 cross-compiled | - name: Build win32 cross-compiled | ||||
shell: bash | shell: bash | ||||
@@ -155,6 +161,7 @@ jobs: | |||||
run: | | run: | | ||||
git clone https://github.com/DISTRHO/PawPaw.git | git clone https://github.com/DISTRHO/PawPaw.git | ||||
git -C PawPaw checkout ${{ env.PAWPAW_VERSION }} | git -C PawPaw checkout ${{ env.PAWPAW_VERSION }} | ||||
./PawPaw/.github/workflows/bootstrap-deps.sh win64 | |||||
./PawPaw/bootstrap-carla.sh win64 && ./PawPaw/.cleanup.sh win64 | ./PawPaw/bootstrap-carla.sh win64 && ./PawPaw/.cleanup.sh win64 | ||||
- name: Build win64 cross-compiled | - name: Build win64 cross-compiled | ||||
shell: bash | shell: bash | ||||
@@ -16,6 +16,7 @@ set(PROJECT_SHORT_VERSION 2.5.91) | |||||
set(CMAKE_POLICY_DEFAULT_CMP0025 NEW) | set(CMAKE_POLICY_DEFAULT_CMP0025 NEW) | ||||
set(CMAKE_POLICY_DEFAULT_CMP0063 NEW) | set(CMAKE_POLICY_DEFAULT_CMP0063 NEW) | ||||
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW) | set(CMAKE_POLICY_DEFAULT_CMP0069 NEW) | ||||
set(CMAKE_POLICY_DEFAULT_CMP0126 NEW) | |||||
set(CMAKE_C_STANDARD 11) | set(CMAKE_C_STANDARD 11) | ||||
set(CMAKE_CXX_STANDARD 11) | set(CMAKE_CXX_STANDARD 11) | ||||
@@ -49,8 +50,8 @@ else() | |||||
set(CARLA_USE_OSC_DEFAULT TRUE) | set(CARLA_USE_OSC_DEFAULT TRUE) | ||||
endif() | endif() | ||||
set(CARLA_BUILD_FRAMEWORKS FALSE CACHE BOOL "Build libraries as macOS frameworks") | set(CARLA_BUILD_FRAMEWORKS FALSE CACHE BOOL "Build libraries as macOS frameworks") | ||||
set(CARLA_BUILD_STATIC FALSE CACHE BOOL "Build static libraries") | |||||
set(CARLA_ENABLE_JSFX TRUE CACHE BOOL "Enable JSFX") | set(CARLA_ENABLE_JSFX TRUE CACHE BOOL "Enable JSFX") | ||||
set(CARLA_USE_JACK ${CARLA_USE_JACK_DEFAULT} CACHE BOOL "Enable JACK") | set(CARLA_USE_JACK ${CARLA_USE_JACK_DEFAULT} CACHE BOOL "Enable JACK") | ||||
set(CARLA_USE_OSC ${CARLA_USE_OSC_DEFAULT} CACHE BOOL "Enable OSC") | set(CARLA_USE_OSC ${CARLA_USE_OSC_DEFAULT} CACHE BOOL "Enable OSC") | ||||
@@ -60,6 +61,12 @@ if(${CARLA_BUILD_FRAMEWORKS} AND NOT APPLE) | |||||
mark_as_advanced(CARLA_BUILD_FRAMEWORKS) | mark_as_advanced(CARLA_BUILD_FRAMEWORKS) | ||||
endif() | endif() | ||||
if(${CARLA_BUILD_STATIC}) | |||||
set(CARLA_LIB_TYPE STATIC) | |||||
else() | |||||
set(CARLA_LIB_TYPE SHARED) | |||||
endif() | |||||
if(${CARLA_BUILD_FRAMEWORKS}) | if(${CARLA_BUILD_FRAMEWORKS}) | ||||
execute_process(COMMAND date -u +%y%m%d%H%M%S OUTPUT_VARIABLE CARLA_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) | execute_process(COMMAND date -u +%y%m%d%H%M%S OUTPUT_VARIABLE CARLA_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) | ||||
endif() | endif() | ||||
@@ -158,6 +165,8 @@ function(set_common_target_properties TARGET) | |||||
target_compile_definitions(${TARGET} | target_compile_definitions(${TARGET} | ||||
PRIVATE | PRIVATE | ||||
BUILDING_CARLA | BUILDING_CARLA | ||||
$<$<BOOL:${MSVC}>:_USE_MATH_DEFINES> | |||||
PUBLIC | |||||
$<$<BOOL:${CARLA_ENABLE_JSFX}>:HAVE_YSFX> | $<$<BOOL:${CARLA_ENABLE_JSFX}>:HAVE_YSFX> | ||||
$<$<BOOL:${CARLA_USE_JACK}>:HAVE_JACK> | $<$<BOOL:${CARLA_USE_JACK}>:HAVE_JACK> | ||||
$<$<BOOL:${FLUIDSYNTH_FOUND}>:HAVE_FLUIDSYNTH> | $<$<BOOL:${FLUIDSYNTH_FOUND}>:HAVE_FLUIDSYNTH> | ||||
@@ -166,7 +175,6 @@ function(set_common_target_properties TARGET) | |||||
$<$<BOOL:${PYQT_FOUND}>:HAVE_PYQT> | $<$<BOOL:${PYQT_FOUND}>:HAVE_PYQT> | ||||
$<$<BOOL:${SNDFILE_FOUND}>:HAVE_SNDFILE> | $<$<BOOL:${SNDFILE_FOUND}>:HAVE_SNDFILE> | ||||
$<$<BOOL:${X11_FOUND}>:HAVE_X11> | $<$<BOOL:${X11_FOUND}>:HAVE_X11> | ||||
$<$<BOOL:${MSVC}>:_USE_MATH_DEFINES> | |||||
) | ) | ||||
target_compile_options(${TARGET} | target_compile_options(${TARGET} | ||||
@@ -240,7 +248,7 @@ target_include_directories(carla-audio-decoder | |||||
) | ) | ||||
target_link_libraries(carla-audio-decoder | target_link_libraries(carla-audio-decoder | ||||
PRIVATE | |||||
PUBLIC | |||||
PkgConfig::SNDFILE | PkgConfig::SNDFILE | ||||
) | ) | ||||
@@ -268,7 +276,7 @@ target_include_directories(carla-jackbridge | |||||
) | ) | ||||
target_link_libraries(carla-jackbridge | target_link_libraries(carla-jackbridge | ||||
PRIVATE | |||||
PUBLIC | |||||
${CARLA_LIBDL} | ${CARLA_LIBDL} | ||||
${CARLA_LIBRT} | ${CARLA_LIBRT} | ||||
) | ) | ||||
@@ -439,7 +447,7 @@ target_include_directories(carla-native-plugins | |||||
) | ) | ||||
target_link_libraries(carla-native-plugins | target_link_libraries(carla-native-plugins | ||||
PRIVATE | |||||
PUBLIC | |||||
${CARLA_PTHREADS} | ${CARLA_PTHREADS} | ||||
) | ) | ||||
@@ -484,7 +492,7 @@ target_include_directories(carla-rtmempool | |||||
) | ) | ||||
target_link_libraries(carla-rtmempool | target_link_libraries(carla-rtmempool | ||||
PRIVATE | |||||
PUBLIC | |||||
${CARLA_LIBDL} | ${CARLA_LIBDL} | ||||
${CARLA_LIBRT} | ${CARLA_LIBRT} | ||||
${CARLA_PTHREADS} | ${CARLA_PTHREADS} | ||||
@@ -513,6 +521,7 @@ target_include_directories(carla-sfzero | |||||
target_link_libraries(carla-sfzero | target_link_libraries(carla-sfzero | ||||
PRIVATE | PRIVATE | ||||
carla-audio-decoder | carla-audio-decoder | ||||
PUBLIC | |||||
${CARLA_PTHREADS} | ${CARLA_PTHREADS} | ||||
) | ) | ||||
@@ -541,7 +550,7 @@ target_include_directories(carla-water | |||||
) | ) | ||||
target_link_libraries(carla-water | target_link_libraries(carla-water | ||||
PRIVATE | |||||
PUBLIC | |||||
$<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>> | $<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>> | ||||
$<$<BOOL:${WIN32}>:comdlg32> | $<$<BOOL:${WIN32}>:comdlg32> | ||||
$<$<BOOL:${WIN32}>:ole32> | $<$<BOOL:${WIN32}>:ole32> | ||||
@@ -576,7 +585,7 @@ target_include_directories(carla-water-files | |||||
) | ) | ||||
target_link_libraries(carla-water-files | target_link_libraries(carla-water-files | ||||
PRIVATE | |||||
PUBLIC | |||||
$<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>> | $<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>> | ||||
$<$<BOOL:${WIN32}>:ole32> | $<$<BOOL:${WIN32}>:ole32> | ||||
$<$<BOOL:${WIN32}>:winmm> | $<$<BOOL:${WIN32}>:winmm> | ||||
@@ -691,7 +700,7 @@ target_include_directories(carla-zita-resampler | |||||
) | ) | ||||
target_link_libraries(carla-zita-resampler | target_link_libraries(carla-zita-resampler | ||||
PRIVATE | |||||
PUBLIC | |||||
${CARLA_PTHREADS} | ${CARLA_PTHREADS} | ||||
) | ) | ||||
@@ -753,6 +762,7 @@ target_link_libraries(carla-bridge-native | |||||
carla-water | carla-water | ||||
$<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx> | $<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx> | ||||
carla-zita-resampler | carla-zita-resampler | ||||
PUBLIC | |||||
PkgConfig::FLUIDSYNTH | PkgConfig::FLUIDSYNTH | ||||
PkgConfig::LIBLO | PkgConfig::LIBLO | ||||
PkgConfig::LIBMAGIC | PkgConfig::LIBMAGIC | ||||
@@ -824,6 +834,7 @@ target_link_libraries(carla-bridge-lv2-gtk2 | |||||
PRIVATE | PRIVATE | ||||
carla-lilv | carla-lilv | ||||
carla-water-files | carla-water-files | ||||
PUBLIC | |||||
PkgConfig::X11 | PkgConfig::X11 | ||||
${CARLA_PTHREADS} | ${CARLA_PTHREADS} | ||||
) | ) | ||||
@@ -867,6 +878,7 @@ target_link_libraries(carla-bridge-lv2-gtk3 | |||||
PRIVATE | PRIVATE | ||||
carla-lilv | carla-lilv | ||||
carla-water-files | carla-water-files | ||||
PUBLIC | |||||
PkgConfig::X11 | PkgConfig::X11 | ||||
${CARLA_PTHREADS} | ${CARLA_PTHREADS} | ||||
) | ) | ||||
@@ -904,6 +916,7 @@ target_link_libraries(carla-discovery-native | |||||
carla-lilv | carla-lilv | ||||
carla-water-files | carla-water-files | ||||
$<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx> | $<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx> | ||||
PUBLIC | |||||
PkgConfig::FLUIDSYNTH | PkgConfig::FLUIDSYNTH | ||||
${CARLA_PTHREADS} | ${CARLA_PTHREADS} | ||||
) | ) | ||||
@@ -913,11 +926,135 @@ target_sources(carla-discovery-native | |||||
../source/discovery/carla-discovery.cpp | ../source/discovery/carla-discovery.cpp | ||||
) | ) | ||||
####################################################################################################################### | |||||
# carla host-plugin | |||||
add_library(carla-host-plugin ${CARLA_LIB_TYPE}) | |||||
add_library(carla::host-plugin ALIAS carla-host-plugin) | |||||
set_common_target_properties(carla-host-plugin) | |||||
if(${CARLA_BUILD_FRAMEWORKS}) | |||||
set(carla-host-plugin-public-headers | |||||
../source/backend/CarlaBackend.h | |||||
../source/backend/CarlaHost.h | |||||
../source/backend/CarlaUtils.h | |||||
) | |||||
set_target_properties(carla-host-plugin | |||||
PROPERTIES | |||||
FRAMEWORK TRUE | |||||
FRAMEWORK_VERSION A | |||||
OUTPUT_NAME carla-host-plugin | |||||
PUBLIC_HEADER "${carla-host-plugin-public-headers}" | |||||
MACOSX_FRAMEWORK_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info-framework.plist.in" | |||||
MACOSX_FRAMEWORK_IDENTIFIER "studio.kx.carla.host-plugin" | |||||
MACOSX_FRAMEWORK_BUNDLE_VERSION "${CARLA_DATE}" | |||||
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${PROJECT_SHORT_VERSION}" | |||||
) | |||||
else() | |||||
set_target_properties(carla-host-plugin | |||||
PROPERTIES | |||||
OUTPUT_NAME carla_host-plugin | |||||
IMPORT_PREFIX lib | |||||
PREFIX lib | |||||
) | |||||
endif() | |||||
target_compile_definitions(carla-host-plugin | |||||
PRIVATE | |||||
CARLA_PLUGIN_BUILD | |||||
CARLA_LIB_EXT="${CMAKE_SHARED_LIBRARY_SUFFIX}" | |||||
) | |||||
# FIXME | |||||
# target_compile_options(carla-host-plugin | |||||
# PRIVATE | |||||
# $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter> | |||||
# ) | |||||
target_include_directories(carla-host-plugin | |||||
PRIVATE | |||||
../source | |||||
../source/modules | |||||
PUBLIC | |||||
../source/backend | |||||
../source/includes | |||||
../source/utils | |||||
) | |||||
target_link_libraries(carla-host-plugin | |||||
PRIVATE | |||||
carla-jackbridge | |||||
carla-lilv | |||||
carla-native-plugins | |||||
carla-rtmempool | |||||
carla-sfzero | |||||
carla-water | |||||
$<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx> | |||||
carla-zita-resampler | |||||
PUBLIC | |||||
PkgConfig::FLUIDSYNTH | |||||
PkgConfig::LIBLO | |||||
PkgConfig::LIBMAGIC | |||||
PkgConfig::X11 | |||||
$<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>> | |||||
${CARLA_PTHREADS} | |||||
) | |||||
target_sources(carla-host-plugin | |||||
PRIVATE | |||||
../source/backend/engine/CarlaEngine.cpp | |||||
../source/backend/engine/CarlaEngineClient.cpp | |||||
../source/backend/engine/CarlaEngineData.cpp | |||||
../source/backend/engine/CarlaEngineGraph.cpp | |||||
../source/backend/engine/CarlaEngineInternal.cpp | |||||
../source/backend/engine/CarlaEngineNative.cpp | |||||
../source/backend/engine/CarlaEngineOsc.cpp | |||||
../source/backend/engine/CarlaEngineOscHandlers.cpp | |||||
../source/backend/engine/CarlaEngineOscSend.cpp | |||||
../source/backend/engine/CarlaEnginePorts.cpp | |||||
../source/backend/engine/CarlaEngineRunner.cpp | |||||
../source/backend/plugin/CarlaPlugin.cpp | |||||
../source/backend/plugin/CarlaPluginBridge.cpp | |||||
../source/backend/plugin/CarlaPluginInternal.cpp | |||||
../source/backend/plugin/CarlaPluginAU.cpp | |||||
../source/backend/plugin/CarlaPluginCLAP.cpp | |||||
../source/backend/plugin/CarlaPluginFluidSynth.cpp | |||||
../source/backend/plugin/CarlaPluginJuce.cpp | |||||
../source/backend/plugin/CarlaPluginJSFX.cpp | |||||
../source/backend/plugin/CarlaPluginLADSPADSSI.cpp | |||||
../source/backend/plugin/CarlaPluginLV2.cpp | |||||
../source/backend/plugin/CarlaPluginNative.cpp | |||||
../source/backend/plugin/CarlaPluginSFZero.cpp | |||||
../source/backend/plugin/CarlaPluginVST2.cpp | |||||
../source/backend/plugin/CarlaPluginVST3.cpp | |||||
../source/plugin/carla-host-plugin.cpp | |||||
$<$<BOOL:${CARLA_USE_JACK}>:../source/backend/plugin/CarlaPluginJack.cpp> | |||||
PUBLIC | |||||
${carla-host-plugin-public-headers} | |||||
) | |||||
install(TARGETS carla-host-plugin | |||||
ARCHIVE DESTINATION ${CARLA_INSTALL_LIBDIR} | |||||
LIBRARY DESTINATION ${CARLA_INSTALL_LIBDIR} | |||||
FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR} | |||||
RUNTIME DESTINATION ${CARLA_INSTALL_BINDIR} | |||||
) | |||||
if(${CARLA_BUILD_FRAMEWORKS}) | |||||
install(FILES | |||||
../source/includes/CarlaDefines.h | |||||
../source/includes/CarlaNative.h | |||||
../source/includes/CarlaNativePlugin.h | |||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/carla-standalone.framework/Versions/A/Headers/includes) | |||||
endif() | |||||
####################################################################################################################### | ####################################################################################################################### | ||||
# carla native-plugin | # carla native-plugin | ||||
add_library(carla-native-plugin SHARED) | |||||
add_library(carla::standalone ALIAS carla-native-plugin) | |||||
add_library(carla-native-plugin ${CARLA_LIB_TYPE}) | |||||
add_library(carla::native-plugin ALIAS carla-native-plugin) | |||||
set_common_target_properties(carla-native-plugin) | set_common_target_properties(carla-native-plugin) | ||||
@@ -963,9 +1100,10 @@ target_compile_definitions(carla-native-plugin | |||||
target_include_directories(carla-native-plugin | target_include_directories(carla-native-plugin | ||||
PRIVATE | PRIVATE | ||||
../source | ../source | ||||
../source/modules | |||||
PUBLIC | |||||
../source/backend | ../source/backend | ||||
../source/includes | ../source/includes | ||||
../source/modules | |||||
../source/utils | ../source/utils | ||||
) | ) | ||||
@@ -1023,6 +1161,7 @@ target_link_libraries(carla-native-plugin | |||||
carla-water | carla-water | ||||
$<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx> | $<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx> | ||||
carla-zita-resampler | carla-zita-resampler | ||||
PUBLIC | |||||
PkgConfig::FLUIDSYNTH | PkgConfig::FLUIDSYNTH | ||||
PkgConfig::LIBLO | PkgConfig::LIBLO | ||||
PkgConfig::LIBMAGIC | PkgConfig::LIBMAGIC | ||||
@@ -1082,7 +1221,7 @@ endif() | |||||
####################################################################################################################### | ####################################################################################################################### | ||||
# carla standalone | # carla standalone | ||||
add_library(carla-standalone SHARED) | |||||
add_library(carla-standalone ${CARLA_LIB_TYPE}) | |||||
add_library(carla::standalone ALIAS carla-standalone) | add_library(carla::standalone ALIAS carla-standalone) | ||||
set_common_target_properties(carla-standalone) | set_common_target_properties(carla-standalone) | ||||
@@ -1134,9 +1273,10 @@ target_compile_options(carla-standalone | |||||
target_include_directories(carla-standalone | target_include_directories(carla-standalone | ||||
PRIVATE | PRIVATE | ||||
../source | ../source | ||||
../source/modules | |||||
PUBLIC | |||||
../source/backend | ../source/backend | ||||
../source/includes | ../source/includes | ||||
../source/modules | |||||
../source/utils | ../source/utils | ||||
) | ) | ||||
@@ -1150,6 +1290,7 @@ target_link_libraries(carla-standalone | |||||
carla-water | carla-water | ||||
$<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx> | $<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx> | ||||
carla-zita-resampler | carla-zita-resampler | ||||
PUBLIC | |||||
PkgConfig::FLUIDSYNTH | PkgConfig::FLUIDSYNTH | ||||
PkgConfig::LIBLO | PkgConfig::LIBLO | ||||
PkgConfig::LIBMAGIC | PkgConfig::LIBMAGIC | ||||
@@ -1238,7 +1379,7 @@ endif() | |||||
####################################################################################################################### | ####################################################################################################################### | ||||
# carla utils | # carla utils | ||||
add_library(carla-utils SHARED) | |||||
add_library(carla-utils ${CARLA_LIB_TYPE}) | |||||
add_library(carla::utils ALIAS carla-utils) | add_library(carla::utils ALIAS carla-utils) | ||||
set_common_target_properties(carla-utils) | set_common_target_properties(carla-utils) | ||||
@@ -1272,9 +1413,10 @@ endif() | |||||
target_include_directories(carla-utils | target_include_directories(carla-utils | ||||
PRIVATE | PRIVATE | ||||
../source | ../source | ||||
../source/modules | |||||
PUBLIC | |||||
../source/backend | ../source/backend | ||||
../source/includes | ../source/includes | ||||
../source/modules | |||||
../source/utils | ../source/utils | ||||
) | ) | ||||
@@ -1284,12 +1426,12 @@ target_link_libraries(carla-utils | |||||
carla-lilv | carla-lilv | ||||
carla-water-files | carla-water-files | ||||
$<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx> | $<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx> | ||||
PUBLIC | |||||
PkgConfig::FLUIDSYNTH | PkgConfig::FLUIDSYNTH | ||||
PkgConfig::LIBMAGIC | PkgConfig::LIBMAGIC | ||||
PkgConfig::X11 | PkgConfig::X11 | ||||
$<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>> | |||||
${CARLA_PTHREADS} | ${CARLA_PTHREADS} | ||||
PUBLIC | |||||
$<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>> | |||||
$<$<BOOL:${WIN32}>:winmm> | $<$<BOOL:${WIN32}>:winmm> | ||||
) | ) | ||||
@@ -1445,9 +1587,15 @@ install(TARGETS carla-headers-utils PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_IN | |||||
if(NOT ${CARLA_BUILD_FRAMEWORKS} AND NOT MSVC) | if(NOT ${CARLA_BUILD_FRAMEWORKS} AND NOT MSVC) | ||||
configure_file(carla-utils.pc.in carla-utils.pc @ONLY) | configure_file(carla-utils.pc.in carla-utils.pc @ONLY) | ||||
configure_file(carla-standalone.pc.in carla-standalone.pc @ONLY) | |||||
configure_file(carla-native-plugin.pc.in carla-native-plugin.pc @ONLY) | |||||
configure_file(carla-host-plugin.pc.in carla-host-plugin.pc @ONLY) | |||||
install(FILES | install(FILES | ||||
${CMAKE_CURRENT_BINARY_DIR}/carla-utils.pc | ${CMAKE_CURRENT_BINARY_DIR}/carla-utils.pc | ||||
${CMAKE_CURRENT_BINARY_DIR}/carla-standalone.pc | |||||
${CMAKE_CURRENT_BINARY_DIR}/carla-native-plugin.pc | |||||
${CMAKE_CURRENT_BINARY_DIR}/carla-host-plugin.pc | |||||
DESTINATION | DESTINATION | ||||
${CMAKE_INSTALL_LIBDIR}/pkgconfig | ${CMAKE_INSTALL_LIBDIR}/pkgconfig | ||||
) | ) | ||||
@@ -0,0 +1,10 @@ | |||||
prefix=@CMAKE_INSTALL_PREFIX@ | |||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@ | |||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ | |||||
carla_libdir=${libdir}/carla | |||||
Name: carla-host-plugin | |||||
Version: @PROJECT_VERSION@ | |||||
Description: Carla Host as Native Plugin | |||||
Libs: -Wl,-rpath,${carla_libdir} -L${carla_libdir} -lcarla_host-plugin | |||||
Cflags: -I${includedir}/carla -I${includedir}/carla/includes |
@@ -0,0 +1,9 @@ | |||||
prefix=@CMAKE_INSTALL_PREFIX@ | |||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@ | |||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ | |||||
Name: carla-native-plugin | |||||
Version: @PROJECT_VERSION@ | |||||
Description: Carla Native Plugin | |||||
Libs: -Wl,-rpath,${libdir}/carla -L${libdir}/carla -lcarla_native-plugin | |||||
Cflags: -I${includedir}/carla -I${includedir}/carla/includes |
@@ -0,0 +1,9 @@ | |||||
prefix=@CMAKE_INSTALL_PREFIX@ | |||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@ | |||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ | |||||
Name: carla-standalone | |||||
Version: @PROJECT_VERSION@ | |||||
Description: Carla Host Standalone | |||||
Libs: -Wl,-rpath,${libdir}/carla -L${libdir}/carla -lcarla_standalone2 | |||||
Cflags: -I${includedir}/carla -I${includedir}/carla/includes |
@@ -2003,10 +2003,8 @@ public: | |||||
const int32_t numChannels = busInfo.channel_count; | const int32_t numChannels = busInfo.channel_count; | ||||
CARLA_SAFE_ASSERT_BREAK(numChannels >= 0); | CARLA_SAFE_ASSERT_BREAK(numChannels >= 0); | ||||
if ((busInfo.flags & V3_DEFAULT_ACTIVE) == 0x0) { | |||||
CARLA_SAFE_ASSERT_BREAK(v3_cpp_obj(fV3.component)->activate_bus(fV3.component, | |||||
V3_AUDIO, V3_INPUT, b, true) == V3_OK); | |||||
} | |||||
CARLA_SAFE_ASSERT_BREAK(v3_cpp_obj(fV3.component)->activate_bus(fV3.component, | |||||
V3_AUDIO, V3_INPUT, b, true) == V3_OK); | |||||
fBuses.inputs[b].num_channels = numChannels; | fBuses.inputs[b].num_channels = numChannels; | ||||
fBuses.inputInfo[b].bus_type = busInfo.bus_type; | fBuses.inputInfo[b].bus_type = busInfo.bus_type; | ||||
@@ -2031,10 +2029,8 @@ public: | |||||
const int32_t numChannels = busInfo.channel_count; | const int32_t numChannels = busInfo.channel_count; | ||||
CARLA_SAFE_ASSERT_BREAK(numChannels >= 0); | CARLA_SAFE_ASSERT_BREAK(numChannels >= 0); | ||||
if ((busInfo.flags & V3_DEFAULT_ACTIVE) == 0x0) { | |||||
CARLA_SAFE_ASSERT_BREAK(v3_cpp_obj(fV3.component)->activate_bus(fV3.component, | |||||
V3_AUDIO, V3_OUTPUT, b, true) == V3_OK); | |||||
} | |||||
CARLA_SAFE_ASSERT_BREAK(v3_cpp_obj(fV3.component)->activate_bus(fV3.component, | |||||
V3_AUDIO, V3_OUTPUT, b, true) == V3_OK); | |||||
fBuses.outputs[b].num_channels = numChannels; | fBuses.outputs[b].num_channels = numChannels; | ||||
fBuses.outputInfo[b].bus_type = busInfo.bus_type; | fBuses.outputInfo[b].bus_type = busInfo.bus_type; | ||||
@@ -440,6 +440,31 @@ private: | |||||
default: | default: | ||||
break; | break; | ||||
} | } | ||||
String winePrefix; | |||||
if (options.wine.autoPrefix && !fBinaries.empty()) | |||||
{ | |||||
const File file(fBinaries[fBinaryIndex]); | |||||
const String filename(file.getFullPathName()); | |||||
winePrefix = findWinePrefix(filename); | |||||
} | |||||
if (winePrefix.isEmpty()) | |||||
{ | |||||
const char* const envWinePrefix = std::getenv("WINEPREFIX"); | |||||
if (envWinePrefix != nullptr && envWinePrefix[0] != '\0') | |||||
winePrefix = envWinePrefix; | |||||
else if (options.wine.fallbackPrefix != nullptr && options.wine.fallbackPrefix[0] != '\0') | |||||
winePrefix = options.wine.fallbackPrefix.buffer(); | |||||
else | |||||
winePrefix = File::getSpecialLocation(File::userHomeDirectory).getFullPathName() + "/.wine"; | |||||
} | |||||
const CarlaScopedEnvVar sev1("WINEDEBUG", "-all"); | |||||
const CarlaScopedEnvVar sev2("WINEPREFIX", winePrefix.toRawUTF8()); | |||||
#endif | #endif | ||||
if (fBinaries.empty()) | if (fBinaries.empty()) | ||||
@@ -468,28 +493,6 @@ private: | |||||
} | } | ||||
} | } | ||||
#ifndef CARLA_OS_WIN | |||||
String winePrefix; | |||||
if (options.wine.autoPrefix) | |||||
winePrefix = findWinePrefix(filename); | |||||
if (winePrefix.isEmpty()) | |||||
{ | |||||
const char* const envWinePrefix = std::getenv("WINEPREFIX"); | |||||
if (envWinePrefix != nullptr && envWinePrefix[0] != '\0') | |||||
winePrefix = envWinePrefix; | |||||
else if (options.wine.fallbackPrefix != nullptr && options.wine.fallbackPrefix[0] != '\0') | |||||
winePrefix = options.wine.fallbackPrefix.buffer(); | |||||
else | |||||
winePrefix = File::getSpecialLocation(File::userHomeDirectory).getFullPathName() + "/.wine"; | |||||
} | |||||
const CarlaScopedEnvVar sev1("WINEDEBUG", "-all"); | |||||
const CarlaScopedEnvVar sev2("WINEPREFIX", winePrefix.toRawUTF8()); | |||||
#endif | |||||
carla_stdout("Scanning \"%s\"...", filename.toRawUTF8()); | carla_stdout("Scanning \"%s\"...", filename.toRawUTF8()); | ||||
#ifndef CARLA_OS_WIN | #ifndef CARLA_OS_WIN | ||||
@@ -407,7 +407,7 @@ static QVariant asByteArray(const PluginInfo& info) | |||||
QByteArray qdata; | QByteArray qdata; | ||||
// start with the POD data, stored as-is | // start with the POD data, stored as-is | ||||
qdata.append(static_cast<const char*>(static_cast<const void*>(&info)), sizeof(PluginInfoHeader)); | |||||
qdata.append(reinterpret_cast<const char*>(&info), sizeof(PluginInfoHeader)); | |||||
// then all the strings, with a null terminating byte | // then all the strings, with a null terminating byte | ||||
{ | { | ||||
@@ -455,8 +455,8 @@ static PluginInfo asPluginInfo(const QByteArray &qdata) | |||||
CARLA_SAFE_ASSERT_RETURN(static_cast<size_t>(qdata.size()) >= sizeof(PluginInfoHeader) + sizeof(char) * 5, {}); | CARLA_SAFE_ASSERT_RETURN(static_cast<size_t>(qdata.size()) >= sizeof(PluginInfoHeader) + sizeof(char) * 5, {}); | ||||
// read POD data first | // read POD data first | ||||
const PluginInfoHeader* const data | |||||
= static_cast<const PluginInfoHeader*>(static_cast<const void*>(qdata.constData())); | |||||
const PluginInfoHeader* const data = reinterpret_cast<const PluginInfoHeader*>(qdata.constData()); | |||||
PluginInfo info = {}; | PluginInfo info = {}; | ||||
info.build = data->build; | info.build = data->build; | ||||
info.type = data->type; | info.type = data->type; | ||||
@@ -472,7 +472,7 @@ static PluginInfo asPluginInfo(const QByteArray &qdata) | |||||
info.parameterOuts = data->parameterOuts; | info.parameterOuts = data->parameterOuts; | ||||
// then all the strings, keeping the same order as in `asVariant` | // then all the strings, keeping the same order as in `asVariant` | ||||
const char* sdata = static_cast<const char*>(static_cast<const void*>(data + 1)); | |||||
const char* sdata = reinterpret_cast<const char*>(data + 1); | |||||
info.category = QString::fromUtf8(sdata); | info.category = QString::fromUtf8(sdata); | ||||
sdata += info.category.size() + 1; | sdata += info.category.size() + 1; | ||||
@@ -556,7 +556,7 @@ static QByteArray asByteArray(const PluginFavorite& fav) | |||||
QByteArray qdata; | QByteArray qdata; | ||||
// start with the POD data, stored as-is | // start with the POD data, stored as-is | ||||
qdata.append(static_cast<const char*>(static_cast<const void*>(&fav)), sizeof(PluginFavoriteHeader)); | |||||
qdata.append(reinterpret_cast<const char*>(&fav), sizeof(PluginFavoriteHeader)); | |||||
// then all the strings, with a null terminating byte | // then all the strings, with a null terminating byte | ||||
{ | { | ||||
@@ -591,12 +591,11 @@ static PluginFavorite asPluginFavorite(const QByteArray& qdata) | |||||
CARLA_SAFE_ASSERT_RETURN(static_cast<size_t>(qdata.size()) >= sizeof(PluginFavoriteHeader) + sizeof(char) * 3, {}); | CARLA_SAFE_ASSERT_RETURN(static_cast<size_t>(qdata.size()) >= sizeof(PluginFavoriteHeader) + sizeof(char) * 3, {}); | ||||
// read POD data first | // read POD data first | ||||
const PluginFavoriteHeader* const data | |||||
= static_cast<const PluginFavoriteHeader*>(static_cast<const void*>(qdata.constData())); | |||||
const PluginFavoriteHeader* const data = reinterpret_cast<const PluginFavoriteHeader*>(qdata.constData()); | |||||
PluginFavorite fav = { data->type, data->uniqueId, {}, {} }; | PluginFavorite fav = { data->type, data->uniqueId, {}, {} }; | ||||
// then all the strings, keeping the same order as in `asVariant` | // then all the strings, keeping the same order as in `asVariant` | ||||
const char* sdata = static_cast<const char*>(static_cast<const void*>(data + 1)); | |||||
const char* sdata = reinterpret_cast<const char*>(data + 1); | |||||
fav.filename = QString::fromUtf8(sdata); | fav.filename = QString::fromUtf8(sdata); | ||||
sdata += fav.filename.size() + 1; | sdata += fav.filename.size() + 1; | ||||
@@ -663,6 +662,8 @@ struct PluginListDialog::PrivateData { | |||||
bool firstInit = true; | bool firstInit = true; | ||||
bool ignoreCache = false; | bool ignoreCache = false; | ||||
bool checkInvalid = false; | bool checkInvalid = false; | ||||
bool usePluginBridges = false; | |||||
bool useWineBridges = false; | |||||
CarlaPluginDiscoveryHandle handle = nullptr; | CarlaPluginDiscoveryHandle handle = nullptr; | ||||
QCarlaString tool; | QCarlaString tool; | ||||
CarlaScopedPointer<PluginRefreshDialog> dialog; | CarlaScopedPointer<PluginRefreshDialog> dialog; | ||||
@@ -686,6 +687,9 @@ struct PluginListDialog::PrivateData { | |||||
handle = nullptr; | handle = nullptr; | ||||
} | } | ||||
if (!usePluginBridges) | |||||
return false; | |||||
#ifdef CARLA_OS_WIN | #ifdef CARLA_OS_WIN | ||||
#ifdef CARLA_OS_WIN64 | #ifdef CARLA_OS_WIN64 | ||||
// look for win32 plugins on win64 | // look for win32 plugins on win64 | ||||
@@ -719,6 +723,9 @@ struct PluginListDialog::PrivateData { | |||||
} | } | ||||
#endif | #endif | ||||
if (!useWineBridges) | |||||
return false; | |||||
// try wine bridges | // try wine bridges | ||||
#ifdef CARLA_OS_64BIT | #ifdef CARLA_OS_64BIT | ||||
if (btype == BINARY_NATIVE || btype == BINARY_POSIX32) | if (btype == BINARY_NATIVE || btype == BINARY_POSIX32) | ||||
@@ -822,6 +829,9 @@ PluginListDialog::PluginListDialog(QWidget* const parent, const HostSettings* co | |||||
// ---------------------------------------------------------------------------------------------------------------- | // ---------------------------------------------------------------------------------------------------------------- | ||||
// Set-up global discovery options | // Set-up global discovery options | ||||
p->discovery.usePluginBridges = hostSettings->showPluginBridges; | |||||
p->discovery.useWineBridges = hostSettings->showWineBridges; | |||||
#ifndef CARLA_OS_WIN | #ifndef CARLA_OS_WIN | ||||
carla_plugin_discovery_set_option(ENGINE_OPTION_WINE_AUTO_PREFIX, hostSettings->wineAutoPrefix, nullptr); | carla_plugin_discovery_set_option(ENGINE_OPTION_WINE_AUTO_PREFIX, hostSettings->wineAutoPrefix, nullptr); | ||||
carla_plugin_discovery_set_option(ENGINE_OPTION_WINE_EXECUTABLE, 0, hostSettings->wineExecutable); | carla_plugin_discovery_set_option(ENGINE_OPTION_WINE_EXECUTABLE, 0, hostSettings->wineExecutable); | ||||
@@ -554,9 +554,19 @@ read_STRING_LITERAL_LONG(SerdReader* reader, SerdNodeFlags* flags, uint8_t q) | |||||
eat_byte_safe(reader, q3); | eat_byte_safe(reader, q3); | ||||
return ref; | return ref; | ||||
} else { | } else { | ||||
*flags |= SERD_HAS_QUOTE; | |||||
push_byte(reader, ref, c); | |||||
read_character(reader, ref, flags, q2); | |||||
if (q2 == '\\') { | |||||
push_byte(reader, ref, c); | |||||
if (!read_ECHAR(reader, ref, flags) && | |||||
!read_UCHAR(reader, ref, &code)) { | |||||
r_err(reader, SERD_ERR_BAD_SYNTAX, | |||||
"invalid escape `\\%c'\n", peek_byte(reader)); | |||||
return pop_node(reader, ref); | |||||
} | |||||
} else { | |||||
*flags |= SERD_HAS_QUOTE; | |||||
push_byte(reader, ref, c); | |||||
read_character(reader, ref, flags, q2); | |||||
} | |||||
} | } | ||||
} else { | } else { | ||||
read_character(reader, ref, flags, eat_byte_safe(reader, c)); | read_character(reader, ref, flags, eat_byte_safe(reader, c)); | ||||
@@ -449,12 +449,21 @@ protected: | |||||
return; | return; | ||||
} | } | ||||
const bool offline = isOffline(); | |||||
bool needsIdleRequest = false; | bool needsIdleRequest = false; | ||||
if (fReader.tickFrames(outBuffer, 0, frames, framePos, fLoopMode, isOffline()) && ! fPendingFileRead) | |||||
if (fReader.tickFrames(outBuffer, 0, frames, framePos, fLoopMode, offline) && ! fPendingFileRead) | |||||
{ | { | ||||
fPendingFileRead = true; | |||||
needsIdleRequest = true; | |||||
if (offline) | |||||
{ | |||||
fPendingFileRead = false; | |||||
fReader.readPoll(); | |||||
} | |||||
else | |||||
{ | |||||
fPendingFileRead = true; | |||||
needsIdleRequest = true; | |||||
} | |||||
} | } | ||||
fLastPosition = fReader.getLastPlayPosition() * 100.f; | fLastPosition = fReader.getLastPlayPosition() * 100.f; | ||||
@@ -118,9 +118,11 @@ static void writeManifestFile(PluginListManager& plm, const uint32_t microVersio | |||||
text += "@prefix atom: <" LV2_ATOM_PREFIX "> .\n"; | text += "@prefix atom: <" LV2_ATOM_PREFIX "> .\n"; | ||||
text += "@prefix doap: <http://usefulinc.com/ns/doap#> .\n"; | text += "@prefix doap: <http://usefulinc.com/ns/doap#> .\n"; | ||||
text += "@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n"; | text += "@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n"; | ||||
text += "@prefix idpy: <http://harrisonconsoles.com/lv2/inlinedisplay#> .\n"; | |||||
text += "@prefix lv2: <" LV2_CORE_PREFIX "> .\n"; | text += "@prefix lv2: <" LV2_CORE_PREFIX "> .\n"; | ||||
text += "@prefix mod: <http://moddevices.com/ns/mod#> .\n"; | text += "@prefix mod: <http://moddevices.com/ns/mod#> .\n"; | ||||
text += "@prefix opts: <" LV2_OPTIONS_PREFIX "> .\n"; | text += "@prefix opts: <" LV2_OPTIONS_PREFIX "> .\n"; | ||||
text += "@prefix owl: <http://www.w3.org/2002/07/owl#> .\n"; | |||||
text += "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n"; | text += "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n"; | ||||
text += "@prefix ui: <" LV2_UI_PREFIX "> .\n"; | text += "@prefix ui: <" LV2_UI_PREFIX "> .\n"; | ||||
text += "\n"; | text += "\n"; | ||||
@@ -129,7 +131,7 @@ static void writeManifestFile(PluginListManager& plm, const uint32_t microVersio | |||||
// Project | // Project | ||||
text += "<https://kx.studio/carla>\n"; | text += "<https://kx.studio/carla>\n"; | ||||
text += " a lv2:Project ;\n"; | |||||
text += " a owl:Ontology, doap:Project ;\n"; | |||||
text += " doap:homepage <https://kx.studio/carla> ;\n"; | text += " doap:homepage <https://kx.studio/carla> ;\n"; | ||||
text += " doap:maintainer [\n"; | text += " doap:maintainer [\n"; | ||||
text += " foaf:homepage <https://falktx.com/> ;\n"; | text += " foaf:homepage <https://falktx.com/> ;\n"; | ||||
@@ -143,6 +145,17 @@ static void writeManifestFile(PluginListManager& plm, const uint32_t microVersio | |||||
text += " lv2:symbol \"carla\" .\n"; | text += " lv2:symbol \"carla\" .\n"; | ||||
text += "\n"; | text += "\n"; | ||||
// ------------------------------------------------------------------- | |||||
// Extensions | |||||
text += "idpy:interface\n"; | |||||
text += " a lv2:ExtensionData .\n"; | |||||
text += "\n"; | |||||
text += "idpy:queue_draw\n"; | |||||
text += " a lv2:Feature .\n"; | |||||
text += "\n"; | |||||
// ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
// Plugins | // Plugins | ||||
@@ -271,6 +284,7 @@ static void writePluginFile(const NativePluginDescriptor* const pluginDesc, | |||||
text += "@prefix atom: <" LV2_ATOM_PREFIX "> .\n"; | text += "@prefix atom: <" LV2_ATOM_PREFIX "> .\n"; | ||||
text += "@prefix doap: <http://usefulinc.com/ns/doap#> .\n"; | text += "@prefix doap: <http://usefulinc.com/ns/doap#> .\n"; | ||||
text += "@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n"; | text += "@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n"; | ||||
text += "@prefix idpy: <http://harrisonconsoles.com/lv2/inlinedisplay#> .\n"; | |||||
text += "@prefix lv2: <" LV2_CORE_PREFIX "> .\n"; | text += "@prefix lv2: <" LV2_CORE_PREFIX "> .\n"; | ||||
text += "@prefix opts: <" LV2_OPTIONS_PREFIX "> .\n"; | text += "@prefix opts: <" LV2_OPTIONS_PREFIX "> .\n"; | ||||
text += "@prefix patch: <" LV2_PATCH_PREFIX "> .\n"; | text += "@prefix patch: <" LV2_PATCH_PREFIX "> .\n"; | ||||
@@ -291,28 +305,31 @@ static void writePluginFile(const NativePluginDescriptor* const pluginDesc, | |||||
switch (pluginDesc->category) | switch (pluginDesc->category) | ||||
{ | { | ||||
case NATIVE_PLUGIN_CATEGORY_SYNTH: | case NATIVE_PLUGIN_CATEGORY_SYNTH: | ||||
text += " a lv2:InstrumentPlugin, lv2:Plugin ;\n"; | |||||
text += " a lv2:InstrumentPlugin, lv2:Plugin, doap:Project ;\n"; | |||||
break; | break; | ||||
case NATIVE_PLUGIN_CATEGORY_DELAY: | case NATIVE_PLUGIN_CATEGORY_DELAY: | ||||
text += " a lv2:DelayPlugin, lv2:Plugin ;\n"; | |||||
text += " a lv2:DelayPlugin, lv2:Plugin, doap:Project ;\n"; | |||||
break; | break; | ||||
case NATIVE_PLUGIN_CATEGORY_EQ: | case NATIVE_PLUGIN_CATEGORY_EQ: | ||||
text += " a lv2:EQPlugin, lv2:Plugin ;\n"; | |||||
text += " a lv2:EQPlugin, lv2:Plugin, doap:Project ;\n"; | |||||
break; | break; | ||||
case NATIVE_PLUGIN_CATEGORY_FILTER: | case NATIVE_PLUGIN_CATEGORY_FILTER: | ||||
text += " a lv2:FilterPlugin, lv2:Plugin ;\n"; | |||||
text += " a lv2:FilterPlugin, lv2:Plugin, doap:Project ;\n"; | |||||
break; | break; | ||||
case NATIVE_PLUGIN_CATEGORY_DYNAMICS: | case NATIVE_PLUGIN_CATEGORY_DYNAMICS: | ||||
text += " a lv2:DynamicsPlugin, lv2:Plugin ;\n"; | |||||
text += " a lv2:DynamicsPlugin, lv2:Plugin, doap:Project ;\n"; | |||||
break; | break; | ||||
case NATIVE_PLUGIN_CATEGORY_MODULATOR: | case NATIVE_PLUGIN_CATEGORY_MODULATOR: | ||||
text += " a lv2:ModulatorPlugin, lv2:Plugin ;\n"; | |||||
text += " a lv2:ModulatorPlugin, lv2:Plugin, doap:Project ;\n"; | |||||
break; | break; | ||||
case NATIVE_PLUGIN_CATEGORY_UTILITY: | case NATIVE_PLUGIN_CATEGORY_UTILITY: | ||||
text += " a lv2:UtilityPlugin, lv2:Plugin ;\n"; | |||||
text += " a lv2:UtilityPlugin, lv2:Plugin, doap:Project ;\n"; | |||||
break; | break; | ||||
default: | default: | ||||
text += " a lv2:Plugin ;\n"; | |||||
if (pluginDesc->midiIns >= 1 && pluginDesc->midiOuts >= 1 && pluginDesc->audioIns + pluginDesc->audioOuts == 0) | |||||
text += " a lv2:MIDIPlugin, lv2:Plugin, doap:Project ;\n"; | |||||
else | |||||
text += " a lv2:Plugin, doap:Project ;\n"; | |||||
break; | break; | ||||
} | } | ||||
@@ -325,7 +342,7 @@ static void writePluginFile(const NativePluginDescriptor* const pluginDesc, | |||||
if (pluginDesc->hints & NATIVE_PLUGIN_IS_RTSAFE) | if (pluginDesc->hints & NATIVE_PLUGIN_IS_RTSAFE) | ||||
text += " lv2:optionalFeature <" LV2_CORE__hardRTCapable "> ;\n"; | text += " lv2:optionalFeature <" LV2_CORE__hardRTCapable "> ;\n"; | ||||
if (pluginDesc->hints & NATIVE_PLUGIN_HAS_INLINE_DISPLAY) | if (pluginDesc->hints & NATIVE_PLUGIN_HAS_INLINE_DISPLAY) | ||||
text += " lv2:optionalFeature <" LV2_INLINEDISPLAY__queue_draw "> ;\n"; | |||||
text += " lv2:optionalFeature idpy:queue_draw ;\n"; | |||||
if ((pluginDesc->hints & NATIVE_PLUGIN_USES_STATE) || (pluginDesc->hints & NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE)) | if ((pluginDesc->hints & NATIVE_PLUGIN_USES_STATE) || (pluginDesc->hints & NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE)) | ||||
text += " lv2:optionalFeature <" LV2_STATE__threadSafeRestore "> ;\n"; | text += " lv2:optionalFeature <" LV2_STATE__threadSafeRestore "> ;\n"; | ||||
text += "\n"; | text += "\n"; | ||||
@@ -358,7 +375,7 @@ static void writePluginFile(const NativePluginDescriptor* const pluginDesc, | |||||
text += " lv2:extensionData <" LV2_WORKER__interface "> ;\n"; | text += " lv2:extensionData <" LV2_WORKER__interface "> ;\n"; | ||||
if (pluginDesc->hints & NATIVE_PLUGIN_HAS_INLINE_DISPLAY) | if (pluginDesc->hints & NATIVE_PLUGIN_HAS_INLINE_DISPLAY) | ||||
text += " lv2:extensionData <" LV2_INLINEDISPLAY__interface "> ;\n"; | |||||
text += " lv2:extensionData idpy:interface ;\n"; | |||||
text += "\n"; | text += "\n"; | ||||
@@ -43,7 +43,8 @@ static HINSTANCE getCurrentModuleInstanceHandle() noexcept | |||||
CARLA_PLUGIN_EXPORT | CARLA_PLUGIN_EXPORT | ||||
BOOL WINAPI DllMain(HINSTANCE hInst, DWORD, LPVOID) | BOOL WINAPI DllMain(HINSTANCE hInst, DWORD, LPVOID) | ||||
{ | { | ||||
currentModuleHandle = hInst; | |||||
if (reason == DLL_PROCESS_ATTACH) | |||||
currentModuleHandle = hInst; | |||||
return 1; | return 1; | ||||
} | } | ||||
@@ -179,7 +179,7 @@ void carla_addFloats(float dest[], const float src[], const std::size_t count) n | |||||
if (!std::isfinite(src[i])) | if (!std::isfinite(src[i])) | ||||
__builtin_unreachable(); | __builtin_unreachable(); | ||||
#endif | #endif | ||||
*dest++ += *src++; | |||||
dest[i] += src[i]; | |||||
} | } | ||||
} | } | ||||
@@ -217,7 +217,7 @@ void carla_fillFloatsWithSingleValue(float data[], const float& value, const std | |||||
if (!std::isfinite(data[i])) | if (!std::isfinite(data[i])) | ||||
__builtin_unreachable(); | __builtin_unreachable(); | ||||
#endif | #endif | ||||
*data++ = value; | |||||
data[i] = value; | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -302,7 +302,7 @@ void carla_multiply(float data[], const float& multiplier, const std::size_t cou | |||||
if (!std::isfinite(data[i])) | if (!std::isfinite(data[i])) | ||||
__builtin_unreachable(); | __builtin_unreachable(); | ||||
#endif | #endif | ||||
*data++ *= multiplier; | |||||
data[i] *= multiplier; | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -406,7 +406,7 @@ void carla_add(T dest[], const T src[], const std::size_t count) noexcept | |||||
CARLA_SAFE_ASSERT_RETURN(count > 0,); | CARLA_SAFE_ASSERT_RETURN(count > 0,); | ||||
for (std::size_t i=0; i<count; ++i) | for (std::size_t i=0; i<count; ++i) | ||||
*dest++ += *src++; | |||||
dest[i] += src[i]; | |||||
} | } | ||||
/* | /* | ||||
@@ -422,7 +422,7 @@ void carla_addWithMultiply(T dest[], const T src[], const T& multiplier, const s | |||||
CARLA_SAFE_ASSERT_RETURN(count > 0,); | CARLA_SAFE_ASSERT_RETURN(count > 0,); | ||||
for (std::size_t i=0; i<count; ++i) | for (std::size_t i=0; i<count; ++i) | ||||
*dest++ += *src++ * multiplier; | |||||
dest[i] += src[i] * multiplier; | |||||
} | } | ||||
/* | /* | ||||
@@ -453,7 +453,7 @@ void carla_copyWithMultiply(T dest[], const T src[], const T& multiplier, const | |||||
CARLA_SAFE_ASSERT_RETURN(count > 0,); | CARLA_SAFE_ASSERT_RETURN(count > 0,); | ||||
for (std::size_t i=0; i<count; ++i) | for (std::size_t i=0; i<count; ++i) | ||||
*dest++ = *src++ * multiplier; | |||||
dest[i] = src[i] * multiplier; | |||||
} | } | ||||
/* | /* | ||||
@@ -473,7 +473,7 @@ void carla_fill(T data[], const T& value, const std::size_t count) noexcept | |||||
else | else | ||||
{ | { | ||||
for (std::size_t i=0; i<count; ++i) | for (std::size_t i=0; i<count; ++i) | ||||
*data++ = value; | |||||
data[i] = value; | |||||
} | } | ||||
} | } | ||||
@@ -494,7 +494,7 @@ void carla_multiply(T data[], const T& multiplier, const std::size_t count) noex | |||||
else | else | ||||
{ | { | ||||
for (std::size_t i=0; i<count; ++i) | for (std::size_t i=0; i<count; ++i) | ||||
*data++ *= multiplier; | |||||
data[i] *= multiplier; | |||||
} | } | ||||
} | } | ||||