name: CI on: push: branches: [master, stable, next] pull_request: branches: [master, stable, next] workflow_dispatch: jobs: tcc: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Update packages list run: sudo apt-get update - name: Install dependencies run: | sudo apt-get install -y build-essential libtool autoconf automake tcc - name: Autogen run: ./autogen.sh -s - name: Compilation with tcc run: | env CC=tcc CFLAGS='-w' CPPFLAGS="-DDEV_MODE=1" ./configure --prefix=/tmp --disable-dependency-tracking --disable-shared || cat config.log make -j $(nproc) && make check && make install env CC=tcc CPPFLAGS='-I/tmp/include' LDFLAGS='-L/tmp/lib' LD_LIBRARY_PATH='/tmp/lib' ./test/constcheck.sh make uninstall make distclean zig: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Update packages list run: sudo apt-get update - name: Install dependencies run: | curl -sL -o - https://ziglang.org/download/0.11.0/zig-linux-x86_64-0.11.0.tar.xz | tar xJ -f - -C /opt/ sudo mv /opt/zig-* /opt/zig - name: Autogen run: ./autogen.sh -s - name: Compilation with zig run: | export PATH=/opt/zig:$PATH zig build zig build -Dtarget=x86_64-linux zig build -Dtarget=aarch64-linux zig build -Dtarget=x86_64-windows zig build -Dtarget=aarch64-windows zig build -Dtarget=x86_64-macos zig build -Dtarget=aarch64-macos zig build -Dtarget=wasm32-wasi zig build -Doptimize=ReleaseFast rm -fr zig-cache zig-out regular: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Update packages list run: sudo apt-get update - name: Install dependencies run: sudo apt-get install -y build-essential libtool autoconf automake - name: Autogen run: ./autogen.sh -s - name: C99 compat check run: | env CPPFLAGS="-DDEV_MODE=1" ./configure --disable-dependency-tracking make -j $(nproc) CFLAGS='-g0' > /dev/null && cp src/libsodium/.libs/libsodium.so lib.so && make clean > /dev/null && make CFLAGS='-g0' CPPFLAGS='-DDEV_MODE=1 -DSODIUM_C99\(X\)=' > /dev/null && cp src/libsodium/.libs/libsodium.so lib-oldc.so && cmp lib.so lib-oldc.so && echo No binary changes && make clean > /dev/null make distcheck make distclean > /dev/null - name: Regular compilation run: | env CPPFLAGS="-DDEV_MODE=1" ./configure --disable-dependency-tracking --enable-minimal make -j $(nproc) make check ( echo '#include ' ; echo 'int main(void) { return sodium_init(); }' ) > /tmp/main.c && gcc -DDEV_MODE=1 -Isrc/libsodium/include -Isrc/libsodium/include/sodium $(find src -name '*.c' -o -name '*.S') /tmp/main.c make distclean > /dev/null check-globals: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Update packages list run: sudo apt-get update - name: Install dependencies run: sudo apt-get install -y build-essential libtool autoconf automake - name: Autogen run: ./autogen.sh -s - name: Check globals run: | if [ -x test/rename-globals.sh ]; then test/rename-globals.sh; fi other-comp: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Update packages list run: sudo apt-get update - name: Install dependencies run: sudo apt-get install -y build-essential libtool autoconf automake clang - name: Autogen run: ./autogen.sh -s - name: Compilation with g++ run: | env CC=g++ CPPFLAGS="-DDEV_MODE=1" ./configure --disable-dependency-tracking make -j $(nproc) check make clean > /dev/null - name: Compilation with clang run: | env CC=clang CPPFLAGS="-DDEV_MODE=1" ./configure --disable-dependency-tracking make -j $(nproc) check make clean > /dev/null other-arch: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Update packages list run: sudo apt-get update - name: Install dependencies run: sudo apt-get install -y build-essential libtool autoconf automake gcc-powerpc-linux-gnu - name: Autogen run: ./autogen.sh -s - name: Big-Endian PowerPC compilation run: | env CPPFLAGS="-DDEV_MODE=1" ./configure --disable-dependency-tracking --host=powerpc-linux-gnu make -j $(nproc) make clean > /dev/null android: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Update packages list run: sudo apt-get update - name: Install base dependencies run: sudo apt-get install -y libtool autoconf automake unzip - name: Autogen run: ./autogen.sh -s - name: Install Android NDK run: | mkdir /tmp/android && cd /tmp/android curl -o ndk.zip -L https://dl.google.com/android/repository/android-ndk-r25b-linux.zip unzip ndk.zip && rm -f *.zip && mv android-ndk* ndk - name: Android compilation run: | env ANDROID_NDK_HOME=/tmp/android/ndk ./dist-build/android-x86.sh env ANDROID_NDK_HOME=/tmp/android/ndk ./dist-build/android-armv8-a.sh