Skip to content

Commit a1942ca

Browse files
committed
Build GCC 11.4.0 for steam-runtime scout
1 parent 4b58499 commit a1942ca

File tree

2 files changed

+141
-0
lines changed

2 files changed

+141
-0
lines changed

azure-pipelines.yml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
trigger:
2+
batch: true
3+
branches:
4+
include:
5+
- 'gcc-build'
6+
tags:
7+
include:
8+
- 'gcc-build/*'
9+
jobs:
10+
- job: gcc_build
11+
displayName: Build GCC 11.4.0 compiler for steam-runtime scout
12+
pool:
13+
name: Azure Pipelines
14+
vmImage: ubuntu-22.04
15+
container:
16+
image: danielga/steamrt-scout:latest
17+
options: -v /home
18+
timeoutInMinutes: 180
19+
steps:
20+
- checkout: self
21+
clean: true
22+
fetchDepth: 1
23+
submodules: recursive
24+
- bash: 'build/gcc_build.sh 11.4.0'
25+
displayName: Build
26+
- task: CopyFiles@2
27+
displayName: 'Copy files to $(Build.ArtifactStagingDirectory)'
28+
inputs:
29+
SourceFolder: '$(System.DefaultWorkingDirectory)'
30+
Contents: 'gcc-*.tar.xz'
31+
TargetFolder: '$(Build.ArtifactStagingDirectory)'
32+
CleanTargetFolder: true
33+
flattenFolders: true
34+
preserveTimestamp: true
35+
- publish: '$(Build.ArtifactStagingDirectory)'
36+
displayName: 'Publish build artifacts'
37+
artifact: gcc_build
38+
- job: publish
39+
displayName: Publish to GitHub Releases
40+
pool:
41+
name: Azure Pipelines
42+
vmImage: ubuntu-22.04
43+
timeoutInMinutes: 10
44+
dependsOn:
45+
- gcc_build
46+
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
47+
steps:
48+
- download: current
49+
patterns: 'gcc-*.tar.xz'
50+
- task: GitHubRelease@1
51+
displayName: 'Publish GitHub release $(build.sourceBranchName)'
52+
inputs:
53+
gitHubConnection: 'GitHub danielga'
54+
releaseNotesSource: inline
55+
assets: '$(Pipeline.Workspace)/gcc-*.tar.xz'
56+
addChangeLog: false

build/gcc_build.sh

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
#!/bin/bash
2+
3+
set -euxo pipefail
4+
5+
# Don't use with versions prior to GCC 9!
6+
version="${1:-11.4.0}"
7+
major_version=`echo "$version" | cut -d. -f1`
8+
9+
sudo apt-get -y install wget flex texinfo build-essential m4 bison
10+
11+
if [ ! -f "gcc-${version}.tar.xz" ]; then
12+
wget "http://ftp.gnu.org/gnu/gcc/gcc-${version}/gcc-${version}.tar.xz"
13+
fi
14+
15+
if [ ! -d "gcc-${version}" ]; then
16+
tar -xf "gcc-${version}.tar.xz"
17+
fi
18+
19+
pushd "gcc-${version}"
20+
21+
contrib/download_prerequisites
22+
23+
if [ "$major_version" -ge "11" ]; then
24+
# Patch dwarf_version to default to 4 instead of 5, since steam-runtime's ld doesn't support DWARF 5.
25+
# This build of GCC will still support -gdwarf-5, but that's up to the user.
26+
patch -u -p0 -N << EOF
27+
--- gcc/common.opt 2021-09-29 17:10:59.793270902 +0100
28+
+++ gcc/common.opt 2021-09-29 16:46:44.733263653 +0100
29+
@@ -3175,7 +3175,7 @@
30+
Generate debug information in default version of DWARF format.
31+
32+
gdwarf-
33+
-Common Driver Joined UInteger Var(dwarf_version) Init(5) Negative(gstabs)
34+
+Common Driver Joined UInteger Var(dwarf_version) Init(4) Negative(gstabs)
35+
Generate debug information in DWARF v2 (or later) format.
36+
37+
gdwarf32
38+
EOF
39+
fi
40+
41+
rm -rf build/
42+
mkdir build
43+
pushd build
44+
45+
export CC=gcc-9
46+
export CXX=g++-9
47+
export AR=gcc-ar-9
48+
export NM=gcc-nm-9
49+
export RANLIB=gcc-ranlib-9
50+
51+
core_count=`getconf _NPROCESSORS_ONLN`
52+
double_core_count="$(( core_count * 2 ))"
53+
54+
../configure -v --with-pkgversion="SteamRT ${version}-1+steamrt1.3+srt1" \
55+
--enable-languages=c,c++,fortran,lto,objc,obj-c++ \
56+
--prefix="/usr/lib/gcc-${major_version}" --with-gcc-major-version-only \
57+
--program-prefix= --program-suffix="-${major_version}" --enable-shared \
58+
--enable-linker-build-id --with-pic --enable-nls --enable-clocale=gnu \
59+
--enable-libstdcxx-debug --enable-libstdcxx-time=yes \
60+
--with-default-libstdcxx-abi=gcc4-compatible --disable-libstdcxx-dual-abi \
61+
--enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie \
62+
--with-system-zlib --enable-multiarch --disable-werror --with-arch-32=i686 \
63+
--with-abi=m64 --with-multilib-list=m32,m64 --enable-multilib --with-tune=generic \
64+
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu \
65+
--target=x86_64-linux-gnu
66+
make -j "$double_core_count"
67+
sudo make install-strip
68+
69+
popd
70+
71+
popd
72+
73+
sudo mkdir -p "/usr/lib/gcc-${major_version}/lib32/backup"
74+
sudo mv "/usr/lib/gcc-${major_version}/lib32/"*.so* "/usr/lib/gcc-${major_version}/lib32/backup"
75+
76+
sudo mkdir -p "/usr/lib/gcc-${major_version}/lib32/debug/backup"
77+
sudo mv "/usr/lib/gcc-${major_version}/lib32/debug/"*.so* "/usr/lib/gcc-${major_version}/lib32/debug/backup"
78+
79+
sudo mkdir -p "/usr/lib/gcc-${major_version}/lib64/backup"
80+
sudo mv "/usr/lib/gcc-${major_version}/lib64/"*.so* "/usr/lib/gcc-${major_version}/lib64/backup"
81+
82+
sudo mkdir -p "/usr/lib/gcc-${major_version}/lib64/debug/backup"
83+
sudo mv "/usr/lib/gcc-${major_version}/lib64/debug/"*.so* "/usr/lib/gcc-${major_version}/lib64/debug/backup"
84+
85+
tar -cvJf "gcc-${version}.tar.xz" "/usr/lib/gcc-${major_version}"

0 commit comments

Comments
 (0)