[CI, Drone] Add GCC builds
* Switch to starlark language to simplify configuration * Use image `xeniaproject/buildenv:2022-01-01`
This commit is contained in:
parent
b2e51fd24f
commit
657645fb2c
|
@ -8,9 +8,8 @@ skip_tags: true
|
||||||
|
|
||||||
skip_commits:
|
skip_commits:
|
||||||
files:
|
files:
|
||||||
- .drone.yml
|
- .drone.star
|
||||||
- .github/**
|
- .github/**
|
||||||
- .travis.yml
|
|
||||||
- docs/**
|
- docs/**
|
||||||
- src/**/*_posix.*
|
- src/**/*_posix.*
|
||||||
- src/**/*_linux.*
|
- src/**/*_linux.*
|
||||||
|
|
|
@ -0,0 +1,254 @@
|
||||||
|
def main(ctx):
|
||||||
|
return [
|
||||||
|
pipeline_lint(),
|
||||||
|
pipeline_linux_desktop('x86_64-linux-clang', image_linux_x86_64(), 'amd64', 'clang'),
|
||||||
|
pipeline_linux_desktop('x86_64-linux-gcc', image_linux_x86_64(), 'amd64', 'gcc'),
|
||||||
|
]
|
||||||
|
|
||||||
|
def image_linux_x86_64():
|
||||||
|
return 'xeniaproject/buildenv:2022-01-01'
|
||||||
|
|
||||||
|
def volume_build(toolchain, path='/drone/src/build'):
|
||||||
|
return {
|
||||||
|
'name': 'build-' + toolchain,
|
||||||
|
'path': path,
|
||||||
|
}
|
||||||
|
|
||||||
|
def command_cc(cc):
|
||||||
|
# set CC, CXX, ...
|
||||||
|
return 'export $(cat /{}.env | sed \'s/#.*//g\' | xargs)'.format(cc)
|
||||||
|
|
||||||
|
# Run lint in a separate pipeline so that it will try building even if lint fails
|
||||||
|
def pipeline_lint():
|
||||||
|
return {
|
||||||
|
'kind': 'pipeline',
|
||||||
|
'type': 'docker',
|
||||||
|
'name': 'lint',
|
||||||
|
'steps': [
|
||||||
|
{
|
||||||
|
'name': 'lint',
|
||||||
|
'image': image_linux_x86_64(),
|
||||||
|
'commands': [
|
||||||
|
'clang-format --version',
|
||||||
|
'./xenia-build lint --all',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
def pipeline_linux_desktop(name, image, arch, cc):
|
||||||
|
return {
|
||||||
|
'kind': 'pipeline',
|
||||||
|
'type': 'docker',
|
||||||
|
'name': name,
|
||||||
|
'platform': {
|
||||||
|
'os': 'linux',
|
||||||
|
'arch': arch,
|
||||||
|
},
|
||||||
|
# These volumes will be mounted at the build directory, allowing to
|
||||||
|
# run different premake toolchains from the same source tree
|
||||||
|
'volumes': [
|
||||||
|
{
|
||||||
|
'name': 'build-premake',
|
||||||
|
'temp': {},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'build-cmake',
|
||||||
|
'temp': {},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
'steps': [
|
||||||
|
#
|
||||||
|
# Setup the source tree
|
||||||
|
#
|
||||||
|
{
|
||||||
|
'name': 'clone-submodules',
|
||||||
|
'image': image,
|
||||||
|
'commands': [
|
||||||
|
'pwd',
|
||||||
|
# May miss recursive submodules (but faster than xb setup)
|
||||||
|
'git submodule update --init --depth 1 -j $(nproc)',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Setup the two build systems
|
||||||
|
#
|
||||||
|
|
||||||
|
# Native premake Makefiles for production
|
||||||
|
{
|
||||||
|
'name': 'toolchain-premake',
|
||||||
|
'image': image,
|
||||||
|
'volumes': [volume_build('premake')],
|
||||||
|
'commands': [
|
||||||
|
command_cc(cc),
|
||||||
|
'$CXX --version',
|
||||||
|
'python3 --version',
|
||||||
|
'./xenia-build premake --cc={}'.format(cc),
|
||||||
|
],
|
||||||
|
'depends_on': ['clone-submodules'],
|
||||||
|
},
|
||||||
|
|
||||||
|
# Development toolchain
|
||||||
|
{
|
||||||
|
'name': 'toolchain-cmake',
|
||||||
|
'image': image,
|
||||||
|
'volumes': [volume_build('cmake')],
|
||||||
|
'commands': [
|
||||||
|
command_cc(cc),
|
||||||
|
'''
|
||||||
|
./xenia-build premake --cc={} --devenv=cmake
|
||||||
|
cd build
|
||||||
|
for c in Debug Release
|
||||||
|
do
|
||||||
|
mkdir cmake-$c
|
||||||
|
cd cmake-$c
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=$c ..
|
||||||
|
cd ..
|
||||||
|
done
|
||||||
|
'''.format(cc),
|
||||||
|
],
|
||||||
|
# Premake itself needs to be build first:
|
||||||
|
'depends_on': ['toolchain-premake'],
|
||||||
|
},
|
||||||
|
|
||||||
|
#
|
||||||
|
# Building
|
||||||
|
#
|
||||||
|
{
|
||||||
|
'name': 'build-premake-debug-all',
|
||||||
|
'image': image,
|
||||||
|
'volumes': [volume_build('premake')],
|
||||||
|
'commands': [
|
||||||
|
command_cc(cc),
|
||||||
|
'./xenia-build build --no_premake -j$(nproc) --config=Debug',
|
||||||
|
],
|
||||||
|
'depends_on': ['toolchain-premake'],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'name': 'build-premake-release-tests',
|
||||||
|
'image': image,
|
||||||
|
'volumes': [volume_build('premake')],
|
||||||
|
'commands': [
|
||||||
|
command_cc(cc),
|
||||||
|
'./xenia-build build --no_premake -j$(nproc) --config=Release --target=xenia-base-tests',
|
||||||
|
],
|
||||||
|
'depends_on': ['toolchain-premake'],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'name': 'build-premake-release-all',
|
||||||
|
'image': image,
|
||||||
|
'volumes': [volume_build('premake')],
|
||||||
|
'commands': [
|
||||||
|
command_cc(cc),
|
||||||
|
'./xenia-build build --no_premake -j$(nproc) --config=Release',
|
||||||
|
],
|
||||||
|
'depends_on': ['build-premake-release-tests'],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'name': 'build-cmake-debug-all',
|
||||||
|
'image': image,
|
||||||
|
'volumes': [volume_build('cmake')],
|
||||||
|
'commands': [
|
||||||
|
command_cc(cc),
|
||||||
|
'cd build/cmake-Debug',
|
||||||
|
'cmake --build . -j$(nproc)',
|
||||||
|
],
|
||||||
|
'depends_on': ['toolchain-cmake'],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'name': 'build-cmake-release-tests',
|
||||||
|
'image': image,
|
||||||
|
'volumes': [volume_build('cmake')],
|
||||||
|
'commands': [
|
||||||
|
command_cc(cc),
|
||||||
|
'cd build/cmake-Release',
|
||||||
|
'cmake --build . -j$(nproc) --target xenia-base-tests',
|
||||||
|
],
|
||||||
|
'depends_on': ['toolchain-cmake'],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'name': 'build-cmake-release-all',
|
||||||
|
'image': image,
|
||||||
|
'volumes': [volume_build('cmake')],
|
||||||
|
'commands': [
|
||||||
|
command_cc(cc),
|
||||||
|
'cd build/cmake-Release',
|
||||||
|
'cmake --build . -j$(nproc)',
|
||||||
|
],
|
||||||
|
'depends_on': ['build-cmake-release-tests'],
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Tests
|
||||||
|
#
|
||||||
|
{
|
||||||
|
'name': 'test-premake',
|
||||||
|
'image': image,
|
||||||
|
'volumes': [volume_build('premake')],
|
||||||
|
'commands': [
|
||||||
|
'./build/bin/Linux/Release/xenia-base-tests',
|
||||||
|
],
|
||||||
|
'depends_on': ['build-premake-release-tests'],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'name': 'test-cmake',
|
||||||
|
'image': image,
|
||||||
|
'volumes': [volume_build('cmake')],
|
||||||
|
'commands': [
|
||||||
|
'./build/bin/Linux/Release/xenia-base-tests',
|
||||||
|
],
|
||||||
|
'depends_on': ['build-cmake-release-tests'],
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Stat
|
||||||
|
#
|
||||||
|
{
|
||||||
|
'name': 'stat',
|
||||||
|
'image': image,
|
||||||
|
'volumes': [
|
||||||
|
volume_build('premake', '/build-premake'),
|
||||||
|
volume_build('cmake', '/build-cmake'),
|
||||||
|
],
|
||||||
|
'commands': [
|
||||||
|
'''
|
||||||
|
header() {
|
||||||
|
SEP='============================================================'
|
||||||
|
echo
|
||||||
|
echo $SEP
|
||||||
|
echo $@
|
||||||
|
echo $SEP
|
||||||
|
}
|
||||||
|
|
||||||
|
for v in premake cmake
|
||||||
|
do
|
||||||
|
for c in Debug Release
|
||||||
|
do
|
||||||
|
header $v $c
|
||||||
|
p=/build-$v/bin/Linux/$c
|
||||||
|
ls -la $p
|
||||||
|
sha256sum $p/*
|
||||||
|
done
|
||||||
|
done
|
||||||
|
'''
|
||||||
|
],
|
||||||
|
'depends_on': [
|
||||||
|
'build-premake-debug-all',
|
||||||
|
'build-premake-release-all',
|
||||||
|
'build-cmake-debug-all',
|
||||||
|
'build-cmake-release-all',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
214
.drone.yml
214
.drone.yml
|
@ -1,214 +0,0 @@
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: lint
|
|
||||||
|
|
||||||
# Run this in a separate pipeline so that it will build even if this fails
|
|
||||||
steps:
|
|
||||||
- name: lint
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
commands:
|
|
||||||
- clang-format --version
|
|
||||||
- ./xenia-build lint --all
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: x86_64-linux
|
|
||||||
platform:
|
|
||||||
os: linux
|
|
||||||
arch: amd64
|
|
||||||
|
|
||||||
# Some expressions in this file are duplicates. Scripting support is
|
|
||||||
# available using jsonnet but increases complexity
|
|
||||||
# https://docs.drone.io/pipeline/scripting/jsonnet/
|
|
||||||
|
|
||||||
# These volumes will be mounted at the build directory, allowing to
|
|
||||||
# run different premake toolchains from the same source tree
|
|
||||||
volumes:
|
|
||||||
- name: build-premake
|
|
||||||
temp: {}
|
|
||||||
- name: build-cmake
|
|
||||||
temp: {}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
#
|
|
||||||
# Setup the source tree
|
|
||||||
#
|
|
||||||
- name: clone-submodules
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
commands:
|
|
||||||
- pwd
|
|
||||||
# May miss recursive submodules (but faster than xb setup)
|
|
||||||
- git submodule update --init --depth 1 -j $(nproc)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Setup the two build systems
|
|
||||||
#
|
|
||||||
|
|
||||||
# Native premake Makefiles for production
|
|
||||||
- name: toolchain-premake
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
volumes:
|
|
||||||
- name: build-premake
|
|
||||||
path: /drone/src/build
|
|
||||||
commands:
|
|
||||||
- $CXX --version
|
|
||||||
- $AR --version
|
|
||||||
- python3 --version
|
|
||||||
- ./xenia-build premake
|
|
||||||
depends_on:
|
|
||||||
- clone-submodules
|
|
||||||
|
|
||||||
# Development toolchain
|
|
||||||
- name: toolchain-cmake
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
volumes:
|
|
||||||
- name: build-cmake
|
|
||||||
path: /drone/src/build
|
|
||||||
commands:
|
|
||||||
- |
|
|
||||||
./xenia-build premake --devenv=cmake
|
|
||||||
cd build
|
|
||||||
for c in Debug Release
|
|
||||||
do
|
|
||||||
mkdir cmake-$c
|
|
||||||
cd cmake-$c
|
|
||||||
cmake -DCMAKE_BUILD_TYPE=$c ..
|
|
||||||
cd ..
|
|
||||||
done
|
|
||||||
depends_on:
|
|
||||||
# Premake itself needs to be build first:
|
|
||||||
- toolchain-premake
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Building
|
|
||||||
#
|
|
||||||
|
|
||||||
- name: build-premake-debug-all
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
volumes:
|
|
||||||
- name: build-premake
|
|
||||||
path: /drone/src/build
|
|
||||||
commands:
|
|
||||||
- ./xenia-build build --no_premake -j$(nproc) --config=Debug
|
|
||||||
depends_on:
|
|
||||||
- toolchain-premake
|
|
||||||
|
|
||||||
- name: build-premake-release-tests
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
volumes:
|
|
||||||
- name: build-premake
|
|
||||||
path: /drone/src/build
|
|
||||||
commands:
|
|
||||||
- ./xenia-build build --no_premake -j$(nproc) --config=Release --target=xenia-base-tests
|
|
||||||
depends_on:
|
|
||||||
- toolchain-premake
|
|
||||||
|
|
||||||
- name: build-premake-release-all
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
volumes:
|
|
||||||
- name: build-premake
|
|
||||||
path: /drone/src/build
|
|
||||||
commands:
|
|
||||||
- ./xenia-build build --no_premake -j$(nproc) --config=Release
|
|
||||||
depends_on:
|
|
||||||
- build-premake-release-tests
|
|
||||||
|
|
||||||
- name: build-cmake-debug-all
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
volumes:
|
|
||||||
- name: build-cmake
|
|
||||||
path: /drone/src/build
|
|
||||||
commands:
|
|
||||||
- cd build/cmake-Debug
|
|
||||||
- cmake --build . -j$(nproc)
|
|
||||||
depends_on:
|
|
||||||
- toolchain-cmake
|
|
||||||
|
|
||||||
- name: build-cmake-release-tests
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
volumes:
|
|
||||||
- name: build-cmake
|
|
||||||
path: /drone/src/build
|
|
||||||
commands:
|
|
||||||
- cd build/cmake-Release
|
|
||||||
- cmake --build . -j$(nproc) --target xenia-base-tests
|
|
||||||
depends_on:
|
|
||||||
- toolchain-cmake
|
|
||||||
|
|
||||||
- name: build-cmake-release-all
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
volumes:
|
|
||||||
- name: build-cmake
|
|
||||||
path: /drone/src/build
|
|
||||||
commands:
|
|
||||||
- cd build/cmake-Release
|
|
||||||
- cmake --build . -j$(nproc)
|
|
||||||
depends_on:
|
|
||||||
- build-cmake-release-tests
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Tests
|
|
||||||
#
|
|
||||||
|
|
||||||
- name: test-premake
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
volumes:
|
|
||||||
- name: build-premake
|
|
||||||
path: /drone/src/build
|
|
||||||
commands:
|
|
||||||
- ./build/bin/Linux/Release/xenia-base-tests
|
|
||||||
depends_on:
|
|
||||||
- build-premake-release-tests
|
|
||||||
|
|
||||||
- name: test-cmake
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
volumes:
|
|
||||||
- name: build-cmake
|
|
||||||
path: /drone/src/build
|
|
||||||
commands:
|
|
||||||
- ./build/bin/Linux/Release/xenia-base-tests
|
|
||||||
depends_on:
|
|
||||||
- build-cmake-release-tests
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Stat
|
|
||||||
#
|
|
||||||
|
|
||||||
- name: stat
|
|
||||||
image: xeniaproject/buildenv:2021-06-21
|
|
||||||
volumes:
|
|
||||||
- name: build-premake
|
|
||||||
path: /build-premake
|
|
||||||
- name: build-cmake
|
|
||||||
path: /build-cmake
|
|
||||||
commands:
|
|
||||||
- |
|
|
||||||
header() {
|
|
||||||
SEP='============================================================'
|
|
||||||
echo
|
|
||||||
echo $SEP
|
|
||||||
echo $@
|
|
||||||
echo $SEP
|
|
||||||
}
|
|
||||||
|
|
||||||
for v in premake cmake
|
|
||||||
do
|
|
||||||
for c in Debug Release
|
|
||||||
do
|
|
||||||
header $v $c
|
|
||||||
p=/build-$v/bin/Linux/$c
|
|
||||||
ls -la $p
|
|
||||||
sha256sum $p/*
|
|
||||||
done
|
|
||||||
done
|
|
||||||
depends_on:
|
|
||||||
- build-premake-debug-all
|
|
||||||
- build-premake-release-all
|
|
||||||
- build-cmake-debug-all
|
|
||||||
- build-cmake-release-all
|
|
Loading…
Reference in New Issue