Skip to content

Commit

Permalink
Use build matrix
Browse files Browse the repository at this point in the history
Enable following configurations:
1. VC12 with msbuild, iconv disabled
2. VC12 with nmake, 64 bits, iconv enabled
3. VC12 with nmake, 32 bits, iconv enabled
4. MinGW without autotools, iconv disabled
5. MSYS2 (MinGW-w64), iconv enabled
6. Cygwin, iconv enabled

Note:
 AppVeyor currently doesn't support MSYS2 natively. We need to setup
 MSYS2 manually.
See:
 http://help.appveyor.com/discussions/suggestions/615-support-for-msys2
 harfbuzz/harfbuzz#112
  • Loading branch information
k-takata committed Aug 8, 2015
1 parent 6147601 commit 3a44180
Show file tree
Hide file tree
Showing 2 changed files with 183 additions and 26 deletions.
48 changes: 22 additions & 26 deletions appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,25 @@
version: 1.0.{build}

environment:
global:
MSYS2_BASEVER: 20150512

matrix:
- compiler: msbuild
CONFIGURATION: Release
- compiler: msvc
ARCH: x64
- compiler: msvc
ARCH: x86
- compiler: mingw
- compiler: msys2
MSYS2_ARCH: x86_64
MSYS2_DIR: msys64
MSYSTEM: MINGW64
- compiler: cygwin

build_script:
- rem Using Windows SDK 7.1 (VC10)
- rem "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86 /release
- rem Using VC12
- '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86'
- set INCLUDE=%INCLUDE%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
- rem Build libiconv (MSVC port)
- git clone -q --branch=master https://github.com/koron/libiconv.git C:\projects\libiconv
- cd C:\projects\libiconv\msvc10
- nmake NODEBUG=1 NOMSVCRT=1
- rem Setup libiconv
- cd C:\projects
- mkdir iconv\include
- mkdir iconv\lib
- copy libiconv\msvc10\iconv.h iconv\include
- copy libiconv\msvc10\iconv.lib iconv\lib
- copy libiconv\msvc10\iconv.dll ctags
- rem Build ctags with msbuild, iconv disabled
- cd C:\projects\ctags\win32
- msbuild ctags_vs2013.sln /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" /p:Configuration=Release
- rem Check if it works
- Release\ctags --version
- rem Build ctags with nmake, iconv enabled
- cd C:\projects\ctags
- nmake -f mk_mvc.mak WITH_ICONV=yes ICONV_DIR=C:\projects\iconv
- rem Check if it works
- ctags --version
- win32\appveyor.bat

test_script:
- win32\appveyor.bat test
161 changes: 161 additions & 0 deletions win32/appveyor.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
@echo off
:: Batch file for building/testing ctags on AppVeyor

cd %APPVEYOR_BUILD_FOLDER%
if /I "%1"=="test" (
set _target=_test
) else (
set _target=
)

for %%i in (msbuild msvc mingw msys2 cygwin) do if "%compiler%"=="%%i" goto %compiler%%_target%

echo Unknown build target.
exit 1

:msbuild
:: ----------------------------------------------------------------------
:: Using VC12 with msbuild, iconv disabled
cd win32
@echo on
msbuild ctags_vs2013.sln /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" /p:Configuration=%CONFIGURATION%

@echo off
goto :eof

:msbuild_test
cd win32
@echo on
:: Check filetype
c:\cygwin\bin\file %CONFIGURATION%\ctags.exe
:: Check if it works
%CONFIGURATION%\ctags --version || exit 1

@echo off
goto :eof


:msvc
:: ----------------------------------------------------------------------
:: Using VC12 with nmake, iconv enabled
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %ARCH%

:: Build libiconv (MSVC port)
set ICONV_BUILD_DIR=C:\projects\libiconv
set "INCLUDE=%INCLUDE%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include"
git clone -q --branch=master https://github.com/koron/libiconv.git %ICONV_BUILD_DIR%
cd %ICONV_BUILD_DIR%\msvc10
nmake NODEBUG=1 NOMSVCRT=1

:: Install libiconv to %ICONV_DIR%
set ICONV_DIR=C:\projects\iconv
mkdir %ICONV_DIR%\include
mkdir %ICONV_DIR%\lib
copy %ICONV_BUILD_DIR%\msvc10\iconv.h %ICONV_DIR%\include > nul
copy %ICONV_BUILD_DIR%\msvc10\iconv.lib %ICONV_DIR%\lib > nul
copy %ICONV_BUILD_DIR%\msvc10\iconv.dll %APPVEYOR_BUILD_FOLDER% > nul

:: Build ctags with nmake
@echo on
cd %APPVEYOR_BUILD_FOLDER%
nmake -f mk_mvc.mak WITH_ICONV=yes ICONV_DIR=%ICONV_DIR%

@echo off
goto :eof

:msvc_test
@echo on
:: Check filetype
c:\cygwin\bin\file ctags.exe
:: Check if it works
.\ctags --version || exit 1

@echo off
goto :eof


:mingw
:: ----------------------------------------------------------------------
:: Using MinGW without autotools, iconv disabled
@echo on
path C:\MinGW\bin;C:\MinGW\msys\1.0\bin;%path%
make -f mk_mingw.mak

@echo off
goto :eof

:mingw_test
@echo on
:: Check filetype
c:\cygwin\bin\file ctags.exe
:: Check if it works
.\ctags --version || exit 1

@echo off
goto :eof


:msys2
:: ----------------------------------------------------------------------
:: Using MSYS2, iconv enabled
@echo on
:: Install MSYS2
appveyor DownloadFile "http://kent.dl.sourceforge.net/project/msys2/Base/%MSYS2_ARCH%/msys2-base-%MSYS2_ARCH%-%MSYS2_BASEVER%.tar.xz" -FileName "msys2.tar.xz"
c:\cygwin\bin\xz -dc msys2.tar.xz | c:\cygwin\bin\tar xf -

PATH %APPVEYOR_BUILD_FOLDER%\%MSYS2_DIR%\%MSYSTEM%\bin;%APPVEYOR_BUILD_FOLDER%\%MSYS2_DIR%\usr\bin;%PATH%
set CHERE_INVOKING=yes
bash -lc ""
:: Install and update necessary packages
bash -lc "for i in {1..3}; do pacman --noconfirm --needed -Sy bash pacman pacman-mirrors msys2-runtime && break || sleep 15; done"
bash -lc "for i in {1..3}; do pacman --noconfirm -Su mingw-w64-%MSYS2_ARCH%-{gcc,libiconv} automake autoconf make && break || sleep 15; done"

bash -lc "autoreconf -vfi"
:: Patching configure.
:: Workaround for "./configure: line 557: 0: Bad file descriptor"
perl -i".bak" -pe "s/^test -n \".DJDIR\"/#$&/" configure
bash -lc "./configure --enable-iconv && make"

@echo off
goto :eof

:msys2_test
@echo on
:: Check filetype
c:\cygwin\bin\file ctags.exe
:: Check if it works
.\ctags --version || exit 1
:: Run tests
bash -lc "make check"

@echo off
goto :eof


:cygwin
:: ----------------------------------------------------------------------
:: Using Cygwin, iconv enabled
@echo on
PATH c:\cygwin\bin;%PATH%
set CHERE_INVOKING=yes
bash -lc ""
bash -lc "autoreconf -vfi"
:: Patching configure.
:: Workaround for "./configure: line 557: 0: Bad file descriptor"
perl -i".bak" -pe "s/^test -n \".DJDIR\"/#$&/" configure
bash -lc "./configure --enable-iconv && make"

@echo off
goto :eof

:cygwin_test
@echo on
:: Check filetype
c:\cygwin\bin\file ctags.exe
:: Check if it works
.\ctags --version || exit 1
:: Run tests
bash -lc "make check"

@echo off
goto :eof

0 comments on commit 3a44180

Please sign in to comment.