diff --git a/.github/workflows.zip b/.github/workflows.zip deleted file mode 100644 index 9daa7ca1..00000000 Binary files a/.github/workflows.zip and /dev/null differ diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..c6f931bc --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,207 @@ +name: build + +on: + push: + paths-ignore: + - 'docs/**' + - 'web/**' + - '**.md' + pull_request: + paths-ignore: + - 'docs/**' + - 'web/**' + - '**.md' +jobs: + build_win32_amalgamated: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - uses: ilammy/msvc-dev-cmd@v1 + - name: Compile + shell: powershell + run: | + python amalgamate.py + cd amalgamated + cl.exe /std:c11 /utf-8 /Ox /I. pocketpy.c main.c /link /out:pkpy.exe + build_win32: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - uses: ilammy/msvc-dev-cmd@v1 + - name: Compile + shell: bash + run: | + mkdir -p output/x86_64 + python cmake_build.py + cp main.exe output/x86_64 + cp pocketpy.dll output/x86_64 + - uses: actions/upload-artifact@v4 + with: + name: windows + path: output + - name: Unit Test + run: python scripts/run_tests.py + - name: Benchmark + run: python scripts/run_tests.py benchmark + build_linux: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Setup Clang + uses: egor-tensin/setup-clang@v1 + with: + version: 15 + platform: x64 + - name: Install dependencies + run: sudo apt-get install -y libclang-rt-15-dev + - name: Unit Test with Coverage + run: bash run_tests.sh + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + directory: .coverage + if: github.ref == 'refs/heads/main' + - name: Compile and Test + run: | + mkdir -p output/x86_64 + python cmake_build.py + python scripts/run_tests.py + cp main output/x86_64 + cp libpocketpy.so output/x86_64 + env: + CC: clang + - uses: actions/upload-artifact@v4 + with: + name: linux + path: output + - name: Benchmark + run: python scripts/run_tests.py benchmark + build_linux_x86: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Setup Alpine Linux for aarch64 + uses: jirutka/setup-alpine@v1 + with: + arch: x86 + packages: gcc g++ make cmake libc-dev linux-headers python3 + - name: Build and Test + run: | + uname -m + python cmake_build.py + python scripts/run_tests.py + python scripts/run_tests.py benchmark + shell: alpine.sh --root {0} + build_darwin: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Compile and Test + run: | + python cmake_build.py + python scripts/run_tests.py + - name: Benchmark + run: python scripts/run_tests.py benchmark + - name: Test Amalgamated Build + run: python amalgamate.py + build_android: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - uses: nttld/setup-ndk@v1 + id: setup-ndk + with: + ndk-version: r23 + local-cache: false + add-to-path: false + - name: Compile Shared Library + run: | + bash build_android.sh arm64-v8a + bash build_android.sh armeabi-v7a + bash build_android.sh x86_64 + + mkdir -p output/arm64-v8a + mkdir -p output/armeabi-v7a + mkdir -p output/x86_64 + + cp build/android/arm64-v8a/libpocketpy.so output/arm64-v8a + cp build/android/armeabi-v7a/libpocketpy.so output/armeabi-v7a + cp build/android/x86_64/libpocketpy.so output/x86_64 + env: + ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} + - uses: actions/upload-artifact@v4 + with: + name: android + path: output + build_ios: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Compile Frameworks + run: | + git clone https://github.com/leetal/ios-cmake --depth 1 ~/ios-cmake + bash build_ios.sh + mkdir -p output + cp -r build/pocketpy.xcframework output/pocketpy.xcframework + - uses: actions/upload-artifact@v4 + with: + name: ios + path: output + + merge: + runs-on: ubuntu-latest + needs: [ build_win32, build_linux, build_darwin, build_android, build_ios ] + steps: + - name: "Create output directory" + run: "mkdir $GITHUB_WORKSPACE/output" + + - name: "Merge win32" + uses: actions/download-artifact@v4.1.7 + with: + name: windows + path: $GITHUB_WORKSPACE/output/windows + + - name: "Merge linux" + uses: actions/download-artifact@v4.1.7 + with: + name: linux + path: $GITHUB_WORKSPACE/output/linux + + # - name: "Merge darwin" + # uses: actions/download-artifact@v4.1.7 + # with: + # name: macos + # path: $GITHUB_WORKSPACE/output/macos + + - name: "Merge android" + uses: actions/download-artifact@v4.1.7 + with: + name: android + path: $GITHUB_WORKSPACE/output/android + + - name: "Merge ios" + uses: actions/download-artifact@v4.1.7 + with: + name: ios + path: $GITHUB_WORKSPACE/output/ios + + - name: "Upload merged artifact" + uses: actions/upload-artifact@v4.3.3 + with: + name: all-in-one + path: $GITHUB_WORKSPACE/output diff --git a/.github/workflows/pybind11.yml b/.github/workflows/pybind11.yml new file mode 100644 index 00000000..7578b030 --- /dev/null +++ b/.github/workflows/pybind11.yml @@ -0,0 +1,76 @@ +name: PKBIND Build and Test + +on: + push: + paths-ignore: + - "docs/**" + - "web/**" + - "**.md" + pull_request: + paths-ignore: + - "docs/**" + - "web/**" + - "**.md" + +jobs: + build_linux: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up GCC + run: | + sudo apt-get update + sudo apt-get install -y gcc g++ + + - name: Set up CMake + uses: jwlawson/actions-setup-cmake@v1.10 + + - name: Test + run: | + cd include/pybind11/tests + cmake -B build + cmake --build build --config Release --parallel + ./build/PKBIND_TEST + + build_win: + runs-on: windows-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up MSVC + uses: ilammy/msvc-dev-cmd@v1 + + - name: Set up CMake + uses: jwlawson/actions-setup-cmake@v1.10 + + - name: Test + run: | + cd include\pybind11\tests + cmake -B build + cmake --build build --config Release --parallel + build\Release\PKBIND_TEST.exe + + build_mac: + runs-on: macos-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Clang + run: | + brew install llvm + echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> ~/.zshrc + source ~/.zshrc + + - name: Set up CMake + uses: jwlawson/actions-setup-cmake@v1.10 + + - name: Test + run: | + cd include/pybind11/tests + cmake -B build -DENABLE_TEST=ON + cmake --build build --config Release --parallel + ./build/PKBIND_TEST diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml new file mode 100644 index 00000000..a2add796 --- /dev/null +++ b/.github/workflows/website.yml @@ -0,0 +1,42 @@ +name: website + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +permissions: + contents: write + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + ################################################### + - uses: actions/setup-node@v3.1.1 + - name: Retype build + run: | + python scripts/gen_docs.py + cd docs + npm install retypeapp -g + retype build + ################################################### + - name: Setup emsdk + uses: mymindstorm/setup-emsdk@v12 + with: + version: latest + actions-cache-folder: 'emsdk-cache' + - name: Compile + run: | + bash build_web.sh + mv web docs/.retype/static + ################################################### + - uses: crazy-max/ghaction-github-pages@v3 + with: + target_branch: gh-pages + build_dir: docs/.retype + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + if: github.ref == 'refs/heads/main'