65097208df
Returning large aggregates as values is a potential performance problem, but preventing all aggregate returns is inappropriate because: 1. returning small aggregates that are mostly handled as complete objects as return values often makes code clearer. 2. Modern (well not so modern actually) ABIs allow for small aggregates to be returned in registers, so forcing all returns to memory is actually likely to be slower. 3. if code review does not notice a large aggregate return and nobody notices a performance issue then it doesn't matter
39 lines
1.4 KiB
YAML
39 lines
1.4 KiB
YAML
# we use both C and C++, so advertize C++
|
|
language: cpp
|
|
dist: trusty
|
|
compiler:
|
|
- gcc
|
|
env:
|
|
- GTK3=no
|
|
- GTK3=yes
|
|
- GTK3=no MINGW=yes
|
|
- GTK3=yes MINGW=yes
|
|
before_install:
|
|
- sudo apt-get update -qq
|
|
install:
|
|
- sudo apt-get install -y intltool libtool
|
|
- test -n "$MINGW" || sudo apt-get install -y libgtk2.0-dev libgtk-3-dev
|
|
- test -z "$MINGW" || sudo apt-get install -y mingw-w64-tools g++-mingw-w64-i686 gcc-mingw-w64-i686 binutils-mingw-w64-i686
|
|
# fix broken pkg-config-crosswrapper, see https://bugs.launchpad.net/ubuntu/+source/mingw-w64/+bug/1327242
|
|
- test -z "$MINGW" || sudo sed -e 's/PKG_CONFIG_PATH=/&$PKG_CONFIG_PATH:/' -i /usr/bin/i686-w64-mingw32-pkg-config
|
|
- sudo apt-get install -y python-docutils rst2pdf
|
|
# try not to install doxygen-latex because we don't need it and it's huge
|
|
- sudo apt-get install -y --no-install-recommends doxygen
|
|
- sudo apt-get install -y python-lxml
|
|
before_script:
|
|
- export CFLAGS="-g -O2 -Werror=pointer-arith -Werror=implicit-function-declaration"
|
|
script:
|
|
- NOCONFIGURE=1 ./autogen.sh
|
|
- >
|
|
if [ -n "$MINGW" ]; then
|
|
arg=-2; [ "$GTK3" = yes ] && arg=-3;
|
|
unset CC CXX;
|
|
sh ./scripts/cross-build-mingw.sh $arg;
|
|
else
|
|
mkdir _build &&
|
|
cd _build &&
|
|
{ ../configure --enable-gtk3=$GTK3 || { cat config.log; exit 1; } ; } &&
|
|
make -j2 &&
|
|
make -j2 check;
|
|
fi
|