name: build on: push: paths-ignore: - 'docs/**' - 'web/**' - '**.md' pull_request: paths-ignore: - 'docs/**' - 'web/**' - '**.md' jobs: build_win: runs-on: windows-latest steps: - uses: actions/checkout@v3 - uses: ilammy/msvc-dev-cmd@v1 - name: Compile shell: bash run: | mkdir -p output/windows/x86_64 python3 cmake_build.py cp main.exe output/windows/x86_64 cp pocketpy.dll output/windows/x86_64 - uses: actions/upload-artifact@v3 with: path: output - name: Unit Test run: python3 scripts/run_tests.py - name: Benchmark run: python3 scripts/run_tests.py benchmark build_linux: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - name: Setup Clang uses: egor-tensin/setup-clang@v1 with: version: 15 platform: x64 - name: Install libc++ run: sudo apt-get install -y libc++-15-dev libc++1-15 libc++abi-15-dev libc++abi1-15 libclang-rt-15-dev - name: Unit Test with Coverage run: bash run_tests.sh - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} directory: .coverage if: github.ref == 'refs/heads/main' - name: Compile run: | export CXX=clang++ export CC=clang mkdir -p output/linux/x86_64 python3 cmake_build.py cp main output/linux/x86_64 cp libpocketpy.so output/linux/x86_64 - uses: actions/upload-artifact@v3 with: path: output - name: Benchmark run: python3 scripts/run_tests.py benchmark - name: C Binding Test run: bash run_c_binding_test.sh build_linux_x86: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Alpine Linux v3.15 for aarch64 uses: jirutka/setup-alpine@v1 with: arch: x86 packages: gcc g++ make cmake libc-dev linux-headers python3 branch: v3.15 - name: Build and Test run: | uname -m python3 cmake_build.py python3 scripts/run_tests.py python3 scripts/run_tests.py benchmark shell: alpine.sh {0} build_macos: runs-on: macos-latest steps: - uses: actions/checkout@v3 - name: Compile and Test run: | python3 cmake_build.py python3 scripts/run_tests.py - name: Benchmark run: python3 scripts/run_tests.py benchmark - run: | python3 amalgamate.py cd plugins/macos/pocketpy mkdir -p output/macos xcodebuild clean build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO cp -r build/Release/pocketpy.bundle output/macos - uses: actions/upload-artifact@v3 with: path: plugins/macos/pocketpy/output build_android: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: nttld/setup-ndk@v1 id: setup-ndk with: ndk-version: r23 local-cache: true 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/android/arm64-v8a mkdir -p output/android/armeabi-v7a mkdir -p output/android/x86_64 cp build/android/arm64-v8a/libpocketpy.so output/android/arm64-v8a cp build/android/armeabi-v7a/libpocketpy.so output/android/armeabi-v7a cp build/android/x86_64/libpocketpy.so output/android/x86_64 env: ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} - uses: actions/upload-artifact@v3 with: path: output build_ios: runs-on: macos-latest steps: - uses: actions/checkout@v3 - name: Compile Static Library run: | git clone https://github.com/leetal/ios-cmake --depth 1 cp ios-cmake/ios.toolchain.cmake . mkdir build cd build cmake -G Xcode -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake -DPLATFORM=OS64 .. -DPK_BUILD_STATIC_LIB=ON -DPK_USE_CJSON=ON -DPK_USE_BOX2D=ON -DCMAKE_BUILD_TYPE=Release cmake --build . --config Release cd .. mkdir -p output/ios cp build/Release-iphoneos/libpocketpy.a output/ios/libpocketpy.a - uses: actions/upload-artifact@v3 with: path: output