diff --git a/.appveyor.yml b/.appveyor.yml index 15e1116b..eb0d22a5 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -5,15 +5,21 @@ os: Visual Studio 2015 environment: matrix: - - APPVEYOR_JOB_ARCH: x64 - - APPVEYOR_JOB_ARCH: x86 +# - { C: msvc-10.0-x86, CL_VERSION: 16.00, VS_VERSION: 2010 } +### - { C: msvc-10.0-x64, CL_VERSION: 16.00, VS_VERSION: 2010 } # x64 is not installed +# - { C: msvc-11.0-x86, CL_VERSION: 17.00, VS_VERSION: 2012 } +### - { C: msvc-11.0-x64, CL_VERSION: 17.00, VS_VERSION: 2012 } # x64 is not installed + - { C: msvc-12.0-x86, CL_VERSION: 18.00, VS_VERSION: 2013 } + - { C: msvc-12.0-x64, CL_VERSION: 18.00, VS_VERSION: 2013 } + - { C: msvc-14.0-x86, CL_VERSION: 19.00, VS_VERSION: 2015 } + - { C: msvc-14.0-x64, CL_VERSION: 19.00, VS_VERSION: 2015 } init: - git config --global core.autocrlf input install: - cd c:\projects - - mkdir deps + - mkdir build build\%C% deps - cd c:\projects\upx - git submodule update --init --recursive - cd c:\projects\deps @@ -23,22 +29,33 @@ install: - sed -i '/snprintf *_v*snprintf/d' ucl-1.03/acc/acc_auto.h - tar -xzf zlib-1.2.8.tar.gz - git clone https://github.com/upx/upx-testsuite - - if "%APPVEYOR_JOB_ARCH%"=="x64" ( call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 ) - - if "%APPVEYOR_JOB_ARCH%"=="x86" ( call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 ) + - if "%C%"=="msvc-10.0-x86" ( call "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 ) + - if "%C%"=="msvc-10.0-x64" ( call "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64 ) + - if "%C%"=="msvc-11.0-x86" ( call "c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86 ) + - if "%C%"=="msvc-11.0-x64" ( call "c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" amd64 ) + - if "%C%"=="msvc-12.0-x86" ( call "c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86 ) + - if "%C%"=="msvc-12.0-x64" ( call "c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" amd64 ) + - if "%C%"=="msvc-14.0-x86" ( call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 ) + - if "%C%"=="msvc-14.0-x64" ( call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 ) build_script: + - set B=release - set DEFS=-D_CRT_SECURE_NO_WARNINGS - - cd c:\projects\deps\ucl-1.03 - - cl -MT -O2 -W4 %DEFS% -Iinclude -I. -c src\*.c + - set BDIR=c:\projects\build\%C%\%B% + - mkdir %BDIR% %BDIR%\ucl-1.03 %BDIR%\upx %BDIR%\upx-testsuite %BDIR%\zlib-1.2.8 + - cd %BDIR%\ucl-1.03 + - set s=c:\projects\deps\ucl-1.03 + - cl -MT -O2 -W4 %DEFS% -I%s%\include -I%s% -c %s%\src\*.c - link -lib -out:ucl.lib *.obj - - cd c:\projects\deps\zlib-1.2.8 - - cl -MT -O2 -W3 -wd4131 -wd4996 %DEFS% -I. -c *.c + - cd %BDIR%\zlib-1.2.8 + - cl -MT -O2 -W2 %DEFS% -c c:\projects\deps\zlib-1.2.8\*.c - link -lib -out:zlib.lib *.obj - - cd c:\projects\upx\src - - cl -MT -EHsc -O2 -W4 -wd4244 %DEFS% -DWITH_LZMA=0x443 -DUCL_NO_ASM -Ilzma-sdk -Ic:\projects\deps\ucl-1.03\include -Ic:\projects\deps\zlib-1.2.8 -Feupx.exe *.cpp c:\projects\deps\ucl-1.03\ucl.lib c:\projects\deps\zlib-1.2.8\zlib.lib + - cd %BDIR%\upx + - set s=c:\projects\upx\src + - cl -MT -EHsc -O2 -W4 -wd4244 %DEFS% -DWITH_LZMA=0x443 -DUCL_NO_ASM -I%s%\lzma-sdk -Ic:\projects\deps\ucl-1.03\include -Ic:\projects\deps\zlib-1.2.8 -Feupx.exe %s%\*.cpp %BDIR%\ucl-1.03\ucl.lib %BDIR%\zlib-1.2.8\zlib.lib test_script: - - cd c:\projects\upx\src + - cd %BDIR%\upx - .\upx.exe --version - .\upx.exe upx.exe -o upx_packed.exe - dir *.exe diff --git a/.github/travis_build.sh b/.github/travis_build.sh index 644b9e01..42e6dadf 100644 --- a/.github/travis_build.sh +++ b/.github/travis_build.sh @@ -7,7 +7,7 @@ set -e; set -o pipefail source ./.github/travis_init.sh || exit 1 -echo "BUILD_METHOD='$BUILD_METHOD'" +echo "B='$B'" echo "UPX_UCLDIR='$UPX_UCLDIR'" echo "CC='$CC'" echo "CXX='$CXX'" @@ -74,23 +74,23 @@ cd $upx_BUILDDIR || exit 1 make="make -f $upx_SRCDIR/src/Makefile" EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -DUCL_NO_ASM" EXTRA_LDFLAGS="$EXTRA_LDFLAGS -L$ucl_BUILDDIR/src/.libs" -case $BUILD_METHOD in coverage | coverage+* | *+coverage | *+coverage+*) +if [[ $B =~ (^|\+)coverage($|\+) ]]; then EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -fprofile-arcs -ftest-coverage" - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -fprofile-arcs -ftest-coverage" ;; -esac -case $BUILD_METHOD in debug | debug+* | *+debug | *+debug+*) - make="$make USE_DEBUG=1" ;; -esac -case $BUILD_METHOD in sanitize | sanitize+* | *+sanitize | *+sanitize+*) + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -fprofile-arcs -ftest-coverage" +fi +if [[ $B =~ (^|\+)debug($|\+) ]]; then + make="$make USE_DEBUG=1" +fi +if [[ $B =~ (^|\+)sanitize($|\+) ]]; then case $TRAVIS_OS_NAME-$CC in linux-gcc*) EXTRA_LDFLAGS="$EXTRA_LDFLAGS -fuse-ld=gold" ;; esac - make="$make USE_SANITIZE=1" ;; -esac -case $BUILD_METHOD in scan-build | scan-build+* | *+scan-build | *+scan-build+*) - make="$SCAN_BUILD $make" ;; -esac -case $BUILD_METHOD in valgrind | valgrind+* | *+valgrind | *+valgrind+*) - EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -DWITH_VALGRIND" ;; -esac + make="$make USE_SANITIZE=1" +fi +if [[ $B =~ (^|\+)scan-build($|\+) ]]; then + make="$SCAN_BUILD $make" +fi +if [[ $B =~ (^|\+)valgrind($|\+) ]]; then + EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -DWITH_VALGRIND" +fi if [[ $ALLOW_FAIL == 1 ]]; then echo "ALLOW_FAIL=$ALLOW_FAIL" set +e diff --git a/.github/travis_init.sh b/.github/travis_init.sh index 8777487d..375bc788 100644 --- a/.github/travis_init.sh +++ b/.github/travis_init.sh @@ -6,33 +6,35 @@ #set -x # debug umask 022 +# set CC and CXX from C CC=false CXX=false SCAN_BUILD=false [[ -z $C ]] && C=gcc case $C in clang | clang-m?? | clang-3.4-m?? | clang-[678][0-9][0-9]-m??) - # standard system compiler - CC="clang"; CXX="clang++" ;; + CC="clang"; CXX="clang++" ;; # standard system compiler clang-[34].[0-9]-m??) v=${C:6:3}; CC="clang-$v"; CXX="clang++-$v"; SCAN_BUILD="scan-build-$v" ;; - gcc | gcc-m?? | gcc-4.6-m??) - # standard system compiler - CC="gcc"; CXX="g++" ;; + gcc | gcc-m??) + CC="gcc"; CXX="g++" ;; # standard system compiler gcc-[34].[0-9]-m??) v=${C:4:3}; CC="gcc-$v"; CXX="g++-$v" ;; gcc-[56]-m?? | gcc-[56].[0-9]-m??) v=${C:4:1}; CC="gcc-$v"; CXX="g++-$v" ;; + msvc | msvc-*) + CC="cl"; CXX="cl" ;; # standard system compiler esac case $C in - *-m32) CC="$CC -m32"; CXX="$CXX -m32" ;; - *-m64) CC="$CC -m64"; CXX="$CXX -m64" ;; + msvc*) ;; + clang*-m32) CC="$CC -m32"; CXX="$CXX -m32" ;; + gcc*-m64) CC="$CC -m64"; CXX="$CXX -m64" ;; esac case $C in clang* | gcc*) CC="$CC -std=gnu89" ;; esac export CC CXX +# B is BUILD_TYPE [[ -z $B ]] && B=release -BUILD_METHOD="$B" # dirs [[ -z $upx_SRCDIR ]] && upx_SRCDIR="$PWD" diff --git a/.github/travis_testsuite.sh b/.github/travis_testsuite.sh index bcaa0703..9cdd0cb9 100644 --- a/.github/travis_testsuite.sh +++ b/.github/travis_testsuite.sh @@ -28,9 +28,9 @@ if [[ $TRAVIS_OS_NAME == osx ]]; then sha256sum=gsha256sum # brew install coreutils fi upx=$PWD/upx.out -case $BUILD_METHOD in valgrind | valgrind+* | *+valgrind | *+valgrind+*) - upx="valgrind --leak-check=full --show-reachable=yes $upx" ;; -esac +if [[ $B =~ (^|\+)valgrind($|\+) ]]; then + upx="valgrind --leak-check=full --show-reachable=yes $upx" +fi upx_391= if [[ $TRAVIS_OS_NAME == linux ]]; then rm -f upx391.out @@ -38,9 +38,9 @@ if [[ $TRAVIS_OS_NAME == linux ]]; then upx_391="$PWD/upx391.out --fake-stub-version=3.92 --fake-stub-year=2016" fi -case $BUILD_METHOD in coverage | coverage+* | *+coverage | *+coverage+*) - lcov -d $upx_BUILDDIR --zerocounters ;; -esac +if [[ $B =~ (^|\+)coverage($|\+) ]]; then + lcov -d $upx_BUILDDIR --zerocounters +fi $upx --version $upx --help @@ -102,7 +102,7 @@ for f in $upx_testsuite_SRCDIR/files/packed/*/upx-3.91*; do rm -rf ./t done -case $BUILD_METHOD in coverage | coverage+* | *+coverage | *+coverage+*) +if [[ $B =~ (^|\+)coverage($|\+) ]]; then if [[ -n $TRAVIS_JOB_ID ]]; then cd $upx_SRCDIR || exit 1 coveralls -b $upx_BUILDDIR --gcov-options '\-lp' || true @@ -113,7 +113,6 @@ case $BUILD_METHOD in coverage | coverage+* | *+coverage | *+coverage+*) cd $lcov_OUTPUTDIR || exit 1 genhtml upx.info fi - ;; -esac +fi exit $exit_code diff --git a/.travis.yml b/.travis.yml index 03a868b5..2927ead7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -47,10 +47,6 @@ matrix: - os: linux compiler: gcc env: C=gcc-4.6-m64 - - os: linux - compiler: gcc - env: C=gcc-4.6-m64 B=coverage - addons: { apt: { packages: [ lcov ] } } - os: linux compiler: gcc env: C=gcc-5-m32 @@ -176,16 +172,16 @@ install: - | cd / if [[ $TRAVIS_OS_NAME == linux ]]; then - case $B in coverage | coverage+* | *+coverage | *+coverage+*) - travis_retry pip install --user cpp-coveralls ;; - esac + if [[ $B =~ (^|\+)coverage($|\+) ]]; then + travis_retry pip install --user cpp-coveralls + fi fi if [[ $TRAVIS_OS_NAME == osx ]]; then if ! gsha256sum /dev/null 2>/dev/null; then travis_retry brew install coreutils; fi - case $B in coverage | coverage+* | *+coverage | *+coverage+*) + if [[ $B =~ (^|\+)coverage($|\+) ]]; then travis_retry brew install lcov - travis_retry pip install --user cpp-coveralls ;; - esac + travis_retry pip install --user cpp-coveralls + fi fi script: