2017-04-21 10:29:51 +03:00
|
|
|
# Appveyor configuration file for CI build of Unicorn Engine on Windows
|
2016-03-08 07:52:13 +03:00
|
|
|
environment:
|
2016-11-19 12:17:48 +03:00
|
|
|
CYG_MIRROR: http://cygwin.mirror.constant.com
|
2016-12-20 08:18:39 +03:00
|
|
|
CYG_PACKAGES: make,gcc-core,clang,pkg-config,libpcre-devel,cmake,python-setuptools,ruby,mingw64-i686-gcc-core,mingw64-x86_64-gcc-core
|
|
|
|
MSYS_PACKAGES: cmake
|
2016-07-14 06:20:15 +03:00
|
|
|
matrix:
|
2016-11-19 12:17:48 +03:00
|
|
|
- MSYSTEM: MINGW64
|
|
|
|
BASH: C:\msys64\usr\bin\bash
|
|
|
|
MSYS_CACHE: C:\msys64\var\cache\pacman\pkg
|
|
|
|
CC: x86_64-w64-mingw32-gcc
|
|
|
|
- MSYSTEM: MINGW32
|
|
|
|
BASH: C:\msys64\usr\bin\bash
|
|
|
|
MSYS_CACHE: C:\msys64\var\cache\pacman\pkg
|
|
|
|
CC: i686-w64-mingw32-gcc
|
2016-07-14 06:20:15 +03:00
|
|
|
- CYG_ROOT: C:\cygwin64
|
|
|
|
CYG_CACHE: C:\cygwin64\var\cache\setup
|
2016-11-19 12:17:48 +03:00
|
|
|
CYG_SETUP: setup-x86_64.exe
|
|
|
|
BASH: C:\cygwin64\bin\bash
|
2016-07-14 06:20:15 +03:00
|
|
|
CC: gcc
|
|
|
|
- CYG_ROOT: C:\cygwin
|
|
|
|
CYG_CACHE: C:\cygwin\var\cache\setup
|
2016-11-19 12:17:48 +03:00
|
|
|
CYG_SETUP: setup-x86.exe
|
|
|
|
BASH: C:\cygwin\bin\bash
|
2016-07-14 06:20:15 +03:00
|
|
|
CC: gcc
|
2017-01-22 11:13:37 +03:00
|
|
|
- CC: msvc
|
2016-07-14 05:59:00 +03:00
|
|
|
|
2016-11-19 12:17:48 +03:00
|
|
|
# Cache Cygwin/MSYS files to speed up build
|
2016-07-14 05:59:00 +03:00
|
|
|
cache:
|
|
|
|
- '%CYG_CACHE%'
|
2016-11-19 12:17:48 +03:00
|
|
|
- '%MSYS_CACHE%'
|
2016-07-14 06:20:15 +03:00
|
|
|
clone_depth: 1
|
2016-07-14 05:59:00 +03:00
|
|
|
|
|
|
|
# Attempt to ensure we don't try to convert line endings to Win32 CRLF as this will cause build to fail
|
|
|
|
init:
|
|
|
|
- git config --global core.autocrlf input
|
Unit testing in CI (#651)
- in appveyor, install clang and cmake in cygwin, enable package upgrades, and build cmocka and enable testing for gcc only
- in `gitignore`, ignore generated cmocka folder
- in travis, use brew in osx to install cmocka, and enable testing for gcc and clang on os x and linux
- in `Makefile`, change to use `uname -s` to determine os type
- make `install-cmocka-linux.sh`, a simple shell script to download and install cmocka on linux
- in `bindings/Makefile`, enable `make -c` to call subdirectory makefiles instead of `cd [dir] && make` and include environment variables for runtime access to generated libraries
- in `samples/Makefile`, change to use `uname -s` to determine os type, remove `clean_bins` from `all` command, and include `Werror` for compile strictness
- in `tests/unit/Makefile`, add `cflags` for compile time access to cmocka headers and library, include execute vars for runtime access to cmocka and unicorn libs
- in `tests/unit/test_tb_x86.c`, comment out assert that would not compile
2016-10-21 19:21:10 +03:00
|
|
|
# Allows RDP
|
|
|
|
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
2016-03-08 07:52:13 +03:00
|
|
|
|
2016-07-14 05:59:00 +03:00
|
|
|
# Install needed build dependencies
|
|
|
|
install:
|
2016-11-19 12:17:48 +03:00
|
|
|
- ps: if (Test-Path Env:\CYG_ROOT) { Start-FileDownload "http://cygwin.com/$env:CYG_SETUP" -FileName "$env:CYG_SETUP" }
|
|
|
|
- if defined CYG_ROOT (%CYG_SETUP% --quiet-mode --no-shortcuts --only-site --root "%CYG_ROOT%" --site "%CYG_MIRROR%" --local-package-dir "%CYG_CACHE%" --packages "%CYG_PACKAGES%" --upgrade-also)
|
|
|
|
- if defined MSYSTEM (%BASH% -lc "pacman -Suuy --noconfirm ${MSYS_PACKAGES}")
|
|
|
|
- if defined MSYSTEM (%BASH% -lc "pacman -Suuy --noconfirm")
|
2016-03-08 07:52:13 +03:00
|
|
|
build_script:
|
2016-11-19 12:17:48 +03:00
|
|
|
- if defined BASH (%BASH% -lc "cd $(cygpath ${APPVEYOR_BUILD_FOLDER}) && make")
|
|
|
|
- if "%MSYSTEM%" == "MINGW64" (%BASH% -lc "cd $(cygpath ${APPVEYOR_BUILD_FOLDER}) && make -C bindings/go")
|
2017-01-23 04:18:57 +03:00
|
|
|
- if "%CC%" == "msvc" (msbuild %APPVEYOR_BUILD_FOLDER%/msvc/unicorn.sln)
|
2016-11-19 12:17:48 +03:00
|
|
|
# make test
|
Unit testing in CI (#651)
- in appveyor, install clang and cmake in cygwin, enable package upgrades, and build cmocka and enable testing for gcc only
- in `gitignore`, ignore generated cmocka folder
- in travis, use brew in osx to install cmocka, and enable testing for gcc and clang on os x and linux
- in `Makefile`, change to use `uname -s` to determine os type
- make `install-cmocka-linux.sh`, a simple shell script to download and install cmocka on linux
- in `bindings/Makefile`, enable `make -c` to call subdirectory makefiles instead of `cd [dir] && make` and include environment variables for runtime access to generated libraries
- in `samples/Makefile`, change to use `uname -s` to determine os type, remove `clean_bins` from `all` command, and include `Werror` for compile strictness
- in `tests/unit/Makefile`, add `cflags` for compile time access to cmocka headers and library, include execute vars for runtime access to cmocka and unicorn libs
- in `tests/unit/test_tb_x86.c`, comment out assert that would not compile
2016-10-21 19:21:10 +03:00
|
|
|
#- 'cd %APPVEYOR_BUILD_FOLDER% && cd bindings\dotnet && msbuild UnicornDotNet.sln'
|
|
|
|
# Allows RDP
|
|
|
|
#on_finish:
|
|
|
|
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
2016-07-14 05:59:00 +03:00
|
|
|
|
2016-11-19 12:17:48 +03:00
|
|
|
# Test cygwin only
|
|
|
|
test_script:
|
|
|
|
- if defined CYG_ROOT (%BASH% -lc "cd $APPVEYOR_BUILD_FOLDER && ./install-cmocka-linux.sh && export PATH=$PATH:$APPVEYOR_BUILD_FOLDER:$APPVEYOR_BUILD_FOLDER/cmocka/src && make test")
|