aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/libloading.yml
blob: e7e84aca5f49fd293a9a1a23fbc5103ecb9bd135 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
name: Test libloading

on:
  push:
    paths-ignore:
    - '*.mkd'
    - 'LICENSE'
  pull_request:
    types: [opened, reopened, synchronize]

jobs:
  native-test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        rust_toolchain: [nightly, stable, 1.40.0]
        os: [ubuntu-latest, windows-latest, macOS-latest]
    timeout-minutes: 20
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust ${{ matrix.rust_toolchain }}
        uses: actions-rs/toolchain@v1
        with:
            toolchain: ${{ matrix.rust_toolchain }}
            profile: minimal
            components: clippy
            default: true
      - name: Clippy
        uses: actions-rs/cargo@v1
        with:
          command: clippy
      - name: Test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: -- --nocapture
      - name: Test Release
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --release -- --nocapture
      - name: Documentation
        uses: actions-rs/cargo@v1
        with:
          command: rustdoc
          args: |
            -Zunstable-options
            --config
            'build.rustdogflags=["--cfg", "libloading_docs", "-D", "rustdoc::broken_intra_doc_links"]'
        if: ${{ matrix.rust_toolchain == 'nightly' }}

  windows-gnu-test:
    runs-on: windows-latest
    strategy:
      fail-fast: false
      matrix:
        rust_toolchain: [nightly, stable]
        rust_target:
          - x86_64-pc-windows-gnu
          - i686-pc-windows-gnu
    steps:
      - uses: actions/checkout@v2
      - name: Add MSYS2 to the PATH
        run: echo "c:/msys64/bin" | Out-File -FilePath $env:GITHUB_PATH -Append
      - name: Add 32-bit mingw-w64 to the PATH
        run: echo "c:/msys64/mingw32/bin" | Out-File -FilePath $env:GITHUB_PATH -Append
        if: startsWith(matrix.rust_target, 'i686')
      - name: Add 64-bit mingw-w64 to the PATH
        run: echo "c:/msys64/mingw64/bin" | Out-File -FilePath $env:GITHUB_PATH -Append
        if: startsWith(matrix.rust_target, 'x86_64')
      - name: Set TARGET variable
        run: echo "TARGET=${{ matrix.rust_target}}" | Out-File -FilePath $env:GITHUB_ENV -Append
      - name: Install Rust nightly
        uses: actions-rs/toolchain@v1
        with:
            toolchain: ${{ matrix.rust_toolchain }}
            target: ${{ matrix.rust_target }}
            profile: minimal
            default: true
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --target ${{ matrix.rust_target }} --manifest-path=Cargo.toml
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: --target ${{ matrix.rust_target }} --manifest-path=Cargo.toml

  bare-cross-build:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        rust_target:
          # BSDs: could be tested with full system emulation
          # - x86_64-unknown-dragonfly
          # - x86_64-unknown-freebsd
          - x86_64-unknown-haiku
          # - x86_64-unknown-netbsd
          - x86_64-unknown-openbsd
          - x86_64-unknown-redox
          - x86_64-fuchsia
          - wasm32-unknown-unknown
    timeout-minutes: 20
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust nightly
        uses: actions-rs/toolchain@v1
        with:
            toolchain: nightly
            profile: minimal
            default: true
      - name: Fix-up toolchain
        run: |
            rustup component add rust-src --toolchain nightly --target ${{ matrix.rust_target }}
      - name: Update
        uses: actions-rs/cargo@v1
        with:
          command: update
          args: --manifest-path=Cargo.toml
      - name: Build ${{ matrix.rust_target }}
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --target ${{ matrix.rust_target }} --manifest-path=Cargo.toml -Zbuild-std

  cross-ios-build:
    runs-on: macos-latest
    strategy:
      fail-fast: false
      matrix:
        rust_toolchain: [nightly, stable]
        rust_target:
          - aarch64-apple-ios
          - x86_64-apple-ios
    timeout-minutes: 20
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust ${{ matrix.rust_toolchain }}
        uses: actions-rs/toolchain@v1
        with:
            toolchain: ${{ matrix.rust_toolchain }}
            target: ${{ matrix.rust_target }}
            profile: minimal
            default: true
      - name: Update
        uses: actions-rs/cargo@v1
        with:
          command: update
          args: --manifest-path=Cargo.toml
      - name: Build ${{ matrix.rust_target }}
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --target=${{ matrix.rust_target }} --manifest-path=Cargo.toml