forked from avast/retdec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
88 lines (80 loc) · 3.08 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
language: cpp
cache: ccache
matrix:
fast_finish: true
include:
- os: linux
dist: xenial
addons:
apt:
packages:
- build-essential
- gcc-multilib
- flex
- bison
- autoconf
- automake
- libtool
- pkg-config
- m4
- zlib1g-dev
- openssl
env:
- MATRIX_EVAL="NPROC=$(nproc)"
# We need this so that ccache does not cause compilation errors.
# e.g. retdec/tests/utils/string_tests.cpp:276:2: error: stray '\' in program
- CCACHE_CPP2=true
- os: osx
osx_image: xcode8.3
env:
- MATRIX_EVAL="NPROC=$(sysctl -n hw.physicalcpu)"
- CCACHE_CPP2=true
install:
# We need to install newer versions of Flex and Bison on MacOS X.
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew install flex bison; fi
# ccache is not installed on OS X.
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew install ccache; fi
# python 3
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew upgrade python; fi
# install for os x the gnu time library
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew install gnu-time; fi
before_script:
- eval "${MATRIX_EVAL}"
# We need to use newer versions of Flex and Bison on MacOS X (the ones from Homebrew).
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then export CMAKE_INCLUDE_PATH="/usr/local/opt/flex/include"; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then export CMAKE_LIBRARY_PATH="/usr/local/opt/flex/lib;/usr/local/opt/bison/lib"; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then export PATH="/usr/local/opt/flex/bin:/usr/local/opt/bison/bin:$PATH"; fi
# We need to add ccache before everything else into PATH.
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then export PATH="/usr/local/opt/ccache/libexec:$PATH"; fi
script:
- mkdir build && cd build
# We use "-O0" to speed up the build.
# "-O0" causes segfaults in LLVM if we do not use "-DNDEBUG" as well.
- cmake -DCMAKE_CXX_FLAGS_RELEASE="-O0 -DNDEBUG" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DRETDEC_COMPILE_YARA=OFF ..
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then cmake -DRETDEC_TESTS=ON -DRETDEC_DEV_TOOLS=ON .. ; fi
- time make install -j $NPROC
# Check that install is movable and that it does not need the build directory.
- mv install ../retdec-install
- cd ..
- rm -rf build
# Run unit tests.
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then python3 retdec-install/bin/retdec-tests-runner.py ; fi
# Run the decompilation script.
- python3 retdec-install/bin/retdec-decompiler.py --help
# Run a simple decompilation.
- echo -e '#include <stdio.h>\n#include <stdlib.h>\nint main()\n{\n printf("hello world\\n");\n return 0;\n}\n' > hello-orig.c
- cat hello-orig.c
- gcc -m32 -o hello hello-orig.c
- ./hello
- python3 retdec-install/bin/retdec-decompiler.py hello
- cat hello.c
- grep "int main(int argc, char \*\* argv)" hello.c
branches:
only:
# Pushes and PRs to the master branch.
- master
# Version tags.
- /^v?\d+\.\d+.*$/
notifications:
email:
on_success: never