summaryrefslogtreecommitdiff
path: root/.github/workflows/macos.yml
blob: 3dc86b2c7cabef6a27d6fb0f252f3576cc738872 (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
name: CI

on:
  # Trigger the workflow on push or pull requests, but only for the
  # master branch
  push:
    branches:
    - master
    - '*/ci'
  pull_request:
    branches:
    - master

jobs:
  autotools:
    name: macos ${{ matrix.build.name }}
    runs-on: 'macos-latest'
    strategy:
      fail-fast: false
      matrix:
        build:
        - name: normal
          install: nghttp2
          configure: --without-ssl
          macosx-version-min: 10.9
        - name: debug
          install: nghttp2
          configure: --enable-debug --without-ssl
          macosx-version-min: 10.9
        - name: libssh2
          install: nghttp2 libssh2
          configure: --enable-debug --with-libssh2 --without-ssl
          macosx-version-min: 10.9
        - name: c-ares
          install: nghttp2
          configure: --enable-debug --enable-ares --without-ssl
          macosx-version-min: 10.9
        - name: HTTP only
          install: nghttp2
          configure: --enable-debug --enable-maintainer-mode --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --disable-smb --disable-smtp --disable-telnet --disable-tftp --disable-unix-sockets --disable-shared --without-brotli --without-gssapi --without-libidn2 --without-libmetalink --without-libpsl --without-librtmp --without-libssh2 --without-nghttp2 --without-ntlm-auth --without-ssl --without-zlib
          macosx-version-min: 10.15
        - name: SecureTransport metalink
          install: nghttp2 libmetalink
          configure: --enable-debug --with-secure-transport --with-libmetalink
          macosx-version-min: 10.8
        - name: OpenSSL metalink
          install: nghttp2 openssl libmetalink
          configure: --enable-debug --with-openssl=/usr/local/opt/openssl --with-libmetalink
          macosx-version-min: 10.9
        - name: LibreSSL metalink
          install: nghttp2 libressl libmetalink
          configure: --enable-debug --with-openssl=/usr/local/opt/libressl --with-libmetalink
          macosx-version-min: 10.9
        - name: torture
          install: nghttp2 openssl
          configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl=/usr/local/opt/openssl
          tflags: -n -t --shallow=25 !FTP
          macosx-version-min: 10.9
        - name: torture-ftp
          install: nghttp2 openssl
          configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl=/usr/local/opt/openssl
          tflags: -n -t --shallow=20 FTP
          macosx-version-min: 10.9
        - name: macOS 10.15
          install: nghttp2 libmetalink libssh2 openssl
          configure: --enable-debug --disable-ldap --with-openssl=/usr/local/opt/openssl
          macosx-version-min: 10.15
    steps:
    - run: echo libtool autoconf automake pkg-config ${{ matrix.build.install }} | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
      name: 'brew bundle'

    - run: brew update && brew bundle install --no-lock --file /tmp/Brewfile
      name: 'brew install'

    - uses: actions/checkout@v2

    - run: ./buildconf && ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }}
      name: 'configure'
      env:
        # -Wvla is caused by brotli
        CFLAGS: "-Wno-vla -mmacosx-version-min=${{ matrix.build.macosx-version-min }}"

    - run: make
      name: 'make'

    - run: make test-nonflaky
      name: 'test'
      env:
        TFLAGS: "${{ matrix.build.tflags }} ~1452"

  cmake:
    name: macos cmake ${{ matrix.compiler.CC }} ${{ matrix.build.name }}
    runs-on: 'macos-latest'
    env: ${{ matrix.compiler }}
    strategy:
      fail-fast: false
      matrix:
        compiler:
        - CC: clang
          CXX: clang++
          CFLAGS: "-mmacosx-version-min=10.15 -Wno-deprecated-declarations"
        - CC: gcc-8
          CXX: g++-8
          CFLAGS: "-mmacosx-version-min=10.15 -Wno-error=undef -Wno-error=conversion"
        - CC: gcc-9
          CXX: g++-9
          CFLAGS: "-mmacosx-version-min=10.15 -Wno-error=undef -Wno-error=conversion"
        build:
        - name: OpenSSL
          install: nghttp2 openssl
          generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
        - name: LibreSSL
          install: nghttp2 libressl
          generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/libressl -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
        - name: libssh2
          install: nghttp2 openssl libssh2
          generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCMAKE_USE_LIBSSH2=ON
    steps:
    - run: echo libtool autoconf automake pkg-config ${{ matrix.build.install }} | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
      name: 'brew bundle'

    - run: brew update && brew bundle install --no-lock --file /tmp/Brewfile
      name: 'brew install'

    - uses: actions/checkout@v2

    - run: cmake -H. -Bbuild -DCURL_WERROR=ON -DPICKY_COMPILER=ON ${{ matrix.build.generate }}
      name: 'cmake generate'

    - run: cmake --build build
      name: 'cmake build'