name: Build Source Release # Trigger whenever a release is created on: release: types: - created jobs: build: name: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: true - name: Create archive id: archive run: | VERSION=${{ github.event.release.tag_name }} PKGNAME="capstone-$VERSION" SHASUM=$PKGNAME.tar.xz.sha256 mkdir -p /tmp/$PKGNAME rsync -a --exclude=build --exclude='.*' ./ /tmp/$PKGNAME/ TARBALL=$PKGNAME.tar.xz tar -C /tmp -cJf $TARBALL $PKGNAME sha256sum $TARBALL > $SHASUM echo "tarball=$TARBALL" >> $GITHUB_OUTPUT echo "shasum=$SHASUM" >> $GITHUB_OUTPUT - name: Upload tarball and shasum to release uses: softprops/action-gh-release@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.event.release.tag_name }} files: | ${{ steps.archive.outputs.tarball }} ${{ steps.archive.outputs.shasum }} - name: Configure CMake and build the project run: | cmake -B build \ -DPROJECT_VERSION=${{ github.event.release.tag_name }} \ -DCMAKE_BUILD_TYPE=Release \ -DCAPSTONE_BUILD_SHARED_LIBS=1 \ -DCMAKE_INSTALL_PREFIX=/usr cmake --build build - name: Package DEB and RPM package run: | cd build cpack -G DEB cpack -G RPM - name: Upload debian package to release uses: softprops/action-gh-release@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.event.release.tag_name }} files: | ./build/*.deb ./build/*.rpm build_windows: name: build_windows runs-on: windows-latest steps: - uses: actions/checkout@v4 with: submodules: true - name: Win MSVC 64 dev cmd setup uses: ilammy/msvc-dev-cmd@v1 with: arch: x64 - name: Configure CMake and build the project run: | cmake -B build ` -T "ClangCL,host=x64" ` -A x64 ` -DPROJECT_VERSION="${{ github.event.release.tag_name }}" ` -DCMAKE_BUILD_TYPE=Release ` -DCAPSTONE_BUILD_SHARED_LIBS=1 cmake --build build --config Release cmake --install build --config Release - name: Package NSIS installer run: | cd build cpack -G NSIS - name: Upload NSIS installer to release uses: softprops/action-gh-release@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.event.release.tag_name }} files: | ./build/*.exe