language: c

include: &toolchain_linux_amd64
  os: linux
  dist: trusty
  addons:
    apt:
      update: true
      packages:
        - libgtk-3-dev

include: &toolchain_linux_386
  os: linux
  dist: trusty
  addons:
    apt:
      packages:
        - gcc-multilib
        - g++-multilib
        - libgtk-3-dev:i386
        # the rest fixes broken dependencies of libgtk:i386
        - libgirepository-1.0-1:i386
        - libglib2.0-dev:i386
        - gir1.2-glib-2.0:i386
        - gir1.2-atk-1.0:i386
        - libatk1.0-dev:i386
        - libfreetype6-dev:i386
        - libfontconfig1-dev:i386
        - libcairo2-dev:i386
        - libgdk-pixbuf2.0-dev:i386
        - libpango1.0-dev:i386
        - libxft-dev:i386
        - libpng12-dev:i386

include: &toolchain_osx_amd64
  os: osx
  osx_image: xcode8

# Travis CI build matrix.
# Each entry below will trigger an extra, parallel build on Travis.
matrix:
  include:
    - env: linking=shared arch=amd64
      <<: *toolchain_linux_amd64
    - env: linking=static arch=amd64
      <<: *toolchain_linux_amd64
    - env: linking=shared arch=386
      <<: *toolchain_linux_386
    - env: linking=static arch=386
      <<: *toolchain_linux_386
    - env: linking=shared arch=amd64
      <<: *toolchain_osx_amd64
    - env: linking=static arch=amd64
      <<: *toolchain_osx_amd64

install:
  - if [[ "${arch}" == "386" ]]; then
      export CFLAGS=-m32;
      export CXXFLAGS=-m32;
      export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig;
    fi
  - if [[ "${linking}" == "static" ]]; then
      export CMAKE_FLAGS=-DBUILD_SHARED_LIBS=OFF;
    fi

script:
  - cmake --version
  - mkdir build
  - pushd build
  - cmake -G "Unix Makefiles" ${CMAKE_FLAGS} ..
  - make tester examples
  - popd

after_success:
  - ls -lR build/out
  - file build/out/test
  - export platform="$TRAVIS_OS_NAME"
  - if [[ "$TRAVIS_OS_NAME" == "osx"   ]]; then cp ui.h ui_darwin.h build/out/; export platform=darwin; fi
  - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then cp ui.h ui_unix.h   build/out/; fi
  - if [[ "x${TRAVIS_TAG}" != "x" ]]; then export version=${TRAVIS_TAG}; else export version=${TRAVIS_BRANCH}; fi
  - export artifact=${version}-${platform}-${arch}-${linking}
  - echo ${artifact}
  - pushd build/out
  - # TODO do not include symlinks in the archive
  - tar -czvf libui-${artifact}.tgz libui.* *.h
  - tar -czvf examples-${artifact}.tgz `find . -type f ! -name "*.*"`
  - popd

deploy:
  provider: releases
  #api_key:
    #secure: TODO
  file: build/out/*.tgz
  file_glob: true
  skip_cleanup: true
  on:
    tags: true