name: build on: [push, pull_request] jobs: build: strategy: matrix: os: [ubuntu-22.04, macos-11] compiler: [gcc, clang] crypto: [openssl, gnutls] bittorrent: [with-bt, without-bt] exclude: - os: macos-11 crypto: gnutls - crypto: openssl bittorrent: without-bt runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - name: Linux setup if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install \ g++-12 \ clang-15 \ autoconf \ automake \ autotools-dev \ autopoint \ libtool \ pkg-config \ libssl-dev \ libgnutls28-dev \ libc-ares-dev \ zlib1g-dev \ libsqlite3-dev \ libssh2-1-dev \ libcppunit-dev - name: MacOS setup if: runner.os == 'macOS' run: | brew install cppunit gettext openssl libssh2 c-ares sqlite3 \ autoconf automake pkg-config libtool - name: Setup clang (Linux) if: runner.os == 'Linux' && matrix.compiler == 'clang' run: | echo 'CC=clang-15' >> $GITHUB_ENV echo 'CXX=clang++-15' >> $GITHUB_ENV - name: Setup clang (MacOS) if: runner.os == 'macOS' && matrix.compiler == 'clang' run: | echo 'CC=clang' >> $GITHUB_ENV echo 'CXX=clang++' >> $GITHUB_ENV - name: Setup gcc (Linux) if: runner.os == 'Linux' && matrix.compiler == 'gcc' run: | echo 'CC=gcc-12' >> $GITHUB_ENV echo 'CXX=g++-12' >> $GITHUB_ENV - name: Setup gcc (MacOS) if: runner.os == 'macOS' && matrix.compiler == 'gcc' run: | echo 'CC=gcc' >> $GITHUB_ENV echo 'CXX=g++' >> $GITHUB_ENV - name: Libtool run: | autoreconf -i - name: Setup compiler flags run: | asanflags="-fsanitize=address,undefined -fno-sanitize-recover=undefined" CPPFLAGS="$asanflags -g3" LDFLAGS="$asanflags" echo 'CPPFLAGS='"$CPPFLAGS" >> $GITHUB_ENV echo 'LDFLAGS='"$LDFLAGS" >> $GITHUB_ENV - name: Disable BitTorrent if: matrix.bittorrent == 'without-bt' run: | FEATURE_FLAGS="$FEATURE_FLAGS --disable-bittorrent" echo 'FEATURE_FLAGS='"$FEATURE_FLAGS" >> $GITHUB_ENV - name: Configure autotools (Linux, gnutls) if: runner.os == 'Linux' && matrix.crypto == 'gnutls' run: | ./configure --with-gnutls --without-openssl $FEATURE_FLAGS - name: Configure autotools (Linux, openssl) if: runner.os == 'Linux' && matrix.crypto == 'openssl' run: | ./configure --without-gnutls --with-openssl $FEATURE_FLAGS - name: Configure autotools (macOS) if: runner.os == 'macOS' run: | ./configure \ --without-openssl --without-gnutls --with-appletls \ --disable-nls - name: Build aria2 run: | make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)" check