mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2026-02-10 17:43:03 +00:00
refactor: introduce ci for compiling with clang
This commit is contained in:
117
.github/actions/configure-clang/action.yml
vendored
Normal file
117
.github/actions/configure-clang/action.yml
vendored
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
name: "Configure clang"
|
||||||
|
description: "Installs and configures clang in a specific version on an ubuntu image"
|
||||||
|
inputs:
|
||||||
|
clang_version:
|
||||||
|
description: "The version of clang to install. Must be the major version only."
|
||||||
|
required: true
|
||||||
|
enable_x86:
|
||||||
|
description: "Whether to enable x86 support."
|
||||||
|
default: "false"
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Enable i386 architecture
|
||||||
|
if: ${{ inputs.enable_x86 == 'true' }}
|
||||||
|
shell: bash
|
||||||
|
run: dpkg --add-architecture i386
|
||||||
|
|
||||||
|
- name: Install clang
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y \
|
||||||
|
clang-${{ inputs.clang_version }}${PKG_SUFFIX} \
|
||||||
|
lld-${{ inputs.clang_version }}${PKG_SUFFIX} \
|
||||||
|
lldb-${{ inputs.clang_version }}${PKG_SUFFIX} \
|
||||||
|
clang-format-${{ inputs.clang_version }}${PKG_SUFFIX} \
|
||||||
|
clang-tidy-${{ inputs.clang_version }}${PKG_SUFFIX}
|
||||||
|
env:
|
||||||
|
PKG_SUFFIX: ${{ case(inputs.enable_x86 == 'true', ':i386', '') }}
|
||||||
|
|
||||||
|
- name: Configure clang
|
||||||
|
shell: bash
|
||||||
|
# Source: https://gist.github.com/junkdog/70231d6953592cd6f27def59fe19e50d
|
||||||
|
run: |
|
||||||
|
function register_clang_version {
|
||||||
|
local version=$1
|
||||||
|
local priority=$2
|
||||||
|
|
||||||
|
update-alternatives \
|
||||||
|
--verbose \
|
||||||
|
--install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-${version} ${priority} \
|
||||||
|
--slave /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-${version} \
|
||||||
|
--slave /usr/bin/llvm-as llvm-as /usr/bin/llvm-as-${version} \
|
||||||
|
--slave /usr/bin/llvm-bcanalyzer llvm-bcanalyzer /usr/bin/llvm-bcanalyzer-${version} \
|
||||||
|
--slave /usr/bin/llvm-c-test llvm-c-test /usr/bin/llvm-c-test-${version} \
|
||||||
|
--slave /usr/bin/llvm-cat llvm-cat /usr/bin/llvm-cat-${version} \
|
||||||
|
--slave /usr/bin/llvm-cfi-verify llvm-cfi-verify /usr/bin/llvm-cfi-verify-${version} \
|
||||||
|
--slave /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-${version} \
|
||||||
|
--slave /usr/bin/llvm-cvtres llvm-cvtres /usr/bin/llvm-cvtres-${version} \
|
||||||
|
--slave /usr/bin/llvm-cxxdump llvm-cxxdump /usr/bin/llvm-cxxdump-${version} \
|
||||||
|
--slave /usr/bin/llvm-cxxfilt llvm-cxxfilt /usr/bin/llvm-cxxfilt-${version} \
|
||||||
|
--slave /usr/bin/llvm-diff llvm-diff /usr/bin/llvm-diff-${version} \
|
||||||
|
--slave /usr/bin/llvm-dis llvm-dis /usr/bin/llvm-dis-${version} \
|
||||||
|
--slave /usr/bin/llvm-dlltool llvm-dlltool /usr/bin/llvm-dlltool-${version} \
|
||||||
|
--slave /usr/bin/llvm-dwarfdump llvm-dwarfdump /usr/bin/llvm-dwarfdump-${version} \
|
||||||
|
--slave /usr/bin/llvm-dwp llvm-dwp /usr/bin/llvm-dwp-${version} \
|
||||||
|
--slave /usr/bin/llvm-exegesis llvm-exegesis /usr/bin/llvm-exegesis-${version} \
|
||||||
|
--slave /usr/bin/llvm-extract llvm-extract /usr/bin/llvm-extract-${version} \
|
||||||
|
--slave /usr/bin/llvm-lib llvm-lib /usr/bin/llvm-lib-${version} \
|
||||||
|
--slave /usr/bin/llvm-link llvm-link /usr/bin/llvm-link-${version} \
|
||||||
|
--slave /usr/bin/llvm-lto llvm-lto /usr/bin/llvm-lto-${version} \
|
||||||
|
--slave /usr/bin/llvm-lto2 llvm-lto2 /usr/bin/llvm-lto2-${version} \
|
||||||
|
--slave /usr/bin/llvm-mc llvm-mc /usr/bin/llvm-mc-${version} \
|
||||||
|
--slave /usr/bin/llvm-mca llvm-mca /usr/bin/llvm-mca-${version} \
|
||||||
|
--slave /usr/bin/llvm-modextract llvm-modextract /usr/bin/llvm-modextract-${version} \
|
||||||
|
--slave /usr/bin/llvm-mt llvm-mt /usr/bin/llvm-mt-${version} \
|
||||||
|
--slave /usr/bin/llvm-nm llvm-nm /usr/bin/llvm-nm-${version} \
|
||||||
|
--slave /usr/bin/llvm-objcopy llvm-objcopy /usr/bin/llvm-objcopy-${version} \
|
||||||
|
--slave /usr/bin/llvm-objdump llvm-objdump /usr/bin/llvm-objdump-${version} \
|
||||||
|
--slave /usr/bin/llvm-opt-report llvm-opt-report /usr/bin/llvm-opt-report-${version} \
|
||||||
|
--slave /usr/bin/llvm-pdbutil llvm-pdbutil /usr/bin/llvm-pdbutil-${version} \
|
||||||
|
--slave /usr/bin/llvm-PerfectShuffle llvm-PerfectShuffle /usr/bin/llvm-PerfectShuffle-${version} \
|
||||||
|
--slave /usr/bin/llvm-profdata llvm-profdata /usr/bin/llvm-profdata-${version} \
|
||||||
|
--slave /usr/bin/llvm-ranlib llvm-ranlib /usr/bin/llvm-ranlib-${version} \
|
||||||
|
--slave /usr/bin/llvm-rc llvm-rc /usr/bin/llvm-rc-${version} \
|
||||||
|
--slave /usr/bin/llvm-readelf llvm-readelf /usr/bin/llvm-readelf-${version} \
|
||||||
|
--slave /usr/bin/llvm-readobj llvm-readobj /usr/bin/llvm-readobj-${version} \
|
||||||
|
--slave /usr/bin/llvm-rtdyld llvm-rtdyld /usr/bin/llvm-rtdyld-${version} \
|
||||||
|
--slave /usr/bin/llvm-size llvm-size /usr/bin/llvm-size-${version} \
|
||||||
|
--slave /usr/bin/llvm-split llvm-split /usr/bin/llvm-split-${version} \
|
||||||
|
--slave /usr/bin/llvm-stress llvm-stress /usr/bin/llvm-stress-${version} \
|
||||||
|
--slave /usr/bin/llvm-strings llvm-strings /usr/bin/llvm-strings-${version} \
|
||||||
|
--slave /usr/bin/llvm-strip llvm-strip /usr/bin/llvm-strip-${version} \
|
||||||
|
--slave /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-${version} \
|
||||||
|
--slave /usr/bin/llvm-tblgen llvm-tblgen /usr/bin/llvm-tblgen-${version} \
|
||||||
|
--slave /usr/bin/llvm-undname llvm-undname /usr/bin/llvm-undname-${version} \
|
||||||
|
--slave /usr/bin/llvm-xray llvm-xray /usr/bin/llvm-xray-${version}
|
||||||
|
|
||||||
|
|
||||||
|
update-alternatives \
|
||||||
|
--verbose \
|
||||||
|
--install /usr/bin/clang clang /usr/bin/clang-${version} ${priority} \
|
||||||
|
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-${version} \
|
||||||
|
--slave /usr/bin/clang-format clang-format /usr/bin/clang-format-${version} \
|
||||||
|
--slave /usr/bin/clang-cpp clang-cpp /usr/bin/clang-cpp-${version} \
|
||||||
|
--slave /usr/bin/clang-cl clang-cl /usr/bin/clang-cl-${version} \
|
||||||
|
--slave /usr/bin/clangd clangd /usr/bin/clangd-${version} \
|
||||||
|
--slave /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${version} \
|
||||||
|
--slave /usr/bin/clang-check clang-check /usr/bin/clang-check-${version} \
|
||||||
|
--slave /usr/bin/clang-query clang-query /usr/bin/clang-query-${version} \
|
||||||
|
--slave /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-${version} \
|
||||||
|
--slave /usr/bin/bugpoint bugpoint /usr/bin/bugpoint-${version} \
|
||||||
|
--slave /usr/bin/dsymutil dsymutil /usr/bin/dsymutil-${version} \
|
||||||
|
--slave /usr/bin/lld lld /usr/bin/lld-${version} \
|
||||||
|
--slave /usr/bin/ld.lld ld.lld /usr/bin/ld.lld-${version} \
|
||||||
|
--slave /usr/bin/lld-link lld-link /usr/bin/lld-link-${version} \
|
||||||
|
--slave /usr/bin/llc llc /usr/bin/llc-${version} \
|
||||||
|
--slave /usr/bin/lli lli /usr/bin/lli-${version} \
|
||||||
|
--slave /usr/bin/obj2yaml obj2yaml /usr/bin/obj2yaml-${version} \
|
||||||
|
--slave /usr/bin/opt opt /usr/bin/opt-${version} \
|
||||||
|
--slave /usr/bin/sanstats sanstats /usr/bin/sanstats-${version} \
|
||||||
|
--slave /usr/bin/verify-uselistorder verify-uselistorder /usr/bin/verify-uselistorder-${version} \
|
||||||
|
--slave /usr/bin/wasm-ld wasm-ld /usr/bin/wasm-ld-${version} \
|
||||||
|
--slave /usr/bin/yaml2obj yaml2obj /usr/bin/yaml2obj-${version}
|
||||||
|
}
|
||||||
|
|
||||||
|
register_clang_version ${{ inputs.clang_version }} 100
|
||||||
34
.github/actions/configure-gcc/action.yml
vendored
Normal file
34
.github/actions/configure-gcc/action.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
name: "Configure gcc"
|
||||||
|
description: "Installs and configures gcc in a specific version on an ubuntu image"
|
||||||
|
inputs:
|
||||||
|
gcc_version:
|
||||||
|
description: "The version of gcc to install. Must be the major version only."
|
||||||
|
required: true
|
||||||
|
enable_x86:
|
||||||
|
description: "Whether to enable x86 support."
|
||||||
|
default: "false"
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Install g++ and multilib
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y gcc-${{ inputs.gcc_version }} g++-${{ inputs.gcc_version }} ${ADDITIONAL_PACKAGES}
|
||||||
|
env:
|
||||||
|
ADDITIONAL_PACKAGES: ${{ case(inputs.enable_x86 == 'true', format('gcc-{0}-multilib g++-{0}-multilib', inputs.gcc_version), '') }}
|
||||||
|
|
||||||
|
- name: Configure gcc
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
function register_gcc_version {
|
||||||
|
local version=$1
|
||||||
|
local priority=$2
|
||||||
|
|
||||||
|
update-alternatives \
|
||||||
|
--verbose \
|
||||||
|
--install /usr/bin/gcc gcc /usr/bin/gcc-${version} ${priority} \
|
||||||
|
--slave /usr/bin/g++ g++ /usr/bin/g++-${version}
|
||||||
|
}
|
||||||
|
|
||||||
|
register_gcc_version ${{ inputs.gcc_version }} 100
|
||||||
21
.github/workflows/check-formatting.yaml
vendored
21
.github/workflows/check-formatting.yaml
vendored
@@ -5,21 +5,28 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check-formatting:
|
check-formatting:
|
||||||
runs-on: ubuntu-latest
|
|
||||||
name: Check formatting
|
name: Check formatting
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: ubuntu:24.04
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
steps:
|
steps:
|
||||||
|
- name: Install base packages
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y wget tar git make curl
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Install LLVM and Clang
|
- name: Configure clang
|
||||||
uses: KyleMayes/install-llvm-action@v2
|
uses: ./.github/actions/configure-clang
|
||||||
with:
|
with:
|
||||||
version: "20.1"
|
clang_version: 20
|
||||||
|
|
||||||
- name: Test formatting for all files
|
- name: Test formatting for all files
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
run: |
|
run: ./scripts/check-format.sh
|
||||||
export CLANG_FORMAT_BIN="${LLVM_PATH}/bin/clang-format"
|
|
||||||
./scripts/check-format.sh
|
|
||||||
|
|||||||
39
.github/workflows/ci.yaml
vendored
39
.github/workflows/ci.yaml
vendored
@@ -13,47 +13,56 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
build_arch: [x86, x64]
|
build_arch: [x86, x64]
|
||||||
|
toolset: [gcc, clang]
|
||||||
include:
|
include:
|
||||||
- build_arch: x86
|
- build_arch: x86
|
||||||
gtk_packages: libgtk-4-dev:i386 libwebkitgtk-6.0-dev:i386
|
gtk_packages: libgtk-4-dev:i386 libwebkitgtk-6.0-dev:i386
|
||||||
additional_packages: gcc-14-multilib g++-14-multilib
|
|
||||||
- build_arch: x64
|
- build_arch: x64
|
||||||
gtk_packages: libgtk-4-dev libwebkitgtk-6.0-dev
|
gtk_packages: libgtk-4-dev libwebkitgtk-6.0-dev
|
||||||
name: Build-Test Linux ${{ matrix.build_arch }}
|
name: Build-Test Linux ${{ matrix.toolset }} ${{ matrix.build_arch }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: ubuntu:24.04
|
container: ubuntu:24.04
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: bash
|
shell: bash
|
||||||
steps:
|
steps:
|
||||||
- name: Setup env for x86 cross-compilation
|
- name: Enable i386 architecture
|
||||||
if: ${{ matrix.build_arch == 'x86' }}
|
if: ${{ matrix.build_arch == 'x86' }}
|
||||||
run: dpkg --add-architecture i386
|
run: dpkg --add-architecture i386
|
||||||
|
|
||||||
- name: Install g++ and multilib
|
- name: Install base packages
|
||||||
run: |
|
run: |
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get install -y wget tar git make curl gcc-14 g++-14 ${{ matrix.gtk_packages }} ${{ matrix.additional_packages }}
|
apt-get install -y wget tar git make curl ${{ matrix.gtk_packages }}
|
||||||
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 14
|
|
||||||
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 14
|
|
||||||
update-alternatives --set gcc /usr/bin/gcc-14
|
|
||||||
update-alternatives --set g++ /usr/bin/g++-14
|
|
||||||
|
|
||||||
- name: Install node
|
|
||||||
uses: actions/setup-node@v6
|
|
||||||
with:
|
|
||||||
node-version: 24
|
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Configure gcc
|
||||||
|
uses: ./.github/actions/configure-gcc
|
||||||
|
with:
|
||||||
|
gcc_version: 14
|
||||||
|
enable_x86: ${{ case(matrix.build_arch == 'x86', 'true', 'false') }}
|
||||||
|
|
||||||
|
- name: Configure clang
|
||||||
|
if: ${{ matrix.toolset == 'clang' }}
|
||||||
|
uses: ./.github/actions/configure-clang
|
||||||
|
with:
|
||||||
|
clang_version: 20
|
||||||
|
enable_x86: ${{ case(matrix.build_arch == 'x86', 'true', 'false') }}
|
||||||
|
|
||||||
|
- name: Install node
|
||||||
|
uses: actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version: 24
|
||||||
|
|
||||||
- name: Premake generate
|
- name: Premake generate
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
env:
|
env:
|
||||||
PREMAKE_NO_PROMPT: 1
|
PREMAKE_NO_PROMPT: 1
|
||||||
run: ./generate.sh --modman
|
run: ./generate.sh --cc=${{ matrix.toolset }} --modman
|
||||||
|
|
||||||
- name: Build UI
|
- name: Build UI
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
|
|||||||
19
.github/workflows/release.yaml
vendored
19
.github/workflows/release.yaml
vendored
@@ -13,14 +13,17 @@ jobs:
|
|||||||
run:
|
run:
|
||||||
shell: bash
|
shell: bash
|
||||||
steps:
|
steps:
|
||||||
- name: Install g++ and multilib
|
- name: Install base packages
|
||||||
run: |
|
run: |
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get install -y wget tar git make gcc-14 g++-14 gcc-14-multilib g++-14-multilib
|
apt-get install -y wget tar git make curl
|
||||||
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 14
|
|
||||||
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 14
|
- name: Configure gcc
|
||||||
update-alternatives --set gcc /usr/bin/gcc-14
|
if: ${{ matrix.toolset == 'gcc' }}
|
||||||
update-alternatives --set g++ /usr/bin/g++-14
|
uses: ./.github/actions/configure-gcc
|
||||||
|
with:
|
||||||
|
gcc_version: 14
|
||||||
|
enable_x86: "true"
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
@@ -31,12 +34,12 @@ jobs:
|
|||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
env:
|
env:
|
||||||
PREMAKE_NO_PROMPT: 1
|
PREMAKE_NO_PROMPT: 1
|
||||||
run: ./generate.sh --oat-version=${{ github.ref_name }}
|
run: ./generate.sh --cc=gcc --oat-version=${{ github.ref_name }}
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
run: |
|
run: |
|
||||||
make -C build -j$(nproc) config=release_x86 all
|
scripts/build.sh release x86
|
||||||
chmod +x build/bin/Release_x86/{ImageConverter,Unlinker,Linker}
|
chmod +x build/bin/Release_x86/{ImageConverter,Unlinker,Linker}
|
||||||
|
|
||||||
- name: Upload artifacts
|
- name: Upload artifacts
|
||||||
|
|||||||
Reference in New Issue
Block a user