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

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 python-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 "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'))
