#!/bin/bash # # This script is used by Travis CI to configure, build and test wxWidgets set -e . ./build/tools/httpbin.sh 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 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 echo 'travis_fold:end:install' if [ "$wxCMAKE_TESTS" != "OFF" ]; then echo 'travis_fold:start:httpbin' httpbin_launch echo 'travis_fold:end:httpbin' echo 'travis_fold:start:testing' echo 'Testing...' ctest -V -C Debug -E "test_drawing" --output-on-failure --interactive-debug-mode 0 . || rc=$? echo 'travis_fold:end:testing' if [ -n "$rc" ]; then httpbin_show_log exit $rc fi fi echo 'travis_fold:start:testinstall' echo 'Testing installation...' popd 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 ./configure $wxCONFIGURE_OPTIONS --disable-debug_info || rc=$? 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 # Under macOS TRAVIS_COMPILER is set to g++, but it's actually an # alias for clang. case "$(uname -s)" in Darwin) real_compiler=clang ;; *) # Elsewhere either gcc or clang can be used. real_compiler="$TRAVIS_COMPILER" ;; esac case "$real_compiler" in clang) allow_warn_opt="-Wno-error=#warnings" ;; gcc | g++) allow_warn_opt="-Wno-error=cpp" ;; *) echo "*** Unknown compiler: $real_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:httpbin' httpbin_launch echo 'travis_fold:end:httpbin' echo 'travis_fold:start:testing' echo 'Testing...' pushd tests ./test || rc=$? popd echo 'travis_fold:end:testing' if [ -n "$rc" ]; then httpbin_show_log exit $rc fi 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