From 3463e18efaaf87cb6a46f09bd26ed7744ca6575f Mon Sep 17 00:00:00 2001 From: Ioannis Tsakpinis Date: Tue, 14 May 2019 23:42:37 +0300 Subject: [PATCH] LWJGL CI configuration --- .gitattributes | 1 + .github/workflows/autoroll.yml | 66 -------- .github/workflows/lwjgl.yml | 299 +++++++++++++++++++++++++++++++++ third_party/CMakeLists.txt | 6 +- 4 files changed, 305 insertions(+), 67 deletions(-) create mode 100644 .gitattributes delete mode 100644 .github/workflows/autoroll.yml create mode 100644 .github/workflows/lwjgl.yml 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..ed8a34ed7 --- /dev/null +++ b/.github/workflows/lwjgl.yml @@ -0,0 +1,299 @@ +name: LWJGL Build + +on: + workflow_dispatch: + 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 + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + steps: + - name: Upgrade git + run: | + sed -i \ + -e 's/^mirrorlist/#mirrorlist/' \ + -e 's/^#baseurl/baseurl/' \ + -e 's/mirror\.centos\.org/vault.centos.org/' \ + /etc/yum.repos.d/*.repo + 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 + sed -i \ + -e 's/^mirrorlist/#mirrorlist/' \ + -e 's/^#baseurl/baseurl/' \ + -e 's/^# baseurl/baseurl/' \ + -e 's/mirror\.centos\.org/vault.centos.org/' \ + /etc/yum.repos.d/CentOS-SCLo-scl*.repo + 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 $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 ${{env.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}}/ ${{env.S3_PARAMS}} + + linux-cross: + name: Linux Cross + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + ARCH: [arm32, arm64, ppc64le, riscv64] + include: + # ----- + - ARCH: arm32 + CROSS_ARCH: armhf + TRIPLET: arm-linux-gnueabihf + CMAKE_FLAGS: + # ----- + - ARCH: arm64 + CROSS_ARCH: arm64 + TRIPLET: aarch64-linux-gnu + CMAKE_FLAGS: + # ---- + - ARCH: ppc64le + CROSS_ARCH: ppc64el + TRIPLET: powerpc64le-linux-gnu + CMAKE_FLAGS: + # ----- + - ARCH: riscv64 + CROSS_ARCH: riscv64 + TRIPLET: riscv64-linux-gnu + # Some weirdness with atomics + CMAKE_FLAGS: LDFLAGS=-pthread + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 3 + - name: Install dependencies + run: | + DEBIAN_FRONTEND=noninteractive sudo apt-get -yq update + DEBIAN_FRONTEND=noninteractive sudo apt-get -yq install awscli cmake gcc-${{matrix.TRIPLET}} g++-${{matrix.TRIPLET}} libc6-dev-${{matrix.CROSS_ARCH}}-cross + python3 utils/git-sync-deps + - name: Configure build + run: CC=${{matrix.TRIPLET}}-gcc CXX=${{matrix.TRIPLET}}-g++ ${{matrix.CMAKE_FLAGS}} cmake -B build $SHADERC_PARAMS -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0" + - 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 ${{env.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}}/ ${{env.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 +# # ----- +# - ARCH: arm64 +# CROSS_ARCH: arm64 +# CONTAINER: ubuntu:20.04 +# TRIPLET: aarch64-linux-gnu +# # ---- +# - ARCH: ppc64le +# CROSS_ARCH: ppc64el +# CONTAINER: ubuntu:20.04 +# TRIPLET: powerpc64le-linux-gnu +# # ----- +# - ARCH: riscv64 +# CROSS_ARCH: riscv64 +# CONTAINER: ubuntu:20.04 +# TRIPLET: riscv64-linux-gnu +# 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 $SHADERC_PARAMS -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0" +# - 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 ${{env.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}}/ ${{env.S3_PARAMS}} + + freebsd-cross: + name: FreeBSD Cross + runs-on: ubuntu-latest + strategy: + fail-fast: false + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 3 + - name: Build + uses: cross-platform-actions/action@v0.25.0 + with: + operating_system: freebsd + architecture: x86-64 + version: '13.3' + 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 + run: aws s3 cp build/libshaderc/libshaderc_shared.so s3://lwjgl-build/nightly/freebsd/x64/libshaderc.so ${{env.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/ ${{env.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 -DCMAKE_OSX_ARCHITECTURES=x86_64 + - ARCH: arm64 + CMAKE_PARAMS: -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DCMAKE_OSX_ARCHITECTURES=arm64 + 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 $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 ${{env.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}}/ ${{env.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" -T ClangCL -A ${{matrix.PLATFORM}} %SHADERC_PARAMS% + - name: Build + run: cmake --build build --parallel --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/third_party/CMakeLists.txt b/third_party/CMakeLists.txt index d44f62a1e..54d471953 100644 --- a/third_party/CMakeLists.txt +++ b/third_party/CMakeLists.txt @@ -87,7 +87,11 @@ if (NOT TARGET glslang) # Glslang tests are off by default. Turn them on if testing Shaderc. set(GLSLANG_TESTS ON) endif() - set(GLSLANG_ENABLE_INSTALL $) + if (SKIP_GLSLANG_INSTALL) + set(GLSLANG_ENABLE_INSTALL OFF) + else() + set(GLSLANG_ENABLE_INSTALL ON) + endif() add_subdirectory(${SHADERC_GLSLANG_DIR} glslang) endif() if (NOT TARGET glslang)