From a5d28c2707bde032f056d90741fdcfcb9d96a578 Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 13 Sep 2022 21:33:31 +0100 Subject: [PATCH] Enable linux-riscv64 builds Signed-off-by: falkTX --- .github/workflows/build.yml | 86 +++++++++++++++++++++++++++++++++ .gitmodules | 3 ++ carla | 2 +- deps/Makefile | 3 ++ deps/PawPaw | 2 +- dpf | 2 +- include/simd-compat/mmintrin.h | 5 +- include/simd-compat/pmmintrin.h | 8 ++- include/simde | 1 + 9 files changed, 107 insertions(+), 5 deletions(-) create mode 160000 include/simde diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d8c86f4..f4a916b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -260,6 +260,92 @@ jobs: files: | *.tar.gz + linux-riscv64: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Set up cache + id: cache + uses: actions/cache@v2 + with: + path: | + ~/PawPawBuilds + src/Rack/dep/bin + src/Rack/dep/include + src/Rack/dep/lib + src/Rack/dep/share + src/Rack/dep/jansson-2.12 + src/Rack/dep/libarchive-3.4.3 + src/Rack/dep/libsamplerate-0.1.9 + src/Rack/dep/speexdsp-SpeexDSP-1.2rc3 + src/Rack/dep/zstd-1.4.5 + key: linux-riscv64-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }} + - name: Fix GitHub's mess + run: | + sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list + sudo apt-get update -qq + sudo apt-get install -yqq --allow-downgrades libgd3/focal libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal + sudo apt-get purge -yqq libclang* libgbm* libllvm* libmono* moby* mono* php* libgdiplus libpcre2-posix3 libzip4 + - name: Set up dependencies + run: | + sudo dpkg --add-architecture riscv64 + sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list + echo "deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports focal main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ports-riscv64.list + echo "deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports focal-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-riscv64.list + echo "deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports focal-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-riscv64.list + sudo apt-get update -qq + sudo apt-get install -yqq g++-riscv64-linux-gnu libasound2-dev:riscv64 libdbus-1-dev:riscv64 libgl1-mesa-dev:riscv64 libglapi-mesa:riscv64 libglvnd0:riscv64 libglib2.0-dev:riscv64 libpulse-dev:riscv64 libsdl2-dev:riscv64 libx11-dev:riscv64 libxcursor-dev:riscv64 libxext-dev:riscv64 libxrandr-dev:riscv64 qemu-user-static + - name: Set up ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ccache-linux-riscv64-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }} + - name: Build extra dependencies + env: + PKG_CONFIG_PATH: /usr/lib/riscv64-linux-gnu/pkgconfig + run: | + if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi + export PATH="/usr/lib/ccache:${PATH}" + ./deps/PawPaw/bootstrap-cardinal.sh linux-riscv64 && ./deps/PawPaw/.cleanup.sh linux-riscv64 + - name: Build linux riscv64 cross-compiled + run: | + if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi + pushd deps/PawPaw; source local.env linux-riscv64; popd + export PATH="/usr/lib/ccache:${PATH}" + export PKG_CONFIG_PATH+=:/usr/lib/riscv64-linux-gnu/pkgconfig + make features + make CIBUILD=true NOOPT=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc) + make unzipfx + - name: Set sha8 (non-release) + if: startsWith(github.ref, 'refs/tags/') != true + id: slug1 + run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)" + - name: Set sha8 (release) + if: startsWith(github.ref, 'refs/tags/') + id: slug2 + run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})" + - name: Set sha8 + id: slug + run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})" + - name: Pack binaries + run: | + tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-linux-riscv64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep -e lv2 -e vst -e clap) ../CardinalJACK ../CardinalNative + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-linux-riscv64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz + - uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + tag_name: ${{ github.ref_name }} + name: ${{ github.ref_name }} + draft: false + prerelease: false + files: | + *.tar.gz + linux-x86_64: runs-on: ubuntu-20.04 steps: diff --git a/.gitmodules b/.gitmodules index 384a28a..5057d40 100644 --- a/.gitmodules +++ b/.gitmodules @@ -218,3 +218,6 @@ [submodule "plugins/dBiz"] path = plugins/dBiz url = https://github.com/dBiz/dBiz.git +[submodule "include/simde"] + path = include/simde + url = https://github.com/simd-everywhere/simde.git diff --git a/carla b/carla index 963f194..c9fc68a 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 963f194b0ed93829188ffda23320b1dc848f07d8 +Subproject commit c9fc68aaa370088b588ad6aea7af60efbc16530c diff --git a/deps/Makefile b/deps/Makefile index 28e4f39..f458eeb 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -72,6 +72,9 @@ MACHINE = i686-the-rack else ifeq ($(CPU_ARM64),true) ARCH_NAME = arm64 MACHINE = x86_64-the-rack +else ifeq ($(CPU_RISCV64),true) +ARCH_NAME = riscv64 +MACHINE = x86_64-the-rack else ifeq ($(WASM),true) MACHINE = i686-wasm else diff --git a/deps/PawPaw b/deps/PawPaw index 4f7f9eb..75d86db 160000 --- a/deps/PawPaw +++ b/deps/PawPaw @@ -1 +1 @@ -Subproject commit 4f7f9eb6ff1677606a85fe701bbb535f8fe7086c +Subproject commit 75d86db5d171228247e1297d13090cb11220fe92 diff --git a/dpf b/dpf index 73a855c..fbc9ffd 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 73a855c3a8d3321f06fdeae9174e3eb50ad005b3 +Subproject commit fbc9ffdfaaf42a4dac4bc946888971d1ab9f2fbc diff --git a/include/simd-compat/mmintrin.h b/include/simd-compat/mmintrin.h index ce01980..9058d65 100644 --- a/include/simd-compat/mmintrin.h +++ b/include/simd-compat/mmintrin.h @@ -21,6 +21,9 @@ # include_next #elif defined(__EMSCRIPTEN__) # include -#else +#elif defined(__ARM_NEON) # include "../sse2neon/sse2neon.h" +#else +# define SIMDE_ENABLE_NATIVE_ALIASES +# include "../simde/simde/x86/mmx.h" #endif diff --git a/include/simd-compat/pmmintrin.h b/include/simd-compat/pmmintrin.h index 45fa3fb..6b57055 100644 --- a/include/simd-compat/pmmintrin.h +++ b/include/simd-compat/pmmintrin.h @@ -29,7 +29,7 @@ __m64 _mm_set1_pi16(short w) return __extension__ (__m64){ static_cast(w), static_cast(w) }; } -#else +#elif defined(__ARM_NEON) # include "../sse2neon/sse2neon.h" static inline @@ -44,4 +44,10 @@ __m64 _mm_set1_pi16(short w) return vreinterpret_s64_s16(vdup_n_s16(w)); } +#else +# define SIMDE_ENABLE_NATIVE_ALIASES +# include "../simde/simde/x86/sse.h" +# include "../simde/simde/x86/sse2.h" +// # include "../simde/simde/x86/sse3.h" + #endif diff --git a/include/simde b/include/simde new file mode 160000 index 0000000..12069d7 --- /dev/null +++ b/include/simde @@ -0,0 +1 @@ +Subproject commit 12069d720f43830ae9791e8b0f4c4fa3c88012a0