forked from madler/zlib
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add continuous integration support for GitHub
pull requests through Travis CI and Appveyor using cmake to generate and build the project. The following targets are built: Travis: - gcc (Debug, RelWithDebInfo, and Release) - valgrind (Debug) - ubsan (Debug) Appveyor: - Visual Studio 2010 (Release) - Visual Studio 2015 (Debug, RelWithDebInfo, and Release) - Cygwin (Release) - Cygwin64 (Release) - MinGW (Release) - MinGW-w64 (Release) - MSYS2 (Release) This fixes madler#238
- Loading branch information
Showing
11 changed files
with
309 additions
and
538 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,3 +24,5 @@ | |
/configure.log | ||
|
||
.DS_Store | ||
|
||
.vs/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
sudo: false | ||
dist: trusty | ||
language: c | ||
|
||
branches: | ||
only: | ||
- master | ||
|
||
script: | ||
- ci/travis/build.sh | ||
|
||
compiler: | ||
# - clang | ||
- gcc | ||
|
||
os: | ||
- linux | ||
# - osx | ||
|
||
env: | ||
- CMAKE_BUILD_TYPE=Debug | ||
- CMAKE_BUILD_TYPE=RelWithDebInfo | ||
- CMAKE_BUILD_TYPE=Release | ||
- CONFIGURE= | ||
|
||
matrix: | ||
include: | ||
- os: linux | ||
compiler: clang | ||
env: | ||
- CMAKE_BUILD_TYPE=debug | ||
- CTEST_DASHBOARD=ExperimentalMemCheck | ||
addons: | ||
apt: | ||
packages: | ||
- valgrind | ||
- os: linux | ||
compiler: gcc | ||
env: | ||
- COMMENT=UBSAN | ||
- CMAKE_BUILD_TYPE=debug | ||
- CMAKE_C_COMPILER=gcc-7 | ||
- CFLAGS='-fno-omit-frame-pointer -fsanitize=undefined' | ||
- LDFLAGS='-fsanitize=undefined' | ||
addons: | ||
apt: | ||
packages: | ||
- g++-7 | ||
sources: | ||
- ubuntu-toolchain-r-test | ||
|
||
notifications: | ||
email: | ||
false | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
version: 0.0.{build}-{branch} | ||
|
||
shallow_clone: true | ||
|
||
branches: | ||
only: | ||
- master | ||
|
||
# this a not a .NET project in all cases - we will build during install phase | ||
build: false | ||
|
||
install: | ||
- ci\appveyor\env.bat | ||
- ci\appveyor\install.bat | ||
|
||
test_script: | ||
- ci\appveyor\test.bat | ||
|
||
matrix: | ||
allow_failures: | ||
- MAYFAIL: true | ||
|
||
environment: | ||
global: | ||
# Defaults for all builds, overridden below if needed | ||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 | ||
CMAKE_BUILD_TYPE: Release | ||
|
||
matrix: | ||
# Visual Studio 2010 | ||
- GENERATOR: Visual Studio 10 2010 | ||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013 | ||
|
||
# Visual Studio 2015 Win64 Debug | ||
- GENERATOR: Visual Studio 14 2015 Win64 | ||
CMAKE_BUILD_TYPE: Debug | ||
|
||
# Visual Studio 2015 Win64 RelWithDebInfo | ||
- GENERATOR: Visual Studio 14 2015 Win64 | ||
CMAKE_BUILD_TYPE: RelWithDebInfo | ||
|
||
# Visual Studio 2015 Win64 Release | ||
- GENERATOR: Visual Studio 14 2015 Win64 | ||
|
||
# Cygwin | ||
- ADDPATH: C:\cygwin\bin; | ||
WRAPPER: cygwin | ||
|
||
# Cygwin64 | ||
- ADDPATH: C:\cygwin64\bin; | ||
WRAPPER: cygwin64 | ||
|
||
# MinGW | ||
- ADDPATH: C:\mingw\bin; | ||
GENERATOR: MinGW Makefiles | ||
WRAPPER: mingw | ||
|
||
# MinGW-w64 | ||
- ADDPATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin; | ||
GENERATOR: MinGW Makefiles | ||
WRAPPER: mingw64 | ||
|
||
# MSYS2 | ||
- ADDPATH: C:\msys64\usr\bin; | ||
GENERATOR: MSYS Makefiles |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
@ECHO ON | ||
SETLOCAL | ||
::CALL ci\appveyor\env.bat | ||
|
||
:: Create the build directory | ||
MKDIR %BUILDDIR% || EXIT /B | ||
CD %BUILDDIR% | ||
|
||
cmake --version | ||
|
||
IF "%WRAPPER:~0,6%" == "cygwin" ( | ||
:: Run the cygwin cmake build in a cygwin bash shell | ||
bash.exe -c "cmake %CYGSRCDIR% %DASHG% -DCMAKE_INSTALL_PREFIX=%CYGINSTDIR%" || EXIT /B | ||
bash.exe -c "cmake --build . --target install --config %CMAKE_BUILD_TYPE%" || EXIT /B | ||
) ELSE ( | ||
cmake "%SRCDIR%" %DASHG% -DCMAKE_INSTALL_PREFIX=%INSTDIR% %CMAKE_EXTRA% || EXIT /B | ||
cmake --build . --target install --config %CMAKE_BUILD_TYPE% || EXIT /B | ||
) | ||
|
||
DIR /S %INSTDIR% |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
:: | ||
:: Environment Variables | ||
:: | ||
:: In: | ||
:: ADDPATH contains path directories that are prepended to the path (optional) | ||
:: CMAKE_BUILD_TYPE sets the build configuration (required) | ||
:: CMAKE_EXTRA is additional parameters to pass to cmake (optional) | ||
:: GENERATOR is the cmake generator to use (optional) | ||
:: WRAPPER is the build type wrapper to use (optional) [mingw, cygwin, cygwin64] | ||
:: | ||
:: Out: | ||
:: BUILDDIR is the directory to do the build in | ||
:: INSTDIR is the directory to put the install target files into | ||
:: SRCDIR is the directory containing the project | ||
:: | ||
:: CYGDIR is the home of cygwin, whichever flavor is being used | ||
:: CYGSETUP is the path to the setup executable for installing things | ||
:: CYGINSTDIR is INSTDIR translated to cygwin's /cygdrive/... path syntax | ||
:: CYGSRCDIR is SRCDIR translated to cygwin's /cygdrive/... path syntax | ||
:: | ||
:: DASHG is the cmake -G"<generator>" argument content | ||
:: | ||
|
||
@ECHO OFF | ||
|
||
SET BUILDDIR=C:\temp\build | ||
SET INSTDIR=C:\temp\install | ||
SET SRCDIR=%CD% | ||
|
||
IF "%WRAPPER%" == "cygwin" ( | ||
SET CYGDIR=C:\cygwin | ||
SET CYGSETUP=C:\cygwin\setup-x86.exe | ||
) ELSE IF "%WRAPPER%" == "cygwin64" ( | ||
SET CYGDIR=C:\cygwin64 | ||
SET CYGSETUP=C:\cygwin64\setup-x86_64.exe | ||
) | ||
|
||
IF "%WRAPPER:~0,6%" == "cygwin" ( | ||
:: was using cygpath but it isn't available on all cygwin versions, so... | ||
SET CYGSRCDIR=/cygdrive/c/projects/zlib | ||
SET CYGINSTDIR=/cygdrive/c/temp/install | ||
) | ||
|
||
IF DEFINED GENERATOR ( | ||
SET DASHG="-G%GENERATOR%" | ||
) | ||
|
||
SET PATH=%ADDPATH%%PATH% | ||
|
||
@ECHO/ | ||
@ECHO -------------------------------------------------------------------------------- | ||
@ECHO -- Environment Variables | ||
@ECHO -------------------------------------------------------------------------------- | ||
@ECHO/ | ||
@ECHO Inputs: | ||
@ECHO/ | ||
@ECHO ADDPATH %ADDPATH% | ||
@ECHO CMAKE_BUILD_TYPE %CMAKE_BUILD_TYPE% | ||
@ECHO CMAKE_EXTRA %CMAKE_EXTRA% | ||
@ECHO GENERATOR %GENERATOR% | ||
@ECHO WRAPPER %WRAPPER% | ||
@ECHO/ | ||
@ECHO Outputs: | ||
@ECHO/ | ||
@ECHO BUILDDIR %BUILDDIR% | ||
@ECHO INSTDIR %INSTDIR% | ||
@ECHO SRCDIR %SRCDIR% | ||
@ECHO/ | ||
@ECHO DASHG %DASHG% | ||
IF "%WRAPPER:~0,6%" == "cygwin" ( | ||
@ECHO/ | ||
@ECHO CYGDIR %CYGDIR% | ||
@ECHO CYGSETUP %CYGSETUP% | ||
@ECHO CYGSRCDIR %CYGSRCDIR% | ||
@ECHO CYGINSTDIR %CYGINSTDIR% | ||
) | ||
@ECHO/ | ||
@ECHO PATH: | ||
@ECHO/ | ||
@ECHO %PATH% | ||
@ECHO/ | ||
@ECHO -------------------------------------------------------------------------------- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
@ECHO ON | ||
SETLOCAL | ||
::CALL ci\appveyor\env.bat | ||
|
||
:: Move sh.exe out of the path for MinGW builds to work | ||
IF "%WRAPPER:~0,5%" == "mingw" ( | ||
REN "C:\Program Files\Git\usr\bin\sh.exe" "sh.exx" | ||
) | ||
|
||
:: As an added precaution against cmake locating MinGW items | ||
:: when doing a MinGW-w64 build, we move MinGW out of the way | ||
IF "%WRAPPER%" == "mingw64" ( | ||
MOVE C:\MinGW C:\MinGW-Disabled | ||
) | ||
|
||
:: Install missing cygwin packages | ||
IF "%WRAPPER:~0,6%" == "cygwin" ( | ||
%CYGSETUP% -B -q -n -N -d -l %CYGDIR%/var/cache/setup -R %CYGDIR% -s http://mirror.rit.edu/cygwin -P cmake make | ||
) | ||
|
||
CALL ci\appveyor\build.bat |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
@ECHO ON | ||
SETLOCAL | ||
::CALL ci\appveyor\env.bat | ||
|
||
CD %BUILDDIR% || EXIT /B | ||
ctest -D ExperimentalTest || EXIT /B | ||
|
||
IF EXIST %CMAKE_BUILD_TYPE% ( | ||
CD %CMAKE_BUILD_TYPE% || EXIT /B | ||
) | ||
COPY example.exe example.exe.orig || EXIT /B | ||
minigzip -3 example.exe || EXIT /B | ||
minigzip -9 example.exe.gz || EXIT /B | ||
minigzip -d example.exe.gz.gz || EXIT /B | ||
minigzip -d example.exe.gz || EXIT /B | ||
fc /B example.exe example.exe.orig > nul |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
#!/bin/bash | ||
# | ||
# Environment Variables | ||
# | ||
# CMAKE_BUILD_TYPE sets the cmake variable by that name (default if not set: use ./configure) | ||
# CMAKE_C_COMPILER sets the cmake variable by that name (default if not set: $CC) | ||
# CTEST_DASHBOARD sets the dashboard suite to run (default if not set: ExperimentalTest) | ||
# | ||
|
||
set -ex | ||
|
||
SRCDIR=`pwd` | ||
if [[ "${CTEST_BASHBOARD}" == "ExperimentalMemCheck" ]]; then | ||
RUNNER=valgrind | ||
fi | ||
mkdir /tmp/build | ||
cd /tmp/build | ||
|
||
if [[ ! -z "$CMAKE_BUILD_TYPE" ]]; then | ||
cmake $SRCDIR -DCMAKE_INSTALL_PREFIX=/tmp/install \ | ||
-DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE \ | ||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER:-$CC} | ||
VERBOSE=1 cmake --build . --target install | ||
ctest -D ${CTEST_DASHBOARD:-ExperimentalTest} | ||
ls -lsR /tmp/install | ||
else | ||
$SRCDIR/configure $CONFIGURE --prefix=/tmp/install | ||
make -j2 install | ||
make test | ||
ls -lsR /tmp/install | ||
fi | ||
|
||
cp libz.a libz.a.orig | ||
$RUNNER ./minigzip64 -9 libz.a | ||
$RUNNER ./minigzip64 -d libz.a.gz | ||
cmp libz.a libz.a.orig |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.