This reverts commit 7ec39330d2
because
enabling verbose ASAN output results in too much output for Travis to
handle (and, to be fair, for it to be useful).
180 lines
5.9 KiB
Bash
Executable File
180 lines
5.9 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# This script is used by Travis CI to configure, build and test wxWidgets
|
|
|
|
set -e
|
|
|
|
wxPROC_COUNT=`getconf _NPROCESSORS_ONLN`
|
|
((wxPROC_COUNT++))
|
|
wxBUILD_ARGS="-j$wxPROC_COUNT"
|
|
|
|
# Setting this variable suppresses "Error retrieving accessibility bus address"
|
|
# messages from WebKit tests that we're not interested in.
|
|
export NO_AT_BRIDGE=1
|
|
|
|
case $wxTOOLSET in
|
|
cmake)
|
|
if [ -z $wxCMAKE_TESTS ]; then wxCMAKE_TESTS=CONSOLE_ONLY; fi
|
|
if [ -z $wxCMAKE_SAMPLES ]; then wxCMAKE_SAMPLES=SOME; fi
|
|
if [ "$wxCMAKE_GENERATOR" == "Xcode" ]; then
|
|
wxBUILD_ARGS="-jobs $wxPROC_COUNT -quiet"
|
|
fi
|
|
cmake --version
|
|
|
|
if [ "$wxUSE_ASAN" = 1 ]; then
|
|
echo "ASAN currently isn't supported in CMake builds"
|
|
exit 1
|
|
fi
|
|
|
|
echo 'travis_fold:start:configure'
|
|
echo 'Configuring...'
|
|
mkdir build_cmake
|
|
pushd build_cmake
|
|
cmake -G "$wxCMAKE_GENERATOR" $wxCMAKE_DEFINES -D wxBUILD_SAMPLES=$wxCMAKE_SAMPLES -D wxBUILD_TESTS=$wxCMAKE_TESTS ..
|
|
echo 'travis_fold:end:configure'
|
|
|
|
if [ "$wxCMAKE_GENERATOR" != "Xcode" ]; then
|
|
echo 'travis_fold:start:building'
|
|
echo 'Building...'
|
|
cmake --build . -- $wxBUILD_ARGS
|
|
echo 'travis_fold:end:building'
|
|
fi
|
|
|
|
echo 'travis_fold:start:install'
|
|
if [ "$wxCMAKE_GENERATOR" == "Xcode" ]; then echo -n 'Building and '; fi
|
|
echo 'Installing...'
|
|
sudo env "PATH=$PATH" cmake --build . --target install -- $wxBUILD_ARGS
|
|
popd
|
|
echo 'travis_fold:end:install'
|
|
|
|
if [ "$wxCMAKE_TESTS" != "OFF" ]; then
|
|
echo 'travis_fold:start:testing'
|
|
echo 'Testing...'
|
|
ctest -V -C Debug -R "test_base" --output-on-failure --interactive-debug-mode 0 .
|
|
echo 'travis_fold:end:testing'
|
|
fi
|
|
|
|
echo 'travis_fold:start:testinstall'
|
|
echo 'Testing installation...'
|
|
mkdir build_cmake_install_test
|
|
pushd build_cmake_install_test
|
|
cmake -G "$wxCMAKE_GENERATOR" $wxCMAKE_DEFINES ../samples/minimal
|
|
cmake --build . -- $wxBUILD_ARGS
|
|
popd
|
|
echo 'travis_fold:end:testinstall'
|
|
;;
|
|
*)
|
|
echo 'travis_fold:start:configure'
|
|
echo 'Configuring...'
|
|
|
|
wxCONFIGURE_OPTIONS="--disable-optimise $wxCONFIGURE_FLAGS"
|
|
if [ -n "$wxGTK_VERSION" ]; then
|
|
wxCONFIGURE_OPTIONS="--with-gtk=$wxGTK_VERSION $wxCONFIGURE_OPTIONS"
|
|
fi
|
|
|
|
if [ "$wxUSE_ASAN" = 1 ]; then
|
|
export LSAN_OPTIONS=suppressions=$(pwd)/misc/suppressions/lsan
|
|
|
|
wxASAN_CFLAGS="-fsanitize=address -fno-omit-frame-pointer"
|
|
wxASAN_CXXFLAGS=$wxASAN_CFLAGS
|
|
wxASAN_LDFLAGS="-fsanitize=address"
|
|
|
|
./configure $wxCONFIGURE_OPTIONS --enable-debug "CFLAGS=$wxASAN_CFLAGS" "CXXFLAGS=$wxASAN_CXXFLAGS" "LDFLAGS=$wxASAN_LDFLAGS" || rc=$?
|
|
else
|
|
./configure $wxCONFIGURE_OPTIONS --disable-debug_info || rc=$?
|
|
fi
|
|
|
|
if [ -n "$rc" ]; then
|
|
echo '*** Configuring failed, contents of config.log follows: ***'
|
|
echo '-----------------------------------------------------------'
|
|
cat config.log
|
|
echo '-----------------------------------------------------------'
|
|
exit $rc
|
|
fi
|
|
echo 'travis_fold:end:configure'
|
|
|
|
if [ "$wxALLOW_WARNINGS" != 1 ]; then
|
|
case "$TRAVIS_COMPILER" in
|
|
clang)
|
|
allow_warn_opt="-Wno-error=#warnings"
|
|
;;
|
|
|
|
gcc)
|
|
allow_warn_opt="-Wno-error=cpp"
|
|
;;
|
|
|
|
*)
|
|
echo "*** Unknown compiler: $TRAVIS_COMPILER ***"
|
|
;;
|
|
esac
|
|
|
|
error_opts="-Werror $allow_warn_opt"
|
|
wxMAKEFILE_CXXFLAGS="$wxMAKEFILE_CXXFLAGS $error_opts"
|
|
wxMAKEFILE_ERROR_CXXFLAGS=("CXXFLAGS=$error_opts")
|
|
else
|
|
wxMAKEFILE_ERROR_CXXFLAGS=()
|
|
fi
|
|
|
|
wxMAKEFILE_FLAGS=()
|
|
if [ -n "$wxMAKEFILE_CXXFLAGS" ]; then
|
|
wxMAKEFILE_FLAGS+=("CXXFLAGS=$wxMAKEFILE_CXXFLAGS")
|
|
fi
|
|
if [ -n "$wxMAKEFILE_LDFLAGS" ]; then
|
|
wxMAKEFILE_FLAGS+=("LDFLAGS=$wxMAKEFILE_LDFLAGS")
|
|
fi
|
|
|
|
echo 'travis_fold:start:building'
|
|
echo 'Building...'
|
|
make -k $wxBUILD_ARGS "${wxMAKEFILE_ERROR_CXXFLAGS[@]}"
|
|
echo 'travis_fold:end:building'
|
|
|
|
echo 'travis_fold:start:tests'
|
|
echo 'Building tests...'
|
|
[ "$wxSKIP_GUI" = 1 ] || make -C tests $wxBUILD_ARGS failtest
|
|
make -k -C tests $wxBUILD_ARGS "${wxMAKEFILE_FLAGS[@]}"
|
|
echo 'travis_fold:end:tests'
|
|
|
|
if [ "$wxSKIP_TESTING" = 1 ]; then
|
|
echo 'Skipping running tests'
|
|
exit 0
|
|
fi
|
|
|
|
echo 'travis_fold:start:testing'
|
|
echo 'Testing...'
|
|
pushd tests
|
|
./test
|
|
popd
|
|
echo 'travis_fold:end:testing'
|
|
|
|
if [ "$wxSKIP_GUI" = 1 ]; then
|
|
echo 'Skipping the rest of tests for non-GUI build.'
|
|
exit 0
|
|
fi
|
|
|
|
if [ "$wxUSE_XVFB" = 1 ]; then
|
|
echo 'travis_fold:start:testing_gui'
|
|
echo 'Testing GUI using Xvfb...'
|
|
pushd tests
|
|
xvfb-run -a -s '-screen 0 1600x1200x24' ./test_gui
|
|
popd
|
|
echo 'travis_fold:end:testing_gui'
|
|
fi
|
|
|
|
echo 'travis_fold:start:samples'
|
|
echo 'Building samples...'
|
|
(test "$wxSKIP_SAMPLES" && echo 'SKIPPED') || make -k "${wxMAKEFILE_FLAGS[@]}" samples
|
|
echo 'travis_fold:end:samples'
|
|
|
|
echo 'travis_fold:start:install'
|
|
echo 'Installing...'
|
|
sudo make install
|
|
echo 'travis_fold:end:install'
|
|
|
|
echo 'travis_fold:start:testinstall'
|
|
echo 'Testing installation...'
|
|
make -C samples/minimal -f makefile.unx clean
|
|
make -C samples/minimal -f makefile.unx "${wxMAKEFILE_FLAGS[@]}"
|
|
echo 'travis_fold:end:testinstall'
|
|
;;
|
|
esac
|