mirror of
https://github.com/sockspls/badfish
synced 2025-05-01 09:13:08 +00:00

Changes to deal with compilation (particularly profile-build) on macOS. (1) The default toolchain has gcc masquerading as clang, the previous Makefile was not picking up the required changes to the different profiling tools. (2) The previous Makefile test for gccisclang occurred before a potential overwrite of CXX by COMPCXX (3) llvm-profdata no longer runs as a command on macOS and instead is invoked by ``xcrun llvm-profdata`` (4) Needs to support use of true gcc using e.g. ``make build ... COMPCXX=g++-10`` (5) enable profile-build in travis for macOS closes https://github.com/official-stockfish/Stockfish/pull/3043 No functional change
100 lines
3.9 KiB
YAML
100 lines
3.9 KiB
YAML
language: cpp
|
|
dist: bionic
|
|
|
|
matrix:
|
|
include:
|
|
- os: linux
|
|
compiler: gcc
|
|
addons:
|
|
apt:
|
|
packages: ['g++-8', 'g++-8-multilib', 'g++-multilib', 'valgrind', 'expect', 'curl']
|
|
env:
|
|
- COMPILER=g++-8
|
|
- COMP=gcc
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
packages: ['clang-10', 'llvm-10-dev', 'g++-multilib', 'valgrind', 'expect', 'curl']
|
|
env:
|
|
- COMPILER=clang++-10
|
|
- COMP=clang
|
|
|
|
- os: osx
|
|
osx_image: xcode12
|
|
compiler: gcc
|
|
env:
|
|
- COMPILER=g++
|
|
- COMP=gcc
|
|
|
|
- os: osx
|
|
osx_image: xcode12
|
|
compiler: clang
|
|
env:
|
|
- COMPILER=clang++
|
|
- COMP=clang
|
|
|
|
branches:
|
|
only:
|
|
- master
|
|
|
|
before_script:
|
|
- cd src
|
|
|
|
script:
|
|
# Download net
|
|
- make net
|
|
|
|
# Obtain bench reference from git log
|
|
- git log HEAD | grep "\b[Bb]ench[ :]\+[0-9]\{7\}" | head -n 1 | sed "s/[^0-9]*\([0-9]*\).*/\1/g" > git_sig
|
|
- export benchref=$(cat git_sig)
|
|
- echo "Reference bench:" $benchref
|
|
|
|
# Compiler version string
|
|
- $COMPILER -v
|
|
|
|
# test help target
|
|
- make help
|
|
|
|
# Verify bench number against various builds
|
|
- export CXXFLAGS="-Werror -D_GLIBCXX_DEBUG"
|
|
- make clean && make -j2 ARCH=x86-64-modern optimize=no debug=yes build && ../tests/signature.sh $benchref
|
|
- export CXXFLAGS="-Werror"
|
|
- make clean && make -j2 ARCH=x86-64-modern build && ../tests/signature.sh $benchref
|
|
- make clean && make -j2 ARCH=x86-64-ssse3 build && ../tests/signature.sh $benchref
|
|
- make clean && make -j2 ARCH=x86-64-sse3-popcnt build && ../tests/signature.sh $benchref
|
|
- make clean && make -j2 ARCH=x86-64 build && ../tests/signature.sh $benchref
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=general-64 build && ../tests/signature.sh $benchref; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=x86-32 optimize=no debug=yes build && ../tests/signature.sh $benchref; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=x86-32-sse41-popcnt build && ../tests/signature.sh $benchref; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=x86-32-sse2 build && ../tests/signature.sh $benchref; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=x86-32 build && ../tests/signature.sh $benchref; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=general-32 build && ../tests/signature.sh $benchref; fi
|
|
# workaround: exclude a custom version of llvm+clang, which doesn't find llvm-profdata on ubuntu
|
|
- if [[ "$TRAVIS_OS_NAME" != "linux" || "$COMP" == "gcc" ]]; then make clean && make -j2 ARCH=x86-64-modern profile-build && ../tests/signature.sh $benchref; fi
|
|
|
|
# compile only for some more advanced architectures (might not run in travis)
|
|
- make clean && make -j2 ARCH=x86-64-avx2 build
|
|
- make clean && make -j2 ARCH=x86-64-bmi2 build
|
|
# needs gcc 10 to compile
|
|
- if [[ "$COMPILER" != "g++-8" ]]; then make clean && make -j2 ARCH=x86-64-avx512 build; fi
|
|
|
|
#
|
|
# Check perft and reproducible search
|
|
- make clean && make -j2 ARCH=x86-64-modern build
|
|
- ../tests/perft.sh
|
|
- ../tests/reprosearch.sh
|
|
|
|
#
|
|
# Valgrind
|
|
#
|
|
- export CXXFLAGS="-O1 -fno-inline"
|
|
- if [ -x "$(command -v valgrind )" ]; then make clean && make -j2 ARCH=x86-64-modern debug=yes optimize=no build > /dev/null && ../tests/instrumented.sh --valgrind; fi
|
|
- if [ -x "$(command -v valgrind )" ]; then ../tests/instrumented.sh --valgrind-thread; fi
|
|
|
|
#
|
|
# Sanitizer
|
|
#
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=x86-64-modern sanitize=undefined optimize=no debug=yes build > /dev/null && ../tests/instrumented.sh --sanitizer-undefined; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=x86-64-modern sanitize=thread optimize=no debug=yes build > /dev/null && ../tests/instrumented.sh --sanitizer-thread; fi
|