Skip to content

Commit

Permalink
Build x86 target too, add support for LTO
Browse files Browse the repository at this point in the history
  • Loading branch information
Jason Mobarak committed Oct 19, 2017
1 parent 232192b commit b3ad703
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 13 deletions.
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
output/
build/
build-x86/
*.txz
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.*.sw?
build/
build-x86/
output/
llvm-obfuscator-*.txz
6 changes: 2 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,11 @@ before_install:
- ./base.bash

script:
- ./build.bash
- ./stage_sysroot.bash
- ./build.bash --make-packages
- ./build_example.bash

after_success:
- tar -C output -cJf llvm-obfuscator-arm.txz .
- PRODUCT_VERSION=v1 ./publish.sh llvm-obfuscator-arm.txz
- ./publish.sh llvm-obfuscator-arm-x86.txz

env:
global:
Expand Down
2 changes: 2 additions & 0 deletions Dockerfile.base
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ RUN apt-get update \
libgcc1-armhf-cross \
libsfgcc1-armhf-cross \
libstdc++6-armhf-cross \
binutils-dev \
binutils-multiarch-dev \
python

RUN git clone --depth=1 --single-branch -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git obfuscator-llvm
Expand Down
86 changes: 77 additions & 9 deletions build.bash
Original file line number Diff line number Diff line change
@@ -1,25 +1,58 @@
#!/bin/bash

set -x
set -e

mkdir -p build
mkdir -p "build-x86"
mkdir -p output/opt

#-DCMAKE_CROSSCOMPILING=True \
#-DCMAKE_CXX_FLAGS='-march=armv7-a -mcpu=cortex-a9 -mfloat-abi=hard -DENDIAN_LITTLE=1' \
#-DCMAKE_C_COMPILER=/usr/bin/arm-linux-gnueabihf-gcc-4.8 \
MAKE_PACKAGES=
BUILD_X86=n
VERBOSE=

while [[ $# -gt 0 ]]; do
case $1 in
--make-packages)
echo "*** Making packages ***"
MAKE_PACKAGES=y
shift
;;
--build-x86)
echo "*** Building x86_64 (in addition to ARM) ***"
BUILD_X86=y
shift
;;
--verbose)
VERBOSE="-v"
shift
;;
esac
done

CMAKE_COMMAND="\
cmake -G Ninja \
/work/obfuscator-llvm \
-DCMAKE_INSTALL_PREFIX=/opt/llvm-obfuscator \
-DLLVM_TABLEGEN=/usr/bin/llvm-tblgen-4.0 \
-DCLANG_TABLEGEN=/usr/bin/clang-tblgen-4.0 \
-DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf \
-DLLVM_TARGET_ARCH=ARM \
-DLLVM_TARGETS_TO_BUILD=ARM \
-DLLVM_TARGETS_TO_BUILD=ARM\;X86 \
-DCMAKE_CXX_FLAGS='-DENDIAN_LITTLE=1' \
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/bin/cpp_wrapper.py \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_BINUTILS_INCDIR=/usr/include \
-DLLVM_INCLUDE_TESTS=OFF"

CMAKE_COMMAND_X86="\
cmake -G Ninja \
/work/obfuscator-llvm \
-DCMAKE_INSTALL_PREFIX=/opt/llvm-obfuscator \
-DCMAKE_CXX_FLAGS='-DENDIAN_LITTLE=1' \
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/bin/cpp_wrapper.py \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_TARGET_ARCH=X86 \
-DLLVM_TARGETS_TO_BUILD=X86 \
-DLLVM_BINUTILS_INCDIR=/usr/include \
-DLLVM_INCLUDE_TESTS=OFF"

PATCH_COMMAND="git apply /patches/*.patch"
Expand All @@ -29,4 +62,39 @@ docker run -i -t --rm \
-v $PWD/output/opt:/opt \
-v $PWD/patches:/patches \
arm-llvm-obf:base \
/bin/bash -c "cd /work/obfuscator-llvm && $PATCH_COMMAND && cd /work/build && $CMAKE_COMMAND && ninja -v && ninja -v install"
/bin/bash -c "cd /work/obfuscator-llvm \
&& $PATCH_COMMAND \
&& cd /work/build \
&& $CMAKE_COMMAND \
&& ninja $VERBOSE \
&& ninja $VERBOSE install"

if [[ -n "$MAKE_PACKAGES" ]]; then

./stage_sysroot.bash
tar -C output -cJf "llvm-obfuscator-arm-x86.txz" .
fi

if [[ -n "$BUILD_X86" ]]; then

docker run -i -t --rm \
-v $PWD/output/opt:/opt \
arm-llvm-obf:base \
/bin/bash -c "rm -rvf /opt/*"

docker run -i -t --rm \
-v "$PWD/build-x86:/work/build" \
-v $PWD/output/opt:/opt \
-v $PWD/patches:/patches \
arm-llvm-obf:base \
/bin/bash -c "cd /work/obfuscator-llvm \
&& $PATCH_COMMAND \
&& cd /work/build \
&& $CMAKE_COMMAND_X86 \
&& ninja $VERBOSE \
&& ninja $VERBOSE install"

if [[ -n "$MAKE_PACKAGES" ]]; then
tar -C output -cJf "llvm-obfuscator-x86.txz" .
fi
fi

0 comments on commit b3ad703

Please sign in to comment.