ci.yml (5442B)
1 name: CI 2 3 on: 4 push: 5 branches: [master, stable, next] 6 pull_request: 7 branches: [master, stable, next] 8 9 workflow_dispatch: 10 11 jobs: 12 tcc: 13 runs-on: ubuntu-latest 14 steps: 15 - uses: actions/checkout@v4 16 17 - name: Update packages list 18 run: sudo apt-get update 19 20 - name: Install dependencies 21 run: | 22 sudo apt-get install -y build-essential libtool autoconf automake tcc 23 24 - name: Autogen 25 run: ./autogen.sh -s 26 27 - name: Compilation with tcc 28 run: | 29 env CC=tcc CFLAGS='-w' CPPFLAGS="-DDEV_MODE=1" ./configure --prefix=/tmp --disable-dependency-tracking --disable-shared || cat config.log 30 make -j $(nproc) && make check && make install 31 env CC=tcc CPPFLAGS='-I/tmp/include' LDFLAGS='-L/tmp/lib' LD_LIBRARY_PATH='/tmp/lib' ./test/constcheck.sh 32 make uninstall 33 make distclean 34 35 zig: 36 runs-on: ubuntu-latest 37 steps: 38 - uses: actions/checkout@v4 39 40 - name: Update packages list 41 run: sudo apt-get update 42 43 - name: Install Zig 44 uses: mlugg/setup-zig@v2 45 with: 46 version: 0.14.0 47 48 - name: Autogen 49 run: ./autogen.sh -s 50 51 - name: Compilation with zig 52 run: | 53 zig build 54 zig build -Dtarget=x86_64-linux 55 zig build -Dtarget=aarch64-linux 56 zig build -Dtarget=x86-windows 57 zig build -Dtarget=x86_64-windows 58 zig build -Dtarget=aarch64-windows 59 zig build -Dtarget=x86_64-macos 60 zig build -Dtarget=aarch64-macos 61 zig build -Dtarget=wasm32-wasi 62 zig build -Doptimize=ReleaseFast 63 rm -fr zig-cache zig-out 64 65 regular: 66 runs-on: ubuntu-latest 67 steps: 68 - uses: actions/checkout@v4 69 70 - name: Update packages list 71 run: sudo apt-get update 72 73 - name: Install dependencies 74 run: sudo apt-get install -y build-essential libtool autoconf automake 75 76 - name: Autogen 77 run: ./autogen.sh -s 78 79 - name: C99 compat check 80 run: | 81 env CPPFLAGS="-DDEV_MODE=1" ./configure --disable-dependency-tracking 82 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 83 make distcheck 84 make distclean > /dev/null 85 86 - name: Regular compilation 87 run: | 88 env CPPFLAGS="-DDEV_MODE=1" ./configure --disable-dependency-tracking --enable-minimal 89 make -j $(nproc) 90 make check 91 ( echo '#include <sodium.h>' ; 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 92 make distclean > /dev/null 93 94 check-globals: 95 runs-on: ubuntu-latest 96 steps: 97 - uses: actions/checkout@v4 98 99 - name: Update packages list 100 run: sudo apt-get update 101 102 - name: Install dependencies 103 run: sudo apt-get install -y build-essential libtool autoconf automake 104 105 - name: Autogen 106 run: ./autogen.sh -s 107 108 - name: Check globals 109 run: | 110 if [ -x test/rename-globals.sh ]; then test/rename-globals.sh; fi 111 112 other-comp: 113 runs-on: ubuntu-latest 114 steps: 115 - uses: actions/checkout@v4 116 117 - name: Update packages list 118 run: sudo apt-get update 119 120 - name: Install dependencies 121 run: sudo apt-get install -y build-essential libtool autoconf automake clang 122 123 - name: Autogen 124 run: ./autogen.sh -s 125 126 - name: Compilation with g++ 127 run: | 128 env CC=g++ CPPFLAGS="-DDEV_MODE=1" ./configure --disable-dependency-tracking 129 make -j $(nproc) check 130 make clean > /dev/null 131 132 - name: Compilation with clang 133 run: | 134 env CC=clang CPPFLAGS="-DDEV_MODE=1" ./configure --disable-dependency-tracking 135 make -j $(nproc) check 136 make clean > /dev/null 137 138 other-arch: 139 runs-on: ubuntu-latest 140 steps: 141 - uses: actions/checkout@v4 142 143 - name: Update packages list 144 run: sudo apt-get update 145 146 - name: Install dependencies 147 run: sudo apt-get install -y build-essential libtool autoconf automake gcc-powerpc-linux-gnu 148 149 - name: Autogen 150 run: ./autogen.sh -s 151 152 - name: Big-Endian PowerPC compilation 153 run: | 154 env CPPFLAGS="-DDEV_MODE=1" ./configure --disable-dependency-tracking --host=powerpc-linux-gnu 155 make -j $(nproc) 156 make clean > /dev/null 157 158 android: 159 runs-on: ubuntu-latest 160 steps: 161 - uses: actions/checkout@v4 162 163 - name: Update packages list 164 run: sudo apt-get update 165 166 - name: Install base dependencies 167 run: sudo apt-get install -y libtool autoconf automake unzip 168 169 - name: Autogen 170 run: ./autogen.sh -s 171 172 - name: Install Android NDK 173 run: | 174 mkdir /tmp/android && cd /tmp/android 175 curl -o ndk.zip -L https://dl.google.com/android/repository/android-ndk-r27c-linux.zip 176 unzip ndk.zip && rm -f *.zip && mv android-ndk* ndk 177 178 - name: Android compilation 179 run: | 180 env ANDROID_NDK_HOME=/tmp/android/ndk ./dist-build/android-aar.sh