Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
991ad23
Initial steps to switch to LLVM
grendello Oct 25, 2021
2e19d1d
[WIP] Linux deps attempt #2
grendello Oct 25, 2021
f90f639
[WIP] YAML syntax
grendello Oct 25, 2021
6ba2fdc
[WIP] ugh, don't be an idiot
grendello Oct 25, 2021
df68908
[WIP] Checkout submodules
grendello Oct 25, 2021
5c72d4e
[WIP] recursive submodule checkout
grendello Oct 25, 2021
ac0825e
[WIP] RTFM my friend
grendello Oct 25, 2021
367b26b
[WIP] Install ccache, move macOS build a step forward
grendello Oct 25, 2021
0722ee9
[WIP] Add a packaging script
grendello Oct 25, 2021
7222f93
[WIP] A checkout would be nice
grendello Oct 25, 2021
8dc75ab
[WIP] Forgo testing of the upx-packed binaries, upx crashes on macOS
grendello Oct 25, 2021
df164db
[WIP] Don't use upx, it crashes on CI
grendello Oct 25, 2021
2a2fac6
[WIP] rename artifact package and include version
grendello Oct 25, 2021
a44fca3
[WIP] Oops
grendello Oct 26, 2021
2dc10b5
[WIP] upx on mac and linux separately, apple silicon support
grendello Oct 26, 2021
c8db443
[WIP] Try building on macos-11, for apple silicon
grendello Oct 26, 2021
e1157a9
[WIP] Fix macOS packaging
grendello Oct 26, 2021
cfffc43
[WIP] UPX is broken on apple silicon
grendello Oct 26, 2021
ec60e56
[WIP] Don't use upx on macOS, too unreliable :(
grendello Oct 27, 2021
ca501bd
[WIP] Package UPX-compressed binaries for Linux
grendello Oct 27, 2021
6c9b02f
[WIP] Let's try Windows
grendello Nov 2, 2021
f1c4441
[WIP] Don't build lld, let's see if it works this time
grendello Nov 3, 2021
4160e0a
[WIP] Fix packaging steps
grendello Nov 3, 2021
b99b6f5
[WIP] Use gold from binutils and llvm-{mc,objcopy} from LLVM
grendello Nov 4, 2021
75a9322
[WIP] Indentation... really...?
grendello Nov 4, 2021
3022547
[WIP] Fix some macOS issues
grendello Nov 4, 2021
7c1e159
[WIP] Missing dependency on Linux
grendello Nov 4, 2021
27167cf
[WIP] Fix packaging and add getopt_long impl from OpenBSD
grendello Nov 4, 2021
c86628e
[WIP] Beginnings of the `gas` compat driver
grendello Nov 4, 2021
e290d33
[WIP] Progress towards running llvm-mc
grendello Jan 19, 2022
037a5ba
[WIP] Works on *nix
grendello Jan 20, 2022
243192a
[WIP] Windows binaries work
grendello Jan 21, 2022
771ba1b
[WIP] Cleanup, refactoring, ld multiple .o into one
grendello Jan 24, 2022
e5b7261
[WIP] exceptions, windows app name hack, scope guard
grendello Jan 25, 2022
f28c66b
[WIP] Build adjustments, llvm submodule bump
grendello Jan 27, 2022
f1cd94e
[WIP] Build XA Utilities on CI
grendello Jan 27, 2022
48af365
[WIP] Dependencies, fool
grendello Jan 27, 2022
3704688
[WIP] More deps
grendello Jan 27, 2022
6b15f2c
[WIP] ugh
grendello Jan 27, 2022
0c061d8
[WIP] Use a newer compiler version
grendello Jan 27, 2022
c4cf3f1
[WIP] CI mingw is too old for concepts, check for them before using
grendello Jan 27, 2022
4d6f25d
[WIP] Work around the ancient mingw on CI
grendello Jan 27, 2022
c4adc07
[WIP] fix mac build
grendello Jan 27, 2022
8e6d152
[WIP] Fix packaging
grendello Jan 27, 2022
ed8df63
[WIP] don't follow symlinks when packaging
grendello Jan 27, 2022
46f53f8
[WIP] Packaging changes
grendello Jan 28, 2022
4d16eb3
[WIP] Not here, there
grendello Jan 28, 2022
9da46b4
[WIP] Last touches before beta
grendello Jan 28, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
267 changes: 226 additions & 41 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: CI
env:
BINUTILS_VERSION: 2.35.2
BUILD_DIR: xa-build

on:
push:
Expand All @@ -11,99 +11,284 @@ on:
workflow_dispatch:

jobs:
build_linux:
runs-on: ubuntu-18.04
build_llvm_linux:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive

- name: Install LLVM build dependencies
run: >-
sudo apt-get update;
sudo apt-get -f -u install cmake ninja-build chrpath texinfo sharutils libffi-dev
lsb-release patchutils diffstat xz-utils python3-dev libedit-dev libncurses5-dev swig
python3-six python3-sphinx binutils-dev libxml2-dev libjsoncpp-dev pkg-config lcov
procps help2man zlib1g-dev g++-multilib libjs-mathjax python3-recommonmark libpfm4-dev
python3-setuptools libz3-dev ccache

- name: build Linux LLVM
run: ./build-llvm.sh

- name: package LLVM config and build logs
if: ${{ always() }}
run: find ${BUILD_DIR} -name 'config.*' -o -name '*.log' -o -name 'CMakeCache.txt' | zip -9 build-logs-linux-llvm.zip -@

- name: upload LLVM config and build logs
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: build-logs
path: build-logs-linux-llvm.zip

- name: package LLVM artifacts
run: tar cjf artifacts-linux-llvm.tar.bz2 artifacts

- name: upload Linux LLVM artifacts
uses: actions/upload-artifact@v2
with:
name: linux
path: artifacts-linux-llvm.tar.bz2

build_binutils_linux:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive

- name: Install Binutils build dependencies
run: >-
sudo apt-get update;
sudo apt-get -f -u install mingw-w64 autoconf gettext texinfo dwz xz-utils zlib1g-dev libz-mingw-w64-dev

- name: build Linux and Windows Binutils
run: ./build-binutils.sh

- name: package Binutils config and build logs
if: ${{ always() }}
run: find ${BUILD_DIR} -name 'config.*' | zip -9 build-logs-linux-binutils.zip -@

- name: upload Binutils config and build logs
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: build-logs
path: build-logs-linux-binutils.zip

- name: package Binutils artifacts
run: tar cjf artifacts-linux-binutils.tar.bz2 artifacts

- name: upload Linux and Windows Binutils artifacts
uses: actions/upload-artifact@v2
with:
name: linux
path: artifacts-linux-binutils.tar.bz2

build_xautils_linux:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive

- name: Install Xamarin.Android Utilities build dependencies
run: >-
sudo apt-get update;
sudo apt-get -f -u install mingw-w64 cmake ninja-build xz-utils zlib1g-dev libz-mingw-w64-dev

- name: build Linux and Windows Xamarin.Android Utilities
run: CC=gcc-10 CXX=g++-10 ./build-xa-utils.sh

- name: package Xamarin.Android Utilities config and build logs
if: ${{ always() }}
run: find ${BUILD_DIR} -name 'CMakeCache.txt' -o -name 'CMake*.log' | zip -9 build-logs-linux-xa-utils.zip -@

- name: upload Xamarin.Android Utilities config and build logs
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: build-logs
path: build-logs-linux-xa-utils.zip

- name: package Xamarin.Android Utilities artifacts
run: tar cjf artifacts-linux-xa-utils.tar.bz2 artifacts

- name: upload Linux and Windows Xamarin.Android Utilities artifacts
uses: actions/upload-artifact@v2
with:
name: linux
path: artifacts-linux-xa-utils.tar.bz2

build_llvm_macos:
runs-on: macos-11
steps:
- uses: actions/checkout@v2
with:
submodules: recursive

- name: Install build dependencies
- name: Install LLVM build dependencies
run: |
sudo apt-get update
sudo apt-get -f -u install mingw-w64 autoconf gettext texinfo dwz xz-utils zlib1g-dev
brew update
brew install cmake ninja ccache

- name: build Linux and Windows
run: ./build.sh ${BINUTILS_VERSION}
- name: build macOS LLVM
run: bash ./build-llvm.sh

- name: package config and build logs
- name: package LLVM config and build logs
if: ${{ always() }}
run: find build -name 'config.*' | zip -9 linux-build-logs.zip -@
run: find ${BUILD_DIR} -name 'config.*' -o -name '*.log' -o -name 'CMakeCache.txt' | zip -9 build-logs-macos-llvm.zip -@

- name: upload config and build logs
- name: upload LLVM config and build logs
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: build-logs
path: linux-build-logs.zip
path: build-logs-macos-llvm.zip

- name: package artifacts
run: tar cjf linux-artifacts.tar.bz2 artifacts
- name: package LLVM artifacts
run: tar cjf artifacts-macos-llvm.tar.bz2 artifacts

- name: upload Linux and Windows artifacts
- name: upload macOS LLVM artifacts
uses: actions/upload-artifact@v2
with:
name: linux-windows
path: linux-artifacts.tar.bz2
name: macOS
path: artifacts-macos-llvm.tar.bz2

build_macos:
runs-on: macos-10.15
build_binutils_macos:
runs-on: macos-11
steps:
- uses: actions/checkout@v2
with:
submodules: recursive

- name: Install build dependencies
- name: Install Binutils build dependencies
run: |
brew update
brew install make autoconf gettext xz

- name: build macOS
run: bash -x ./build.sh ${BINUTILS_VERSION}
- name: build macOS Binutils
run: bash ./build-binutils.sh

- name: package Binutils config and build logs
if: ${{ always() }}
run: find ${BUILD_DIR} -name 'config.*' | zip -9 build-logs-macos-binutils.zip -@

- name: upload Binutils config and build logs
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: build-logs
path: build-logs-macos-binutils.zip

- name: package Binutils artifacts
run: tar cjf artifacts-macos-binutils.tar.bz2 artifacts

- name: upload macOS Binutils artifacts
uses: actions/upload-artifact@v2
with:
name: macOS
path: artifacts-macos-binutils.tar.bz2

build_xautils_macos:
runs-on: macos-11
steps:
- uses: actions/checkout@v2
with:
submodules: recursive

- name: Install Xamarin.Android Utilities build dependencies
run: |
brew update
brew install make cmake xz ninja

- name: build macOS Xamarin.Android Utilities
run: bash ./build-xa-utils.sh

- name: package config and build logs
- name: package Xamarin.Android Utilities config and build logs
if: ${{ always() }}
run: find build -name 'config.*' | zip -9 macos-build-logs.zip -@
run: find ${BUILD_DIR} -name 'CMakeCache.txt' -o -name 'CMake*.log' | zip -9 build-logs-macos-xa-utils.zip -@

- name: upload config and build logs
- name: upload Xamarin.Android Utilities config and build logs
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: build-logs
path: macos-build-logs.zip
path: build-logs-macos-xa-utils.zip

- name: package artifacts
run: tar cjf macos-artifacts.tar.bz2 artifacts
- name: package Xamarin.Android Utilities artifacts
run: tar cjf artifacts-macos-xa-utils.tar.bz2 artifacts

- name: upload macOS artifacts
- name: upload macOS Xamarin.Android Utilities artifacts
uses: actions/upload-artifact@v2
with:
name: macOS
path: macos-artifacts.tar.bz2
path: artifacts-macos-xa-utils.tar.bz2

build_llvm_windows:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
with:
submodules: recursive

- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.1

- name: build Windows LLVM
run: ./build-llvm.cmd

- name: package LLVM artifacts
run: 7z a artifacts-windows-llvm.7z artifacts

- name: upload Windows LLVM artifacts
uses: actions/upload-artifact@v2
with:
name: Windows
path: artifacts-windows-llvm.7z

package_binaries:
runs-on: ubuntu-18.04
needs: [build_linux, build_macos]
runs-on: ubuntu-20.04
needs: [build_llvm_linux, build_binutils_linux, build_xautils_linux, build_llvm_macos, build_binutils_macos, build_xautils_macos, build_llvm_windows]
steps:
- name: Download Linux and Windows artifacts
- uses: actions/checkout@v2

- name: Download Linux artifacts
uses: actions/download-artifact@v2
with:
name: linux-windows
name: linux

- name: Download macOS artifacts
uses: actions/download-artifact@v2
with:
name: macOS

- name: Unpack Linux and Windows artifacts
- name: Download Windows artifacts
uses: actions/download-artifact@v2
with:
name: Windows

- name: Unpack Linux artifacts
run: |
tar xf linux-artifacts.tar.bz2
tar xf artifacts-linux-llvm.tar.bz2
tar xf artifacts-linux-binutils.tar.bz2
tar xf artifacts-linux-xa-utils.tar.bz2

- name: Unpack macOS artifacts
run: |
tar xf macos-artifacts.tar.bz2
tar xf artifacts-macos-llvm.tar.bz2
tar xf artifacts-macos-binutils.tar.bz2
tar xf artifacts-macos-xa-utils.tar.bz2

- name: Unpack Windows artifacts
run: |
7z x artifacts-windows-llvm.7z

- name: Pack Linux, macOS and Windows artifacts
run: tar cjf xamarin-android-binutils.tar.bz2 artifacts
- name: Package Linux, macOS and Windows artifacts
run: ./package.sh

- name: upload Xamarin.Android Binutils
- name: upload Xamarin.Android Toolchain
uses: actions/upload-artifact@v2
with:
name: Xamarin.Android
path: xamarin-android-binutils.tar.bz2
path: artifacts/xamarin-android-toolchain.tar.bz2
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,12 @@
*.app

# Other
/build
/xa-build
/artifacts
/prep
/*.7z
/*.zip
/*.tar.bz2
.ccls-cache
.projectile
compile_commands.json
5 changes: 5 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[submodule "external/llvm"]
path = external/llvm
url = https://github.com/llvm/llvm-project.git
shallow = true
branch = release/13.x
Loading