diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..774506262 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* -text diff --git a/.github/workflows/autoroll.yml b/.github/workflows/autoroll.yml deleted file mode 100644 index e55cecb70..000000000 --- a/.github/workflows/autoroll.yml +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright 2023 The Shaderc Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,s either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: Update dependencies -permissions: - contents: read - -on: - schedule: - - cron: '0 2 * * *' - workflow_dispatch: - -jobs: - update-dependencies: - permissions: - contents: write - pull-requests: write - name: Update dependencies - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - # Checkout the depot tools they are needed by roll_deps.sh - - name: Checkout depot tools - run: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git - - - name: Update PATH - run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH - - - name: Download dependencies - run: python3 utils/git-sync-deps - - - name: Setup git user information - run: | - git config user.name "GitHub Actions[bot]" - git config user.email "<>" - git checkout -b roll_deps - - - name: Update dependencies - run: | - utils/roll-deps - if [[ `git diff HEAD..origin/main --name-only | wc -l` == 0 ]]; then - echo "changed=false" >> $GITHUB_OUTPUT - else - echo "changed=true" >> $GITHUB_OUTPUT - fi - id: update_dependencies - - name: Push changes and create PR - if: steps.update_dependencies.outputs.changed == 'true' - run: | - git push --force --set-upstream origin roll_deps - gh pr create --label 'kokoro:run' --base main -f || true - env: - GITHUB_TOKEN: ${{ github.token }} diff --git a/.github/workflows/lwjgl.yml b/.github/workflows/lwjgl.yml new file mode 100644 index 000000000..d0506c9d0 --- /dev/null +++ b/.github/workflows/lwjgl.yml @@ -0,0 +1,236 @@ +name: LWJGL Build + +on: + push: + branches: + - main + +env: + AWS_DEFAULT_REGION: us-east-1 + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + S3_PARAMS: --cache-control "public,must-revalidate,proxy-revalidate,max-age=0" + CMAKE_BUILD_PARALLEL_LEVEL: 4 + SHADERC_PARAMS: -DSHADERC_SKIP_INSTALL=ON -DSHADERC_SKIP_TESTS=ON + +jobs: + linux: + name: Linux + runs-on: ubuntu-latest + container: + image: centos:7 + strategy: + fail-fast: false + matrix: + ARCH: [x64] + include: + - ARCH: x64 + defaults: + run: + shell: bash + steps: + - name: Upgrade git + run: | + yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm + yum -y install git + - uses: actions/checkout@v3 + with: + fetch-depth: 3 + - name: Configure yum + run: | + yum -y install epel-release + yum -y update + - name: Install build dependencies + run: | + yum -y install centos-release-scl + yum -y install devtoolset-11-gcc-c++ + yum -y install python3 cmake3 awscli + - name: Install dependencies + run: python3 utils/git-sync-deps + - name: Configure build + run: | + source scl_source enable devtoolset-11 || true + cmake3 -B build ${{env.SHADERC_PARAMS}} -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0" + - name: Build + run: | + source scl_source enable devtoolset-11 || true + cmake3 --build build + strip build/libshaderc/libshaderc_shared.so + - name: Upload artifact + run: aws s3 cp build/libshaderc/libshaderc_shared.so s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/libshaderc.so $S3_PARAMS + - name: Upload git revision + run: | + git config --global --add safe.directory $PWD + git log --first-parent --pretty=format:%H HEAD~2..HEAD~1 > libshaderc.so.git + aws s3 cp libshaderc.so.git s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/ $S3_PARAMS + + linux-cross: + name: Linux Cross + runs-on: ubuntu-latest + container: + image: ${{matrix.CONTAINER}} + strategy: + fail-fast: false + matrix: + ARCH: [arm32, arm64, ppc64le, riscv64] + include: + # ----- + - ARCH: arm32 + CROSS_ARCH: armhf + CONTAINER: ubuntu:20.04 + TRIPLET: arm-linux-gnueabihf + CMAKE_PARAMS: -DSYSTEM_PROCESSOR=arm + # ----- + - ARCH: arm64 + CROSS_ARCH: arm64 + CONTAINER: ubuntu:20.04 + TRIPLET: aarch64-linux-gnu + CMAKE_PARAMS: -DSYSTEM_PROCESSOR=aarch64 + # ---- + - ARCH: ppc64le + CROSS_ARCH: ppc64el + CONTAINER: ubuntu:20.04 + TRIPLET: powerpc64le-linux-gnu + CMAKE_PARAMS: -DPROCESSOR=powerpc64le + # ----- + - ARCH: riscv64 + CROSS_ARCH: riscv64 + CONTAINER: ubuntu:20.04 + TRIPLET: riscv64-linux-gnu + CMAKE_PARAMS: -DPROCESSOR=riscv64 + defaults: + run: + shell: bash + steps: + - name: Upgrade git + run: | + apt-get -y update + apt-get -y install software-properties-common wget + apt-get -y install --reinstall ca-certificates + apt-get -y update + apt-get -y upgrade + wget https://apt.kitware.com/keys/kitware-archive-latest.asc + apt-key add kitware-archive-latest.asc + add-apt-repository -y 'deb https://apt.kitware.com/ubuntu/ bionic main' + add-apt-repository -y ppa:git-core/ppa + apt-get -y update + DEBIAN_FRONTEND=noninteractive apt-get -yq install awscli git + - uses: actions/checkout@v3 + with: + fetch-depth: 3 + - name: Install dependencies + run: DEBIAN_FRONTEND=noninteractive apt-get -yq install cmake gcc-${{matrix.TRIPLET}} g++-${{matrix.TRIPLET}} libc6-dev-${{matrix.CROSS_ARCH}}-cross + - name: Install dependencies + run: python3 utils/git-sync-deps + - name: Configure build + run: CC=${{matrix.TRIPLET}}-gcc CXX=${{matrix.TRIPLET}}-g++ cmake -B build ${{env.SHADERC_PARAMS}} -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0" -DCMAKE_TOOLCHAIN_FILE=../XCompile-lwjgl.cmake -DSYSTEM_NAME=Linux ${{matrix.CMAKE_PARAMS}} + - name: Build + run: | + cmake --build build + ${{matrix.TRIPLET}}-strip build/libshaderc/libshaderc_shared.so + - name: Upload artifact + run: aws s3 cp build/libshaderc/libshaderc_shared.so s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/libshaderc.so $S3_PARAMS + - name: Upload git revision + run: | + git config --global --add safe.directory $(pwd) + git log --first-parent --pretty=format:%H HEAD~2..HEAD~1 > libshaderc.so.git + aws s3 cp libshaderc.so.git s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/ $S3_PARAMS + + freebsd-cross: + name: FreeBSD Cross + runs-on: macos-latest + strategy: + fail-fast: false + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 3 + - name: Build + uses: cross-platform-actions/action@v0.21.1 + with: + operating_system: freebsd + architecture: x86-64 + version: '13.2' + memory: 4G + shell: bash + environment_variables: SHADERC_PARAMS + run: | + sudo pkg install -y git cmake gmake python3 + python3 utils/git-sync-deps + cmake -B build $SHADERC_PARAMS -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0" + cmake --build build + strip build/libshaderc/libshaderc_shared.so + - name: Upload artifact # Symlinks are not copied out of the VM. + run: | + ls -la build/libshaderc + aws s3 cp `ls build/libshaderc/libshaderc_shared.so*` s3://lwjgl-build/nightly/freebsd/x64/libshaderc_shared.so $S3_PARAMS + - name: Upload git revision + run: | + git config --global --add safe.directory $PWD + git log --first-parent --pretty=format:%H HEAD~2..HEAD~1 > libshaderc.so.git + aws s3 cp libshaderc.so.git s3://lwjgl-build/nightly/freebsd/x64/ $S3_PARAMS + + macos: + name: macOS + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + ARCH: [x64, arm64] + include: + - ARCH: x64 + CMAKE_PARAMS: -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 + - ARCH: arm64 + CMAKE_PARAMS: -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_TOOLCHAIN_FILE=../XCompile-lwjgl.cmake -DSYSTEM_NAME=Darwin -DSYSTEM_PROCESSOR=aarch64 + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 3 + - name: Install dependencies + run: python3 utils/git-sync-deps + - name: Configure build + run: cmake -B build ${{env.SHADERC_PARAMS}} -DCMAKE_BUILD_TYPE=Release ${{matrix.CMAKE_PARAMS}} + - name: Build + run: | + cmake --build build + strip -u -r build/libshaderc/libshaderc_shared.dylib + - name: Upload artifact + run: aws s3 cp build/libshaderc/libshaderc_shared.dylib s3://lwjgl-build/nightly/macosx/${{matrix.ARCH}}/libshaderc.dylib $S3_PARAMS + - name: Upload git revision + run: | + git log --first-parent --pretty=format:%H HEAD~2..HEAD~1 > libshaderc.dylib.git + aws s3 cp libshaderc.dylib.git s3://lwjgl-build/nightly/macosx/${{matrix.ARCH}}/ $S3_PARAMS + + windows: + name: Windows + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + ARCH: [x86, x64, arm64] + include: + - ARCH: x86 + PLATFORM: Win32 + - ARCH: x64 + PLATFORM: x64 + - ARCH: arm64 + PLATFORM: ARM64 + defaults: + run: + shell: cmd + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 3 + - name: Install dependencies + run: python utils/git-sync-deps + - name: Configure build + run: cmake -B build -G "Visual Studio 17 2022" -A ${{matrix.PLATFORM}} ${{env.SHADERC_PARAMS}} + - name: Build + run: cmake --build build --config Release + - name: Upload artifact + run: aws s3 cp build\libshaderc\Release\shaderc_shared.dll s3://lwjgl-build/nightly/windows/${{matrix.ARCH}}/shaderc.dll ${{env.S3_PARAMS}} + - name: Upload git revision + run: | + git log --first-parent --pretty=format:%%H HEAD~2..HEAD~1 > shaderc.dll.git + aws s3 cp shaderc.dll.git s3://lwjgl-build/nightly/windows/${{matrix.ARCH}}/ ${{env.S3_PARAMS}} diff --git a/XCompile-lwjgl.cmake b/XCompile-lwjgl.cmake new file mode 100644 index 000000000..8cfa94e78 --- /dev/null +++ b/XCompile-lwjgl.cmake @@ -0,0 +1,2 @@ +SET(CMAKE_SYSTEM_NAME "${SYSTEM_NAME}") +SET(CMAKE_SYSTEM_PROCESSOR "${SYSTEM_PROCESSOR}") \ No newline at end of file