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