platform:
- x86
- x64

environment:
  global:
    MAKEJOBS: 2

  matrix:
  - SWIGLANG: csharp
    VSVER: 12
  - SWIGLANG: csharp
    VSVER: 14
  - SWIGLANG: java
    VSVER: 14
  - SWIGLANG: python
    VSVER: 14
    VER: 27
# - SWIGLANG: python
#   VSVER: 14
#   VER: 36
#   PY3: 3
  - SWIGLANG: python
    OSVARIANT: cygwin
  - SWIGLANG: python
    OSVARIANT: mingw
    VER: 27
  - SWIGLANG: python
    OSVARIANT: mingw
    WITHLANG: python
    VER: 37
    PY3: 3

matrix:
  allow_failures:
  # Currently failing due to not detecting header files/include paths
  - SWIGLANG: python
    OSVARIANT: cygwin

install:
- date /T & time /T
- ps: >-
    if ($env:Platform -eq "x86") {
      $env:PCRE_PLATFORM="Win32"
      $env:JAVA_HOME="C:/Program Files (x86)/Java/jdk1.8.0"
      $env:VCVARS_PLATFORM="x86"
      $env:LANG_PLATFORM=""
      $env:CYGWINBIN="C:\cygwin\bin"
      $env:CYGWINSETUP="C:/cygwin/setup-x86.exe"
      $env:MSYSBIN="C:\msys64\usr\bin"
      $env:MINGWBIN="C:\msys64\mingw32\bin"
      $env:MBITS="32"
      $env:MARCH="i686"
    } else {
      $env:PCRE_PLATFORM="x64"
      $env:JAVA_HOME="C:/Program Files/Java/jdk1.8.0"
      $env:VCVARS_PLATFORM="amd64"
      $env:LANG_PLATFORM="-x64"
      $env:CYGWINBIN="C:\cygwin64\bin"
      $env:CYGWINSETUP="C:/cygwin64/setup-x86_64.exe"
      $env:MSYSBIN="C:\msys64\usr\bin"
      $env:MINGWBIN="C:\msys64\mingw64\bin"
      $env:MBITS="64"
      $env:MARCH="x86_64"
    }
- ps: >-
    if (!$env:OSVARIANT) {
      $env:PATH="$env:CYGWINBIN;$env:PATH"
      $env:CYGWIN="nodosfilewarning"
      $env:VSCOMNTOOLS=(Get-Content ("env:VS" + "$env:VSVER" + "0COMNTOOLS"))
      $env:CC="cccl"
      $env:CXX="cccl"
    } elseif ($env:OSVARIANT -eq "cygwin") {
      $env:PATH="$env:CYGWINBIN;$env:PATH"
      $env:CYGWIN="nodosfilewarning"
      $env:CC="gcc"
      $env:CXX="g++"
    } elseif ($env:OSVARIANT -eq "mingw") {
      # Note mingw setup tests the native Windows Python distribution (not MinGW Python) with gcc
      $env:PATH="$env:MINGWBIN;$env:MSYSBIN;$env:PATH"
      $env:MSYSTEM="MINGW$env:MBITS" # This is important for msys2
      $env:CC="gcc"
      $env:CXX="g++"
      if ($env:MBITS -eq "64" -and $env:SWIGLANG -eq "python") {
        $env:CHECK_OPTIONS2="CFLAGS+=-DMS_WIN64 CXXFLAGS+=-DMS_WIN64"
      }
    }
- if "%OSVARIANT%"=="" bash -c "cd /usr/bin && curl --retry 15 -s -L https://github.com/swig/cccl/archive/cccl-1.0.tar.gz | tar -xz --strip 1 cccl-cccl-1.0/cccl"
- if "%OSVARIANT%"=="" echo Using Visual Studio %VSVER%.0 at %VSCOMNTOOLS%
- if "%OSVARIANT%"=="" call "%VSCOMNTOOLS%\..\..\VC\vcvarsall.bat" %VCVARS_PLATFORM%
- if "%OSVARIANT%"=="" Tools\nuget-install.cmd pcre -Verbosity quiet -Version 8.33.0.1 -OutputDirectory C:\pcre
- if "%OSVARIANT%"=="" set PCRE_ROOT=C:/pcre/pcre.8.33.0.1/build/native
- if not "%OSVARIANT%"=="cygwin" set PATH=C:\Python%VER%%LANG_PLATFORM%;%PATH%
- if "%OSVARIANT%"=="" bash -c "which cl.exe"
- if "%OSVARIANT%"=="" bash -c "cl.exe /? 2>&1 | head -n 1"
- if "%OSVARIANT%"=="" bash -c "which csc.exe"
- if "%OSVARIANT%"=="" bash -c "csc.exe /? | head -n 1"
- if "%OSVARIANT%"=="cygwin" %CYGWINSETUP% --quiet-mode --packages python2-devel,libpcre-devel,libboost-devel > cygwin-install.txt || bash -c "cat cygwin-install.txt"
- if "%OSVARIANT%"=="mingw" bash -c "pacman --noconfirm --sync mingw%MBITS%/mingw-w64-%MARCH%-pcre mingw%MBITS%/mingw-w64-%MARCH%-boost"
- if not "%WITHLANG%"=="" set SWIGWITHLANG==%WITHLANG%
- if not "%WITHLANG%"=="" where %WITHLANG%
- bash -c "which $CC"
- bash -c "which $CXX"
- bash -c "$CC --version | head -n 1"
- bash -c "$CXX --version | head -n 1"
- bash -c "which python"
- bash -c "python -V"
- bash -c "make --version | head -n 2"
- pwd
- echo MAKEJOBS=%MAKEJOBS%
- uname -a

build_script:
- set CCCL_OPTIONS=--cccl-muffle /W3 /EHsc
- set CHECK_OPTIONS=CSHARPOPTIONS=-platform:%Platform%
  # Open dummy file descriptor to fix error on cygwin: ./configure: line 560: 0: Bad file descriptor
- if "%OSVARIANT%"=="" bash -c "exec 0</dev/null && ./autogen.sh && time ./configure --disable-dependency-tracking --disable-ccache CC=$CC CXX=$CXX CFLAGS='-O2' CXXFLAGS='-O2' LDFLAGS='--cccl-link /LTCG' PCRE_CFLAGS='-I%PCRE_ROOT%/include -DPCRE_STATIC' PCRE_LIBS='-L%PCRE_ROOT%/lib/v110/%PCRE_PLATFORM%/Release/static/utf8 -lpcre8' --without-perl5 --without-go --with-boost=C:/Libraries/boost_1_67_0 || cat config.log"
- if not "%OSVARIANT%"=="" bash -c "exec 0</dev/null && ./autogen.sh && time ./configure CC=%CC% CXX=%CXX% --without-alllang --with-$SWIGLANG$PY3$SWIGWITHLANG --enable-cpp11-testing || cat config.log"
- bash -c "time make -s -j%MAKEJOBS%"

test_script:
- set CCCL_OPTIONS=--cccl-muffle /W3 /EHsc
- .\swig.exe -version
- if not "%OSVARIANT%"=="" CCache\ccache-swig -V
- bash -c "file ./swig.exe"
- bash -c "make check-%SWIGLANG%-version"
- bash -c "make check-%SWIGLANG%-enabled"
- bash -c "time make -k check-%SWIGLANG%-examples %CHECK_OPTIONS% %CHECK_OPTIONS2%"
- bash -c "time make -k check-%SWIGLANG%-test-suite -j%MAKEJOBS% %CHECK_OPTIONS% %CHECK_OPTIONS2%"

# Do not build on tags (GitHub only)
skip_tags: true

#on_finish: # Display RDP connection information
#  - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
