| name: Build |
| |
| on: |
| push: |
| branches: |
| - '**' |
| tags-ignore: |
| - '**' |
| pull_request: |
| workflow_dispatch: |
| |
| jobs: |
| linux: |
| runs-on: ubuntu-latest |
| steps: |
| - name: Set global environment variables |
| run: | |
| echo "BRANCH=${GITHUB_BASE_REF:-${GITHUB_REF#refs/heads/}}" >$GITHUB_ENV |
| - name: Check out code |
| uses: actions/checkout@v4 |
| - name: Set up build |
| run: | |
| mkdir -p $HOME/src/ljt.nightly |
| docker pull dcommander/buildljt:$BRANCH |
| git clone --depth=1 https://github.com/libjpeg-turbo/buildscripts.git -b $BRANCH $HOME/src/buildscripts |
| mkdir $HOME/rpmkeys |
| wget --no-check-certificate "http://www.libjpeg-turbo.org/key/LJTPR-GPG-KEY" -O $HOME/rpmkeys/LJTPR-GPG-KEY |
| - name: Configure GPG signing |
| if: ${{github.event_name != 'pull_request'}} |
| run: | |
| sudo apt install -y gnupg1 |
| printf "${{secrets.GPG_KEY}}" | base64 --decode | gpg1 --batch --import - |
| chmod 600 $HOME/.gnupg/gpg.conf |
| echo "GPG_KEY_NAME=\"${{secrets.GPG_KEY_NAME}}\"" >$HOME/src/buildscripts/gpgsign |
| echo "GPG_KEY_ID=${{secrets.GPG_KEY_ID}}" >>$HOME/src/buildscripts/gpgsign |
| echo "GPG_KEY_PASS=${{secrets.GPG_KEY_PASS}}" >>$HOME/src/buildscripts/gpgsign |
| - name: Build |
| run: | |
| docker run -v $HOME/src/ljt.nightly:/root/src/ljt.nightly -v $HOME/src/buildscripts:/root/src/buildscripts -v $GITHUB_WORKSPACE:/root/src/libjpeg-turbo -v $HOME/.gnupg:/root/.gnupg -v $HOME/rpmkeys:/rpmkeys -t dcommander/buildljt:$BRANCH bash -c "rpm --import /rpmkeys/LJTPR-GPG-KEY && ~/src/buildscripts/buildljt -d /root/src/libjpeg-turbo -v" |
| sudo chown -R runner:runner $HOME/src/ljt.nightly |
| mv $HOME/src/ljt.nightly/latest/log-${{github.job}}.txt $HOME/src/ljt.nightly/latest/files/ |
| macos: |
| runs-on: macos-13 |
| steps: |
| - name: Set global environment variables |
| run: | |
| echo "BRANCH=${GITHUB_BASE_REF:-${GITHUB_REF#refs/heads/}}" >$GITHUB_ENV |
| echo "JAVA_HOME=${JAVA_HOME_8_X64}" >>$GITHUB_ENV |
| - name: Check out code |
| uses: actions/checkout@v4 |
| - name: Set up build |
| run: | |
| brew install yasm md5sha1sum |
| sudo xcode-select -s /Applications/Xcode_14.2.app |
| mkdir -p $HOME/src/ljt.nightly |
| git clone --depth=1 https://github.com/libjpeg-turbo/buildscripts.git -b $BRANCH $HOME/src/buildscripts |
| - name: Configure GPG signing |
| if: ${{github.event_name != 'pull_request'}} |
| run: | |
| printf "${{secrets.GPG_KEY}}" | base64 --decode | gpg --batch --import - |
| echo "GPG_KEY_NAME=\"${{secrets.GPG_KEY_NAME}}\"" >$HOME/src/buildscripts/gpgsign |
| echo "GPG_KEY_ID=${{secrets.GPG_KEY_ID}}" >>$HOME/src/buildscripts/gpgsign |
| echo "GPG_KEY_PASS=${{secrets.GPG_KEY_PASS}}" >>$HOME/src/buildscripts/gpgsign |
| - name: Build |
| run: | |
| $HOME/src/buildscripts/buildljt -d $GITHUB_WORKSPACE -v |
| mv $HOME/src/ljt.nightly/latest/log-osx.txt $HOME/src/ljt.nightly/latest/files/ |
| linux-asan-ubsan: |
| runs-on: ubuntu-latest |
| steps: |
| - name: Check out code |
| uses: actions/checkout@v4 |
| - name: Set up build |
| run: | |
| sudo apt install -y nasm |
| - name: Build |
| env: |
| ASAN_OPTIONS: "detect_leaks=1 symbolize=1" |
| CTEST_OUTPUT_ON_FAILURE: 1 |
| run: | |
| mkdir build |
| pushd build |
| cmake -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER=clang -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O1 -g -fsanitize=address,undefined -fno-sanitize-recover=all -fno-omit-frame-pointer" -DENABLE_SHARED=0 .. |
| export NUMCPUS=`grep -c '^processor' /proc/cpuinfo` |
| make -j$NUMCPUS --load-average=$NUMCPUS |
| make test |
| JSIMD_FORCESSE2=1 make test |
| cmake -DFLOATTEST=no-fp-contract .. |
| JSIMD_FORCENONE=1 make test |
| popd |
| linux-12bit: |
| runs-on: ubuntu-latest |
| steps: |
| - name: Check out code |
| uses: actions/checkout@v4 |
| - name: Build |
| env: |
| CTEST_OUTPUT_ON_FAILURE: 1 |
| run: | |
| mkdir build |
| pushd build |
| cmake -G"Unix Makefiles" -DWITH_12BIT=1 \ |
| -DCMAKE_C_FLAGS='--std=gnu90 -Wall -Werror -Wextra -Wdouble-promotion -Wformat-overflow=2 -Wformat-security -Wformat-signedness -Wformat-truncation=2 -Wformat-y2k -Wmissing-include-dirs -Wshift-overflow=2 -Wswitch-bool -Wno-unused-parameter -Wuninitialized -Wstrict-overflow=2 -Wstringop-overflow=4 -Wstringop-truncation -Wduplicated-branches -Wduplicated-cond -Wdeclaration-after-statement -Wshadow -Wunsafe-loop-optimizations -Wundef -Wcast-align -Wno-clobbered -Wjump-misses-init -Wno-sign-compare -Wlogical-op -Waggregate-return -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wdisabled-optimization -Wno-overlength-strings' \ |
| -DCMAKE_C_FLAGS_RELEASE='-O3 -DNDEBUG -Wpedantic -pedantic-errors' \ |
| .. |
| export NUMCPUS=`grep -c '^processor' /proc/cpuinfo` |
| make -j$NUMCPUS --load-average=$NUMCPUS |
| make test |
| popd |
| linux-jpeg7: |
| runs-on: ubuntu-latest |
| steps: |
| - name: Check out code |
| uses: actions/checkout@v4 |
| - name: Set up build |
| run: | |
| sudo apt update |
| sudo apt -y --install-recommends install nasm |
| - name: Build |
| env: |
| CTEST_OUTPUT_ON_FAILURE: 1 |
| run: | |
| mkdir build |
| pushd build |
| cmake -G"Unix Makefiles" -DWITH_JPEG7=1 \ |
| -DCMAKE_C_FLAGS='--std=gnu90 -Wall -Werror -Wextra -Wdouble-promotion -Wformat-overflow=2 -Wformat-security -Wformat-signedness -Wformat-truncation=2 -Wformat-y2k -Wmissing-include-dirs -Wshift-overflow=2 -Wswitch-bool -Wno-unused-parameter -Wuninitialized -Wstrict-overflow=2 -Wstringop-overflow=4 -Wstringop-truncation -Wduplicated-branches -Wduplicated-cond -Wdeclaration-after-statement -Wshadow -Wunsafe-loop-optimizations -Wundef -Wcast-align -Wno-clobbered -Wjump-misses-init -Wno-sign-compare -Wlogical-op -Waggregate-return -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wdisabled-optimization -Wno-overlength-strings' \ |
| -DCMAKE_C_FLAGS_RELEASE='-O3 -DNDEBUG -Wpedantic -pedantic-errors' \ |
| .. |
| export NUMCPUS=`grep -c '^processor' /proc/cpuinfo` |
| make -j$NUMCPUS --load-average=$NUMCPUS |
| make test |
| JSIMD_FORCESSE2=1 make test |
| cmake -DFLOATTEST=no-fp-contract .. |
| JSIMD_FORCENONE=1 make test |
| popd |
| linux-jpeg8: |
| runs-on: ubuntu-latest |
| steps: |
| - name: Check out code |
| uses: actions/checkout@v4 |
| - name: Set up build |
| run: | |
| sudo apt -y install nasm |
| - name: Build |
| env: |
| CTEST_OUTPUT_ON_FAILURE: 1 |
| run: | |
| mkdir build |
| pushd build |
| cmake -G"Unix Makefiles" -DWITH_JPEG8=1 \ |
| -DCMAKE_C_FLAGS='--std=gnu90 -Wall -Werror -Wextra -Wdouble-promotion -Wformat-overflow=2 -Wformat-security -Wformat-signedness -Wformat-truncation=2 -Wformat-y2k -Wmissing-include-dirs -Wshift-overflow=2 -Wswitch-bool -Wno-unused-parameter -Wuninitialized -Wstrict-overflow=2 -Wstringop-overflow=4 -Wstringop-truncation -Wduplicated-branches -Wduplicated-cond -Wdeclaration-after-statement -Wshadow -Wunsafe-loop-optimizations -Wundef -Wcast-align -Wno-clobbered -Wjump-misses-init -Wno-sign-compare -Wlogical-op -Waggregate-return -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wdisabled-optimization -Wno-overlength-strings' \ |
| -DCMAKE_C_FLAGS_RELEASE='-O3 -DNDEBUG -Wpedantic -pedantic-errors' \ |
| .. |
| export NUMCPUS=`grep -c '^processor' /proc/cpuinfo` |
| make -j$NUMCPUS --load-average=$NUMCPUS |
| make test |
| JSIMD_FORCESSE2=1 make test |
| cmake -DFLOATTEST=no-fp-contract .. |
| JSIMD_FORCENONE=1 make test |
| popd |
| linux-msan: |
| runs-on: ubuntu-latest |
| steps: |
| - name: Check out code |
| uses: actions/checkout@v4 |
| - name: Build |
| env: |
| CTEST_OUTPUT_ON_FAILURE: 1 |
| run: | |
| mkdir build |
| pushd build |
| cmake -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER=clang -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g -fsanitize=memory -fsanitize-memory-param-retval -fno-sanitize-recover=all -fPIE" -DWITH_SIMD=0 .. |
| export NUMCPUS=`grep -c '^processor' /proc/cpuinfo` |
| make -j$NUMCPUS --load-average=$NUMCPUS |
| make test |
| popd |