Skip to content

Updated license of sgl. #356

Updated license of sgl.

Updated license of sgl. #356

Workflow file for this run

name: Build using vcpkg
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
env:
BUILD_TYPE: Release
jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-22.04, windows-2019, windows-2022, macos-latest ]
runs-on: ${{ matrix.os }}
name: "${{ github.workflow }}: ${{ matrix.os }}"
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vcpkg/bincache
sgl_REPO_DIR: ${{ github.workspace }}/sgl-repo
sgl_DIR: ${{ github.workspace }}/sgl
steps:
- name: Set up vcpkg environment variables
shell: bash
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
echo "VCPKG_COPY_TRIPLET=x64-linux" >> $GITHUB_ENV
echo "VCPKG_DEFAULT_TRIPLET=x64-linux-release-only" >> $GITHUB_ENV
elif [ "$RUNNER_OS" == "Windows" ]; then
echo "VCPKG_COPY_TRIPLET=x64-windows" >> $GITHUB_ENV
echo "VCPKG_DEFAULT_TRIPLET=x64-windows-release-only" >> $GITHUB_ENV
elif [ "$RUNNER_OS" == "macOS" ] && [ "$(uname -m)" = "x86_64" ]; then
echo "VCPKG_COPY_TRIPLET=x64-osx" >> $GITHUB_ENV
echo "VCPKG_DEFAULT_TRIPLET=x64-osx-${{matrix.linking}}-release-only" >> $GITHUB_ENV
elif [ "$RUNNER_OS" == "macOS" ]; then
echo "VCPKG_COPY_TRIPLET=arm64-osx" >> $GITHUB_ENV
echo "VCPKG_DEFAULT_TRIPLET=arm64-osx-${{matrix.linking}}-release-only" >> $GITHUB_ENV
else
echo "$RUNNER_OS is not supported."
exit 1
fi
- uses: actions/checkout@v2
with:
submodules: true
- uses: actions/checkout@v2
with:
repository: chrismile/sgl
path: sgl-repo
submodules: true
- uses: lukka/get-cmake@latest
with:
cmakeVersion: 3.29.0
- name: Install Vulkan SDK
shell: bash
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
distro_code_name=$(lsb_release -cs)
distro_release=$(lsb_release -rs)
os_arch="$(uname -m)"
if ! curl -s -I "https://packages.lunarg.com/vulkan/dists/${distro_code_name}/" | grep "2 404" > /dev/null; then
echo "Installing Vulkan SDK from a PPA..."
wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-${distro_code_name}.list \
https://packages.lunarg.com/vulkan/lunarg-vulkan-${distro_code_name}.list
sudo apt update
sudo apt install -y vulkan-sdk
elif dpkg --compare-versions "$distro_release" "ge" "24.04"; then
sudo apt install -y libvulkan-dev
else
echo "Unpacking Vulkan SDK from an archive file..."
curl --silent --show-error --fail -O https://sdk.lunarg.com/sdk/download/latest/linux/vulkan-sdk.tar.gz
mkdir -p VulkanSDK
tar -xf vulkan-sdk.tar.gz -C VulkanSDK
# Fix pkgconfig file.
shaderc_pkgconfig_file="VulkanSDK/$(ls VulkanSDK)/$os_arch/lib/pkgconfig/shaderc.pc"
if [ -f $shaderc_pkgconfig_file ]; then
prefix_path=$(realpath "VulkanSDK/$(ls VulkanSDK)/$os_arch")
sed -i '3s;.*;prefix=\"'$prefix_path'\";' "$shaderc_pkgconfig_file"
sed -i '5s;.*;libdir=${prefix}/lib;' "$shaderc_pkgconfig_file"
echo "PKG_CONFIG_PATH=\"$(realpath "VulkanSDK/$(ls VulkanSDK)/$os_arch/lib/pkgconfig")\"" >> $GITHUB_ENV
fi
fi
# Also install the dependencies for building ports like GLEW here.
sudo apt install -y libgl-dev libxmu-dev libxi-dev libx11-dev libxft-dev libxext-dev libxrandr-dev \
libwayland-dev libxkbcommon-dev libegl1-mesa-dev libibus-1.0-dev autoconf-archive
elif [ "$RUNNER_OS" == "Windows" ]; then
# Chocolatey is broken as of 2023-07-07
#choco install vulkan-sdk
curl -O https://sdk.lunarg.com/sdk/download/1.3.250.1/windows/VulkanSDK-1.3.250.1-Installer.exe
./VulkanSDK-1.3.250.1-Installer.exe --accept-licenses --default-answer --confirm-command install
elif [ "$RUNNER_OS" == "macOS" ]; then
vulkansdk_filename=$(curl -sIkL https://sdk.lunarg.com/sdk/download/latest/mac/vulkan-sdk.zip | sed -r '/filename=/!d;s/.*filename=(.*)$/\1/')
VULKAN_SDK_VERSION=$(echo $vulkansdk_filename | sed -r 's/^.*vulkansdk-macos-(.*)\.zip.*$/\1/')
curl -O https://sdk.lunarg.com/sdk/download/latest/mac/vulkan-sdk.zip
unzip vulkan-sdk.zip -d vulkan-sdk/
vulkan_dir="$(pwd)/vulkan-sdk"
sudo "${vulkan_dir}/InstallVulkan.app/Contents/MacOS/InstallVulkan" \
--root ~/VulkanSDK/$VULKAN_SDK_VERSION --accept-licenses --default-answer --confirm-command install
cd ~/VulkanSDK/$VULKAN_SDK_VERSION
sudo ./install_vulkan.py || true
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
brew update
#rm /usr/local/bin/2to3 || true
#rm /usr/local/bin/idle3 || true
#rm /usr/local/bin/pydoc3 || true
#rm /usr/local/bin/python3 || true
#rm /usr/local/bin/python3-config || true
brew install --force --overwrite llvm libomp pkg-config autoconf automake autoconf-archive
else
echo "$RUNNER_OS is not supported."
exit 1
fi
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitURL: 'https://github.com/microsoft/vcpkg.git'
vcpkgGitCommitId: '797ae22b76f0e78c3aeb03d625722a0cbfe9f52e'
doNotCacheOnWorkflowFailure: true
- name: Create custom vcpkg triplet
run: |
cp "${{env.VCPKG_ROOT}}/triplets/${{env.VCPKG_COPY_TRIPLET}}.cmake" "${{env.VCPKG_ROOT}}/triplets/community/${{env.VCPKG_DEFAULT_TRIPLET}}.cmake"
echo "set(VCPKG_BUILD_TYPE release)" >> "${{env.VCPKG_ROOT}}/triplets/community/${{env.VCPKG_DEFAULT_TRIPLET}}.cmake"
- name: Configure CMake (sgl)
shell: bash
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
if [ "${{env.PKG_CONFIG_PATH}}" != "" ]; then
VK_LAYER_PATH=""
source "VulkanSDK/$(ls VulkanSDK)/setup-env.sh"
export PKG_CONFIG_PATH="${{env.PKG_CONFIG_PATH}}"
else
export VULKAN_SDK="/usr"
fi
elif [ "$RUNNER_OS" == "Windows" ]; then
export VULKAN_SDK="C:/VulkanSDK/$(ls C:/VulkanSDK)"
elif [ "$RUNNER_OS" == "macOS" ]; then
source "$HOME/VulkanSDK/$(ls $HOME/VulkanSDK)/setup-env.sh"
fi
cmake "${{env.sgl_REPO_DIR}}" -B "${{env.sgl_REPO_DIR}}/build" -DCMAKE_TOOLCHAIN_FILE="${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DVCPKG_TARGET_TRIPLET=${{env.VCPKG_DEFAULT_TRIPLET}} -DCMAKE_INSTALL_PREFIX="${{env.sgl_DIR}}"
- name: Build (sgl)
run: cmake --build ${{env.sgl_REPO_DIR}}/build --config ${{env.BUILD_TYPE}} --parallel 4
- name: Install (sgl)
run: cmake --build ${{env.sgl_REPO_DIR}}/build --config ${{env.BUILD_TYPE}} --target install
- name: Configure CMake (CloudRendering)
shell: bash
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
if [ "${{matrix.linking}}" == "dynamic" ]; then
cp "${{env.sgl_REPO_DIR}}/build/libsgl.so" "${{env.sgl_DIR}}/lib/libsgl.so"
fi
if [ "${{env.PKG_CONFIG_PATH}}" != "" ]; then
VK_LAYER_PATH=""
source "VulkanSDK/$(ls VulkanSDK)/setup-env.sh"
export PKG_CONFIG_PATH="${{env.PKG_CONFIG_PATH}}"
else
export VULKAN_SDK="/usr"
fi
elif [ "$RUNNER_OS" == "Windows" ]; then
export VULKAN_SDK="C:/VulkanSDK/$(ls C:/VulkanSDK)"
elif [ "$RUNNER_OS" == "macOS" ]; then
source "$HOME/VulkanSDK/$(ls $HOME/VulkanSDK)/setup-env.sh"
fi
cmake -B "${{github.workspace}}/build" -DCMAKE_TOOLCHAIN_FILE="${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DVCPKG_TARGET_TRIPLET=${{env.VCPKG_DEFAULT_TRIPLET}} -Dsgl_DIR=${{env.sgl_DIR}}/lib/cmake/sgl
- name: Build (CloudRendering)
shell: bash
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
if [ "${{env.PKG_CONFIG_PATH}}" != "" ]; then
VK_LAYER_PATH=""
source "VulkanSDK/$(ls VulkanSDK)/setup-env.sh"
export PKG_CONFIG_PATH="${{env.PKG_CONFIG_PATH}}"
else
export VULKAN_SDK="/usr"
fi
fi
cmake --build "${{github.workspace}}/build" --config ${{env.BUILD_TYPE}} --parallel 4
- name: Remove symbolic links before caching (Windows only)
if: runner.os == 'Windows'
shell: bash
run: |
find "${{env.VCPKG_ROOT}}/buildtrees" -type l -exec echo {} \;
find "${{env.VCPKG_ROOT}}/buildtrees" -type l -exec rm {} \;
# Recently, there were some "There is not enough space on the disk" errors after having added OpenCL support.
# Remove some temporary files to make sure the vcpkg build artifacts can be packaged without out-of-memory errors.
rm -rf "${{env.VCPKG_ROOT}}/downloads"