@@ -34,39 +34,49 @@ jobs:
34
34
include :
35
35
- target : aarch64-unknown-linux-gnu
36
36
os : ubuntu-latest
37
- # # I GIVE UP! For this target, OpenSSL needs to be cross compiled
38
- # # which is driven by openssl-sys crate's custom build script...
39
- # # Linux users with aarch64 (aka ARM64) using musl C lib can go fish (or build from source).
40
- # - target: aarch64-unknown-linux-musl
41
- # os: ubuntu-latest
37
+ - target : aarch64-unknown-linux-musl
38
+ os : ubuntu-latest
42
39
- target : x86_64-unknown-linux-gnu
43
40
os : ubuntu-latest
44
41
- target : x86_64-unknown-linux-musl
45
42
os : ubuntu-latest
43
+ - target : arm-unknown-linux-gnueabi
44
+ os : ubuntu-latest
45
+ - target : arm-unknown-linux-gnueabihf
46
+ os : ubuntu-latest
47
+ - target : armv7-unknown-linux-gnueabihf
48
+ os : ubuntu-latest
49
+ - target : loongarch64-unknown-linux-gnu
50
+ os : ubuntu-latest
51
+ - target : powerpc-unknown-linux-gnu
52
+ os : ubuntu-latest
53
+ - target : powerpc64-unknown-linux-gnu
54
+ os : ubuntu-latest
55
+ - target : powerpc64le-unknown-linux-gnu
56
+ os : ubuntu-latest
57
+ - target : riscv64gc-unknown-linux-gnu
58
+ os : ubuntu-latest
59
+ - target : s390x-unknown-linux-gnu
60
+ os : ubuntu-latest
61
+ - target : x86_64-unknown-freebsd
62
+ os : ubuntu-latest
63
+ - target : x86_64-unknown-illumos
64
+ os : ubuntu-latest
46
65
- target : aarch64-apple-darwin
47
66
os : macos-latest
48
67
- target : x86_64-apple-darwin
49
68
os : macos-latest
50
69
- target : x86_64-pc-windows-msvc
51
70
os : windows-latest
71
+ - target : aarch64-pc-windows-msvc
72
+ os : windows-latest
52
73
runs-on : ${{ matrix.os }}
53
74
permissions :
54
75
contents : write
55
76
steps :
56
77
- name : Install native OpenSSL on Linux
57
78
if : runner.os == 'Linux' && !(startsWith(matrix.target, 'aarch64') || endsWith(matrix.target, 'musl'))
58
79
run : sudo apt-get install -y pkg-config libssl-dev
59
- - name : Install GCC for aarch64 (for cross-compiling openssl)
60
- if : runner.os == 'Linux' && startsWith(matrix.target, 'aarch64')
61
- run : |
62
- sudo apt-get update
63
- sudo apt-get install gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu
64
- if [[ "${{matrix.target}}" == *musl ]]; then
65
- sudo apt-get install musl-dev musl-tools
66
- fi
67
- - name : Install musl-gcc (for compiling OpenSSL)
68
- if : matrix.target == 'x86_64-unknown-linux-musl'
69
- run : sudo apt-get install musl-tools
70
80
71
81
- name : Calculate openssl-vendored
72
82
shell : bash
@@ -98,20 +108,20 @@ jobs:
98
108
with :
99
109
target : ${{ matrix.target }}
100
110
101
- # problems with cross-compiling linux with musl
102
- - run : echo "RUSTFLAGS=-D warnings -C target-feature=+crt-static -C link-self-contained=yes" >> "${GITHUB_ENV}"
103
- if : contains(matrix.target, '-linux-musl')
104
- - run : |
105
- echo "CC=aarch64-linux-gnu-gcc" >> "$GITHUB_ENV"
106
- echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-gnu-gcc" >> "$GITHUB_ENV"
107
- if: matrix.target == 'aarch64-unknown-linux-musl'
111
+ - name : Install cross (cargo cross compiler)
112
+ if : matrix.os == 'ubuntu-latest' && (endsWith(matrix.target, 'musl') || startsWith(matrix.target, 'aarch64'))
113
+ uses : taiki-e/install-action@v2
114
+ with :
115
+ tool : cross
108
116
109
- - name : Build
110
- env :
111
- # problems with cross-compiling aarch64 linux with gnu
112
- CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER : /usr/bin/aarch64-linux-gnu-gcc
117
+ - name : Build (native)
118
+ if : ${{!(matrix.os == 'ubuntu-latest' && (endsWith(matrix.target, 'musl') || startsWith(matrix.target, 'aarch64')))}}
113
119
run : cargo build --manifest-path cpp-linter-lib/Cargo.toml --release --bin cpp-linter --target ${{ matrix.target }} ${{ steps.is-openssl-vendored.outputs.enabled }}
114
120
121
+ - name : Build (cross)
122
+ if : matrix.os == 'ubuntu-latest' && (endsWith(matrix.target, 'musl') || startsWith(matrix.target, 'aarch64'))
123
+ run : cross build --manifest-path cpp-linter-lib/Cargo.toml --release --bin cpp-linter --target ${{ matrix.target }} ${{ steps.is-openssl-vendored.outputs.enabled }}
124
+
115
125
- name : Prepare artifacts
116
126
run : mv target/${{ matrix.target }}/release/cpp-linter${{ runner.os == 'Windows' && '.exe' || '' }} ./cpp-linter-${{ matrix.target }}${{ runner.os == 'Windows' && '.exe' || '' }}
117
127
- name : Upload artifacts
0 commit comments