Skip to content

Commit b3ad703

Browse files
author
Jason Mobarak
committed
Build x86 target too, add support for LTO
1 parent 232192b commit b3ad703

File tree

5 files changed

+84
-13
lines changed

5 files changed

+84
-13
lines changed

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
output/
22
build/
3+
build-x86/
34
*.txz

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
.*.sw?
22
build/
3+
build-x86/
34
output/
5+
llvm-obfuscator-*.txz

.travis.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,11 @@ before_install:
1515
- ./base.bash
1616

1717
script:
18-
- ./build.bash
19-
- ./stage_sysroot.bash
18+
- ./build.bash --make-packages
2019
- ./build_example.bash
2120

2221
after_success:
23-
- tar -C output -cJf llvm-obfuscator-arm.txz .
24-
- PRODUCT_VERSION=v1 ./publish.sh llvm-obfuscator-arm.txz
22+
- ./publish.sh llvm-obfuscator-arm-x86.txz
2523

2624
env:
2725
global:

Dockerfile.base

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ RUN apt-get update \
2020
libgcc1-armhf-cross \
2121
libsfgcc1-armhf-cross \
2222
libstdc++6-armhf-cross \
23+
binutils-dev \
24+
binutils-multiarch-dev \
2325
python
2426

2527
RUN git clone --depth=1 --single-branch -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git obfuscator-llvm

build.bash

Lines changed: 77 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,58 @@
11
#!/bin/bash
22

3+
set -x
4+
set -e
5+
36
mkdir -p build
7+
mkdir -p "build-x86"
48
mkdir -p output/opt
59

6-
#-DCMAKE_CROSSCOMPILING=True \
7-
#-DCMAKE_CXX_FLAGS='-march=armv7-a -mcpu=cortex-a9 -mfloat-abi=hard -DENDIAN_LITTLE=1' \
8-
#-DCMAKE_C_COMPILER=/usr/bin/arm-linux-gnueabihf-gcc-4.8 \
10+
MAKE_PACKAGES=
11+
BUILD_X86=n
12+
VERBOSE=
13+
14+
while [[ $# -gt 0 ]]; do
15+
case $1 in
16+
--make-packages)
17+
echo "*** Making packages ***"
18+
MAKE_PACKAGES=y
19+
shift
20+
;;
21+
--build-x86)
22+
echo "*** Building x86_64 (in addition to ARM) ***"
23+
BUILD_X86=y
24+
shift
25+
;;
26+
--verbose)
27+
VERBOSE="-v"
28+
shift
29+
;;
30+
esac
31+
done
932

1033
CMAKE_COMMAND="\
1134
cmake -G Ninja \
1235
/work/obfuscator-llvm \
1336
-DCMAKE_INSTALL_PREFIX=/opt/llvm-obfuscator \
14-
-DLLVM_TABLEGEN=/usr/bin/llvm-tblgen-4.0 \
15-
-DCLANG_TABLEGEN=/usr/bin/clang-tblgen-4.0 \
16-
-DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf \
17-
-DLLVM_TARGET_ARCH=ARM \
18-
-DLLVM_TARGETS_TO_BUILD=ARM \
37+
-DLLVM_TARGETS_TO_BUILD=ARM\;X86 \
1938
-DCMAKE_CXX_FLAGS='-DENDIAN_LITTLE=1' \
2039
-DCMAKE_C_COMPILER=/usr/bin/gcc \
2140
-DCMAKE_CXX_COMPILER=/bin/cpp_wrapper.py \
2241
-DCMAKE_BUILD_TYPE=Release \
42+
-DLLVM_BINUTILS_INCDIR=/usr/include \
43+
-DLLVM_INCLUDE_TESTS=OFF"
44+
45+
CMAKE_COMMAND_X86="\
46+
cmake -G Ninja \
47+
/work/obfuscator-llvm \
48+
-DCMAKE_INSTALL_PREFIX=/opt/llvm-obfuscator \
49+
-DCMAKE_CXX_FLAGS='-DENDIAN_LITTLE=1' \
50+
-DCMAKE_C_COMPILER=/usr/bin/gcc \
51+
-DCMAKE_CXX_COMPILER=/bin/cpp_wrapper.py \
52+
-DCMAKE_BUILD_TYPE=Release \
53+
-DLLVM_TARGET_ARCH=X86 \
54+
-DLLVM_TARGETS_TO_BUILD=X86 \
55+
-DLLVM_BINUTILS_INCDIR=/usr/include \
2356
-DLLVM_INCLUDE_TESTS=OFF"
2457

2558
PATCH_COMMAND="git apply /patches/*.patch"
@@ -29,4 +62,39 @@ docker run -i -t --rm \
2962
-v $PWD/output/opt:/opt \
3063
-v $PWD/patches:/patches \
3164
arm-llvm-obf:base \
32-
/bin/bash -c "cd /work/obfuscator-llvm && $PATCH_COMMAND && cd /work/build && $CMAKE_COMMAND && ninja -v && ninja -v install"
65+
/bin/bash -c "cd /work/obfuscator-llvm \
66+
&& $PATCH_COMMAND \
67+
&& cd /work/build \
68+
&& $CMAKE_COMMAND \
69+
&& ninja $VERBOSE \
70+
&& ninja $VERBOSE install"
71+
72+
if [[ -n "$MAKE_PACKAGES" ]]; then
73+
74+
./stage_sysroot.bash
75+
tar -C output -cJf "llvm-obfuscator-arm-x86.txz" .
76+
fi
77+
78+
if [[ -n "$BUILD_X86" ]]; then
79+
80+
docker run -i -t --rm \
81+
-v $PWD/output/opt:/opt \
82+
arm-llvm-obf:base \
83+
/bin/bash -c "rm -rvf /opt/*"
84+
85+
docker run -i -t --rm \
86+
-v "$PWD/build-x86:/work/build" \
87+
-v $PWD/output/opt:/opt \
88+
-v $PWD/patches:/patches \
89+
arm-llvm-obf:base \
90+
/bin/bash -c "cd /work/obfuscator-llvm \
91+
&& $PATCH_COMMAND \
92+
&& cd /work/build \
93+
&& $CMAKE_COMMAND_X86 \
94+
&& ninja $VERBOSE \
95+
&& ninja $VERBOSE install"
96+
97+
if [[ -n "$MAKE_PACKAGES" ]]; then
98+
tar -C output -cJf "llvm-obfuscator-x86.txz" .
99+
fi
100+
fi

0 commit comments

Comments
 (0)